Install
openclaw skills install auto-qa在 OpenClaw 平台执行网页自动 QA 测试(自动操作 + 采证 + 报告 + 修复提示包)。当用户要求做自动化回归、演示级测试、失败证据归档或生成可直接交给下一窗口的修复 Prompt 时使用。
openclaw skills install auto-qa用于一期 MVP:
场景定义组件demo/scenarios/*.json执行编排器src/skills/auto-qa/scripts/run_autoqa.pyopenclaw browser 执行动作。浏览器执行器(OpenClaw 内置能力)openclaw browser ...证据归档组件demo/artifacts/run-<run_id>/报告生成组件demo/reports/run-<run_id>/report.json、demo/reports/run-<run_id>/report.html修复任务包生成组件demo/reports/run-<run_id>/fix_plan.json、next_window_prompt.md、standby_prompt.txt稳定性增强组件src/skills/auto-qa/scripts/run_autoqa.py门禁断言组件src/skills/auto-qa/scripts/run_autoqa.pyerror -> 违规(critical)4xx -> 违规(critical)5xx -> 违规(blocker)gateViolationsgateViolationCountsBySeverityriskLevelreleaseDecision(GO / CONDITIONAL_GO / NO_GO)reviewStatus(consistent / needs_inspection)reviewConclusion(复核一致 / 复核需进一步检验)reviewFindings(需进一步检验时的具体项)Trace 对齐组件demo/reports/run-<run_id>/step_trace_map.json报告通知组件src/skills/auto-qa/scripts/run_autoqa.py(运行参数触发)report.html 全页图并发送到聊天频道。--notify-channel 时触发。--notify-target 时,自动从 openclaw status --json 最近会话推断目标(当前频道优先)。screenshot + console + network + tracereport.jsonreport.htmlfix_plan.jsonnext_window_prompt.mdstandby_prompt.txtdemo/
scenarios/
mvp_smoke.json
_generated/ ← agent 智能生成的临时 scenario 存放目录
artifacts/
run-<run_id>/
steps.json
console.json
network.json
health_checks.json
trace.zip
screenshots/
reports/
run-<run_id>/
report.json
report.html
report_full.png
step_trace_map.json
fix_plan.json
next_window_prompt.md
standby_prompt.txt
{
"name": "MVP Smoke",
"autoScreenshot": true,
"continueOnFailure": false,
"steps": [
{ "id": "step-001", "action": "open", "url": "https://example.com", "expected": "页面可访问" },
{ "id": "step-002", "action": "wait", "text": "Example Domain", "expected": "标题出现" },
{
"id": "step-003",
"action": "assert_text_contains",
"value": "Example Domain",
"expected": "正文包含关键字"
}
]
}
{
"name": "WeHub Smoke",
"gates": {
"enabled": true,
"minPassRate": 95,
"console": {
"errorAsFailure": true,
"ignoreMessagePatterns": ["known harmless error"]
},
"network": {
"sameOrigin4xxAsFailure": true,
"sameOrigin5xxAsFailure": true,
"thirdParty5xxAsFailure": false,
"ignoreUrlPatterns": ["/favicon.ico"],
"ignoreStatusCodes": [401]
}
},
"steps": []
}
{
"name": "Visual Demo",
"visual": {
"enabled": true,
"focusTabBeforeStep": true,
"preActionWaitMs": 220,
"postActionWaitMs": 420,
"highlightBeforeClick": true,
"highlightBeforeType": true,
"highlightWaitMs": 480
},
"steps": []
}
说明:
focusTabBeforeStep:每步前尽量聚焦受控 tab,减少后台节流导致的观感抖动。preActionWaitMs/postActionWaitMs:动作前后节奏等待,提升"可见点击/跳转"观感。highlightBeforeClick/highlightBeforeType:动作前高亮目标元素。opennavigatesnapshotclickhovertypepressbackscrollclick_link_same_originwaitevaluateassert_url_containsassert_text_containsscreenshotnooprun_autoqa.py 在加载 scenario 时自动执行 pre-flight 校验:
action 字段action 值必须在上述"支持动作"列表内,否则报错并列出全部合法值open/navigate 须含 url;click/hover/type 须含 ref;assert_* 须含 value校验在执行前触发,出错时给出明确的 step 索引和原因——不会默默失败。
生成 scenario 时请确保遵守上述约束。id 字段建议保留(格式 step-NNN),缺省时引擎会自动补全。
{
"exploration": {
"enabled": true,
"maxDepth": 3,
"maxChildrenPerNode": 5,
"maxPages": 30,
"maxDurationMinutes": 15,
"sameOriginOnly": true
},
"steps": [
{ "id": "step-010", "action": "click_link_same_origin", "depth": 2 },
{ "id": "step-011", "action": "back", "returnEdge": true, "depth": 2 }
]
}
说明:
depth:步骤所属探索层级(用于覆盖统计)。returnEdge=true:该步骤计入"返回边"覆盖统计(back 动作默认计入)。在仓库根目录执行:
python3 src/skills/auto-qa/scripts/run_autoqa.py \
--scenario-id wehub_demo \
--browser-profile openclaw \
--auto-start-browser
当用户表达"跑 QA / 再测一次 / 做自动回归 / 开始测试"等执行意图时,默认进入直接执行,不先回复"计划确认"。
正常流程不使用预设脚本。场景(scenario)应由 agent 智能生成。
优先级 1:用户给了测试要求(自然语言)
用户可能说:"测一下登录功能"、"检查购物车流程"、"用以下用例做自动 QA 测试:……"。
agent 必须:
openclaw browser open <url> 打开目标openclaw browser snapshot --interactive --labels 扫描页面结构demo/scenarios/_generated/<run-id>.json--scenario <path> --force-direct-scenario-path 执行严禁忽略用户的任何测试要求。 如果页面上找不到用户要求的元素,在 scenario 中仍要包含该步骤并标注 expected,让执行引擎报告失败——而不是静默跳过。
优先级 2:用户只给了 URL,没有具体要求
agent 必须:
openclaw browser open <url> 打开目标openclaw browser snapshot --interactive --labels 扫描页面结构demo/scenarios/_generated/<run-id>.json 并执行生成的 scenario 必须基于实际页面内容,不能凭空猜测。 每个 step 的 ref、url、text 必须来自 snapshot 的真实数据。
优先级 3(极端后备):snapshot 失败或浏览器不可用
仅当以上两种方式都失败时(如浏览器无法启动、目标不可达),才回退到预设脚本:
defaultScenarioId 或 generic_template预设脚本(scenario-id)仅用于以下场景:
常用参数:
--scenario <path>:直传 scenario JSON 路径(需配合 --force-direct-scenario-path)--scenario-id <id>:从注册表选择场景(仅调试/演示;默认注册表:demo/scenarios/registry.json)--scenario-registry <path>:指定场景注册表路径--scenario-var key=value:覆盖场景变量(可重复;用于模板场景的 {{start_url}}/{{start_domain}} 等占位)--allow-direct-scenario-path:允许接收 --scenario <path> 直传请求(默认关闭;默认会回退注册表默认场景)--force-direct-scenario-path:强制执行直传路径(智能生成场景时必须开启)--run-id <id>:手动指定 run id--output-root demo:输出根目录--allow-external-scenario:允许执行仓库 demo/scenarios 目录外的场景(默认关闭,防误跑)--allow-legacy-scenario:允许执行 meta.legacy=true 的旧场景(默认关闭)--no-trace:关闭 trace 录制--browser-bin <bin>:指定 OpenClaw 可执行名(默认 openclaw)--browser-cmd "<cmd>":指定完整命令前缀(例如 pnpm --dir src openclaw)--max-step-retries <n>:每步默认重试次数(默认 1)--retry-wait-ms <ms>:重试间隔(默认 800)--showcase-recheck:启用复核执行并与主执行结果对照(默认开启)--showcase-continue-on-failure:复核执行遇到差异后是否继续(默认开启)--showcase-max-step-retries <n>:复核执行默认重试次数(默认 0)--showcase-retry-wait-ms <ms>:复核执行重试间隔(默认 500)--showcase-time-budget-ms <ms>:复核执行时间预算(默认 90000,超时即提前收口并继续产出最终报告)--resume-from-step-id <stepId>:从指定步骤开始续跑--resume-from-run-id <runId>:从某次历史失败 run 的首个失败步骤续跑--resume-last-failed:从同一场景最近一次失败 run 自动续跑--health-check-interval <off|on-failure|each-step>:健康检查频率(默认 on-failure)--trace-start-mode <auto|immediate|after-first-step>:trace 启动时机(默认 auto)--notify-channel <channel>:自动发送报告截图到指定频道(支持 discord/.../auto/current,不依赖固定频道名)--notify-target <target>:频道目标(不传则自动推断最近会话目标)--notify-account <id>:可选 accountId--notify-message <text>:可选通知文案--notify-auto-current-channel:未显式指定频道/目标时,自动发到最近活跃会话(默认开启)--notify-max-session-age-ms <ms>:自动推断会话的最大"最近活跃时间"(默认 30 分钟)--cleanup-orphan-openclaw-processes:运行前自动清理多余 OpenClaw 专用 Chrome 进程(默认开启)最终形态执行约束(当前实现):
3;默认"失败优先截图"(analysisAutoScreenshot=false),保留 console/network/trace 全量采证。open,复核执行自动改为同 tab navigate,避免额外新开 tab。needs_inspection,不阻塞本轮交付。partial_timeout,并继续生成 report.html/report_full.png 与回传。执行超时建议(重要):
exec 调脚本时,必须设置 timeout >= 900 秒。你关心的"炫酷演示 + 不打断主画面工作"建议这样跑:
python3 src/skills/auto-qa/scripts/run_autoqa.py \
--scenario-id wehub_demo \
--browser-profile openclaw \
--auto-start-browser \
--max-step-retries 1 \
--health-check-interval on-failure
说明:
trace-start-mode=auto 下,若首步是 open/navigate,trace 会延后到第一步后启动,减少 about:blank 首屏干扰。report_full.png,兼容名 report_screenshot.png)。--no-notify-auto-current-channel 关闭)。/Users/chikakochou/OpenClaw/demo/scenarios/wehub_visual_demo.jsonwehub_demo(演示门禁配置,已忽略已知 index.css 404 噪音)wehub_release(发布判定,不忽略已知 4xx)运行示例(含自动发当前 Discord 频道):
python3 src/skills/auto-qa/scripts/run_autoqa.py \
--scenario-id wehub_demo \
--browser-profile openclaw \
--auto-start-browser
/Users/chikakochou/OpenClaw/demo/scenarios/generic_visual_template.jsongeneric_template{{start_url}}{{start_domain}}python3 src/skills/auto-qa/scripts/run_autoqa.py \
--scenario-id generic_template \
--scenario-var start_url=http://wehub.us/ \
--scenario-var start_domain=wehub.us \
--browser-profile openclaw \
--auto-start-browser
fix_plan.json:
next_window_prompt.md:可直接贴到下一窗口执行standby_prompt.txt:一句确认即可启动修复流程wehub-gate-sample-20260220-v2/Users/chikakochou/.openclaw/workspace/demo/reports/run-wehub-gate-sample-20260220-v2/report.json/Users/chikakochou/.openclaw/workspace/demo/reports/run-wehub-gate-sample-20260220-v2/report.htmlreleaseDecision = NO_GOriskLevel = highopenclaw browser trace start/stop 在嵌套子命令下丢失 --browser-profile 参数的问题。chrome)。trace start/stop 在 --browser-profile openclaw 下可正常生成 trace。wehub-trace-fix-20260221-v1 已验证 tracePath 存在且报告无 trace warning。openclaw browser 无法连接,请先启动 OpenClaw 网关/浏览器服务。click/type 依赖快照 ref,场景需要提供稳定 ref 或结合 wait/evaluate 先定位。