跳转至

SOP:AI 驱动测试(Playwright Test Agents)

团队 E2E 测试的落地方案与教程。方法论 + 模板在本仓库,实际 spec 在被测仓库 czerp-console。 Skill:plugins/czerp-qa/skills/ai-driven-regression/

⚠️ Playwright E2E 为待初始化项:czerp-console 当前尚未落地(无 tests/、无 playwright.configpackage.json@playwright/test)。 下文涉及 tests/e2e/playwright.config.ts@playwright/testtests/e2e/prep/ 等均为初始化后的目标形态,需先按「一次性初始化」一节落地。


为什么这么选

基于 2026 成熟实践(Playwright Test Agents + Playwright MCP):三 agent(planner/generator/healer)、基于无障碍树而非像素、抗 UI 变更。核心经济学:

  • 生成贵、执行廉:用 MCP + agent 探索生成测试(高 token),产出确定性 *.spec.ts 提交进仓库;CI 用 npx playwright test 廉价执行(几乎零 token)。
  • 失败才用 LLM:healer 仅在 CI 失败时介入,分流"locator 漂移→自愈"与"真实回归→提缺陷"。

三阶段

[Generate] planner+generator (Playwright MCP, test 环境)
   → tests/e2e/<story>.spec.ts 提交进 czerp-console
        │
[Execute] CI: npx playwright test
   PR→develop = @p0/@p1 smoke; release/test & nightly = 全量
        │ 失败
[Heal] healer (Playwright MCP)
   locator 漂移 → 修复 PR(人工 review)
   真实回归 → defect-submission → PingCode CZTST → 关联开发
   flaky → 标记,QA 调查

一次性初始化(czerp-console)

cd <CZERP>/czerp-console
npm init playwright@latest
npx playwright init-agents --loop=claude     # 或 --loop=opencode / vscode(Playwright 暂不直接支持 codex loop)
cp <enablement>/plugins/czerp-qa/skills/ai-driven-regression/references/playwright.config.ts ./
mkdir -p tests/e2e tests/e2e/prep

CI 模板见 references/ci-e2e.yml;agent 定义见 references/agents/

日常流程

  1. QA 写用例(testcase-author),P0/P1 标 auto: true
  2. 故事完成 → planner+generator 经 Playwright MCP 生成 spec(role-based locator,断言对齐 验收标准)→ QA review → 提交 czerp-console。
  3. CI 自动执行;失败由 healer 分流。
  4. 缺陷进 PingCode CZTST(defect-submission)。

环境与密钥

  • E2E_BASE_URL / E2E_USER / E2E_PWD 由 CI secret 注入;本地从 config/environments.md 的 test 环境取。
  • 测试数据脚本随 czerp-console tests/e2e/prep/
  • 浏览器版本由 czerp-console @playwright/test 锁定。

铁律

  • 生成一次、执行多次——不要每次回归都让 MCP agent 重新推理(4× 成本)。
  • locator 用 role/label/text,不用脆弱 CSS/xpath。
  • healer 只能改定位方式,绝不放宽断言迁就 bug。
  • 账号密码走环境变量,不进 spec。
  • flaky 不静默重试掩盖。

后端测试

后端 API 用 JUnit(ifinmate-core-test,见 IFinmate 文档 2.3 单元测试)+ 可选 HTTP 层;E2E 聚焦 czerp-console。