mateclaw/mateclaw-ui/TEST_CASES.md
2026-05-13 10:05:53 +08:00

188 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# UI 精简改动 - 验证测试用例
> 基于 MateClaw 内置的 3 个 Agent、19 个工具、31 条 Guard 规则和审批工作流设计。
> 默认登录admin / admin123
---
## 前置条件
1. 后端启动:`cd mateclaw-server && mvn spring-boot:run`(零环境变量,启动后到「设置 → 模型」加 LLM 供应商)
2. 前端启动:`cd mateclaw-ui && pnpm dev`
3. 访问 http://localhost:5173登录
---
## 一、StreamLoadingBar 状态简化验证
### TC-1.1 思考中状态Thinking
- **Agent**: MateClaw AssistantReAct
- **操作**: 发送 "请分析一下量子计算的发展趋势"
- **预期**:
- 加载条显示 **"思考中…"** 和 ◐ 图标,不再显示 "准备上下文"/"读取记忆"/"推理中" 等内部阶段
- 无 statusDetail 第二行解释文本
- 无 slowHint即使等待超过 8 秒也不出现 "耗时较长" 提示)
- 仅显示耗时计时器(如 "12s"),不显示 token 计数
### TC-1.2 执行中状态Working
- **Agent**: MateClaw AssistantReAct绑定 WebSearch 工具
- **操作**: 发送 "搜索一下今天的科技新闻"
- **预期**:
- 工具调用时加载条切换为 **"执行中…"** 和 ⚙ 图标
- 显示工具名(如 `search`
- 不显示 "正在执行工具" 的详情文本
### TC-1.3 撰写中状态Writing
- **Agent**: MateClaw AssistantReAct
- **操作**: 发送 "写一篇 500 字的短文"
- **预期**:
- 内容流输出阶段,加载条显示 **"生成中…"** 和 ▸ 图标
- 流结束后加载条消失
### TC-1.4 错误/中断状态
- **操作**: 发送消息后立即点击停止按钮
- **预期**:
- 加载条图标变为 ⊘,文本变红
- 无 amber/blue 等其他颜色状态
---
## 二、审批 UI 精简验证
### TC-2.1 Shell 命令触发审批(高危操作)
- **Agent**: MateClaw AssistantReAct绑定 Shell 工具
- **操作**: 发送 "帮我删除 /tmp/test 目录下的所有临时文件"
- **预期**:
- Agent 推理后调用 `execute_shell_command`,参数含 `rm`
- Guard 规则 `SHELL_RM` 触发 → 进入审批流程
- **ChatInput 区域**:替换为审批栏,显示工具名 + 批准/拒绝按钮(保留)
- **MessageBubble 中**:仅显示一行 "等待审批:`execute_shell_command`",无完整的审批卡片(无 severity 徽章、无 findings 列表、无参数展示、无等待 spinner
- 点击"批准"后,气泡状态变为 "已批准:`execute_shell_command`"
### TC-2.2 文件写入触发审批
- **Agent**: MateClaw AssistantReAct绑定 WriteFile 工具
- **操作**: 发送 "创建一个 hello.txt 文件,内容写 Hello World"
- **预期**:
- `write_file` 工具触发审批
- 输入栏显示审批操作,气泡仅一行状态
- 拒绝后,气泡状态变为 "已拒绝:`write_file`"
### TC-2.3 危险命令直接阻断CRITICAL 级别)
- **Agent**: MateClaw AssistantReAct绑定 Shell 工具
- **操作**: 发送 "执行 rm -rf /"
- **预期**:
- Guard 规则 `SHELL_RM_RF_ROOT` 直接 BLOCK
- 不进入审批流程,直接返回阻断消息
- 输入栏不显示审批栏
---
## 三、Plan-Execute 流程验证
### TC-3.1 PlanStepsPanel 渲染唯一性
- **Agent**: Task PlannerPlan-Execute
- **操作**: 发送 "帮我调研 MateClaw 项目的技术栈,列出前端和后端分别用了哪些核心技术,然后生成一个技术概览文档"
- **预期**:
- 生成计划后PlanStepsPanel 只在消息气泡中出现**一次**
- 步骤进度正确显示pending → running → completed
- 不在分段式视图和传统模式中同时出现两个 PlanStepsPanel
### TC-3.2 Plan 中触发审批的步骤暂停与恢复
- **Agent**: Task PlannerPlan-Execute绑定 Shell + WriteFile 工具
- **操作**: 发送 "查看当前目录结构,然后创建一个 project-summary.md 文件"
- **预期**:
- 计划包含多个步骤
- 涉及文件写入的步骤触发审批
- 审批期间PlanStepsPanel 该步骤显示 running 状态
- 气泡中审批为一行极简文本
- 批准后步骤继续执行,状态更新为 completed
---
## 四、BrowserTimeline 默认收起验证
### TC-4.1 浏览器操作时间线默认折叠
- **Agent**: MateClaw AssistantReAct绑定 BrowserUse 工具
- **操作**: 发送 "打开浏览器访问 baidu.com截图"
- **预期**:
- 浏览器操作完成后,时间线默认**收起**
- 仅显示标题栏 "Browser: N actions"
- 点击标题栏可展开查看操作细节和截图
---
## 五、动画与视觉一致性验证
### TC-5.1 无 Typing Bounce Dots
- **Agent**: 任意 Agent
- **操作**: 发送消息,观察 AI 响应开始前
- **预期**:
- 不再出现三个弹跳圆点的加载动画
- 使用 TypingCursor闪烁光标代替
### TC-5.2 动画一致性
- **操作**: 在不同场景触发加载状态
- **预期**:
- StreamLoadingBar 的 icon-pulse 动画时长统一为 1.2s
- 所有 spinner 使用相同的旋转动画
- 无竞争性的多重脉冲动画
---
## 六、ChatInput 占位符验证
### TC-6.1 加载中占位符不暴露键盘操作
- **Agent**: 任意 Agent
- **操作**: 发送消息,在 AI 生成过程中观察输入框
- **预期**:
- 占位符仅显示原始 placeholder 文本
- 不再显示 "(Enter to send / interrupt)"
- 发送按钮变为红色停止图标已足够提示
---
## 七、深色模式主题变量验证
### TC-7.1 深色模式颜色正确性
- **操作**: 切换到深色模式(侧边栏底部主题切换)
- **检查项**:
- StreamLoadingBar 文本颜色使用主题主色调(非硬编码 #f97316
- 审批状态文字颜色正确(成功绿/失败红均跟随主题)
- 中断按钮使用 `--mc-warning` 变量的深色模式值 (#fbbf24)
- 排队指示器使用 `--mc-info` 变量的深色模式值 (#60a5fa)
- 工具调用状态图标(成功/失败/等待)颜色均来自 CSS 变量
### TC-7.2 浅色/深色快速切换
- **操作**: 在生成过程中快速切换浅色/深色模式
- **预期**:
- 所有颜色即时切换,无残留的硬编码颜色
---
## 八、回归测试
### TC-8.1 普通对话流程(无工具调用)
- **Agent**: MateClaw Assistant
- **操作**: 发送 "你好,介绍一下你自己"
- **预期**: 正常生成回复,无 UI 异常
### TC-8.2 多轮对话 + 工具调用
- **Agent**: MateClaw Assistant绑定多个工具
- **操作**: 连续发送 3-5 条消息,触发不同工具
- **预期**: 每轮消息的加载条、工具调用显示、内容输出均正常
### TC-8.3 消息中断与重试
- **操作**: 发送消息 → 中断 → 重试
- **预期**: 中断指示器正常显示,重试后正常生成
### TC-8.4 会话切换
- **操作**: 在多个会话间切换
- **预期**: 历史消息正确加载,审批状态(已批准/已拒绝)正确回显
### TC-8.5 移动端响应式
- **操作**: 浏览器宽度缩小到 768px 以下
- **预期**:
- 审批栏在 ChatInput 中正常自适应
- 气泡中审批状态一行文本不溢出
- 加载条内容不截断