bug0inc/qa-agent
The open-source Playwright library for AI browser regression testing with intelligent caching, auto-healing, and multi-model verification.
Bug0 AI – AI 驱动的 Playwright 回归测试
它是什么 – 一个开源的 TypeScript 库,让您能以自然语言编写 Playwright 浏览器测试。该库将每个步骤发送给 LLM(Claude、Gemini、OpenAI 的 computer-use agent 等),获取操作指令,在浏览器中执行它们,并使用多模型共识引擎验证结果。它还会将成功的步骤缓存到 Redis 中,使后续的执行既快速又便宜。
主要功能
| 功能 | 运作方式 |
|---|---|
| 自然语言步骤 | runSteps() 接收一个 {description, data?, waitUntil?, ai?} 对象数组。描述为纯英文(例如 “Click Acme Circles T-Shirt”)。该库会格式化提示词,调用配置好的 LLM,并将模型的响应转换为 Playwright 操作。 |
| 多模型断言引擎 | 对于每个 assertion,该库会并行调用 Claude 和 Gemini。如果它们意见不一致,则由第三个“仲裁”模型(可配置)决定,或者您可以选择立即失败 (fail-on-disagreement)。 |
| 智能缓存 | 成功的步骤执行会存储在 Redis 中,键值为 userFlow + step.description。当缓存命中时,步骤会直接重播而无需调用 LLM,大幅降低延迟与成本。 |
| 自动修复 | 当缓存的步骤失败时,该库会退回到 LLM 重新计算操作,然后更新缓存。 |
| 视频断言 | 在断言上设置可选的 video: true 会记录整个步骤执行过程,将 .webm 上传到 Gemini 的 Files API,并让 Gemini 根据视频评估断言(适用于像提示信息这类短暂的 UI)。 |
| AI 网关支持 | 您可以通过 Vercel AI Gateway、OpenRouter、Cloudflare AI Gateway 路由所有 LLM 调用,或直接与提供者(Anthropic、Google、OpenAI)通讯。 |
| CUA 模式 | 当选择 mode: "cua" 时,该库会使用 OpenAI 的 computer-use agent (gpt-5.5 + 内置 computer 工具) 进行可视化、基于屏幕截图的自动化。 |
| 动态占位符 | {{run.*}}、{{global.*}}、{{data.*}} 和 {{email.*}} 让您能将随机电子邮件、ID 或从收到的邮件中提取的值注入到步骤中。 |
| 遥测与日志 | 可选的 OpenTelemetry 追踪 (Axiom) 和结构化的 Pino 日志。 |
| 电子邮件提取 | 内置 emailsink 提供者(抛弃式收件箱)或自定义提供者以获取验证码等。 |
典型工作流程
- 建立 Playwright 项目 –
npm init playwright@latest bug0-ai-project(选择 TypeScript)。 - 安装库 –
npm install @bug0/ai dotenv。 - 新增您的 LLM 凭证 – 至少一个 Anthropic 密钥和一个 Google Generative AI 密钥(或使用网关)。将它们放入
.env文件中。 - 一次性配置 – 在测试套件顶部调用
configure({ ai: { gateway: "vercel", models: { … } }, redis: { url }, telemetry: { … } })。 - 编写测试 – 使用
runSteps({ page, userFlow, steps, assertions, test, expect })。每个步骤都是纯英文描述;断言也是自然语言字符串。 - 执行 –
npx playwright test example.spec.ts --project chromium。报告中包含 AI 生成的摘要。
测试示例 (TypeScript)
import { test, expect } from "@playwright/test";
import { runSteps, configure } from "@bug0/ai";
configure({
ai: { gateway: "vercel" },
});
test("Shopping cart", async ({ page }) => {
await runSteps({
page,
userFlow: "Add product to cart",
steps: [
{ description: "Navigate to https://demo.vercel.store" },
{ description: "Click Acme Circles T-Shirt" },
{ description: "Select color", data: { value: "White" } },
{ description: "Add to cart", waitUntil: "My Cart is visible" },
],
assertions: [{ assertion: "You can see My Cart with Acme Circles T-Shirt" }],
test,
expect,
});
});
配置重点
- 模型插槽 – 八个插槽(步骤执行、用户流程低/高、主要/次要/仲裁断言、工具、CUA)。默认值为 Gemini-flash(用于低成本步骤)和 Claude-4.5-haiku(用于主要断言)。
- Redis – 设置
REDIS_URL或通过configure({ redis: { url } })传递以启用缓存和全局占位符。 - 网关 – 根据选择的网关设置
AI_GATEWAY_API_KEY、OPENROUTER_API_KEY等。 - CUA 模式 – 需要具有
computer工具访问权限的OPENAI_API_KEY;设置mode: "cua"和gateway: "none"。 - 遥测 – 提供
AXIOM_TOKEN/AXIOM_DATASET或以程序方式配置它们以获取 OpenTelemetry 追踪。
谁会使用它
- 已经使用 AI 代理(例如 Bug0 的 FactoryKit)生成 UI 代码,且需要一个能容忍频繁 DOM 变更的回归测试套件的团队。
- 希望快速编写测试而无需维护脆弱选择器的 QA 工程师。
- 希望将 LLM 驱动的自动化与传统 Playwright 可靠性功能(如缓存和视频捕获)结合的开发人员。
README 中提到的限制
- 测试套件本身仍然很小;欢迎更多边缘案例覆盖。
- 视频断言会绕过网关,需要直接的 Google API 密钥。
- CUA 模式不能与网关混合使用;它必须直接与 OpenAI 通讯。
- 多步骤缓存尚未实现(仅缓存单步骤操作)。
授权 – FSL-1.1-ALv2(一种宽松的开源授权)。
以上所有信息均直接取自仓库的 README;未推断出任何额外功能。
相关
- 项目
- 项目
- 项目
- 项目