All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 2m2s
- qa/function-audit: playwright 行为审计工具(audit.mjs/verify-modals.mjs/pages.json) + 18 页审计产出(*.audit.md/json、summary、运行日志) - qa/visual-parity: 调试/测量辅助脚本(_dbg*.mjs/_measure.mjs/_off.mjs) - core/还原度核对报告.md: 18 页 pixelmatch 核对结果(含 vite 代理陈旧坑记录) - core/还原与接口待办.md: 逐页还原度/真实数据/交互接入待办总表 - .claude/skills/pixel-perfect-react: 像素级还原 React 的 SKILL 文档 - frontend/public/_devlogin.html: 临时本地登录辅助页(可删) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
43 lines
1.7 KiB
Markdown
43 lines
1.7 KiB
Markdown
# Function Audit · 逐页功能审计
|
|
|
|
`visual-parity` 比**像素**,这里比**行为**:把每个页面在真实 React 路由里打开,
|
|
逐个真实点击所有可交互元素,报出「点了没反应」的死交互(假按钮)。
|
|
|
|
完整说明见 skill:`.claude/skills/page-function-audit/SKILL.md`。
|
|
|
|
## 快速开始
|
|
|
|
```bash
|
|
# 0. 先起前后端(见 skill)。后端必须 .venv/bin/python。
|
|
# 1. 装依赖(复用 visual-parity 的 playwright)
|
|
cd AirShelf/core/qa/function-audit && npm install
|
|
# 2. 跑
|
|
node audit.mjs # 全量(最准,慢)
|
|
node audit.mjs --only account # 单页(改完复验)
|
|
node audit.mjs --mode quick # 粗扫(快)
|
|
# 3. 读报告
|
|
open output/summary.md # 全页一览,看 dead 列
|
|
open output/<page>.audit.md # 单页 DEAD 表
|
|
```
|
|
|
|
## 判定口径
|
|
|
|
- ✅ works — 点了有反应(URL/浮层/自身状态/网络/DOM 五路任一变)
|
|
- ❌ **dead** — 点了五路全无反应 → 真缺陷,优先修(多半没接 onClick)
|
|
- 🛑 error — 点击抛 JS 异常
|
|
- ◷ noop-active — 点的是已选中 tab/chip,本该无反应,忽略
|
|
- ⏭ skipped — 破坏性按钮(删除/充值/生成…)不自动点,人工验
|
|
- 🔍 missing — 设计稿 `/exact` 有、React 没渲染(启发式,人工过)
|
|
|
|
## 参数
|
|
|
|
| 参数 | 默认 | 说明 |
|
|
|---|---|---|
|
|
| `--mode` | `isolated` | `isolated`=逐元素 reload(准);`quick`=不 reload(快) |
|
|
| `--only` | (全部) | 逗号分隔页名子串,如 `--only account,pipeline` |
|
|
| `--include-pointer` | off | 额外把 `cursor:pointer` 的 div 当候选 |
|
|
| `--headed` | off | 看着浏览器跑 |
|
|
| `--settle` | `700` | 点击后观察窗口 ms |
|
|
| `--token` / `--email` / `--password` | 演示账号 | 登录态来源 |
|
|
| `--base` | `http://127.0.0.1:5173` | 前端地址 |
|