9.4 KiB
HWLAB MVP E2E 验收测试与报告 issue 规则
本文定义 HWLAB MVP 的用户可读、Agent 可执行验收测试规格。它按 cli-spec 的 TEST.md 风格组织用例,但报告产物不写入 docs/ 或 repository report directory ;每轮验收必须创建一个带编号的 GitHub 测试报告 issue。
适用范围
- 当前 G14 DEV 浏览器入口固定为
http://74.48.78.17:17666/。 - 当前 G14 DEV API、edge 和 live health 入口固定为
http://74.48.78.17:17667/与http://74.48.78.17:17667/health/live。 - 当前 MVP 上位约束是
DC-DCSN-P0-2026-003/ pikasTech/HWLAB#78:M3 虚拟硬件可信闭环必须证明res_boxsimu_1:DO1 -> hwlab-patch-panel -> res_boxsimu_2:DI1。 - 当前默认前端方向以 pikasTech/HWLAB#99 为准:
/必须是类 VS Code 的 Cloud Workbench,不是 Gate、status 或 diagnostics 首页。
报告 issue 规则
测试报告产物必须落到 GitHub issue,不进入长期文档目录,也不提交一次性报告文件。
- 报告 issue 标题格式:
[MVP-E2E-RPT-<NNN>] HWLAB MVP E2E 验收测试报告:<简短范围>。 <NNN>从001开始递增;创建前先搜索 open 和 closed issue 中已有的MVP-E2E-RPT-编号,选择下一个编号。- 报告 issue 必须包含:测试日期、测试人或 runner、源文档路径、本次目标、DEV URL、observed commit/revision/tag/digest、每个
T{x}用例的状态、blocker class、关键截图或截图附件、operation/trace/audit/evidence id、最终结论和后续 issue。 - 如果 Playwright 截图无法直接上传到 issue,报告 issue 必须记录截图文件路径、文件名、SHA 或可审查的 artifact URL;不能只写“已截图”。
- 任一用例为
failed或blocked时,总结论只能是 failed/blocked,不得写 pass。
推荐报告 issue body 结构:
## 测试范围
- 源文档:docs/reference/MVP-e2e-acceptance.md
- 报告编号:MVP-E2E-RPT-<NNN>
- DEV Cloud Web:
- DEV API/edge:
- observed frontend revision:
- observed API revision:
- runner / tester:
## 结果总览
| 用例 | 状态 | 证据等级 | blocker class | 截图/证据 |
| --- | --- | --- | --- | --- |
| T1 | pass/failed/blocked | DEV-LIVE/SOURCE/DRY-RUN/BLOCKED | | |
## 详细记录
## T1
- 操作:
- 观察:
- 截图:
- 关键 ID:
- 结论:
## 安全边界
- 未触碰 PROD:
- 未读取 secret 明文:
- 未重启 UniDesk / Code Queue / backend-core:
- 未把 UniDesk runtime 当 HWLAB runtime:
证据等级
DEV-LIVE:真实 G14 DEV17666/17667上的浏览器、API、runtime 或短生命周期授权操作证据。SOURCE:源代码、静态检查、合同校验或未部署构建证据。LOCAL:本地浏览器、fixture 或本地服务证据。DRY-RUN:显式 dry-run 输出,不触碰 DEV runtime。BLOCKED:因为环境、权限、运行态、agent、DB、evidence 或安全边界无法继续。
禁止把 SOURCE、LOCAL、DRY-RUN、fixture、edge-only health、前端静态状态或 UniDesk runtime 代理写成 M3 或 MVP DEV-LIVE 通过。
验收用例
T1 DEV 入口与运行边界
阅读 AGENTS.md,然后用浏览器或 Playwright 手动测试以下内容:打开 http://74.48.78.17:17666/,确认默认页是 HWLAB Cloud Workbench,不是 Gate、status、help 或 diagnostics;访问 http://74.48.78.17:17667/health 和 http://74.48.78.17:17667/health/live,确认返回 HWLAB DEV API/edge identity。报告必须写明 legacy public :16666/:16667 和 public :6666/:6667 未作为当前验收入口,UniDesk backend、provider-gateway 和 microservice proxy 未作为 HWLAB runtime 替代。
通过标准:
17666根页可由浏览器打开,页面标题、主导航或首屏内容明确指向 HWLAB 云工作台。17667/health或17667/health/live返回 JSON,包含 HWLAB service identity 和 dev environment。- 报告 issue 附桌面首屏截图和 API/health 摘要。
T2 Cloud Workbench 首屏、布局与中文 UX
阅读 AGENTS.md,然后用浏览器或 Playwright 手动测试以下内容:分别在桌面视口和 390x844 移动视口截图,确认左侧资源/功能导航、中间 Agent 对话/trace/输入区、右侧硬件状态和控制/接线/可信记录区域可见;外层页面不滚动,滚动只发生在内部面板;用户可见文案中文优先;使用说明是内部入口且由 Markdown 渲染,不是默认首页。
通过标准:
- 默认页显示工作台,不显示 Gate/M0-M5/验收报告作为首屏主体。
- 桌面和移动视口下
html/body或等价应用根节点没有页面级滚动路径。 - 关键中文标签可见,必要机器标识可以保留原文。
- 报告 issue 附桌面、移动和使用说明内部页截图。
T3 M3 虚拟硬件可信闭环
阅读 AGENTS.md,然后用浏览器或 Playwright 手动测试以下内容:在明确授权的 DEV live 窗口内,通过工作台或等价受控入口执行 res_boxsimu_1:DO1 -> hwlab-patch-panel -> res_boxsimu_2:DI1 的 true/false 循环。报告必须记录两个 distinct box-simu、两个 distinct gateway-simu、一个 patch-panel、patch-panel-owned wiring、operationId、traceId、auditId 和 evidenceId。
通过标准:
- 写
DO1=true后,DI1=true经hwlab-patch-panel同步可见;写DO1=false后,DI1=false同步可见。 - 证据链明确归因到
hwlab-patch-panel,没有 box loopback、前端直改状态或 UniDesk runtime 替代。 - operation、trace、audit 和 evidence id 能互相指向同一轮操作。
- 未获授权、目标缺失、持久化 blocked 或任一关键 ID 缺失时,必须标为
BLOCKED,不得 claim M3 PASS。
T4 Code Agent 真实 runner 能力
阅读 AGENTS.md,然后用浏览器或 Playwright 手动测试以下内容:在 17666 工作台 Agent 区输入 pwd 和“列出你可用的 skills”,确认返回来自真实 Codex runner、workspace、tool calls 和 skills 注入,而不是 openai-responses text-chat-only。随后让 Agent 通过 hwlab-cloud-api 执行同一 M3 硬件任务,确认 agent trace 引用对应 hardware operation 和 audit。
通过标准:
pwd返回真实 runner 工作目录或结构化 runner blocker。- skills 查询返回真实 skill 列表、skill 发现输出或结构化 skills blocker。
- runner trace 中能看到工具调用、workspace 证据和 hardware operation/audit 关联。
- 如果只能文本聊天、provider unavailable、无工具调用或无 workspace 证据,必须标为
BLOCKED/agent-runtime或BLOCKED/credential。
T5 Audit、Evidence 与持久化
阅读 AGENTS.md,然后用浏览器或 Playwright 手动测试以下内容:确认直接 M3 操作和 Agent M3 操作都能在工作台、API 或 CLI 输出中看到 hardware audit、agent trace 和 evidence record。最小 evidence record 至少包含 sessionId、worker image 或 digest、skillsCommitId、skillsTreeSha 或文件清单 hash、workspaceMode、agentTraceId、operationId、auditId、result 和 createdAt。
通过标准:
- hardware audit 由 HWLAB cloud/gateway/patch-panel 硬件链路生成,agent 自述不能替代 audit。
- evidence 中不包含 secret/token 明文。
- durable DB 或 evidence adapter 仍 blocked 时,报告必须标注准确 blocker,不得写 trusted green。
T6 报告 issue 创建与编号
阅读 AGENTS.md,然后用浏览器或 Playwright 手动测试以下内容:按本文“报告 issue 规则”创建一个带递增编号的测试报告 issue,标题使用 [MVP-E2E-RPT-<NNN>] 前缀。报告 issue 必须挂载本次所有截图、关键 JSON 摘要、测试结论和后续 issue 链接;不得把测试报告正文写入 docs/reference/,不得提交一次性报告文件来替代 issue。
通过标准:
- 报告 issue 存在,编号未与历史报告冲突。
- 每个
T{x}都有状态、证据等级和简短证据。 - 最终结论与各用例状态一致。
- 安全边界明确写出:未触碰 PROD、未读取 secret 明文、未重启 UniDesk / Code Queue / backend-core、未用 UniDesk runtime 替代 HWLAB runtime。
停止条件
出现以下情况时停止后续 live 或 mutating 测试,并在报告 issue 中标为 BLOCKED 或 failed:
- 入口不是 G14 DEV
17666/17667,或命中非当前 HWLAB DEV runtime。 - 需要读取或打印 Secret/token 明文。
- 需要触碰 PROD。
- 需要重启 UniDesk、Code Queue、backend-core 或无关基础设施。
- M3 目标不能证明两个 distinct box-simu、两个 distinct gateway-simu 和 patch-panel-owned wiring。
- agent 只能文本聊天,不能证明真实 runner/workspace/tool/skills。
- 任一结果要求把 SOURCE、LOCAL、DRY-RUN、fixture 或 edge-only 证据升级为 DEV-LIVE。
稳定来源
- architecture.md:MVP 边界、M3 trusted loop 和证据等级。
- dev-runtime-boundary.md:G14
17666/17667、PROD18666/18667、G14 k3s 和运行态边界;D601 只作 legacy 回溯。 - cloud-workbench.md:Cloud Workbench 默认首页和 UX 约束。
- code-agent-chat-readiness.md:Code Agent 真实回复和 provider/runner blocker 判定。
- m3-loop-rollout-runbook.md:M3 live 操作授权、证据和失败分类。