mcpField
E
e2e-flow-verifier

e2e-flow-verifier

github.com/proffesor-for-testing测试与质量51966 次安装今天更新
代码仓库

关于 e2e-flow-verifier

e2e-flow-verifier 是使用 qe-browser 与 Vibium 驱动用户流程并验证状态的产品验证技能,面向端到端测试与 CI 检查。它还能将截图、DOM 快照、时间线及控制台和网络日志打包为 ZIP 证据。

主要功能

  1. 01通过批处理计划驱动用户流程
  2. 02逐步断言界面与状态
  3. 03失败步骤返回非零状态
  4. 04收集截图与 DOM 快照
  5. 05导出时间线及控制台、网络日志

适用场景

  1. 01在 CI 中验证注册或购买流程
  2. 02同时检查页面结果与后端响应
  3. 03为失败流程保存可复查证据
  4. 04复用认证状态运行后续测试

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/proffesor-for-testing/agentic-qe --skill e2e-flow-verifier

安装后在 Claude Code 中输入/e2e-flow-verifier确认已加载。

详细介绍

E2E 流程验证器

产品验证技能,使用 qe-browser fleet 技能(Vibium 引擎)驱动用户流程,在每个步骤断言状态,并将证据记录为包含截图和 DOM 快照的 ZIP 文件。

激活

/e2e-flow-verifier [flow-name]

依赖项

此技能使用 .claude/skills/qe-browser/ 进行所有浏览器自动化。vibium 二进制文件由 aqe init 自动安装。完整命令参考请参阅 qe-browser/SKILL.md。

流程验证模式(qe-browser + batch + assert)

将流程定义为 JSON 批处理计划,并使用 qe-browser 批处理运行器执行:

# flows/{{flow-name}}.json
cat > /tmp/{{flow-name}}.json <<'EOF'
[
  {"action": "go",      "url": "{{base_url}}"},
  {"action": "wait_load"},
  {"action": "fill",    "selector": "[data-testid=email]",    "text": "{{test_user}}"},
  {"action": "fill",    "selector": "[data-testid=password]", "text": "{{test_password}}"},
  {"action": "click",   "selector": "[data-testid=login-btn]"},
  {"action": "wait_url","pattern": "/dashboard"},
  {"action": "assert",  "checks": [
    {"kind": "url_contains",    "text": "/dashboard"},
    {"kind": "selector_visible","selector": "[data-testid=dashboard]"},
    {"kind": "no_console_errors"},
    {"kind": "no_failed_requests"}
  ]},
  {"action": "click",   "selector": "[data-testid={{action_element}}]"},
  {"action": "assert",  "checks": [
    {"kind": "text_visible", "text": "{{expected_text}}"}
  ]}
]
EOF

# Record evidence AND drive the flow
vibium record start --screenshots --snapshots --name "{{flow-name}}"
node .claude/skills/qe-browser/scripts/batch.js --steps "@/tmp/{{flow-name}}.json"
FLOW_EXIT=$?
vibium record stop -o "test-results/{{flow-name}}/evidence.zip"
exit $FLOW_EXIT

如果任何步骤失败,批处理运行器会以非零状态码退出,因此 CI 门禁可以直接检查 $?。

证据收集

每次流程验证后,vibium record 都会生成一个 ZIP 文件,其中包含:

  1. 截图 — 每个操作对应一张截图,另有带注释的失败截图
  2. DOM 快照 — 每次交互前后各一份
  3. 时间线 — 按顺序排列的事件日志,包含 URL 和耗时
  4. 控制台/网络日志 — 内联捕获

如有需要,可使用 vibium har-export 导出单独的 HAR 1.2 网络日志。

同时断言后端状态与 UI 状态

qe-browser 的 assert.js 检查类型包括网络断言,可捕获页面发出的后端调用:

node .claude/skills/qe-browser/scripts/assert.js --checks '[
  {"kind": "response_status", "url": "/api/{{resource}}", "status": 200},
  {"kind": "request_url_seen", "url": "/api/{{resource}}"}
]'

对于并非由页面发起的 API 调用,请在单独的步骤中运行 API 检查(curl + jq,或专用的 API 测试技能)。

常见验证流程

流程步骤关键断言
注册注册 → 验证电子邮件 → 登录url_contains /dashboard、no_failed_requests
购买浏览 → 加入购物车 → 结账 → 支付response_status /api/orders 201、text_visible "Thank you"
个人资料登录 → 编辑个人资料 → 保存重新加载的表单中 value_equals、no_console_errors
搜索输入查询 → 筛选 → 选择结果element_count .result >= 1、text_visible <query>

在不同运行中复用身份验证状态

# Once: log in and save state
vibium go "{{base_url}}/login"
vibium fill "[data-testid=email]" "$USERNAME"
vibium fill "[data-testid=password]" "$PASSWORD"
vibium click "[data-testid=login-btn]"
vibium wait url "/dashboard"
vibium storage -o test-results/auth/state.json

# Every subsequent run
vibium storage restore test-results/auth/state.json
vibium go "{{base_url}}/dashboard"

注意事项

  • DOM 更改后重新映射 — 导航会使 Vibium 的 @e1 引用失效;使用 vibium diff map 查看更改内容,并在需要时重新映射。
  • 部署后选择器可能失效 — 优先使用 data-testid,而非 CSS 类。
  • 身份验证令牌会过期 — 每次运行时使用新登录,或轮换 storage 快照。
  • 证据 ZIP 文件会增大 — 在 CI 中仅保留失败运行的文件,并在 N 天后进行垃圾回收。
  • 不使用原始 Playwright — 此技能过去使用 @playwright/test。如果需要 Playwright 的网络拦截功能(page.route),请在单独的技能中使用,并将其作为一个步骤调用;不要在此处重新引入该依赖。

评论

支持 Markdown