From fa615fee2ace0013c25eb0b30aa7b465a9d4d687 Mon Sep 17 00:00:00 2001 From: weichen Date: Sun, 13 Sep 2026 08:48:32 +0000 Subject: [PATCH] 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 --- ...document-revision-runtime-ui-acceptance.md | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 .doc/ops/checklists/2026-09-13-document-revision-runtime-ui-acceptance.md diff --git a/.doc/ops/checklists/2026-09-13-document-revision-runtime-ui-acceptance.md b/.doc/ops/checklists/2026-09-13-document-revision-runtime-ui-acceptance.md new file mode 100644 index 00000000..56bcc0bf --- /dev/null +++ b/.doc/ops/checklists/2026-09-13-document-revision-runtime-ui-acceptance.md @@ -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 无头真实页面 | **是(唯一最终)** |