147 lines
5.3 KiB
Markdown
147 lines
5.3 KiB
Markdown
# Reasonix Browser Test Contract v1
|
||||
|
|
|
|||
|
|
## 状态
|
|||
|
|
|
|||
|
|
- 状态:process
|
|||
|
|
- Owner:AI runtime / browser verification
|
|||
|
|
- 背景:Reasonix 已能作为独立辅助 agent 执行只读审计,但浏览器验收若只输出自然语言结论,主控仍需重测,无法稳定节省 token。
|
|||
|
|
|
|||
|
|
## 目标
|
|||
|
|
|
|||
|
|
把 Reasonix 浏览器测试从“描述性结论”收口为“可审计证据包”。Codex/Hermes 主控只接受带截图、日志、网络、断言和环境前置条件的 Reasonix 浏览器结论。
|
|||
|
|
|
|||
|
|
## 非目标
|
|||
|
|
|
|||
|
|
- 不让 Reasonix 直接裁决业务 bug 是否完成。
|
|||
|
|
- 不让 Reasonix 修改源码、提交 git、回滚文件。
|
|||
|
|
- 不把浏览器测试结论写成长期产品事实源;长期事实仍以 bug/design/checklist 和真实验证日志为准。
|
|||
|
|
|
|||
|
|
## 合同
|
|||
|
|
|
|||
|
|
每个 Reasonix 浏览器测试任务必须产出以下文件:
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
result.json
|
|||
|
|
final.md
|
|||
|
|
process-handoff.md
|
|||
|
|
process-handoff.json
|
|||
|
|
artifacts/
|
|||
|
|
screenshots/
|
|||
|
|
console.json
|
|||
|
|
network.json
|
|||
|
|
trace-or-steps.md
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
`result.json` 至少包含:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"status": "passed | failed | blocked",
|
|||
|
|
"run_id": "reasonix-...",
|
|||
|
|
"target_url": "http://127.0.0.1:3000",
|
|||
|
|
"environment": {
|
|||
|
|
"dev_server_restarted": true,
|
|||
|
|
"cache_cleared": true,
|
|||
|
|
"browser_context": "isolated",
|
|||
|
|
"auth_mode": "test-account",
|
|||
|
|
"workspace_root": "/tmp/..."
|
|||
|
|
},
|
|||
|
|
"steps": [
|
|||
|
|
{
|
|||
|
|
"name": "upload first attachment",
|
|||
|
|
"action": "drag file into editor",
|
|||
|
|
"screenshot": "artifacts/screenshots/01-upload-first.png"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"assertions": [
|
|||
|
|
{
|
|||
|
|
"name": "attachment opens in tab after second upload",
|
|||
|
|
"expected": "tab count increases and active tab kind is resource",
|
|||
|
|
"actual": "click produced no tab change",
|
|||
|
|
"passed": false,
|
|||
|
|
"evidence": "artifacts/screenshots/04-click-after-second-upload.png"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"console_errors": [],
|
|||
|
|
"network_failures": [],
|
|||
|
|
"screenshots": [],
|
|||
|
|
"modified_files": []
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 浏览器前置条件
|
|||
|
|
|
|||
|
|
- 测试前重启 `npm run dev:hot` 或复用主控明确提供的已重启服务。
|
|||
|
|
- 使用全新 isolated browser context;清空 cookies、localStorage、sessionStorage、IndexedDB、Cache Storage。
|
|||
|
|
- 默认使用 `http://127.0.0.1:3000/auth` 的测试账号快速登录。
|
|||
|
|
- local-first 测试必须创建临时页面或临时 workspace,并记录路径。
|
|||
|
|
- 所有上传文件路径必须记录,不能只写“上传文件”。
|
|||
|
|
|
|||
|
|
## 截图要求
|
|||
|
|
|
|||
|
|
用户可见 bug 至少保留:
|
|||
|
|
|
|||
|
|
- 初始状态截图。
|
|||
|
|
- 关键动作后截图。
|
|||
|
|
- 失败状态截图。
|
|||
|
|
- 修复验证时的通过状态截图。
|
|||
|
|
|
|||
|
|
如果 bug 涉及 “点击无反应”,必须同时记录:
|
|||
|
|
|
|||
|
|
- 点击前 tab 列表。
|
|||
|
|
- 点击后 tab 列表。
|
|||
|
|
- 点击目标节点截图。
|
|||
|
|
- console/network。
|
|||
|
|
|
|||
|
|
## 0524 试验集映射
|
|||
|
|
|
|||
|
|
`bugs/0524.md` 可作为第一批协同测试样本:
|
|||
|
|
|
|||
|
|
1. 我的空间拖入附件路径错误:
|
|||
|
|
- 验收:上传后文件实际路径应在当前页面 bundle/下级,而不是与主文件夹同级。
|
|||
|
|
- Reasonix 输出:文件树截图、实际磁盘路径、上传请求、编辑区附件截图。
|
|||
|
|
2. 上传后文件冲突:
|
|||
|
|
- 验收:本页面不误报自写冲突;新建页面不继承旧冲突状态。
|
|||
|
|
- Reasonix 输出:冲突弹窗截图、页面切换后截图、console/network。
|
|||
|
|
3. 隐藏本地 Markdown 标题设置:
|
|||
|
|
- 验收:不同 workspace/source 的默认值区分,用户选择刷新后保持。
|
|||
|
|
- Reasonix 输出:设置变更前后截图、刷新后截图、local/session storage 或后端请求证据。
|
|||
|
|
4. Ctrl+Z/Ctrl+Y 删除链接:
|
|||
|
|
- 验收:删除附件链接后 undo/redo 可恢复/再次删除。
|
|||
|
|
- Reasonix 输出:键盘动作步骤、编辑区 DOM/截图、断言结果。
|
|||
|
|
5. md 文件上传后黑色方块刷新变灰:
|
|||
|
|
- 验收:上传前后和刷新后附件 icon 状态一致,或有明确缺失状态样式。
|
|||
|
|
- Reasonix 输出:刷新前后截图、附件节点属性。
|
|||
|
|
|
|||
|
|
## 主控接受条件
|
|||
|
|
|
|||
|
|
Codex/Hermes 只有在以下条件满足时,才能把 Reasonix 浏览器结果作为验收证据:
|
|||
|
|
|
|||
|
|
- `result.json` 存在且能解析。
|
|||
|
|
- 至少一张截图能直接显示用户可见状态。
|
|||
|
|
- console/network 不为空时已被解释;为空时明确记录为空。
|
|||
|
|
- `modified_files` 为 `[]` 或 `none`,确认 Reasonix 没有改源码。
|
|||
|
|
- `process-handoff` 已 retain 到 Hindsight,主控可 recall。
|
|||
|
|
|
|||
|
|
## 失败处理
|
|||
|
|
|
|||
|
|
- 缺截图:结果降级为线索,不作为验收。
|
|||
|
|
- 缺 console/network:UI 失败只可作为复现证据,不可作为根因证据。
|
|||
|
|
- 没清缓存或没隔离 browser context:结果标记 `blocked` 或 `needs_rerun`。
|
|||
|
|
- Reasonix 修改源码:本次测试作废,主控检查 diff 后决定是否保留建议。
|
|||
|
|
|
|||
|
|
## 评价指标
|
|||
|
|
|
|||
|
|
- accepted_browser_findings:Reasonix 浏览器发现最终被主控采纳的数量。
|
|||
|
|
- false_browser_leads:Reasonix 浏览器结论导致主控走错方向的数量。
|
|||
|
|
- retest_required_ratio:主控必须完全重测的比例。
|
|||
|
|
- artifact_read_time:主控读取证据包并形成判断所需时间。
|
|||
|
|
- missing_artifact_count:缺失截图、console、network、断言的数量。
|
|||
|
|
|
|||
|
|
## Done Gate
|
|||
|
|
|
|||
|
|
- [ ] `reasonix-browser-tester` skill 已补入本合同的最小 artifact 要求。
|
|||
|
|
- [ ] 使用 `bugs/0524.md` 中至少 1 个 bug 进行 Reasonix 浏览器试跑。
|
|||
|
|
- [ ] 试跑后记录 accepted findings / false leads / retest required。
|
|||
|
|
- [ ] 根据试跑结果更新本合同或 Reasonix skill。
|