# Agent MCP 浏览器点页规程（Playwright MCP）

> 用例编号见 `test-case-matrix.md` 中 `MCP-*` 行。  
> 工具：Cursor **Playwright MCP**（`browser_navigate`, `browser_snapshot`, `browser_click`, `browser_type` 等）。

## 0. 环境与安全

```text
BASE=http://127.0.0.1:8600/app/     # 本地优先
USER=admin                           # 或 NEXUS_E2E_USER
PASS=<来自 .env，勿写入报告>
```

| 规则 | 说明 |
|------|------|
| 禁止 | 生产批量推送、批量删机、真实 WebSSH 长连接 |
| 允许 | 只读浏览、打开对话框后取消、对 `test-*` 子机 dry-run |
| 证据 | 每用例结束写 `docs/reports/mcp-runs/YYYY-MM-DD-<MCP-ID>.md` |

报告模板：

```markdown
# MCP-PUSH-001 2026-06-08
- BASE: http://127.0.0.1:8600/app/
- 结果: PASS|FAIL
- 步骤: 1…n
- 截图: （可选路径）
- 沉淀: 是否需新增 E2E-PUSH-002
```

## 1. MCP-AUTH-001 — 登录页

1. `browser_navigate` → `{BASE}#/login`
2. `browser_snapshot` → 断言存在「用户名」「密码」输入与登录按钮
3. `browser_type` 用户名/密码 → `browser_click` 登录
4. `browser_snapshot` → URL 含 `#/` 且侧栏可见

**失败处理**：401 检查 API `:8600/health` 与 `start-dev.sh`

## 2. MCP-DASH-001 — 仪表盘

1. 已登录状态下 `browser_navigate` → `#/`
2. `browser_snapshot` → 在线/离线/告警类统计文案存在
3. 记录数字是否为 `—` 或 0（无数据也算 PASS）

## 3. MCP-PUSH-001 — 推送提交（非破坏性）

1. `browser_navigate` → `#/push`
2. `browser_snapshot` → 目标路径、文件选择、提交按钮
3. **仅当选中子机 hostname 含 `test` 时**继续；否则标记 SKIP 并注明原因
4. `browser_click` 提交 → 等待 ≤5s
5. `browser_snapshot` →  
   - 提交按钮**不应**持续 disabled/loading >10s（对应 E2E-PUSH-002）  
   - 进度区域或 toast 出现
6. 写报告；若 PASS，7 日内补 `frontend/e2e/flows/push-submit.spec.mjs`

## 4. MCP-SRV-002 — 无 CSV 导出

1. `#/servers` → `browser_snapshot`
2. 全文搜索「导出」「CSV」→ 不得出现可点击导出按钮
3. 对应 E2E-SRV-002

## 5. MCP-ALT-001 / MCP-AUD-001 — 北京时间

1. 分别打开 `#/alerts`、`#/audit`
2. `browser_snapshot` 表格时间列
3. 期望：`YYYY-MM-DD HH:mm` 或带 `CST`/`北京时间` 语义；**不应**出现未格式化的 ISO `T...Z` 裸串
4. 与 `UT-TIME-001` 一致

## 6. MCP-SCH-001 — 调度周期文案

1. `#/schedules` → 新建调度
2. `browser_snapshot` 周期/开始执行相关 label
3. 与 `docs/changelog/2026-06-08-schedule-form-start-cycle-only.md` 一致

## 7. MCP-EXEC-001 — 执行看板

1. `#/executions`
2. 若有行，`browser_click` 展开首行
3. `browser_snapshot` → 详情面板无 500 错误 snackbar

## 8. 标准回归包（部署后 Agent 必跑）

按序执行，总时长目标 <15min：

```
MCP-AUTH-001 → MCP-DASH-001 → MCP-SRV-002 → MCP-PUSH-001(SKIP ok)
→ MCP-ALT-001 → MCP-AUD-001 → MCP-CMD-001
```

汇总写入 `docs/reports/YYYY-MM-DD-mcp-regression.md`。

## 9. 与 Playwright CI 关系

| MCP | 沉淀为 E2E |
|-----|------------|
| MCP-PUSH-001 | E2E-PUSH-002 |
| MCP-SRV-002 | E2E-SRV-002 |
| MCP-ALT-001 | 扩 E2E-ALT-001 断言时间格式 |

MCP **不替代** CI；仅用于部署后探索与用例发现。
