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

5.6 KiB
Raw Blame History

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 仅词面冒烟)——按惯例需新会话验证。

六、复现方式

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 条原始调用记录