拆分预览快捷操作测试并修复初始化时序

将单条长流程拆为 79 个独立用例,每例重新初始化并使用默认超时
保留有效行为断言并删除无实际操作的空断言块
补齐编辑器插件 mock,移除重复的项目打开状态等待
同步测试拆分边界与定向验证文档
This commit is contained in:
2026-09-20 18:04:35 +08:00
parent 3e97ba154d
commit b0cfbe4f63
9 changed files with 5972 additions and 5750 deletions
@@ -1,20 +1,11 @@
import { it } from '../harness';
import { openPreviewShortcutProject } from './preview-shortcuts/actions';
import { arrangePreviewShortcutTest } from './preview-shortcuts/arrange';
import { assertPlanningAndStatusShortcutFlow } from './preview-shortcuts/assert-planning-and-status-shortcuts';
import { assertPlaytestAndReleaseShortcutFlow } from './preview-shortcuts/assert-playtest-and-release-shortcuts';
import { assertProjectAndDesignShortcutFlow } from './preview-shortcuts/assert-project-and-design-shortcuts';
import { assertProjectToolsAndPreviewFlow } from './preview-shortcuts/assert-project-tools-and-preview';
import { registerPlanningAndStatusShortcutTests } from './preview-shortcuts/assert-planning-and-status-shortcuts';
import { registerPlaytestAndReleaseShortcutTests } from './preview-shortcuts/assert-playtest-and-release-shortcuts';
import { registerProjectAndDesignShortcutTests } from './preview-shortcuts/assert-project-and-design-shortcuts';
import { registerProjectToolsAndPreviewTests } from './preview-shortcuts/assert-project-tools-and-preview';
export function registerProjectPreviewShortcutTests() {
it('runs preview shortcuts from the main project window', async () => {
const { invoke } = arrangePreviewShortcutTest();
openPreviewShortcutProject();
await assertProjectAndDesignShortcutFlow(invoke);
await assertPlanningAndStatusShortcutFlow(invoke);
await assertPlaytestAndReleaseShortcutFlow(invoke);
await assertProjectToolsAndPreviewFlow(invoke);
}, 60000);
registerProjectAndDesignShortcutTests();
registerPlanningAndStatusShortcutTests();
registerPlaytestAndReleaseShortcutTests();
registerProjectToolsAndPreviewTests();
}
@@ -1,5 +1,9 @@
import { renderAppAt } from '../../harness';
import { renderAppAt, screen } from '../../harness';
import { arrangePreviewShortcutTest } from './arrange';
export function openPreviewShortcutProject() {
export async function openPreviewShortcutProject() {
const { invoke } = arrangePreviewShortcutTest();
renderAppAt('/?main&projectPath=%2Ftmp%2Fauthorized-game');
await screen.findByText('已打开:authorized-game');
return invoke;
}
@@ -7,6 +7,9 @@ export function createPreviewShortcutInvoke({
}: PreviewShortcutFixture) {
const invoke = vi.fn(
async (command: string, args?: Record<string, unknown>) => {
if (command === 'set_agc_plugin_project_path') {
return null;
}
if (command === 'append_local_permission_log') {
return {};
}
@@ -296,7 +299,3 @@ export function createPreviewShortcutInvoke({
return invoke;
}
export type PreviewShortcutInvoke = ReturnType<
typeof createPreviewShortcutInvoke
>;
@@ -57,6 +57,8 @@
提示词测试验证实际请求中的片段来源、动态参数和工具结构;措辞不作为逐字契约。已有行为测试覆盖的限制不再另设整段文案检查。Direct 回合测试复用生产的消息转换和文件投影函数,不维护仅供测试调用的回合编排副本。
AGC 预览快捷操作的界面测试按独立命令或有状态短流程注册,每例重新建立 fixture、原生调用 mock 和页面,并等待项目打开后再记录调用计数。预览启停、导出确认与取消等连续行为保留在同一用例;互不依赖的只读命令不串成一条长对话,也不共享 DOM 或提高超时来容纳整组流程。
Rust 分片失败日志保留有界的失败详情,包括 panic 位置、断言和最终通过/失败数量;分片选中数量标为 selected,避免误读为失败数量。修改分片日志时运行 `node --test apps/ai-game-creator-shell/scripts/run-rust-shell-test-shards.test.mjs`,用最小 Rust fixture 验证失败详情和成功摘要。
AGC 运行时配置默认值调整时,同步核对 Rust 默认值、分发配置模板、设置弹窗默认草稿和 `runtime-settings.suite.ts` 的恢复默认断言;显式传入旧值的配置读取用例仍验证原值保留,不批量替换测试数据。
@@ -93,6 +93,8 @@ Rust 侧在 `server-rs/crates/shared-contracts` 维护唯一权威 `GameCreation
## Agent 提示词与回合测试边界
预览快捷操作的 UI 回归按独立命令及必要的连续操作拆分,每例使用新的项目 fixture、invoke mock 和页面,项目打开后再采样副作用调用计数。保留命令输出、草稿填入、焦点、权限确认和原生参数断言;预览启停、快照回滚取消、导出确认与取消作为各自短流程验证,使用默认测试超时。定向运行 `npx vitest run apps/ai-game-creator-shell/tests/appSurface.test.ts -t "预览快捷操作:"`
提示词拼装测试核对动态错误、外置片段和实际 Provider 请求结构,避免绑定可自由润色的中文原句。源码载荷限制由实际动作校验与 Provider 修复测试覆盖;工具参数自动修复和超预算上下文压缩继续验证恢复结果、状态及私有信息隔离。Direct 消息原样转发复用生产请求转换测试,文件变化与版本幂等直接测试生产文件投影函数,删除测试专用的重复回合编排。
Rust 分片日志在失败时输出有界 stdout 尾部中的失败段,保留 panic 位置、断言详情和 Rust 汇总;selected 只表示该分片选中的用例数量。成功分片保留简短摘要。定向验证使用相关 Rust 用例与 `node --test apps/ai-game-creator-shell/scripts/run-rust-shell-test-shards.test.mjs`