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
重构所有代码和文档中的项目名称,将OpenFang统一更新为ZCLAW。包括: - 配置文件中的项目名称 - 代码注释和文档引用 - 环境变量和路径 - 类型定义和接口名称 - 测试用例和模拟数据 同时优化部分代码结构,移除未使用的模块,并更新相关依赖项。
382 lines
9.6 KiB
Markdown
382 lines
9.6 KiB
Markdown
# 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.currentRunId` 和 `cancelWorkflow`
|
||
- `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
|
||
- 添加 `onDelta`、`onTool`、`onHand`、`onComplete`、`onError` 回调
|
||
|
||
3. `gatewayStore.ts`:
|
||
- 在 `loadClones()` 中自动设置默认 Agent
|
||
|
||
4. `vite.config.ts`:
|
||
- 添加 `ws: true` 启用 WebSocket 代理
|
||
|
||
---
|
||
|
||
## 6. API 端点测试 (2026-03-14)
|
||
|
||
### 6.1 Health API ✅
|
||
```bash
|
||
curl http://127.0.0.1:50051/api/health
|
||
# {"status":"ok","version":"0.4.0"}
|
||
```
|
||
|
||
### 6.2 Agents API ✅
|
||
```bash
|
||
curl http://127.0.0.1:50051/api/agents
|
||
# 返回 10 个 Agent
|
||
```
|
||
|
||
### 6.3 Hands API ✅
|
||
```bash
|
||
curl http://127.0.0.1:50051/api/hands
|
||
# 返回 8 个 Hands
|
||
```
|
||
|
||
### 6.4 REST Chat API ✅
|
||
```bash
|
||
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 流式聊天验证 ✅
|
||
|
||
**测试命令:**
|
||
```javascript
|
||
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)
|