Files
MetaSkill/skills/le-app-design/reports/integration-test-2026-11-07.md
T

82 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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。