Evidence-Driven Testing 是一个面向代理的技能,用于在执行 UI 测试时记录可视化的行为证据,并将证据交付到指定位置。它强调“边测试边记录”:录制内容就是代理通过 computer use 亲手操作应用的实时会话,而非预先编排的播放或合成画面。
用途:为 UI 行为、交互流程、缺陷修复、API 或性能变化生成可核查的证据。证据形式与变更类型相匹配:交互式流程使用屏幕录制,无头 UI 检查使用脚本化捕获,CLI 或 API 变更使用输出配对。仅涉及文档的修改不需要录制,只需进行内容检查和可运行示例验证。
主要能力:
- 内置录制器 scripts/evidence.py,在 Linux、macOS 和 Windows 上通过 FFmpeg 捕获屏幕。
- 在测试过程中添加的注释会带上时间戳,并在停止录制时烧录进视频。
- 使用 ffprobe 校验结果,输出 evidence.mp4、report.md 和 manifest.json 到会话文件夹。
- 崩溃安全的原始捕获:原始录制为 MPEG-TS 格式(raw.ts),即使录制器被强制终止或崩溃,已捕获的内容仍可探测和渲染。
- 支持多种捕获源:Linux X11/XWayland(x11grab)、Linux Wayland(wf-recorder)、macOS(avfoundation)、Windows(gdigrab)。默认捕获全屏,可通过 --geometry 和 --offset 裁剪区域。
- 平台支持情况由 doctor 命令检查:python3 $EVIDENCE doctor 会验证 ffmpeg、ffprobe、libx264 和 ass 滤镜,并检测可用的屏幕捕获源。
- 提供回退录制器:当 doctor 报告无捕获源时,可使用 cua-driver 录制或操作系统自带录制器(如 macOS 的 screencapture)。在这些路径下无注释叠加,需以文件形式维护断言列表。
使用方式(概要):
- 准备屏幕:最大化浏览器或应用窗口,关闭弹窗和通知,在录制前导航到起始状态,记录被测的精确修订版本(如 git rev-parse HEAD)。
- 开始录制:运行 python3 $EVIDENCE start 并指定输出目录、标题、提交、分支和环境,获得会话路径。
- 通过 computer use 测试并注释:执行每个交互,在测试开始时添加 test_start 注释,在每次检查后添加 assertion 注释(结果可为 passed、failed 或 untested)。断言应简洁(少于 80 字符),每次有意义的状态变化对应一条断言。无法运行的测试需标记为 untested 并说明原因。
- 停止并审查:运行 python3 $EVIDENCE stop 停止录制,烧录注释,生成报告和清单。确认关键帧可见,填写报告中的 Caveats 部分。
- 发布证据:将 report.md 和视频作为 PR 评论或按任务要求发布,并确认视频可播放。
适用场景:
- UI 交互流程验证(点击、输入、导航等)。
- 缺陷修复的前后对比。
- API 或性能变化的脚本化探测,记录请求次数、延迟等数据。
- 渲染或着色器变化的帧捕获与像素断言。
- 代理行为记录,截取相关对话记录展示工具调用和响应。
限制与约束:
- 视频必须展示真实的实时测试会话,严禁使用脚本播放、拼接片段或合成画面。
- 若测试环境缺少 computer-use 工具但存在 GUI,可通过 cua-driver 驱动应用,这仍是实时测试。
- 无 GUI 时走无头路径,使用 Playwright 脚本化捕获,并以文件形式保存断言列表(assertions.md)。
- 录制前必须最大化窗口,不得录制半覆盖或平铺窗口。
- 不得录制包含秘密、令牌、客户数据或支付详情的屏幕;如流程需要,应标记为 untested 并说明原因。
- 验证修复时,应同时展示或引用旧的失败与新成功。
- 必须明确声明测试所对应的精确提交、分支或部署版本。
- 证据是仓库检查(类型检查、构建、测试)的补充,不能替代它们。
- 无头路径中,Playwright 脚本需自包含;使用项目已有的 Playwright 设置处理本地导入。
- 捕获工具升级时,需更新 scripts/playwright/package.json 并重新生成锁文件。
暂未提供的信息:该技能的具体收费模式、价格、平台兼容性的完整列表、性能指标或效果评价均未在资料中说明。