122 lines
3.8 KiB
Markdown
122 lines
3.8 KiB
Markdown
|
|
# 课程包 E2E 测试进展报告
|
|||
|
|
|
|||
|
|
## 测试执行时间
|
|||
|
|
2026-03-16 03:00
|
|||
|
|
|
|||
|
|
## 当前状态
|
|||
|
|
|
|||
|
|
**总计**: 5 个测试用例
|
|||
|
|
**通过**: 2 个 ✅ (40%)
|
|||
|
|
**失败**: 3 个 ❌ (60%)
|
|||
|
|
|
|||
|
|
## 通过的测试 ✅
|
|||
|
|
|
|||
|
|
1. **必填项验证:未填必填项时无法进入下一步**
|
|||
|
|
- 验证逻辑正常工作
|
|||
|
|
|
|||
|
|
2. **部分填写验证:只填部分必填项时无法进入下一步**
|
|||
|
|
- 验证逻辑正常工作
|
|||
|
|
|
|||
|
|
## 失败的测试 ❌
|
|||
|
|
|
|||
|
|
### 1. 完整流程:填写所有 7 个步骤创建课程包
|
|||
|
|
- **失败原因**: 步骤 5 集体课的"课程时长"输入框找不到
|
|||
|
|
- **错误**: `locator.fill: Test timeout of 180000ms exceeded`
|
|||
|
|
- **问题**: 集体课配置面板可能没有正确显示
|
|||
|
|
- **分析**:
|
|||
|
|
- 点击"创建集体课"按钮后,LessonConfigPanel 应该显示
|
|||
|
|
- 但输入框可能在一个需要滚动或等待的区域内
|
|||
|
|
- 可能需要等待组件完全渲染
|
|||
|
|
|
|||
|
|
### 2. 最小化流程:只填写必填项创建课程包
|
|||
|
|
- **失败原因**: 课程列表表格等待超时
|
|||
|
|
- **错误**: `locator.waitFor: Timeout 15000ms exceeded`
|
|||
|
|
- **日志**: "未检测到成功提示,检查页面跳转..."
|
|||
|
|
- **分析**:
|
|||
|
|
- 课程创建可能成功了(页面跳转了)
|
|||
|
|
- 但表格元素存在但隐藏(`ant-table-empty`)
|
|||
|
|
- 可能是表格内容为空导致显示问题
|
|||
|
|
|
|||
|
|
### 3. 数据验证:创建后查看详情数据完整
|
|||
|
|
- **失败原因**: 步骤 7 环创建设的 textarea 不可见
|
|||
|
|
- **错误**: `locator.scrollIntoViewIfNeeded: element is not visible`
|
|||
|
|
- **分析**:
|
|||
|
|
- textarea 存在但不可见
|
|||
|
|
- 可能是在另一个 tab 页或未激活的区域
|
|||
|
|
- 需要先切换到对应的视图
|
|||
|
|
|
|||
|
|
## 已尝试的修复
|
|||
|
|
|
|||
|
|
1. ✅ 修复了按钮选择器("新建课程包"、"创建")
|
|||
|
|
2. ✅ 修复了步骤 2 课程介绍的 textarea 选择器
|
|||
|
|
3. ✅ 增加了 waitForTable 的超时时间
|
|||
|
|
4. ✅ 添加了页面加载状态检测
|
|||
|
|
5. ✅ 改进了成功提示检测逻辑
|
|||
|
|
6. ✅ 添加了 scrollIntoViewIfNeeded 用于元素可见性
|
|||
|
|
|
|||
|
|
## 待解决的问题
|
|||
|
|
|
|||
|
|
### 问题 1: 集体课配置面板显示
|
|||
|
|
需要确认点击"创建集体课"按钮后,LessonConfigPanel 是否正确渲染。
|
|||
|
|
|
|||
|
|
**可能原因**:
|
|||
|
|
- 组件内部状态未正确设置
|
|||
|
|
- 需要等待异步操作完成
|
|||
|
|
- 可能需要先填写课程包名称才能创建集体课
|
|||
|
|
|
|||
|
|
### 问题 2: 课程创建后的列表显示
|
|||
|
|
课程创建成功但列表显示为空。
|
|||
|
|
|
|||
|
|
**可能原因**:
|
|||
|
|
- 后端 API 返回空列表
|
|||
|
|
- 前端分页逻辑问题
|
|||
|
|
- 表格渲染需要额外等待
|
|||
|
|
|
|||
|
|
### 问题 3: 环创建设 textarea 可见性
|
|||
|
|
步骤 7 的 textarea 不可见。
|
|||
|
|
|
|||
|
|
**可能原因**:
|
|||
|
|
- 组件使用了 tabs 或其他隐藏机制
|
|||
|
|
- 需要滚动或聚焦才能显示
|
|||
|
|
- 可能是 CSS 样式问题
|
|||
|
|
|
|||
|
|
## 下一步行动
|
|||
|
|
|
|||
|
|
### 高优先级
|
|||
|
|
1. **手动验证课程创建流程**
|
|||
|
|
- 在浏览器中手动完成整个流程
|
|||
|
|
- 确认每个步骤的 UI 行为
|
|||
|
|
- 记录实际的元素状态
|
|||
|
|
|
|||
|
|
2. **简化测试用例**
|
|||
|
|
- 先跳过复杂步骤(集体课、环创建设)
|
|||
|
|
- 确保基本流程能工作
|
|||
|
|
- 逐步添加复杂步骤
|
|||
|
|
|
|||
|
|
3. **改进元素等待策略**
|
|||
|
|
- 使用 Playwright 的自动等待
|
|||
|
|
- 添加更明确的元素状态检测
|
|||
|
|
- 考虑使用 `waitForLoadState('networkidle')`
|
|||
|
|
|
|||
|
|
### 中优先级
|
|||
|
|
4. **检查后端 API**
|
|||
|
|
- 确认课程创建接口正常工作
|
|||
|
|
- 检查返回数据格式
|
|||
|
|
- 验证数据库是否正确保存
|
|||
|
|
|
|||
|
|
5. **添加调试日志**
|
|||
|
|
- 记录每个步骤的执行状态
|
|||
|
|
- 截图保存关键节点
|
|||
|
|
- 使用 `console.log` 输出页面状态
|
|||
|
|
|
|||
|
|
## 测试文件
|
|||
|
|
|
|||
|
|
- 测试脚本:`reading-platform-frontend/tests/e2e/admin/course-package-comprehensive.spec.ts`
|
|||
|
|
- 辅助函数:`reading-platform-frontend/tests/e2e/admin/helpers.ts`
|
|||
|
|
- 测试报告:`reading-platform-frontend/playwright-report/index.html`
|
|||
|
|
|
|||
|
|
## 相关文档
|
|||
|
|
|
|||
|
|
- [测试计划](./2026-03-16-course-package-test-plan.md)
|
|||
|
|
- [测试总结](./2026-03-16-course-package-test-summary.md)
|