# Agent Browser 技能测试计划

**项目**: agent-browser skill  
**版本**: v1.0.0  
**日期**: 2024年  
**测试环境**: Windows/macOS/Linux + Node.js 18+

---

## 1. 测试范围

### 1.1 功能测试
- [ ] 安装与初始化
- [ ] 页面导航操作
- [ ] 元素定位与交互
- [ ] 信息获取
- [ ] 状态检查
- [ ] 截图功能
- [ ] 键盘鼠标操作
- [ ] 网络拦截
- [ ] 会话管理
- [ ] 认证管理

### 1.2 集成测试
- [ ] 与 skill 工具集成
- [ ] 错误处理
- [ ] 超时机制

---

## 2. 前置条件

```bash
# 1. 安装依赖
npm install -g agent-browser

# 2. 安装 Chrome
agent-browser install

# 3. 验证安装
agent-browser --version
```

---

## 3. 测试用例

### 3.1 安装测试

| ID | 测试项 | 命令 | 预期结果 |
|----|--------|------|----------|
| INST-01 | 全局安装 | `npm install -g agent-browser` | 无错误，安装成功 |
| INST-02 | Chrome 下载 | `agent-browser install` | Chrome 成功下载 |
| INST-03 | 版本验证 | `agent-browser --version` | 显示版本号 v0.23.4 |

### 3.2 页面导航测试

| ID | 测试项 | 命令 | 预期结果 |
|----|--------|------|----------|
| NAV-01 | 打开网页 | `agent-browser open https://example.com` | 浏览器打开页面 |
| NAV-02 | 获取标题 | `agent-browser get title` | 返回 "Example Domain" |
| NAV-03 | 获取 URL | `agent-browser get url` | 返回完整 URL |
| NAV-04 | 刷新页面 | `agent-browser reload` | 页面刷新 |
| NAV-05 | 关闭浏览器 | `agent-browser close` | 浏览器关闭 |

### 3.3 元素交互测试

| ID | 测试项 | 命令 | 预期结果 |
|----|--------|------|----------|
| INT-01 | 获取快照 | `agent-browser snapshot -i --json` | 返回可访问性树和引用 |
| INT-02 | 点击元素 | `agent-browser click @e1` | 元素被点击 |
| INT-03 | 填写表单 | `agent-browser fill @input "test@test.com"` | 输入框被填充 |
| INT-04 | 悬停元素 | `agent-browser hover @e2` | 鼠标悬停 |
| INT-05 | 滚动页面 | `agent-browser scroll down 500` | 页面滚动 |

### 3.4 信息获取测试

| ID | 测试项 | 命令 | 预期结果 |
|----|--------|------|----------|
| GET-01 | 获取文本 | `agent-browser get text @e1` | 返回元素文本 |
| GET-02 | 获取 HTML | `agent-browser get html @e1` | 返回元素 HTML |
| GET-03 | 获取属性 | `agent-browser get attr @e1 href` | 返回属性值 |
| GET-04 | 元素计数 | `agent-browser get count "a"` | 返回链接数量 |

### 3.5 状态检查测试

| ID | 测试项 | 命令 | 预期结果 |
|----|--------|------|----------|
| STA-01 | 可见性检查 | `agent-browser is visible @e1` | 返回 true/false |
| STA-02 | 可用性检查 | `agent-browser is enabled @e1` | 返回 true/false |

### 3.6 截图功能测试

| ID | 测试项 | 命令 | 预期结果 |
|----|--------|------|----------|
| SCR-01 | 普通截图 | `agent-browser screenshot test.png` | 生成截图文件 |
| SCR-02 | 全页面截图 | `agent-browser screenshot --full full.png` | 生成全页面截图 |
| SCR-03 | 带标注截图 | `agent-browser screenshot --annotate anno.png` | 生成带编号标签的截图 |

### 3.7 语义定位器测试

| ID | 测试项 | 命令 | 预期结果 |
|----|--------|------|----------|
| SEM-01 | 按角色查找 | `agent-browser find role button click` | 找到并点击按钮 |
| SEM-02 | 按文本查找 | `agent-browser find text "Submit" click` | 找到并点击 |
| SEM-03 | 按标签查找 | `agent-browser find label "Email" fill "test.com"` | 找到并填写 |
| SEM-04 | 位置选择 | `agent-browser find first "a" click` | 点击第一个链接 |

### 3.8 等待机制测试

| ID | 测试项 | 命令 | 预期结果 |
|----|--------|------|----------|
| WAI-01 | 等待元素 | `agent-browser wait "#element"` | 元素出现后继续 |
| WAI-02 | 等待文本 | `agent-browser wait --text "Success"` | 文本出现后继续 |
| WAI-03 | 等待网络空闲 | `agent-browser wait --load networkidle` | 网络空闲后继续 |

### 3.9 网络拦截测试

| ID | 测试项 | 命令 | 预期结果 |
|----|--------|------|----------|
| NET-01 | 阻止请求 | `agent-browser network route "*.js" --abort` | 资源被阻止 |
| NET-02 | Mock 响应 | `agent-browser network route "*/api/*" --body '{"ok":true}'` | 返回 Mock 数据 |
| NET-03 | 查看请求 | `agent-browser network requests` | 列出所有请求 |

### 3.10 会话管理测试

| ID | 测试项 | 命令 | 预期结果 |
|----|--------|------|----------|
| SES-01 | 隔离会话 | `agent-browser --session s1 open a.com` | 独立会话打开 |
| SES-02 | 会话隔离验证 | `agent-browser --session s2 open b.com` | 不同会话状态隔离 |

### 3.11 键盘鼠标操作测试

| ID | 测试项 | 命令 | 预期结果 |
|----|--------|------|----------|
| KEY-01 | 键盘输入 | `agent-browser keyboard type "Hello"` | 文本被输入 |
| KEY-02 | 按键操作 | `agent-browser press Enter` | 按下 Enter 键 |
| MOU-01 | 移动鼠标 | `agent-browser mouse move 100 200` | 鼠标移动 |
| MOU-02 | 滚轮滚动 | `agent-browser mouse wheel 100` | 页面滚动 |

---

## 4. 自动化测试脚本

```bash
# test_basic.sh - 基础功能测试
#!/bin/bash

echo "=== Agent Browser 基础测试 ==="

# 测试打开网页
echo "[TEST] 打开网页..."
agent-browser open https://example.com
sleep 2

# 测试获取快照
echo "[TEST] 获取快照..."
agent-browser snapshot -i --json > snapshot.json
cat snapshot.json

# 测试截图
echo "[TEST] 截图..."
agent-browser screenshot output.png

# 关闭
echo "[TEST] 关闭浏览器..."
agent-browser close

echo "=== 测试完成 ==="
```

---

## 5. 预期产出

| 类型 | 文件 | 说明 |
|------|------|------|
| 截图 | `*.png` | 测试截图输出 |
| 快照 | `snapshot.json` | 页面元素树 JSON |
| 日志 | `debug.log` | 调试模式日志 |

---

## 6. 风险评估

| 风险 | 影响 | 缓解措施 |
|------|------|----------|
| Chrome 未安装 | 无法运行 | 提供 `agent-browser install` 说明 |
| 网络超时 | 测试失败 | 增加 wait 等待时间 |
| 元素引用失效 | 交互失败 | 每次操作前重新 snapshot |
| 端口占用 | 启动失败 | 使用 `--port` 指定端口 |

---

## 7. 通过标准

- [ ] 所有 P0 测试用例通过
- [ ] 截图功能正常生成图片
- [ ] 元素交互命令无报错
- [ ] 会话隔离功能正常
