Files
zclaw_openfang/desktop/E2E_TEST_REPORT.md
iven 0d4fa96b82
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
refactor: 统一项目名称从OpenFang到ZCLAW
重构所有代码和文档中的项目名称,将OpenFang统一更新为ZCLAW。包括:
- 配置文件中的项目名称
- 代码注释和文档引用
- 环境变量和路径
- 类型定义和接口名称
- 测试用例和模拟数据

同时优化部分代码结构,移除未使用的模块,并更新相关依赖项。
2026-03-27 07:36:03 +08:00

9.6 KiB
Raw Permalink Blame History

ZCLAW Desktop E2E 测试报告

测试日期: 2026-03-13 测试环境: Windows 11 Pro, Chrome DevTools MCP 测试范围: 前端 UI 组件、ZCLAW 集成、设置页面


测试概览

测试类别 通过 失败 总计
前端页面加载 5 0 5
设置页面功能 6 0 6
ZCLAW UI 组件 5 0 5
TypeScript 编译 1 0 1
总计 17 0 17

详细测试结果

1. 前端页面加载测试

1.1 主页面加载 ✓

  • 状态: 通过
  • 验证点:
    • 页面标题显示 "ZCLAW"
    • 左侧边栏显示分身、IM 频道、定时任务按钮
    • 右侧面板显示会话统计和运行概览
    • Gateway 连接状态正确显示

1.2 设置页面导航 ✓

  • 状态: 通过
  • 验证点:
    • 点击侧边栏底部设置按钮可进入设置页面
    • 设置页面左侧显示导航菜单
    • 右侧显示设置内容区域

1.3 设置页面路由 ✓

  • 状态: 通过
  • 验证点:
    • 通用、用量统计、积分详情、模型与 API 等页面可切换
    • 审计日志页面可访问
    • 关于页面可访问

2. 设置页面功能测试

2.1 后端设置 UI ✓

  • 状态: 通过
  • 验证项:
    • Gateway 类型选择器 (OpenClaw/ZCLAW) 正常工作
    • 切换到 ZCLAW 时:
      • 默认端口显示 4200
      • 协议显示 "WebSocket + REST API"
      • 配置格式显示 "TOML"
      • 显示 ZCLAW 特有功能提示
    • 切换到 OpenClaw 时:
      • 默认端口显示 18789
      • 协议显示 "WebSocket RPC"
      • 配置格式显示 "JSON/YAML"

2.2 外观与行为设置 ✓

  • 状态: 通过
  • 验证项:
    • 主题模式切换按钮存在
    • 开机自启开关存在
    • 显示工具调用开关存在

2.3 Gateway 连接设置 ✓

  • 状态: 通过
  • 验证项:
    • 连接状态显示正确
    • 地址输入框存在
    • Token 输入框存在
    • 当前模型显示正确 (glm-5)
    • 错误信息正确显示

2.4 本地 Gateway 管理 ✓

  • 状态: 通过
  • 验证项:
    • 运行环境显示 "浏览器预览"
    • 本地状态显示 "当前模式不支持"
    • CLI 状态显示 "当前模式不支持"
    • 服务注册显示 "未注册"
    • 提示信息正确显示

2.5 审计日志页面 ✓

  • 状态: 通过
  • 验证项:
    • 标题显示 "审计日志"
    • 每页条数选择器 (25/50/100/200) 存在
    • 刷新按钮存在
    • 空状态提示 "暂无审计日志" 正确显示

2.6 关于页面 ✓

  • 状态: 通过
  • 验证项:
    • 版本号显示 "0.2.0"
    • 检查更新按钮存在
    • 更新日志按钮存在
    • 版权信息显示正确

3. ZCLAW UI 组件测试

3.1 Hands 面板 ✓

  • 状态: 通过
  • 位置: 右侧面板 "Hands" 按钮
  • 验证项:
    • 按钮可点击
    • 空状态提示 "暂无可用的 Hands" 显示
    • 安全状态指示器存在

3.2 触发器面板 ✓

  • 状态: 通过
  • 验证项:
    • 标题 "触发器 (Triggers)" 显示
    • 刷新按钮存在
    • 空状态提示 "暂无可用的触发器" 显示

3.3 Workflows 显示 ✓

  • 状态: 通过
  • 验证项:
    • 空状态提示 "暂无可用的 Workflows" 显示

3.4 审计日志组件 ✓

  • 状态: 通过
  • 验证项:
    • 右侧面板集成审计日志组件
    • 每页条数选择器正常
    • 刷新按钮正常
    • 空状态提示正常

3.5 安全状态指示器 ✓

  • 状态: 通过
  • 验证项:
    • 显示 "连接后可用" 提示
    • 组件位置正确

4. TypeScript 编译测试

4.1 类型检查 ✓

  • 状态: 通过
  • 修复内容:
    • 添加 Hand 接口的 currentRunId 可选属性
    • 添加 cancelWorkflow 方法到 gatewayStore.ts
    • 添加 cancelWorkflow 方法到 gateway-client.ts
  • 结果: pnpm tsc --noEmit 无错误

代码变更摘要

新增功能

  1. 后端设置 UI (General.tsx)

    • 添加 OpenClaw/ZCLAW 后端类型选择器
    • 显示后端特性信息(端口、协议、配置格式)
    • ZCLAW 特有功能提示
  2. TypeScript 类型修复

    • gatewayStore.ts: 添加 Hand.currentRunIdcancelWorkflow
    • gateway-client.ts: 添加 cancelWorkflow API 方法

文件修改

  • desktop/src/components/Settings/General.tsx - 添加后端设置 UI
  • desktop/src/store/gatewayStore.ts - 类型修复
  • desktop/src/lib/gateway-client.ts - API 方法添加

测试环境信息

操作系统: Windows 11 Pro 10.0.26200
Node.js: v20.x
包管理器: pnpm
开发服务器: Vite 7.3.1
测试工具: Chrome DevTools MCP

待后续测试

  1. Tauri 桌面端测试

    • 本地 Gateway 启动/停止功能
    • CLI 检测功能
    • 服务注册功能
  2. 连接真实 ZCLAW 后测试

    • Hands 触发和审批流程
    • Workflow 执行
    • 审计日志获取
    • 安全状态显示
  3. 集成测试

    • 聊天功能
    • 流式响应
    • 模型切换

结论

本次 E2E 测试覆盖了 ZCLAW Desktop 的主要前端功能所有测试项目均通过。ZCLAW 相关 UI 组件已正确集成并显示,后端类型切换功能正常工作。

测试状态: 全部通过


5. WebSocket 流式聊天测试 (2026-03-14)

5.1 ZCLAW 协议发现

测试方法: 直接 WebSocket 连接到 ws://127.0.0.1:50051/api/agents/{agentId}/ws

发现:

  • ZCLAW 实际使用的消息格式与文档不同
  • 正确的消息格式: { type: 'message', content, session_id }
  • 错误的文档格式: { type: 'chat', message: { role, content } }

流式事件类型:

事件类型 说明 数据格式
connected 连接成功 { agent_id, type }
agents_updated Agent 列表更新 { agents, type }
typing 输入状态 { state: 'start'/'stop' }
phase 阶段变化 { phase: 'streaming'/'done' }
text_delta 文本增量 { content }
response 完整响应 { content, input_tokens, output_tokens }
error 错误 { content }

5.2 流式聊天测试

测试消息: "Hello! Please count from 1 to 5, one number per line"

测试结果:

📤 发送消息...
📥 收到: typing (state: start)
📥 收到: phase (streaming)
📥 收到: text_delta "1\n2\n3\n4\n5"
📥 收到: phase (done)
📥 收到: typing (state: stop)
📥 收到: response (input_tokens: 13555, output_tokens: 11)

结论: 流式聊天工作正常

5.3 代码修复

修复内容:

  1. gateway-client.ts:

    • 更新 chatStream() 使用正确的消息格式
    • 更新 handleZCLAWStreamEvent() 处理实际的事件类型
    • 添加 setDefaultAgentId()getDefaultAgentId() 方法
  2. chatStore.ts:

    • 更新 sendMessage() 使用流式 API
    • 添加 onDeltaonToolonHandonCompleteonError 回调
  3. gatewayStore.ts:

    • loadClones() 中自动设置默认 Agent
  4. vite.config.ts:

    • 添加 ws: true 启用 WebSocket 代理

6. API 端点测试 (2026-03-14)

6.1 Health API

curl http://127.0.0.1:50051/api/health
# {"status":"ok","version":"0.4.0"}

6.2 Agents API

curl http://127.0.0.1:50051/api/agents
# 返回 10 个 Agent

6.3 Hands API

curl http://127.0.0.1:50051/api/hands
# 返回 8 个 Hands

6.4 REST Chat API

curl -X POST http://127.0.0.1:50051/api/agents/{id}/message \
  -H "Content-Type: application/json" \
  -d '{"message":"Hello"}'
# 返回 AI 响应

7. Tauri 桌面端 E2E 测试 (2026-03-14)

7.1 后端 API 测试

测试项 状态 详情
ZCLAW 健康检查 PASS 版本 0.4.0
Agent 列表 PASS 10 个 Agent
Hands 列表 PASS 8 个 Hands
WebSocket 流式聊天 PASS 正确接收 text_delta 事件

7.2 WebSocket 流式聊天验证

测试命令:

const ws = new WebSocket('ws://127.0.0.1:50051/api/agents/{agentId}/ws');
ws.send(JSON.stringify({
  type: 'message',
  content: 'Say hello',
  session_id: 'test_session'
}));

收到的事件序列:

  1. connected - 连接成功
  2. typing (state: start) - 开始输入
  3. agents_updated - Agent 状态更新
  4. phase (streaming) - 流式输出开始
  5. text_delta - 文本增量
  6. phase (done) - 流式输出完成
  7. typing (state: stop) - 输入结束
  8. response - 完整响应 (含 token 统计)

7.3 服务运行状态

服务 端口 状态
Tauri Desktop - 运行中 (PID 72760)
Vite Dev Server 1420 运行中
ZCLAW Backend 50051 运行中 (v0.4.0)

7.4 前端功能待验证

请在 Tauri 桌面窗口中进行以下手动测试:

聊天功能

  • 发送消息测试流式响应
  • 验证消息内容实时更新
  • 测试切换 Agent
  • 测试新建/切换/删除对话

Hands 面板

  • 验证 8 个 Hands 显示
  • 测试触发一个 requirements_met: true 的 Hand
  • 测试取消执行

设置页面

  • 验证后端切换功能
  • 验证 Agent 列表显示

8. 注意事项

LLM 提供商配置

部分 Agent 使用的 LLM 提供商可能未配置 API Key

Agent 提供商 模型 状态
General Assistant zhipu glm-4-flash 可用
sales-assistant bailian qwen3.5-plus ⚠️ 需配置
test-engineer gemini gemini-2.5-flash ⚠️ 需配置
researcher gemini gemini-2.5-flash ⚠️ 需配置

推荐测试 Agent: General Assistant (zhipu/glm-4-flash)