deerflow2/.planning/phases/05-test-hardening-and-commi.../05-PLAN.md

174 lines
7.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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"
---
<objective>
完成最终测试加固与提交卫生收口:形成稳定可解释的 E2E 结果,并将当前工作区变更整理为可审阅、可回滚的提交结构。
Purpose: 落实 TEST-01/TEST-02/TEST-03保证 merge recovery 结束前质量可审计。
Output: Phase 5 UAT + Summary + concern-based commit checklist。
</objective>
<context>
@.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
</context>
<tasks>
<task type="auto" tdd="true">
<name>Task 1: E2E 套件稳定性硬化TEST-01</name>
<files>
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
</files>
<behavior>
- Test 1: 前端可控关键路径(路由、输入、发送、导出触发)维持强断言。
- Test 2: 后端/fixture 敏感路径在数据缺失时 skip 且附明确原因。
- Test 3: 不再出现因单点后端错误引发的无意义级联失败。
</behavior>
<action>
统一 spec 断言策略与 helper 行为:将环境敏感断言抽象到 helper并规范 skip 文案;对关键用户路径保留严格断言,避免“全部放宽”导致测试失真。
</action>
<verify>
<automated>cd frontend &amp;&amp; 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</automated>
</verify>
<done>
E2E 套件在当前环境具备稳定、可解释结果,关键路径无假阴性。
</done>
</task>
<task type="auto" tdd="true">
<name>Task 2: 验证证据与 UAT 收敛TEST-01, TEST-03</name>
<files>
.planning/phases/05-test-hardening-and-commit-hygiene/05-UAT.md
.planning/phases/05-test-hardening-and-commit-hygiene/05-SUMMARY.md
</files>
<behavior>
- Test 1: UAT 包含 pass/issue/skip 统计与逐项说明。
- Test 2: skip 场景必须有明确环境原因,不允许模糊表述。
- Test 3: Summary 能反向追溯到验证命令与关键文件。
</behavior>
<action>
基于实际执行命令产出 Phase 5 的 UAT 与 SUMMARY保证 reviewer 能复现与审计;明确哪些结果是环境限制,哪些是代码风险。
</action>
<verify>
<automated>test -f .planning/phases/05-test-hardening-and-commit-hygiene/05-UAT.md &amp;&amp; test -f .planning/phases/05-test-hardening-and-commit-hygiene/05-SUMMARY.md</automated>
</verify>
<done>
验证证据链完整,后续 `gsd-complete-milestone` 可直接消费。
</done>
</task>
<task type="auto" tdd="false">
<name>Task 3: 提交卫生整理TEST-02</name>
<files>
(working tree concern groups)
</files>
<behavior>
- 提交按 concern 分组style / logic / tests / docs
- 每组提交都能对应最小验证命令。
- 不改写历史提交,不回滚无关用户变更。
</behavior>
<action>
梳理当前工作区变更,形成 commit 建议清单与执行顺序;若本阶段执行提交,则严格按 concern 分批提交并附验证结果。
</action>
<verify>
<automated>git status --short</automated>
</verify>
<done>
提交结构清晰PR 审阅成本可控。
</done>
</task>
</tasks>
<threat_model>
## 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 | 本阶段不新增数据读取面,仅利用现有日志作定位 |
</threat_model>
<verification>
1. 目标 E2E 套件执行完成并产出可解释结果。
2. Phase 5 UAT/SUMMARY 文档齐备且与执行结果一致。
3. 提交整理策略明确,可直接进入提交或里程碑收尾。
</verification>
<success_criteria>
- TEST-01回归测试覆盖关键路径并稳定运行。
- TEST-02变更可按 concern 清晰提交,避免混乱历史。
- TEST-03验证结果对 reviewer 可审计、可复现、可解释。
</success_criteria>
<output>
After completion, create `.planning/phases/05-test-hardening-and-commit-hygiene/05-SUMMARY.md`
</output>