xworkmate-bridge/docs/xworkmate-bridge-svc-plus-core-functional-test-plan-v1.md

5.9 KiB
Raw Blame History

xworkmate-bridge.svc.plus 功能测试全景规划 V1

Summary

本轮核心验收拆成两层:

  1. 先验证 xworkmate-app -> accounts.svc.plus -> xworkmate-bridge.svc.plus 的路由发现链路。
  2. 再验证 6 个典型 case 的端到端产出、线程复用与本地 workspace 回写。

重点不是写死 provider 列表,而是确认 UI 和执行层都从 bridge 动态拿到 ACP / gateway / 扩展路由结果。

Scope

1. 路由发现层

  • acp.capabilities 返回动态 provider 列表。
  • 至少覆盖:
    • singleAgentProviders: opencode / codex / gemini
    • gatewayProviders: local / openclaw
  • xworkmate.routing.resolve 根据 taskPromptexecutionTargetselectedSkills 返回正确的:
    • resolvedExecutionTarget
    • resolvedProviderId
    • resolvedGatewayProviderId
  • acp.capabilities 暴露 bridge 内建的生产 provider catalog并参与后续路由选择。
  • APP 对 gateway 的分区应以 gatewayProviders / resolvedGatewayProviderId 为主。

2. 典型 Case 层

Case 目标能力 核心验收点
pptx 生成演示稿 + 同线程追问修改 首次生成文件;继续追问仍复用同一 thread workspaceworkspace 不漂移
docx 周报文档生成 生成 .docx;内容结构正确;写回当前线程
xlsx 公式表格生成 生成 .xlsx;公式存在且结果可用;写回当前线程
pdf 合并 / 转换 输出 .pdf;页数或内容符合预期;写回当前线程
image-resizer 图片处理 输出图片尺寸正确;写回当前线程
browser 浏览器自动化 返回摘要、截图、日志;都写回当前线程

3. 线程与 Workspace 层

  • single-agent 任务必须自动绑定完整 workspaceBinding
  • 二次追问不得漂移到新 workspace。
  • prompt 文本不能覆盖已绑定 workspace。
  • 远程执行目录只作为 metadata 保留,不替代 APP 本地线程 workspace。

4. UI 层

  • “智能体模式” provider 选项由 bridge 动态发现结果驱动。
  • 不使用固定静态列表做功能判断。
  • UI 展示应随 bridge 返回结果动态变化。

Test Plan

Phase 1: Core Smoke

先验证发现链路和 bridge 核心 ACP 能力:

flutter test test/runtime/account_bridge_smoke_suite.dart
go test ./internal/acp

Phase 2: Bridge 真实 E2E

验证 bridge 在线真实执行、结果回包和线程复用:

flutter test test/runtime/bridge_real_e2e_suite.dart

Phase 3: Single-Agent 回归

验证 APP 本地优先 workspace 语义与线程绑定稳定性:

flutter test test/runtime/app_controller_ai_gateway_chat_suite.dart
flutter test test/runtime/app_controller_single_agent_workspace_binding_regression_test.dart

Phase 4: 6 个 Case 最小验收

每个 case 至少覆盖两步:

  1. 首次执行
  2. 一次追问 / 复用线程

建议每个 case 最少断言:

Case Step 1 Step 2
pptx 成功生成 .pptx 同线程修改 deckworkspace 不变
docx 成功生成 .docx 同线程补充/改写内容,仍写回当前线程
xlsx 成功生成 .xlsx 且带公式 同线程修改表格,公式或结果仍有效
pdf 成功输出 .pdf 同线程继续合并/转换,结果仍写回同目录
image-resizer 成功输出变换后图片 同线程继续调整尺寸/比例,结果写回同目录
browser 成功返回摘要、截图、日志 同线程继续浏览任务,产物继续写回同目录

路由发现层断言

  • acp.capabilities 的 provider 列表来自 bridge 当前环境,而不是本地写死。
  • bridge 内建生产 catalog 包含 codex / opencode / gemini,且不依赖 app 侧预同步。
  • bridge 还会暴露 gatewayProviders = local / openclaw
  • xworkmate.routing.resolve 在 skill / prompt / target 组合下,返回合理的 resolvedProviderIdresolvedGatewayProviderId

执行层断言

  • session.start 成功时返回首轮结果。
  • session.message 成功时复用同一 thread 语义。
  • bridge 成功结果应包含:
    • artifacts
    • resultSummary
    • remoteWorkingDirectory
    • remoteWorkspaceRefKind

APP / Workspace 断言

  • 当前线程 workspaceBinding 仍是本地 workspace。
  • 远程目录只记录为 metadata。
  • 产物文件写回当前线程工作目录。
  • 同名文件采用版本化命名,不覆盖旧结果。

UI 断言

  • provider 列表显示来自 bridge 的动态发现结果。
  • provider 可选项与 bridge 当前能力一致。
  • bridge 能力变化后UI 展示同步更新。

Execution Order

建议按以下顺序执行,便于快速定位问题:

  1. flutter test test/runtime/account_bridge_smoke_suite.dart
  2. go test ./internal/acp
  3. flutter test test/runtime/bridge_real_e2e_suite.dart
  4. flutter test test/runtime/app_controller_ai_gateway_chat_suite.dart
  5. flutter test test/runtime/app_controller_single_agent_workspace_binding_regression_test.dart
  6. 再按 pptx / docx / xlsx / pdf / image-resizer / browser 逐项补最小验收

Assumptions

本次测试默认使用以下环境:

  • https://accounts.svc.plus
  • review@svc.plus
  • Review123!
  • BRIDGE_SERVER_URL=https:xworkmate-bridge.svc.plus
  • BRIDGE_AUTH_TOKEN=...

额外约定:

  • openclaw 作为 gatewayProviders 之一,按 bridge 发现结果驱动。
  • 如果当前环境没有暴露某个 provider测试允许 skip,但要保留断言入口和记录。
  • UI 本轮不改结构,只验证 provider 列表来源与展示结果是否随 bridge 动态变化。

Deliverable

第一版核心功能测试清单的完成标准:

  • 有一份稳定的发现链路 smoke
  • 有一份 bridge 在线真实 E2E
  • 有一份 single-agent workspace 回归
  • 有一套覆盖 6 个 case 的最小验收骨架
  • 所有断言都围绕“bridge 动态发现 + APP 本地 workspace 优先 + 同线程复用”展开