# 生图画布视觉验收套件
## 诊断流程样例
### 入口
```bash
cd /Users/bytedance/Documents/product-bu/20-products/image-canvas-lab/canvas-app
npm run qa:visual -- --url http://localhost:5178
```
### 输入
| 输入 | 来源 | 用途 |
|---|---|---|
| 页面 URL | dev server 或 `--url` | 打开生图画布 |
| 测试图片 | `50-ops/fixtures/paste-image.png` | 模拟直接粘贴参考图 |
| 模型白名单 | app 配置或 fixture | 检查模型下拉 |
| env | `.env.local`、`canvas-app/secret.env`、`~/.codex/secret.env` | 只检查变量名是否可用 |
### 步骤
1. 探测 `localhost:5178`,不可达则提示启动命令。
2. 用 Playwright 走系统 Chrome channel 打开页面,保存首屏截图。
3. 断言标题、右侧面板、按钮、状态和默认提示词为中文。
4. 打开模型下拉,断言只出现允许的模型。
5. 将 fixture 图片写入剪贴板并模拟 `Cmd+V`,检查画布新增 reference image card。
6. 采集 console error、页面截图、节点摘要和 env preflight,写入 `50-ops/visual-qa/latest/report.json`。
### 成功信号
- `home.png` 和 `after-paste.png` 非空且画布可见。
- 中文文案断言全部通过。
- 粘贴前后参考图节点数从 0 变 1。
- 模型列表和配置一致。
- `OPENROUTER_API_KEY` 可被读取到变量名,但报告不包含 key 值。
### 失败样例
```text
FAIL paste-image: expected referenceImageCards=1, got 0
Screenshot: 50-ops/visual-qa/latest/after-paste.png
Likely fix: check clipboard paste handler focus target and image MIME parsing.
```
### 落地路径
先把它作为 `image-canvas-lab` 的 app 内脚本,服务单次需求;稳定后抽成 Night Gym 的 `image-canvas-visual-qa-kit`,给所有生图/画布类项目复用。