- 修改后端目录从 reading-platform-backend 改为 reading-platform-java - 修改后端端口从 3000 改为 8080 - 修改启动命令从 npm run start:dev 改为 mvn spring-boot:run - 添加 JAVA_HOME 自动检测和设置(默认使用 /f/Java/jdk-17) - 修改日志文件从 reading-platform-backend.log 改为 reading-platform-java.log - 修改健康检查接口为 /actuator/health - 增加启动等待超时时间到 60 秒(Java 启动较慢) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3.7 KiB
3.7 KiB
课程包创建流程 E2E 测试总结
测试执行时间
2026-03-16 02:27
测试结果
总计: 5 个测试用例 通过: 2 个 ✅ 失败: 3 个 ❌
通过的测试 ✅
-
必填项验证:未填必填项时无法进入下一步
- 验证了步骤 1 的必填项验证逻辑
- 测试结果:未填必填项时确实无法进入下一步
-
部分填写验证:只填部分必填项时无法进入下一步
- 验证了只填写课程名称但缺少主题和年级时无法继续
- 测试结果:验证逻辑正常工作
失败的测试 ❌
-
完整流程:填写所有 7 个步骤创建课程包
- 失败原因: 在课程管理页面加载表格时超时(15 秒)
- 错误位置:
admin\helpers.ts:47-waitForTable - 可能原因:
- 前端服务响应慢
- 后端 API 响应慢
- 页面加载状态检测不准确
- 修复建议: 增加超时时间或改进页面加载检测逻辑
-
最小化流程:只填写必填项创建课程包
- 失败原因: 创建后找不到成功提示(10 秒超时)
- 错误位置:
course-package-comprehensive.spec.ts:268 - 可能原因:
- 课程创建 API 返回错误
- 成功提示的 CSS 选择器不匹配
- 页面跳转逻辑有问题
- 修复建议: 检查后端日志,确认课程创建是否成功
-
数据验证:创建后查看详情数据完整
- 失败原因: 步骤 2 的 textarea 选择器错误(180 秒超时)
- 错误位置:
course-package-comprehensive.spec.ts:393 - 已修复: 已更新选择器为
textarea[placeholder*="课程整体简介"] - 待验证: 需要重新运行测试确认修复效果
已修复的问题
-
✅ 修复了"新建课程包"按钮选择器
- 从
getByText(/新建 | 创建 | 新增课程/)改为getByRole('button', { name: '新建课程包' })
- 从
-
✅ 修复了步骤 2 课程介绍的 textarea 选择器
- 从
textarea[placeholder*="课程简介"]改为textarea[placeholder*="课程整体简介"]
- 从
-
✅ 修复了步骤 3 排课参考的处理
- 由于使用表格形式而非简单输入框,改为跳过此步骤
-
✅ 修复了步骤 7 的提交按钮选择器
- 从"提交"改为"创建"
-
✅ 修复了步骤 5 集体课的等待逻辑
- 添加了
waitFor({ state: 'visible' })确保输入框加载完成
- 添加了
待解决问题
-
课程管理页面加载超时
- 需要检查后端
/api/v1/admin/courses接口性能 - 可能需要增加
waitForTable的超时时间
- 需要检查后端
-
课程创建成功提示检测
- 需要验证后端课程创建接口是否正常工作
- 检查前端成功提示的实际 CSS 类名
-
测试数据清理
- 多次测试会产生大量测试数据
- 建议添加测试后清理逻辑
后续改进建议
-
增加重试机制
- 对于网络请求超时类错误,可以添加自动重试
-
改进等待策略
- 使用 Playwright 的自动等待功能
- 减少硬编码的
waitForTimeout
-
添加测试数据清理
test.afterEach(async ({ page }) => { // 清理测试创建的课程包 }); -
添加更详细的日志
- 记录每个步骤的执行时间
- 记录 API 请求响应
下一步行动
- 检查后端日志,确认课程创建 API 是否正常工作
- 增加
waitForTable的超时时间至 30 秒 - 修改成功提示的选择器,尝试多种检测方式
- 重新运行测试验证修复效果