Install
openclaw skills install @xburn747/smoke-test多模态大模型辅助的 Web 应用「测试—修复」迭代工作流:覆盖全面测试(全视图、DOM 断言、API 真值比对、禁止串扫描)、根因审核、代码级修复、回归验证与证据链报告。当用户要做测试、回归、修复验证、功能测试或冒烟测试时触发。
openclaw skills install @xburn747/smoke-test多模态大模型辅助的 Web 应用「测试—修复」迭代工作流。抽象自对一个大中型 Web 应用的多轮实战经验,通用到适用于任何需要系统化 QA 的 Web 应用,不绑定特定技术栈或业务领域。
作者:大雪块 | 版本:1.0.0 | 许可证:Apache-2.0
测试 → 审核 → 修复 → 回归 → 报告
↑ │
└── 发现问题 → 进入下一轮 ┘
闭环是收敛的:每一轮都减少缺陷数量,证据逐轮收紧。当回归报告显示 0 控制台错误、0 禁止串、关键断言全部通过时停止。
id="view-" 或等价选择器| 级别 | 说明 | 示例 |
|---|---|---|
| A — 展示/只读 | 遍历视图,检查可见性,读取关键 DOM 值,确认无 JS 错误 | 全部视图可见、无 console/pageerror |
| B — 可逆写 | 开关按钮、改配置、暂停/恢复——状态须可观测且可逆 | 暂停引擎 → 状态显示 "paused" → 可恢复 |
| C — 破坏性 | 真实提交/创建/删除/撤销等破坏性操作,全链路触达后端 | 资源出现在列表,计数或状态随之变化 |
用 Playwright(或等价浏览器自动化),接托管 Node 运行时。scripts/smoke_views.js 模板:
switchView(id) 遍历每个已知视图.metric-value 文本、扫描 innerText 禁止串、截图console 错误与 pageerror 事件.db + 配置 .json)到带日期的备份目录/api/pause 或等价暂停端点),再执行提交/创建/删除/撤销当用户提交修复/测试报告时,不要照单全收,务必用以下方式核验:
app.js + fixes_v2.js + fixes_v3.js)的应用,运行时用 window.fn.toString() 检查实际执行的是哪个函数——后加载层可能覆盖先前的修复fixesN/ 目录node --check file.jsfile.js.bak.fixN_YYYYMMDD.py/.go/.rs 源*100。若多层写同一指标卡,必须统一用同一归一化工具(如 asPctFraction / pfFrac)。后加载层一个 *100 就会覆盖先前的正确值。window.fn.toString() 确认运行时函数打的是预期端点。alert("success") 桩——这比显式「未实现」更危险,因为用户以为操作成功了。每轮修复后重跑全套测试。scripts/smoke_views.js 模板应断言:
consoleErrors.length === 0pageErrors.length === 0forbiddenHits.length === 0(扫描已知 bug 特征串:NaN%、undefined%、放大的 12300% 等)metricX === "预期值")完整参考见 references/verification-schemes.md。要点:
| # | 方案 | 工具 | 捕获的缺陷 |
|---|---|---|---|
| V1 | DOM 文本断言 | page.evaluate 读 .metric-value | 错值、格式化错误 |
| V2 | 禁止串扫描 | innerText.includes(bad) | 已知 bug 特征复现 |
| V3 | 截屏证据链 | 每视图 page.screenshot() | 布局、图表、模态问题 |
| V4 | API 真值比对 | curl 后端接口 | 100× 放大、数据源错接 |
| V5 | 函数探针+运行时源码核验 | window.fn.toString() | 多 loader 竞争、端点错接 |
| V6 | 控制台/页面/网络监控 | page.on('console'/'pageerror') | JS 错误、404、CORS |
| V7 | 并发压测 | 16 并发请求 | 事件循环阻塞回归 |
| V8 | 协议一致性审计 | 比对 openapi.json 与前端调用体 | 缺必填字段、错误枚举 |
| V9 | DB 快照还原 | 冷备→测试→还原 | 干净的 C 级测试环境 |
| V10 | 降级横幅校验 | 检查 #degraded-banner 可见性 | 静默 mock 数据回退 |
| V11 | 前后态断言 | 比对前后计数 | 验证真实后端影响 |
工具选择速查:怀疑数值错 → V1+V4;怀疑旧 bug 复现 → V2;不确定跑的是哪段代码 → V5;布局破损 → V3;静默失败 → V6;接口超时 → V7;前后端协议不符 → V8;需要干净环境 → V9;看到陈旧/mock 数据 → V10;操作是否真生效 → V11。
产出自包含 HTML 报告,内嵌:
上传到项目 docs/ 目录,并将结论追加到项目长期记忆/知识库。
以下为参考实现所用工具,按需适配当前项目等价物:
使用托管运行时(非系统安装)时,始终用绝对路径:
NODE_PATH=<托管node_modules> <托管node.exe> script.js<托管python.exe> script.py本技能自带两个脚本模板,替换顶部 CONFIG 即可适配任意项目:
| 变量 | 位置 | 含义 |
|---|---|---|
VIEWS[] | scripts/smoke_views.js | 当前项目的视图 ID 列表 |
FORBIDDEN[] | scripts/smoke_views.js | 旧 bug 特征串(如 'NaN%'、'12300%') |
SPECIFIC_ASSERTS[] | scripts/smoke_views.js | 必须满足的特定指标断言 |
BASE_URL | scripts/*.js | 目标地址 |