SOP:AI 驱动测试(Playwright Test Agents)¶
团队 E2E 测试的落地方案与教程。方法论 + 模板在本仓库,实际 spec 在被测仓库
czerp-console。 Skill:plugins/czerp-qa/skills/ai-driven-regression/。⚠️ Playwright E2E 为待初始化项:czerp-console 当前尚未落地(无
tests/、无playwright.config、package.json无@playwright/test)。 下文涉及tests/e2e/、playwright.config.ts、@playwright/test、tests/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/。
日常流程¶
- QA 写用例(
testcase-author),P0/P1 标auto: true。 - 故事完成 → planner+generator 经 Playwright MCP 生成 spec(role-based locator,断言对齐 验收标准)→ QA review → 提交 czerp-console。
- CI 自动执行;失败由 healer 分流。
- 缺陷进 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。