docs(test): add headless UI acceptance plan for document revision runtime

Separate browser-only real acceptance from engineering unit/build gates and record gate evidence on the short-term task.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
weichen
2026-09-13 08:48:32 +00:00
co-authored by Cursor
parent d79fdf6ffa
commit fa615fee2a
@@ -0,0 +1,73 @@
---
title: "文档版本账本运行时 — Ubuntu Server 无头浏览器真实 UI 验收计划"
status: planned
created: 2026-09-13
updated: 2026-09-13
---
# 文档版本账本运行时 — Ubuntu Server 无头浏览器真实 UI 验收计划
> **与工程门禁分离**:本文件仅描述**用户限定的最终实战验收**(浏览器页面操作)。
> **不得**用 API 直接灌库、fixture 伪造对话结果、或 stub 模型输出冒充验收证据。
> 工程单测 / `go vet` / `npm test` / `npm run build` 属于「工程门禁」,见 short-term 证据区,**不能替代**本计划。
## 0. 环境前置(集成槽位占用后执行)
| 项 | 要求 |
|----|------|
| OS | Ubuntu Server(无图形桌面亦可) |
| 浏览器 | Playwright Chromium **headed=false**(无头) |
| 服务 | `./scripts/env-service.sh dev rebuild` 后 `curl -sf http://127.0.0.1:8080/health`;schema ≥ 28 |
| Agent | 真实 `pi-agent` + 运行中的 `MiniMax-M2.7-highspeed` 容器 |
| 账号 | 至少两名项目成员(编制人 A、协作者 B);禁止共用 token 串号 |
| 录像 | Playwright `trace` + 关键步骤截图归档至 `.doc/test-reports/assets/2026-09-13-document-revision-runtime-ui/` |
## 1. 用例矩阵(必须全部页面可见)
| ID | 步骤(仅 UI) | 期望页面现象 | 判定 |
|----|---------------|--------------|------|
| UI-01 | 登录 → 创建或进入已有项目 | 项目工作台三栏可见 | |
| UI-02 | 在对话输入框发起真实任务(触发小队编排) | 助手流式回复;任务进度/文档 busy 可见 | |
| UI-03 | 等待小队完成,打开生成的受控文档 Tab | 右侧出现文档;**版本工具条**显示 `Vn`/`r0`(非「账本未就绪」) | |
| UI-04 | 打开变更报告入口(版本历史中的报告或通知) | 可见摘要、风险徽章、项目影响一句话、文档影响列表、开放问题;`analysis_status` 可为 fallback,但摘要须来自真实 diff 非固定假句 | |
| UI-05 | 双击块编辑 → 保存 | 无冲突提示时工具条 `r` 递增;刷新后正文仍为保存内容 | |
| UI-06 | 切换「纯净阅读」 | 块无琥珀/蓝色装饰底 | |
| UI-07 | 切换「人工修改」 | 相对 baseline 的改动块出现琥珀底+下划线暗示 | |
| UI-08 | 切换「全部变更」 | 相对上一版本或人工差异的装饰出现 | |
| UI-09 | 「版本历史」+「比较」 | 抽屉列出版本;比较视图展示 hunk | |
| UI-10 | 硬刷新 / 重新登录 /(集成槽内)重启 app 容器后再打开同一文档 | revision-state 仍 200;正文与 `r` 与重启前一致 | |
| UI-11 | 用户 B 打开无权限项目文档 | 工具条/内容区拒绝或空状态,不泄漏正文 | |
| UI-12 | A 与 B 同时编辑同一文档(双浏览器上下文) | 后写者收到冲突提示「刷新后重做」,不静默覆盖 | |
| UI-13 | 上传附件生成 `doc-upload-*` Tab | 文件预览可用;若进入可编辑 Markdown AST:首次保存后账本就绪;纯二进制预览允许「待注册」清晰空状态,禁止假 V1 | |
## 2. Playwright 骨架(无头,Ubuntu)
```bash
# 在占集成槽并 rebuild 之后于仓库执行
cd web
npx playwright install chromium
RUN_UI_ACCEPTANCE=1 BASE_URL=http://127.0.0.1:8080 \
npx playwright test e2e/document-revision-runtime.spec.ts --project=chromium
```
规格文件建议路径:`web/e2e/document-revision-runtime.spec.ts`(本轮代码整改可只落计划;实现测试脚本可在合入后补)。
断言原则:
- 只断言 **DOM/可见文本/网络响应状态码**(从浏览器上下文观察 `revision-state` 为 200)
- 禁止测试进程直连 Postgres 插入 snapshot
- 禁止 `page.route` mock 智能体 SSE 成功包冒充小队完成
## 3. 通过标准
- UI-01…UI-13 全部 PASS,附件入库
- 工程门禁另栏 PASS(不记入本计划勾选)
- 已知 blocker `DOCREV-RT-PI-NARRATIVE`:允许 fallback 报告,但不得出现硬编码「智能体交付物已生成」类假摘要
## 4. 与工程门禁对照
| 类型 | 命令/产物 | 可否代替 UI 验收 |
|------|-----------|------------------|
| 工程 | `go vet ./...`;`go test -short ./internal/docrevision/...`;`cd web && npm test && npm run build` | **否** |
| PG 可选 | `TEST_DATABASE_URL=... go test ./internal/docrevision -run TestPGPersist` | **否** |
| 本计划 | Playwright 无头真实页面 | **是(唯一最终)** |