用途
OpenClaw Docker E2E Authoring 用于在新增或修改以下内容时提供指导:
- Docker E2E 通道(lanes)
- 发布路径 Docker 测试
- 实时提供商(live provider)Docker 验证
通道选择
确定性 Docker(Deterministic Docker):伪造依赖/服务器,断言跨越边界的精确运行时契约。
实时 Docker(Live Docker):仅当需要真实用户可见行为时,使用真实提供商凭据/模型。
当两者证明不同风险时优先同时使用:确定性通道用于字节/载荷路由,实时通道用于实际提供商行为。
编写规则
- 仅测试使用的辅助工具应放在 test/helpers 或 scripts/e2e/lib/<lane>/ 中,不要放在 src/**,除非生产代码会导入它们。
- 通过包安装的应用从 /app 运行;仅以只读方式挂载明确的测试工具/辅助路径。
- 伪造服务器应以 JSONL 记录边界请求,客户端应断言真实的依赖载荷,而不仅仅是进程成功。
- 在同一次变更中添加包脚本与 scripts/lib/docker-e2e-scenarios.mjs 通道。
- 如果某个通道从 npm 安装插件,应通过环境变量设置默认 spec,使已发布路径与本地覆盖路径都可测试。
媒体与视觉
- 预期答案必须只存在于被测试的像素或提供商输出中。
- 使用中性文件名、中性提示词,不泄露元数据。
- 随机位图/OCR token 复用仓库的 OCR 安全字母表 24567ACEF,除非测试自身拥有更强的字形集。
- 在验证真实图像理解时,使每次运行的预期答案唯一。
chat.send E2E
- 要求 chat.send 返回 status: "started" 以及字符串 runId。
- 使用 agent.wait 等待完成。
- 当事件顺序不是被测行为时,通过 chat.history 断言最终用户可见文本。
- 仅当 bug 路径需要排队入站/通道上下文时,才保留来源通道/账户元数据。
验证
运行覆盖所改动通道的最小证明:
pnpm exec oxfmt --write <changed files>
node --check <new .mjs files>
bash -n <new .sh files>
node scripts/run-vitest.mjs test/scripts/docker-e2e-plan.test.ts
OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:<lane>
对于真实提供商通道,在确定性 Docker 通过后运行对应的实时 Docker 脚本。在提交/PR 前以 $autoreview 收尾。