生成日期: 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分类
返利规则
物流管理
文章分类
文章管理
系统配置
五维能量
教育体系
星座配置
八字配置
血型配置
关键差异:
优先级判断:API测试全过(19/19),Jest测试全过(211/211),问题集中在 E2E 测试选择器。修复选择器是纯前端工作,依赖 Layout.vue 和各页面 Vue 文件,无需后端配合。
问题: 测试点击 "用户管理"(在"系统管理"子菜单下),然后期望出现 "用户列表" 可点击,但当前点击 "用户管理" 直接加载 /users 页面。
当前 Layout.vue 菜单路径: 系统管理 → 用户管理 → 直接加载 Users.vue(路由 /users)
修复: test-cases.js 中 WEB-002 和 WEB-010 的 run() 方法,删除第二步点击"用户列表",改为:
/users验证: Users.vue 第5行 <span>用户管理</span>,包含角色筛选(家长/孩子)、搜索框
修改文件: docs/系统测试/test-cases.js
await this.waitForElement('用户列表') 及其 click问题: "任务管理 → 统计" 路径不存在。当前 Dashboard(首页)包含统计信息,而非任务统计独立页面。
修复: 改为访问 Dashboard(首页):
/dashboard当前 Layout.vue: 第85行 <el-menu-item index="/dashboard"> → 首页
修改文件: docs/系统测试/test-cases.js
问题: 指导师登录 Web 后台,期望的侧边栏结构与当前 Layout.vue 完全不符(isPlanner 分支)。
当前 Layout.vue 规划师侧边栏:
工作台 (/teacher-dashboard)
服务管理
我的家庭 (/teacher-families)
我的团队 (/teacher-team)
业务管理
套餐管理 (/teacher-packages)
订单佣金 (/teacher-orders)
测评管理
DAN测评 (/teacher-assessment)
家长咨询 (/teacher-consult)
消息中心 (/teacher-messages)
失败的测试用例对应关系:
TeacherFamilies.vueTeacherFamilies.vue → 任务详情TeacherFamilies.vue 中的任务审核功能修复: 更新所有 teacher 相关测试的选择器:
TeacherFamilies.vue修改文件: docs/系统测试/test-cases.js
问题: "任务管理" submenu 下的子项名称与测试期望不匹配。
当前 Layout.vue:
任务管理
任务列表 ← /tasks
任务模板 ← /task-templates
测试期望点击"创建任务"按钮,但 Tasks.vue 当前可能没有这个按钮,或在不同位置。
修复: 逐个检查以下测试的 Tasks.vue 实际内容:
Tasks.vue 是否有创建任务按钮修改文件: docs/系统测试/test-cases.js
问题: "奖励管理 → 奖励列表" 当前是正确的(Layout.vue 第129行),但可能按钮或操作字段变更。
当前 Layout.vue:
奖励管理
奖励列表 ← /rewards
修复: 检查 Rewards.vue 是否有创建奖励按钮、分类设置等功能入口。
修改文件: docs/系统测试/test-cases.js
问题: 家庭管理路径正确(家庭列表/孩子管理/积分管理),但子菜单项内容可能有变化。
当前 Layout.vue:
家庭管理
家庭列表 ← /families
孩子管理 ← /children
积分管理 ← /points
修复: 确认各页面的操作按钮与测试期望一致。
问题: 测试选择器基于旧版菜单文字,需更新。
问题: 这些测试打开"编辑用户"弹窗,但当前 Users.vue 的编辑功能使用 handleEdit() 打开 el-dialog,测试期望的表单字段名可能有变化。
修复: 检查 Users.vue 编辑弹窗的表单字段:
cd docs/系统测试
npm install
npm run test 2>&1 | tee test-output.log
这会生成新的 test-report-{timestamp}.json,精确显示每个测试的失败截图和时间点。
按 Task A~H 逐个修复测试用例的 run() 方法,主要改动:
npm run test
# 验证通过率从 6/51 提升到 45+/51
| 优先级 | 任务 | 理由 |
|---|---|---|
| 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 但复杂,需单独分析 |