## 诊断流程样例 目标:检查 `output/review_pages/商品域复核页.html` 是否真的可用,而不是只验证文件存在。 ```bash python /Users/bytedance/Documents/product-bu/tools/night-gym/tools/review_html_smoke.py \ /Users/bytedance/Documents/job-bu/data-analysis-workspace/projects/xxx/output/review_pages/商品域复核页.html \ --out /tmp/review-html-smoke \ --data-var DATA \ --expect knowledge_cards=123 \ --expect progress_bars=123 \ --expect min_chat_messages=1 ``` | 阶段 | 检查 | 成功信号 | 失败信号 | |---|---|---|---| | 数据解析 | 从 HTML 中提取 `const DATA = ...` | records / knowledge groups 可解析且非空 | 找不到 DATA、JSON 截断、字段名漂移 | | 浏览器渲染 | 用临时 localhost 打开 HTML,避免 `file://` 策略 | 关键 selector 出现,截图非空 | file blocked、JS error、首屏空白 | | DOM 断言 | 统计知识卡、session 列表、对话气泡、进度条 | 计数匹配期望或超过最小阈值 | selector missing、count mismatch | | fallback | 浏览器失败时用 jsdom/minimal DOM 执行页面脚本 | 能生成列表 HTML 和进度条比例 | 脚本依赖真实浏览器 API,无法降级 | 期望输出:`report.json` 写明 `browser_rendered`、`dom_fallback_rendered`、关键计数、失败原因;`screenshot.png` 用于人工快速复核。失败时不要继续交付 HTML,而是把具体失败阶段带回给生成脚本修。