Chrome QA Agent

May 31, 2026 · View on GitHub

能捕捉 Playwright 抓不到的问题的对抗式测试。它会分析 git diff,只测发生变化的部分,或者探索整个应用来发现 bug。通过 chrome-devtools MCP 在真实的本地 Chrome 中运行。

安装

需要配置并连接 chrome-devtools MCP 服务器(它会驱动一个真实的本地 Chrome)。无需任何额外安装。

mcp__chrome-devtools__* 工具可用时即说明配置成功(可以试试 mcp__chrome-devtools__list_pages)。如果不可用,请添加或启用 chrome-devtools MCP 服务器后重试。为避免每次调用工具都要确认,可以在 settings.jsonpermissions.allow 中放行它们:

{
  "permissions": {
    "allow": [
      "mcp__chrome-devtools"
    ]
  }
}

快速上手

"Test the UI changes in my PR"         → diff 驱动 (工作流 A)
"Explore my app and find bugs"         → 探索式 (工作流 B)
"QA the staging site, group by group"  → 分组顺序测试 (工作流 C)

工作原理

  1. 分析 diff(或探索应用)来决定测什么
  2. 打开真实的本地 Chrome —— 同一个浏览器既能测 localhost 也能测已部署的 URL,只需改变 URL。使用隔离上下文可获得干净的、未登录状态的运行环境。
  3. 尝试搞破坏 —— 对抗式输入、快速点击、纯键盘操作、空状态、XSS
  4. 运行确定性检查 —— axe-core、控制台错误、损坏的图片、表单标签
  5. 报告结构化结果 —— STEP_PASS|id|evidenceSTEP_FAIL|id|expected → actual
  6. 生成 HTML 报告 —— 内嵌截图的独立文件,可分享给评审者

测试内容

类别方式Playwright 漏掉的
无障碍axe-core + 键盘导航WCAG 违规、焦点框、屏幕阅读器语义
视觉质量截图 + Claude 判断布局平衡、排版、间距、空状态
响应式视口扫描 (375px, 768px, 1440px)移动端溢出、触控目标、内容重排
控制台健康注入 evaluate_script水合错误、失败的请求、运行时异常
错误状态导航到空状态/错误状态缺失的空状态、损坏的错误恢复
对抗式XSS、空提交、快速点击、超长输入开发者不会专门写测试的边界情况
探索式自由导航、尝试搞破坏你想不到要测的 bug

浏览器执行

只有一个本地 Chrome。同一套工具既测 localhost 也测已部署的站点 —— 改变的只有 URL。

  • 打开页面mcp__chrome-devtools__navigate_page { type: "url", url }
  • 干净的、未登录的标签页mcp__chrome-devtools__new_page { url, isolatedContext: "ui-test" }
  • 对无障碍树(a11y)做快照mcp__chrome-devtools__take_snapshot(返回基于 uid 的元素)
  • 交互mcp__chrome-devtools__click { uid }mcp__chrome-devtools__fill { uid, value }mcp__chrome-devtools__evaluate_script { function }
  • 截图mcp__chrome-devtools__take_screenshot { filePath: X }
  • 关闭标签页mcp__chrome-devtools__close_page

Localhost 与已部署: 将 URL 指向 http://localhost:3000 用于本地开发,或指向 https://your-app.com 用于已部署站点 —— 工具用法完全一致。已部署站点上的鉴权会复用真实 Chrome 配置中已登录的会话 —— 如果你在 Chrome 里已登录,测试也是登录态。要获得可复现的、未登录状态的运行,请在隔离上下文中打开页面(new_page { isolatedContext: "ui-test" })。

顺序执行,而非并行: 只有一个共享浏览器,并且 select_page 会为整个连接全局设置活动页面。大型任务会被拆分成多个分组以实现上下文隔离,但这些分组是前后接连运行的(同一时刻只有一个 agent 占用浏览器),并非并发。

项目结构

chrome-qa-agent/
├── SKILL.md                              # Skill 定义 —— 工作流、断言协议、预算
├── EXAMPLES.md                           # 9 个带精确命令的实战示例
├── README.md
└── references/
    ├── adversarial-patterns.md           # 对抗式测试模式(表单、模态框、导航、键盘)
    ├── browser-recipes.md                # 可复制粘贴的 chrome-devtools MCP 确定性检查配方
    ├── design-consistency.md             # 设计一致性检查方法论
    ├── design-system.example.md          # 设计系统模板示例(复制为 design-system.md)
    ├── exploratory-testing.md            # agent 驱动的探索式 QA 指南
    ├── parallel-testing.md              # 单一共享浏览器上的分组顺序测试
    ├── report-template.html              # 内嵌截图的 HTML 报告模板
    └── ux-heuristics.md                  # 6 套评估框架(Laws of UX、Nielsen 等)

理念

传统测试验证的是意图。这个 skill 发现的是盲点

没有 YAML 文件,没有生成的测试套件,没有产物。Agent 读取 diff(或探索应用),打开浏览器,尝试搞破坏,然后报告它发现的东西。就像一个对每一条设计原则都了如指掌的人类 QA 测试员。

环境要求

  • 配置并连接 chrome-devtools MCP 服务器(驱动真实的本地 Chrome)—— 通过 mcp__chrome-devtools__* 工具确认是否可用。
  • 一个正在运行的 Web 应用(localhost 或已部署的 URL)