---
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 可审计、可复现、可解释。