From 3015370286e2f3fcb690b4e11d06fe0d4bb55e5b Mon Sep 17 00:00:00 2001 From: Suzumiya Date: Sat, 12 Sep 2026 13:34:32 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=20C7=20=E7=89=88=E6=9C=AC=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E3=80=8C=E9=87=8D=E8=BD=BD=E5=BD=93=E5=89=8D=E9=A2=84?= =?UTF-8?q?=E8=A7=88=E3=80=8D=E9=AA=8C=E6=94=B6=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - resourceVersionSwitch 新增用例:运行模块内切换版本必须既上报宿主又触发 onPlay 重载预览 - 覆盖验收用例 S16 的「并重载当前预览」条款(此前版本入口只测了记录层与高亮,重载没有守卫) - 变异验证:摘掉 selectActiveVersion 里的 onPlay 调用后,该用例以 expected "spy" to be called at least once 失败 - 定向验证:resourceVersionSwitch 4 passed --- .../tests/resourceVersionSwitch.test.tsx | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/apps/ai-game-creator-shell/tests/resourceVersionSwitch.test.tsx b/apps/ai-game-creator-shell/tests/resourceVersionSwitch.test.tsx index ad314971f..e16024073 100644 --- a/apps/ai-game-creator-shell/tests/resourceVersionSwitch.test.tsx +++ b/apps/ai-game-creator-shell/tests/resourceVersionSwitch.test.tsx @@ -216,6 +216,26 @@ describe('C7 运行模块版本切换', () => { expect(onActiveVersionChange).toHaveBeenCalledWith('version-root'); }); + test('reloads the current preview when the version changes in the run module', async () => { + installResourceCardIntersectionObserver(); + const manifest = createVersionedManifest(); + const onPlay = vi.fn(); + const onActiveVersionChange = vi.fn(); + renderWorkbench(manifest, { onPlay, onActiveVersionChange }); + + fireEvent.click(screen.getByRole('tab', { name: '运行' })); + fireEvent.click(await screen.findByLabelText(/^当前版本:/)); + const menu = await screen.findByRole('listbox', { + name: '切换游戏版本', + }); + fireEvent.click(within(menu).getByRole('option', { name: /初始版本/ })); + + expect(onActiveVersionChange).toHaveBeenCalledWith('version-root'); + // 验收用例 S16 的「并重载当前预览」:只改记录层而不重载,用户看到的仍是上一个版本的 + // 画面(素材不可变,画面靠重载预览回到该版本对应的资源),切换就成了"点了没反应"。 + expect(onPlay).toHaveBeenCalled(); + }); + test('drives the "current use" card highlight from the active version', async () => { installResourceCardIntersectionObserver(); const manifest = createVersionedManifest();