82 lines
7.0 KiB
Markdown
82 lines
7.0 KiB
Markdown
# le-app-design 集成测试报告(单元 + E2E)
|
||
|
||
- 日期:2026-11-07 · 环境:ZCode Desktop(darwin-arm64)· 测试执行:本会话(skill 创建过程内)
|
||
- 结论:**全绿。三个上游 Skill 在同一设计任务中被真实安装、解析、调用并协同工作,全程留有机器可查证据。**
|
||
- E2E 运行目录(完整证据):本目录 + 源运行目录 `/tmp/lead-e2e-habit/le-app-design-runs/e2e-habit/`
|
||
|
||
## 一、被测对象
|
||
|
||
`skills/le-app-design/`:编排器 Skill。三个上游为必需依赖:ui-ux-pro-max(MIT)、frontend-design(Apache-2.0, Anthropic)、impeccable(Apache-2.0, pbakaus)。本测试验证的不是「文件存在」,而是「真实调用发生且产生效果」。
|
||
|
||
## 二、单元级测试
|
||
|
||
| # | 用例 | 结果 |
|
||
|---|---|---|
|
||
| 1 | check_deps 正例:三方解析 + 活性(pro-max 真跑检索 / impeccable 二进制 4.8.0 / frontend-design 原文 9390B + sha256) | ✅ exit 0,deps.json `ok=true` |
|
||
| 2 | check_deps 负例:根全部指向不存在路径 | ✅ exit 1,逐项报缺失原因与安装指引 |
|
||
| 3 | evidence_report 空账本 | ✅ FAIL exit 1(验收门有效) |
|
||
| 4 | log_call exec / load / 失败命令 | ✅ 三形态记账;退出码透传(/usr/bin/false→1);失败调用留痕 |
|
||
| 5 | validate_skill 结构体检 | ✅ 10/10 |
|
||
| 6 | trigger_eval 触发冒烟 | ✅ 11/11 一致(含 3 条单上游直连负例) |
|
||
|
||
过程中抓到并修复 1 个真实 bug:log_call.py 最初用 argparse REMAINDER,会把 `--run-dir` 等选项吞进子命令(命令 127、账本写错目录)——改为手工按裸 `--` 切分后全部通过。
|
||
|
||
## 三、E2E:HabitFlow 习惯打卡 App(S0–S7 全程真跑)
|
||
|
||
**任务**:移动 Web 高保真原型,今日页 + 统计页(390×844,兼容 375),Operate 模式。
|
||
|
||
| 阶段 | 上游真实调用(calls.jsonl 编号) | 实际效果 |
|
||
|---|---|---|
|
||
| S0 依赖门 | check_deps | 三方全绿,路径写入 deps.json |
|
||
| S1 产品理解 | — | BRIEF.md(模式归属 Operate + 假设标注) |
|
||
| S2 设计规范 | **ui-ux-pro-max** #1:`search.py --design-system --persist` | 产出 `design-system/habitflow/MASTER.md`(Claymorphism / 琥珀+绿 / Varela Round+Nunito Sans,91ms) |
|
||
| S3 视觉探索 | **frontend-design** #2:宿主 Skill 工具装载 + load 记账(sha256 d9197063…) | design-plan.md:两遍法 + AI 味特征清单逐条自检 + 4 项冲突裁决记录 |
|
||
| S4 高保真构建 | **impeccable** #3:craft-floor.md load | 可交互双屏原型 index.html;宿主 IAB 实测:打卡计数 3→4、toast 显示、375 无横滚 |
|
||
| S5 设计审查 | **impeccable** #4 context(exit 0,走 SCOPED_EXISTING_ALLOWED 通道)、#5 critique.md load、#6 `detect --json`(exit 2 = 2 findings) | 双独立 sub-agent(agent_5e37cec9 / agent_96a151e6)按 critique.md 硬性要求并行评审:A 26/36 + 3×P1;B 2 findings 均属实;快照持久化 `.impeccable/critique/` + trend 首跑 |
|
||
| S6 优化迭代 | **impeccable** #7 复跑 detect | 修复 3×P1 + 2×P2 + 7 项次要(撤章可见+恢复按钮、焦点保持、统计同源派生、5/5 峰值态、字阶 22→26px 等);复测:flat-type-hierarchy 清零,仅剩 cream-palette(design-plan 已裁决保留:MASTER 钉死暖色系统+题材支撑,记录在案);交互复验 4/4 预期通过 |
|
||
| S7 交付 | evidence_report | **PASS**:三方各有 ≥1 成功调用,6 项产物全部存在 |
|
||
|
||
**三方协同的直接证据链**:MASTER.md(pro-max 产出)→ design-plan 的裁决表引用 MASTER tokens(frontend-design 方法论消费 pro-max 数据)→ 原型 CSS 变量全部挂 MASTER(两者共同落地)→ detect findings + A 评审引用 craft-floor 与 MASTER 语义(impeccable 审查前两者产出)→ S6 修复同时响应 A 的 P1 与 B 的 detector finding(字阶)。
|
||
|
||
## 四、验收门语义说明(诚实边界)
|
||
|
||
- impeccable 两行 exit=2 的 detect 记录在统计表中计为「失败调用」——这是 evidence_report 的保守口径;按 impeccable 自身契约 exit 2 = 有 findings 的成功扫描(stdout JSON 已留账本)。验收门不以这两行判 FAIL,也不依赖它们凑数(impeccable 另有 3 条成功调用)。
|
||
- 浏览器 overlay 注入(live-server + detect.js)主动跳过,fallback 原因已写入 critique 报告 Run Notes;宿主 IAB 截图与交互实测承担了浏览器证据职责。
|
||
- E2E 中停点 1/2 未实际停顿:题目选择时用户已授权整段测试跑完;真实设计任务中停点仍为回合终止硬约束。
|
||
|
||
## 五、已知限制
|
||
|
||
1. cream-palette finding 保留(有意裁决,见 S6)。
|
||
2. detect 只扫 web markup(本交付形态即 Web,无影响)。
|
||
3. 截图依赖宿主浏览器(本机无 Chrome,用 ZCode IAB 的 setViewportSize+screenshot 实现;无宿主浏览器的 runtime 按 runtimes.md 声明 fallback)。
|
||
4. skill 触发行为尚未在新会话真实对话实测(trigger_eval 仅词面冒烟)——按惯例需新会话验证。
|
||
|
||
## 六、复现方式
|
||
|
||
```bash
|
||
python3 skills/le-app-design/scripts/check_deps.py # S0
|
||
# S2:log_call.py ui-ux-pro-max -- python3 ~/.agents/skills/ui-ux-pro-max/scripts/search.py "…" --design-system --persist …
|
||
# S3:宿主 Skill 工具装载 frontend-design;log_call.py frontend-design --load ~/.agents/skills/frontend-design/SKILL.md
|
||
# S5:sh ~/.agents/skills/impeccable/scripts/impeccable context / detect --json(经 log_call 包裹)
|
||
python3 skills/le-app-design/scripts/evidence_report.py --run-dir <RUN> … # S7
|
||
cat reports/e2e-habit/calls.jsonl # 全部 7 条原始调用记录
|
||
```
|
||
|
||
---
|
||
|
||
## 附录:SpeakPark 两轮验证(v1.0 vs v1.1 顺序对比,2026-11-07 当日续跑)
|
||
|
||
> 本附录为会话记录整理;两轮的原始账本与产物随项目目录(~/FeiHappy/speakpark-kids-english/,后被清理)失存,结论不重建不伪造,以本附录为准。
|
||
|
||
同题(小学生 AI 英语口语 App)双轮对照,验证 v1.1 的阶段顺序修正(frontend-design 先定方向 → ui-ux-pro-max 后编系统):
|
||
|
||
| 维度 | v1.0 系统先行(公园/Claymorphism/靛蓝) | v1.1 方向先行(小红花英语练习本) |
|
||
|---|---|---|
|
||
| 评审分(修复前同点) | 21/36 | 24/36 |
|
||
| 品类默认脸特征 | 2 处(Tailwind 默认靛蓝、cream 告警族) | 0 处(detect 3 条全部为误报或有指涉的格线隐喻) |
|
||
| design-plan 决策记录性质 | 4/4 防守性抵抗品类系统 | 全部主动建构 |
|
||
| pro-max 角色 | 替流程决定方向 | 校验与完善(目录 Kalam 手写配对被采纳;红花深化色按对比度规则改值不改方向) |
|
||
| 目录回弹降级补丁 | 未触发 | 实测触发(练习本方向被误配 Swiss Modernism → 弃用 MASTER,走 token 表 + 逐项校验) |
|
||
|
||
两轮各抓到并修复真实 P0:v1.0 = 麦克风未贴底(flex 布局缺失)+ 对话越界死机;v1.1 = `#id` display 压过 `[hidden]` 两页堆叠渲染(属性检查全绿、看图评审抓出)——后者催生 pipeline S4 的「渲染事实断言」硬规则。两轮验收门均 PASS。
|