--- phase: 05-test-hardening-and-commit-hygiene plan: 01 type: execute wave: 1 depends_on: - 04-iframe-markdown-new-system-stabilization files_modified: - frontend/tests/e2e/welcome-and-routing.spec.ts - frontend/tests/e2e/thread-routing.spec.ts - frontend/tests/e2e/input-and-compose.spec.ts - frontend/tests/e2e/message-and-history.spec.ts - frontend/tests/e2e/artifacts-and-thread-reuse.spec.ts - frontend/tests/e2e/support/chat-helpers.ts - frontend/playwright.config.ts - .planning/phases/05-test-hardening-and-commit-hygiene/05-UAT.md - .planning/phases/05-test-hardening-and-commit-hygiene/05-SUMMARY.md autonomous: true requirements: - TEST-01 - TEST-02 - TEST-03 must_haves: truths: - "E2E 关键路径在当前环境具备稳定执行结果:前端可控路径必须强断言通过,环境敏感路径必须可解释 skip。" - "测试输出必须形成 reviewer 可用证据:pass/skip/fail 统计 + skip 原因 + 失败定位入口。" - "提交结构按 concern 清晰拆分,避免 style/logic/tests/docs 混杂。" artifacts: - path: "frontend/tests/e2e/support/chat-helpers.ts" provides: "统一的路由构造、等待策略、skip 规则" - path: "frontend/tests/e2e/*.spec.ts" provides: "Phase 1~4 关键路径回归覆盖" - path: ".planning/phases/05-test-hardening-and-commit-hygiene/05-UAT.md" provides: "Phase 5 测试结论与问题清单" key_links: - from: "chat-helpers.ts" to: "all e2e specs" via: "统一等待与 skip 策略" pattern: "openChat|waitForMessageListReady|skipIfMissingThread" - from: "playwright.config.ts" to: "e2e execution" via: "环境变量与执行稳定性" pattern: "baseURL|retries|reporter" --- 完成最终测试加固与提交卫生收口:形成稳定可解释的 E2E 结果,并将当前工作区变更整理为可审阅、可回滚的提交结构。 Purpose: 落实 TEST-01/TEST-02/TEST-03,保证 merge recovery 结束前质量可审计。 Output: Phase 5 UAT + Summary + concern-based commit checklist。 @.planning/PROJECT.md @.planning/REQUIREMENTS.md @.planning/ROADMAP.md @.planning/phases/05-test-hardening-and-commit-hygiene/05-CONTEXT.md @.planning/phases/04-iframe-markdown-new-system-stabilization/04-UAT.md @frontend/playwright.config.ts @frontend/tests/e2e/support/chat-helpers.ts @frontend/tests/e2e/welcome-and-routing.spec.ts @frontend/tests/e2e/thread-routing.spec.ts @frontend/tests/e2e/input-and-compose.spec.ts @frontend/tests/e2e/message-and-history.spec.ts @frontend/tests/e2e/artifacts-and-thread-reuse.spec.ts Task 1: E2E 套件稳定性硬化(TEST-01) frontend/tests/e2e/welcome-and-routing.spec.ts frontend/tests/e2e/thread-routing.spec.ts frontend/tests/e2e/input-and-compose.spec.ts frontend/tests/e2e/message-and-history.spec.ts frontend/tests/e2e/artifacts-and-thread-reuse.spec.ts frontend/tests/e2e/support/chat-helpers.ts - Test 1: 前端可控关键路径(路由、输入、发送、导出触发)维持强断言。 - Test 2: 后端/fixture 敏感路径在数据缺失时 skip 且附明确原因。 - Test 3: 不再出现因单点后端错误引发的无意义级联失败。 统一 spec 断言策略与 helper 行为:将环境敏感断言抽象到 helper,并规范 skip 文案;对关键用户路径保留严格断言,避免“全部放宽”导致测试失真。 cd frontend && npm run test:e2e -- welcome-and-routing.spec.ts thread-routing.spec.ts input-and-compose.spec.ts message-and-history.spec.ts artifacts-and-thread-reuse.spec.ts E2E 套件在当前环境具备稳定、可解释结果,关键路径无假阴性。 Task 2: 验证证据与 UAT 收敛(TEST-01, TEST-03) .planning/phases/05-test-hardening-and-commit-hygiene/05-UAT.md .planning/phases/05-test-hardening-and-commit-hygiene/05-SUMMARY.md - Test 1: UAT 包含 pass/issue/skip 统计与逐项说明。 - Test 2: skip 场景必须有明确环境原因,不允许模糊表述。 - Test 3: Summary 能反向追溯到验证命令与关键文件。 基于实际执行命令产出 Phase 5 的 UAT 与 SUMMARY,保证 reviewer 能复现与审计;明确哪些结果是环境限制,哪些是代码风险。 test -f .planning/phases/05-test-hardening-and-commit-hygiene/05-UAT.md && test -f .planning/phases/05-test-hardening-and-commit-hygiene/05-SUMMARY.md 验证证据链完整,后续 `gsd-complete-milestone` 可直接消费。 Task 3: 提交卫生整理(TEST-02) (working tree concern groups) - 提交按 concern 分组(style / logic / tests / docs)。 - 每组提交都能对应最小验证命令。 - 不改写历史提交,不回滚无关用户变更。 梳理当前工作区变更,形成 commit 建议清单与执行顺序;若本阶段执行提交,则严格按 concern 分批提交并附验证结果。 git status --short 提交结构清晰,PR 审阅成本可控。 ## Trust Boundaries | Boundary | Description | |----------|-------------| | `test assertions -> unstable backend fixtures` | 测试断言受后端数据波动影响,需要前端可控与环境依赖分层 | | `working tree -> commit history` | 大量未提交改动进入历史前,必须按 concern 清洗并可追溯 | ## STRIDE Threat Register | Threat ID | Category | Component | Disposition | Mitigation Plan | |-----------|----------|-----------|-------------|-----------------| | T-05-01 | R (Repudiation) | E2E result interpretation | mitigate | 统一 pass/skip/fail 规则与 skip 原因模板 | | T-05-02 | D (Denial of Service) | flaky tests blocking pipeline | mitigate | helper 统一等待与条件 skip,减少假失败级联 | | T-05-03 | T (Tampering) | mixed-concern commits | mitigate | 按 concern 分组提交并绑定最小验证命令 | | T-05-04 | I (Information Disclosure) | log-driven decisions | accept | 本阶段不新增数据读取面,仅利用现有日志作定位 | 1. 目标 E2E 套件执行完成并产出可解释结果。 2. Phase 5 UAT/SUMMARY 文档齐备且与执行结果一致。 3. 提交整理策略明确,可直接进入提交或里程碑收尾。 - TEST-01:回归测试覆盖关键路径并稳定运行。 - TEST-02:变更可按 concern 清晰提交,避免混乱历史。 - TEST-03:验证结果对 reviewer 可审计、可复现、可解释。 After completion, create `.planning/phases/05-test-hardening-and-commit-hygiene/05-SUMMARY.md`