# cfc-web E2E 测试修复方案
**生成日期:** 2026-06-20
**问题:** 45/51 Web E2E 测试失败(`test-report-1777262956208.json`,2026-04-27)
**根因:** 侧边栏菜单重构(单级菜单 → 二级嵌套 submenu)+ 页面结构变更,测试选择器与当前 UI 不匹配
**测试框架:** Chrome DevTools MCP 自动化测试(`docs/系统测试/test-cases.js`)
---
## 背景:测试为什么失败
### 测试定位机制
`WebTestCase` 通过 `getSnapshot()` 获取页面所有可见文本元素列表,用 `waitForElement('文字')` 按**文本内容**查找元素 click。失败表现为 `error: null`(未抛异常,是断言失败),说明找到了含该文字的元素,但点击后**目标元素未出现**。
### 管理员侧边栏历史变更
**旧版(测试期望的结构):**
```
用户管理 ← 点击展开/跳转用户列表页面
用户列表 ← 独立的二级菜单项(不存在!)
任务管理
统计 ← 独立的二级菜单项(不存在!)
任务列表
奖励管理
奖励列表
```
**当前 Layout.vue 真实结构:**
```
系统管理
用户管理 ← 子菜单项,点击直接加载 /users 页面,不再展开
套餐审核
规划师审核
操作日志
服务商审核
商品管理
订单管理
DanShop分类
返利规则
物流管理
文章分类
文章管理
系统配置
五维能量
教育体系
星座配置
八字配置
血型配置
```
关键差异:
1. "用户管理" 在 "系统管理" submenu 下,不再有独立的 "用户列表" 二级菜单项
2. "任务管理 → 统计" 不存在,"统计" 变成了其他页面(Dashboard)
3. "奖励管理" 只有一个子项 "奖励列表"
4. 多个测试用到的路径在新侧边栏中不存在
---
## 修复任务清单
> 优先级判断:API测试全过(19/19),Jest测试全过(211/211),问题集中在 E2E 测试选择器。修复选择器是纯前端工作,依赖 Layout.vue 和各页面 Vue 文件,无需后端配合。
### Task A: 修复 WEB-002/010(管理员查看用户列表)
**问题:** 测试点击 "用户管理"(在"系统管理"子菜单下),然后期望出现 "用户列表" 可点击,但当前点击 "用户管理" 直接加载 `/users` 页面。
**当前 Layout.vue 菜单路径:** `系统管理 → 用户管理` → 直接加载 `Users.vue`(路由 `/users`)
**修复:** `test-cases.js` 中 WEB-002 和 WEB-010 的 `run()` 方法,删除第二步点击"用户列表",改为:
1. 点击 "系统管理" 展开
2. 点击 "用户管理" → 页面跳转到 `/users`
3. 等待 "用户管理" 页面内容出现(搜索框/表格)
**验证:** `Users.vue` 第5行 `用户管理`,包含角色筛选(家长/孩子)、搜索框
**修改文件:** `docs/系统测试/test-cases.js`
- WEB-002: 删除 `await this.waitForElement('用户列表')` 及其 click
- WEB-010: 同上
---
### Task B: 修复 WEB-003(管理员查看任务统计)
**问题:** "任务管理 → 统计" 路径不存在。当前 Dashboard(首页)包含统计信息,而非任务统计独立页面。
**修复:** 改为访问 Dashboard(首页):
1. 点击 "首页" → 跳转 `/dashboard`
2. 验证 "完成率" 或 "任务" 相关文字出现
**当前 Layout.vue:** 第85行 `` → 首页
**修改文件:** `docs/系统测试/test-cases.js`
- WEB-003: 将 "任务管理 → 统计" 路径改为 "首页 → Dashboard"
---
### Task C: 修复 WEB-004/005/040~045(指导师 Web 后台)
**问题:** 指导师登录 Web 后台,期望的侧边栏结构与当前 Layout.vue 完全不符(`isPlanner` 分支)。
**当前 Layout.vue 规划师侧边栏:**
```
工作台 (/teacher-dashboard)
服务管理
我的家庭 (/teacher-families)
我的团队 (/teacher-team)
业务管理
套餐管理 (/teacher-packages)
订单佣金 (/teacher-orders)
测评管理
DAN测评 (/teacher-assessment)
家长咨询 (/teacher-consult)
消息中心 (/teacher-messages)
```
**失败的测试用例对应关系:**
- WEB-004/040: 指导师登录 → 期望"指导师工作台",当前有"工作台"
- WEB-005/041: "我的家庭" 列表 → 对应 `TeacherFamilies.vue`
- WEB-042: 家庭任务详情 → `TeacherFamilies.vue` → 任务详情
- WEB-043~045: 任务审核 → 对应 `TeacherFamilies.vue` 中的任务审核功能
**修复:** 更新所有 teacher 相关测试的选择器:
- "指导师工作台" → "工作台"
- "我的家庭" → 保持不变(在服务管理子菜单下)
- 任务审核流程 → 对应 `TeacherFamilies.vue`
**修改文件:** `docs/系统测试/test-cases.js`
---
### Task D: 修复 WEB-015~023(管理员任务管理)
**问题:** "任务管理" submenu 下的子项名称与测试期望不匹配。
**当前 Layout.vue:**
```
任务管理
任务列表 ← /tasks
任务模板 ← /task-templates
```
测试期望点击"创建任务"按钮,但 `Tasks.vue` 当前可能没有这个按钮,或在不同位置。
**修复:** 逐个检查以下测试的 `Tasks.vue` 实际内容:
- WEB-015: "管理员创建任务" → 检查 `Tasks.vue` 是否有创建任务按钮
- WEB-016~018: 任务分类/积分/截止时间 → 属于创建任务弹窗内的表单字段
- WEB-019/020: 编辑/删除任务 → 表格行内操作按钮
- WEB-022/023: 任务历史/统计 → 需确认是否存在
**修改文件:** `docs/系统测试/test-cases.js`
---
### Task E: 修复 WEB-024~030(奖励管理)
**问题:** "奖励管理 → 奖励列表" 当前是正确的(Layout.vue 第129行),但可能按钮或操作字段变更。
**当前 Layout.vue:**
```
奖励管理
奖励列表 ← /rewards
```
**修复:** 检查 `Rewards.vue` 是否有创建奖励按钮、分类设置等功能入口。
**修改文件:** `docs/系统测试/test-cases.js`
---
### Task F: 修复 WEB-031~039(家庭管理 + 系统管理)
**问题:** 家庭管理路径正确(家庭列表/孩子管理/积分管理),但子菜单项内容可能有变化。
**当前 Layout.vue:**
```
家庭管理
家庭列表 ← /families
孩子管理 ← /children
积分管理 ← /points
```
**修复:** 确认各页面的操作按钮与测试期望一致。
---
### Task G: 修复 WEB-035~038(孩子管理/积分管理/系统管理)
**问题:** 测试选择器基于旧版菜单文字,需更新。
---
### Task H: 修复 WEB-047~051(安全测试:SQL注入/XSS/验证)
**问题:** 这些测试打开"编辑用户"弹窗,但当前 `Users.vue` 的编辑功能使用 `handleEdit()` 打开 el-dialog,测试期望的表单字段名可能有变化。
**修复:** 检查 `Users.vue` 编辑弹窗的表单字段:
- 当前有:昵称、手机号(Users.vue 第26~41行)
- 测试用:无效手机号、无效身份证、积分超范围
- 需确认哪些字段在当前 UI 存在
---
## 执行步骤
### 第一步:运行最新测试,获取精确失败点
```bash
cd docs/系统测试
npm install
npm run test 2>&1 | tee test-output.log
```
这会生成新的 `test-report-{timestamp}.json`,精确显示每个测试的失败截图和时间点。
### 第二步:批量修复 test-cases.js
按 Task A~H 逐个修复测试用例的 `run()` 方法,主要改动:
- 删除不存在的二级菜单项点击
- 调整导航路径以匹配当前路由
- 更新文本断言以匹配当前页面内容
### 第三步:验证修复
```bash
npm run test
# 验证通过率从 6/51 提升到 45+/51
```
---
## 已知限制
1. **Web E2E 测试环境依赖**: 测试需要 Chrome DevTools MCP 服务运行,自动化浏览器环境。当前测试环境可能未启动。
2. **部分测试数据依赖**: 某些测试(如安全测试 WEB-047~051)依赖特定测试数据准备。
3. **Dashboard 统计页面**: "任务统计" 独立页面不存在,测试需改为 Dashboard 验证。
4. **测试报告日期**: 当前最新报告为 2026-04-27,之后 Web 前端有较大改动(profile.vue 389行),需重新运行完整测试。
---
## 建议优先级
| 优先级 | 任务 | 理由 |
|:------:|------|------|
| P0 | Task A(WEB-002/010 用户列表) | P0 级需求,测试用例最多 |
| P0 | Task C(指导师测试) | P0 级需求,15个测试 |
| P1 | Task B(WEB-003 统计) | P0 级需求 |
| P1 | Task D(任务管理) | P0 级需求,8个测试 |
| P2 | Task E~G(奖励/家庭/系统管理) | P1/P2 级需求 |
| P2 | Task H(安全测试) | P0 但复杂,需单独分析 |