# workspace-navigation E2E 测试报告

- 日期: 2026-02-28
- 类型: E2E（Playwright MCP 手工自动化执行）
- 目标: 验证左侧主菜单在折叠态悬停显示菜单名称，展开态不显示该浮层
- 测试环境:
  - 前端: `http://127.0.0.1:3000`
  - 账号: `itadmin / Admin@2024`
  - 浏览器: Chrome（Playwright MCP）

## 测试范围与选择说明

- 本次变更为前端交互增强（Sidebar 悬停浮层 + 可访问性），不涉及 API、数据库与后端业务规则。
- 按测试金字塔，本次以 E2E 冒烟验证关键交互路径：
  - 到达断言: 进入 `/overview` 且左侧栏可切换折叠/展开。
  - 成功断言: 折叠态悬停时 tooltip 可见。
  - 反向断言: 展开态悬停时 tooltip 不可见。

## 用例执行结果

1. 用例 E2E-01: 折叠态菜单可到达
- 步骤: 登录 -> 进入 `/overview` -> 检查出现 `Expand Menu` 按钮
- 断言: `reachCollapsed = true`
- 结果: 通过

2. 用例 E2E-02: 折叠态悬停显示菜单名称
- 步骤: 悬停 `Dashboard` 菜单图标
- 断言: `tooltipVisibleOnHover = true` 且 `tooltipOpacityOnHover = "1"`
- 结果: 通过

3. 用例 E2E-03: 展开态可到达
- 步骤: 点击 `Expand Menu`
- 断言: 出现 `Collapse Menu` 按钮（`reachExpanded = true`）
- 结果: 通过

4. 用例 E2E-04: 展开态不显示悬停浮层
- 步骤: 展开态悬停 `Dashboard`
- 断言: `tooltipVisibleWhenExpanded = false`
- 结果: 通过

5. 用例 E2E-05: 可访问性标签
- 步骤: 读取 `Dashboard` 按钮 `aria-label`
- 断言: `ariaLabelExists = true`
- 结果: 通过

## MCP 自动化断言结果（原始汇总）

```json
{
  "reachCollapsed": true,
  "tooltipVisibleOnHover": true,
  "tooltipOpacityOnHover": "1",
  "reachExpanded": true,
  "tooltipVisibleWhenExpanded": false,
  "ariaLabelExists": true
}
```

## 证据

- 折叠态悬停验证截图: `testing/reports/workspace-navigation-2026-02-28-e2e/E2E-01-collapsed-hover-tooltip.png`
- 展开态无浮层截图: `testing/reports/workspace-navigation-2026-02-28-e2e/E2E-02-expanded-no-tooltip.png`

## 执行命令与复现步骤

### 命令

```bash
cd frontend && npm run lint
```

### 最小复现步骤

1. 登录系统（`itadmin / Admin@2024`）并进入 `/overview`。
2. 点击左下角收起按钮，使侧栏为折叠态（图标模式）。
3. 鼠标悬停任意一级菜单图标（如 Dashboard）。
4. 观察右侧出现菜单名称浮层。
5. 点击展开按钮恢复展开态，再悬停相同菜单，确认不再显示该浮层。

## 偏离/阻断记录

- `npm run lint` 未通过，存在仓库历史问题（大量与本次改动无关的 `no-explicit-any` 等）。本次未引入新的 lint 错误规则调整。
- 执行 MCP 时，早期尝试使用过期 `storageState` 失败，后改用真实账号登录完成验证。
