Files
pikasTech-HWLAB/docs/reference/MVP-e2e-acceptance.md
T

9.4 KiB
Raw Blame History

HWLAB MVP E2E 验收测试与报告 issue 规则

本文定义 HWLAB MVP 的用户可读、Agent 可执行验收测试规格。它按 cli-specTEST.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#78M3 虚拟硬件可信闭环必须证明 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;不能只写“已截图”。
  • 任一用例为 failedblocked 时,总结论只能是 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 DEV 17666/17667 上的浏览器、API、runtime 或短生命周期授权操作证据。
  • SOURCE:源代码、静态检查、合同校验或未部署构建证据。
  • LOCAL:本地浏览器、fixture 或本地服务证据。
  • DRY-RUN:显式 dry-run 输出,不触碰 DEV runtime。
  • BLOCKED:因为环境、权限、运行态、agent、DB、evidence 或安全边界无法继续。

禁止把 SOURCELOCALDRY-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/healthhttp://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/health17667/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=truehwlab-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-runtimeBLOCKED/credential

T5 Audit、Evidence 与持久化

阅读 AGENTS.md,然后用浏览器或 Playwright 手动测试以下内容:确认直接 M3 操作和 Agent M3 操作都能在工作台、API 或 CLI 输出中看到 hardware audit、agent trace 和 evidence record。最小 evidence record 至少包含 sessionId、worker image 或 digest、skillsCommitIdskillsTreeSha 或文件清单 hash、workspaceModeagentTraceIdoperationIdauditIdresultcreatedAt

通过标准:

  • 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 中标为 BLOCKEDfailed

  • 入口不是 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。

稳定来源