用途
Dogfood 用于系统性地探索和测试 Web 应用,找出 bug、UX 问题和其他问题,并针对每一个发现生成带有完整复现证据的报告。它被设计为在被告知执行“dogfood”“QA”“探索式测试(exploratory test)”“find…”等任务时使用。
主要能力
- 系统化探索:从主导航入手,依次访问各顶层分区,测试交互元素,检查边界情况(空状态、错误处理、边界输入),并尝试真实的端到端流程(创建、编辑、删除)。
- 复现优先的问题记录:每个问题都必须可复现,并配有证据。交互类/行为类问题(功能、UX、操作时的控制台错误)使用录屏加逐步截图;静态/加载即可见的问题(错别字、占位文本、文字截断、错位、加载时的控制台错误)只需一张标注截图。
- 控制台检查:周期性检查浏览器控制台错误与控制台输出,捕捉界面不可见但以 JS 错误或失败请求形式出现的问题。
- 增量报告:发现问题后立即追加写入报告,不批量积压,避免会话中断时丢失发现。
使用方式
设置:仅需提供目标 URL,其余参数均有合理默认值。
| 参数 | 默认值 | 覆盖示例 |
|---|---|---|
| 目标 URL | (必填) | vercel.com, http://localhost:3000 |
| 会话名称 | 域名 slug 化(如 vercel.com -> vercel-com) | --session my-session |
| 输出目录 | ./dogfood-output/ | Output directory: /tmp/qa |
| 范围 | 全应用 | Focus on the billing page |
| 认证 | 无 | Sign in to user@example.com |
如果用户说类似“dogfood vercel.com”,则立即以默认值开始,不要追问澄清问题,除非提到了认证但缺少凭据。始终直接使用 agent-browser,绝不使用 npx agent-browser;直接使用二进制走的是快速 Rust 客户端,而 npx 经由 Node.js,明显更慢。
工作流(六步):
- Initialize(初始化):创建输出目录与子目录、复制报告模板、启动命名会话。
mkdir -p {OUTPUT_DIR}/screenshots {OUTPUT_DIR}/videos
cp {SKILL_DIR}/templates/dogfood-report-template.md {OUTPUT_DIR}/report.md
agent-browser --session {SESSION} open {TARGET_URL}
agent-browser --session {SESSION} wait --load networkidle
- Authenticate(认证):若应用需要登录,先做快照、识别登录表单 ref、填写凭据并点击。OTP/邮箱验证码需询问用户并等待其响应后输入。登录成功后保存状态以便复用:
agent-browser --session {SESSION} state save {OUTPUT_DIR}/auth-state.json。 - Orient(定位):截取初始标注截图并做快照,识别主导航元素并规划要访问的分区。
- Explore(探索):阅读 references/issue-taxonomy.md 了解检查清单与严重级别。按导航逐个访问顶层分区,测试交互元素,检查边界情况与端到端流程;每页做快照、标注截图,并检查 errors 与 console。
- Document(记录):与第 4 步同时进行。发现问题立即停下记录。交互类问题先开始录屏(record start),以人类节奏逐步操作(每步间 sleep 1),各步骤截图,最终状态暂停并做标注截图,然后停止录屏(record stop)。静态问题只需一张标注截图,Repro Video 填 N/A。所有问题立即追加到报告并递增编号(ISSUE-001、ISSUE-002……)。
- Wrap Up(收尾):目标为找到 5–10 个记录充分的问题后收尾,重读报告并更新摘要严重级别计数以与实际问题一致,关闭会话,并告知用户报告已就绪、总结发现(总数、严重级别分布、最关键项)。
适用场景
- 对 Web 应用进行探索式 QA / 手工测试式探索。
- 需要产出带完整复现证据(截图、录屏、重现步骤)的问题报告。
- 在浏览器中模拟真实用户走常见工作流,而非执行固定测试脚本。
限制与约束
- 不得阅读被测应用的源代码(HTML、JS、配置文件),所有发现必须来自浏览器中的观察。
- 不得删除输出文件,不得在会话中途 rm 截图、视频或报告,不得关闭会话后重启。
- 不要对静态问题录制视频;视频仅用于涉及用户交互、时序或状态变化的问题。
- 录制视频期间填写表单字段应使用 type 而非 fill,以逐字符输入;仅在非录制且重视速度时使用 fill。
- 滚动应使用
agent-browser --session {SESSION} scroll down 300,不要用 key 或 evaluate。 - 命令应尽量高效批量执行;独立命令可在单次 shell 调用中组合。
参考资料
- references/issue-taxonomy.md:会话开始时阅读,用于校准检查内容、严重级别与探索清单。
- templates/dogfood-report-template.md:复制到输出目录作为报告文件。