From d9e1a34b7c6774fdea7c3200d12426070012692f Mon Sep 17 00:00:00 2001 From: menghao Date: Wed, 12 Aug 2026 16:47:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E8=A7=92=E8=89=B2=E8=A7=84?= =?UTF-8?q?=E8=8C=83=E5=8F=82=E8=80=83=E5=9B=BE=E4=B8=8A=E4=BC=A0=E5=85=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 为角色规范参考图槽位绑定菜单边界引用 补充参考图来源菜单重复点击回归测试 --- ...mageCanvasSpecGenerationPanelView.test.tsx | 35 +++++++++++++++++++ .../ImageCanvasSpecGenerationPanelView.tsx | 1 + 2 files changed, 36 insertions(+) diff --git a/src/components/image-editor/ImageCanvasSpecGenerationPanelView.test.tsx b/src/components/image-editor/ImageCanvasSpecGenerationPanelView.test.tsx index 1f490f9bb..c9a7b22f8 100644 --- a/src/components/image-editor/ImageCanvasSpecGenerationPanelView.test.tsx +++ b/src/components/image-editor/ImageCanvasSpecGenerationPanelView.test.tsx @@ -106,6 +106,30 @@ function UiDesignHarness({ ) : null; } +function CharacterSpecReferenceMenuHarness({ + onRequestUpload = vi.fn(), +}: { + onRequestUpload?: (target: UploadTarget) => void; +}) { + const [isMenuOpen, setIsMenuOpen] = useState(false); + const referenceButtonRef = createRef(); + return ( + node} + buildPortalMenuStyle={() => ({ position: 'fixed', left: 0, top: 0 })} + onUpdateSpecFormValue={vi.fn()} + onRequestUpload={onRequestUpload} + onSubmit={vi.fn()} + /> + ); +} + function IconSpecHarness({ playSetting = '回合制占点', artStyle = '低多边形', @@ -314,6 +338,17 @@ describe('ImageCanvasSpecGenerationPanelView', () => { ); }); + it('keeps the character spec reference source menu open after clicking the add slot', () => { + render(); + + const addButton = screen.getByRole('button', { name: '参考图' }); + fireEvent.click(addButton); + expect(screen.getByRole('menu', { name: '参考图来源' })).toBeTruthy(); + + fireEvent.click(addButton); + expect(screen.queryByRole('menu', { name: '参考图来源' })).toBeNull(); + }); + it('uses gameplay and art style hints for icon specs', () => { renderPanel({ dialog: createSpecDialog({ diff --git a/src/components/image-editor/ImageCanvasSpecGenerationPanelView.tsx b/src/components/image-editor/ImageCanvasSpecGenerationPanelView.tsx index a06c11152..7042ea44b 100644 --- a/src/components/image-editor/ImageCanvasSpecGenerationPanelView.tsx +++ b/src/components/image-editor/ImageCanvasSpecGenerationPanelView.tsx @@ -385,6 +385,7 @@ export function ImageCanvasSpecGenerationPanelView({ ))} {!isUiDesignDialog && dialog.specType !== 'icon' ? (