Skip to content

Latest commit

 

History

History
127 lines (99 loc) · 4.17 KB

File metadata and controls

127 lines (99 loc) · 4.17 KB

集成测试指南

前置条件

pnpm install
pnpm build

测试 1:自动化验证

# 1.1 构建 + 校验
pnpm build && anna-app validate --strict
# 预期:✓ validate passed

# 1.2 JSON-RPC 手动测试
bash scripts/test-rpc.sh
# 预期:21/21 全部通过

# 1.3 Executa sampling mock 测试
anna-app executa dev \
  --dir executas/tool-dev-mini-notes \
  --mock-sampling fixtures/sampling-mock.jsonl \
  --invoke summarize \
  --args '{"notes":[{"content":"明天跟客户 follow up"},{"content":"修复登录 bug"},{"content":"Workshop 内容想法"}]}'
# 预期:返回 { "success": true, "data": { "summary": "根据你记录的笔记..." } }
# 日志中可见:Sending sampling/createMessage → Sampling complete

测试 2:UI Harness(--no-llm)

pnpm dev
# 打开 http://localhost:5180/

2.1 空状态

  • 首次加载应显示 "还没有笔记" 空状态
  • 打开浏览器 DevTools → Network/Console
  • 验收证据:Console 中应能看到 anna.storage.get 被调用的网络请求

2.2 创建笔记

  • 在输入框输入 "测试笔记一",点击保存(或按 Enter)
  • 输入框应清空
  • 笔记列表应显示 "1. 测试笔记一"
  • 验收证据:DevTools 中确认 anna.storage.set 被调用,value 包含新增笔记

2.3 创建多条笔记

  • 依次添加 "明天跟客户 follow up"、"修复登录 bug"、"Workshop 内容想法"
  • 列表应显示 4 条笔记(含之前的),序号递增
  • 验收证据:每次保存都触发 anna.storage.set

2.4 删除笔记

  • 点击某条笔记右侧的 ✕ 按钮
  • 该笔记应从列表中消失,序号重新排列
  • 验收证据:DevTools 确认 anna.storage.set 被调用,value 不含已删除笔记

2.5 Summarize(--no-llm 模式)

  • 点击 "✨ Summarize 全部笔记" 按钮
  • 应显示错误提示,内容类似:
    • [-32603] harness started with --no-llm
    • Sampling failed: ... (code -32603)
  • 验收证据:DevTools 确认 anna.tools.invoke 被调用,tool_id 为 tool-dev-mini-notes
  • 这是预期行为--no-llm 禁用了 LLM,sampling 请求被拒绝

2.6 空内容验证

  • 清空输入框,保存按钮应为禁用状态(灰色)
  • 输入纯空格,保存按钮应仍为禁用状态

测试 3:确认 storage 链路

打开浏览器 DevTools,在 Console 中执行以下检查:

// 方法 1:观察 Network 面板
// anna.storage.get/set 调用会通过 postMessage 发送到 Host
// 在 Application > Storage 或 Network 中可追踪

// 方法 2:在代码中临时添加 console.log
// 在 ui/src/anna/storage.ts 的 loadNotes/saveNotes 中添加:
// console.log('[storage] get/set called', key, value);

验收标准

  • 创建笔记时:anna.storage.set({ key: "notes", value: [...] }) 被调用
  • 加载笔记时:anna.storage.get({ key: "notes" }) 被调用
  • 删除笔记时:anna.storage.set({ key: "notes", value: [...] }) 被调用(数组长度减少)
  • 不是 localStorage、IndexedDB 或 fetch

测试 4:确认 summary 链路

# 4.1 确认 executa 发起 sampling
anna-app executa dev \
  --dir executas/tool-dev-mini-notes \
  --mock-sampling fixtures/sampling-mock.jsonl \
  --invoke summarize \
  --args '{"notes":[{"content":"test"}]}' 2>&1 | grep "Sending sampling"
# 预期输出包含:Sending sampling/createMessage

# 4.2 确认 fixture 返回 summary
# 同上命令,输出应包含真实的 summary 文本(非规则拼接)

测试 5:完整链路验证清单

# 验证项 方法 预期
1 pnpm build 终端 无错误
2 validate --strict 终端 ✓ validate passed
3 RPC 测试 bash scripts/test-rpc.sh 21/21
4 Mock sampling executa dev --mock-sampling summary 返回
5 Sampling 证据 stderr 日志 "Sending sampling/createMessage"
6 UI 加载 浏览器 空状态显示
7 创建笔记 浏览器操作 storage.set 调用
8 删除笔记 浏览器操作 storage.set 调用
9 Summarize 错误 浏览器操作 [-32603] 错误显示
10 tools.invoke 调用 DevTools tool_id="tool-dev-mini-notes"