适配图片生成面板测试

更新角色生成面板断言,匹配远端画面比例与模型按钮交互

移除旧尺寸和模型下拉字段断言

验证角色生成提交不再携带旧尺寸字段
This commit is contained in:
2026-06-16 17:30:11 +08:00
parent a171bd915f
commit da7388240e

View File

@@ -1831,49 +1831,24 @@ describe('ImageCanvasEditorView', () => {
const characterPanel = screen.getByRole('dialog', { const characterPanel = screen.getByRole('dialog', {
name: '生成角色形象', name: '生成角色形象',
}); });
expect(within(characterPanel).getByText('尺寸比例')).toBeTruthy(); expect(within(characterPanel).getByText('画面比例')).toBeTruthy();
expect(within(characterPanel).getByText('大小尺寸')).toBeTruthy(); expect(within(characterPanel).getByText('模型')).toBeTruthy();
expect( expect(
(within(characterPanel).getByLabelText('角色模型') as HTMLSelectElement) within(characterPanel).getByRole('button', { name: '1:1' }),
.selectedOptions[0]?.textContent, ).toBeTruthy();
).toBe('nanobanana2');
expect( expect(
( within(characterPanel).getByRole('button', { name: 'GPT Image' }),
within(characterPanel).getByLabelText( ).toBeTruthy();
'角色尺寸比例',
) as HTMLSelectElement
).value,
).toBe('1:1');
expect(
(
within(characterPanel).getByLabelText(
'角色大小尺寸',
) as HTMLSelectElement
).value,
).toBe('1K');
expect(
Array.from(
(
within(characterPanel).getByLabelText(
'角色尺寸比例',
) as HTMLSelectElement
).options,
).map((option) => option.value),
).toContain('1:8');
fireEvent.click(screen.getByRole('button', { name: '生成图标素材' })); fireEvent.click(screen.getByRole('button', { name: '生成图标素材' }));
const iconPanel = screen.getByRole('dialog', { name: '生成图标素材' }); const iconPanel = screen.getByRole('dialog', { name: '生成图标素材' });
expect(within(iconPanel).getByText('模型')).toBeTruthy();
expect( expect(
(within(iconPanel).getByLabelText('图标模型') as HTMLSelectElement) within(iconPanel).getByRole('button', { name: 'nanobanana2' }),
.selectedOptions[0]?.textContent, ).toBeTruthy();
).toBe('nanobanana2');
expect(
(within(iconPanel).getByLabelText('图标大小尺寸') as HTMLSelectElement)
.value,
).toBe('1K');
}); });
it('remembers the edited image model and submits character dimension options', async () => { it('submits character generation without legacy dimension options', async () => {
generateEditorImageMock.mockResolvedValueOnce({ generateEditorImageMock.mockResolvedValueOnce({
imageSrc: 'data:image/png;base64,character-model-options', imageSrc: 'data:image/png;base64,character-model-options',
width: 1024, width: 1024,
@@ -1892,24 +1867,6 @@ describe('ImageCanvasEditorView', () => {
const characterPanel = screen.getByRole('dialog', { const characterPanel = screen.getByRole('dialog', {
name: '生成角色形象', name: '生成角色形象',
}); });
fireEvent.change(within(characterPanel).getByLabelText('角色模型'), {
target: { value: 'gpt-image-2' },
});
expect(
Array.from(
(
within(characterPanel).getByLabelText(
'角色尺寸比例',
) as HTMLSelectElement
).options,
).map((option) => option.value),
).not.toContain('1:8');
fireEvent.change(within(characterPanel).getByLabelText('角色尺寸比例'), {
target: { value: '2:3' },
});
fireEvent.change(within(characterPanel).getByLabelText('角色大小尺寸'), {
target: { value: '1K' },
});
fireEvent.change(within(characterPanel).getByLabelText('角色设定'), { fireEvent.change(within(characterPanel).getByLabelText('角色设定'), {
target: { value: '高个子游侠' }, target: { value: '高个子游侠' },
}); });
@@ -1919,18 +1876,18 @@ describe('ImageCanvasEditorView', () => {
expect(generateEditorImageMock).toHaveBeenCalledWith( expect(generateEditorImageMock).toHaveBeenCalledWith(
expect.objectContaining({ expect.objectContaining({
kind: 'character', kind: 'character',
model: 'gpt-image-2', prompt: '高个子游侠',
aspectRatio: '2:3',
imageSize: '1K',
}), }),
); );
}); });
fireEvent.click(screen.getByRole('button', { name: '生成图标素材' }));
const iconPanel = screen.getByRole('dialog', { name: '生成图标素材' });
expect( expect(
(within(iconPanel).getByLabelText('图标模型') as HTMLSelectElement).value, generateEditorImageMock.mock.calls[0]?.[0],
).toBe('gpt-image-2'); ).not.toEqual(
expect.objectContaining({
aspectRatio: expect.any(String),
imageSize: expect.any(String),
}),
);
}); });
it('keeps the bottom AI toolbar visible while generation panels are open', () => { it('keeps the bottom AI toolbar visible while generation panels are open', () => {