# 课程包创建流程全面测试计划 ## 测试概述 本次测试针对课程包创建流程进行全面 E2E 测试,确保从登录到课程包创建成功的整个流程正常工作。 ## 测试文件 - `tests/e2e/admin/course-package-comprehensive.spec.ts` - 综合测试用例 ## 测试场景 ### 1. 完整流程测试 - **测试文件**: `完整流程:填写所有 7 个步骤创建课程包` - **测试内容**: - 步骤 1: 基本信息(课程名称、主题、年级、核心内容、绘本名称、领域标签) - 步骤 2: 课程介绍(课程简介、课程亮点、课程目标) - 步骤 3: 排课参考(总课时、课时时长、排课建议) - 步骤 4: 导入课(跳过) - 步骤 5: 集体课(创建并填写完整信息) - 步骤 6: 领域课(跳过) - 步骤 7: 环创建设(填写环境创设内容) - **预期结果**: 课程包创建成功,列表中显示新课程包 ### 2. 最小化测试 - **测试文件**: `最小化流程:只填写必填项创建课程包` - **测试内容**: - 步骤 1: 只填写 4 个必填项(课程名称、主题、年级、核心内容) - 步骤 2-7: 全部跳过 - **预期结果**: 课程包创建成功,验证必填项逻辑正确 ### 3. 验证逻辑测试 - **测试文件 1**: `必填项验证:未填必填项时无法进入下一步` - 不填写任何内容,直接点击下一步 - 验证仍停留在步骤 1 - **测试文件 2**: `部分填写验证:只填部分必填项时无法进入下一步` - 只填写课程名称,不填写主题和年级 - 验证无法进入下一步 ### 4. 数据持久化测试 - **测试文件**: `数据验证:创建后查看详情数据完整` - **测试内容**: - 创建课程包 - 进入课程包详情页 - 验证保存的数据完整 - **预期结果**: 详情页显示的数据与填写的一致 ## 测试数据 ### 完整流程测试数据 ```javascript { name: '完整测试课程包-{timestamp}', theme: '社会认知', grades: ['小班'], bookName: '折耳兔奇奇', coreContent: '通过折耳兔奇奇的故事,帮助孩子理解友谊和分享的重要性,培养社交能力。', domainTags: ['倾听与表达'], introSummary: '这是一门专为小班幼儿设计的课程...', introHighlights: '1. 故事情节生动有趣...', introGoals: '1. 理解故事内容...', totalHours: '8', hourDuration: '30', scheduleAdvice: '建议每周 1-2 课时...', collectiveName: '集体课——折耳兔奇奇绘本阅读', collectiveDuration: 25, collectiveObjectives: '1. 认知:完整观看绘本动画...', collectivePreparation: '1. 绘本 PPT\n2. 相关图片...', environmentConstruction: '1. 夸夸卡展示区...', } ``` ### 最小化测试数据 ```javascript { name: '最小化测试课程包-{timestamp}', theme: '社会认知', grades: ['中班'], coreContent: '最小化测试课程,仅包含必填项。', domainTags: ['人际交往'], } ``` ## 运行测试 ### 前提条件 1. 后端服务运行在 `http://localhost:8080` 2. 前端服务运行在 `http://localhost:5173` 3. 数据库包含测试主题数据 4. 超管账号可用 (admin/123456) ### 启动服务 ```bash # 启动所有服务 ./start-all.sh # 或分别启动 # 后端 cd reading-platform-java mvn spring-boot:run # 前端(新终端) cd reading-platform-frontend npm run dev ``` ### 运行测试 ```bash cd reading-platform-frontend # 无头模式(快速执行,不显示浏览器) npm run test:e2e -- --project=chromium course-package-comprehensive.spec.ts # 有头模式(显示浏览器操作过程) npm run test:e2e:headed -- --project=chromium course-package-comprehensive.spec.ts # UI 调试模式(可视化管理测试用例) npm run test:e2e:ui ``` ### 运行单个测试 ```bash # 运行完整流程测试 npm run test:e2e -- --grep "完整流程" # 运行最小化测试 npm run test:e2e -- --grep "最小化" # 运行验证逻辑测试 npm run test:e2e -- --grep "必填项验证" # 运行数据持久化测试 npm run test:e2e -- --grep "数据验证" ``` ## 测试通过标准 1. ✅ 超管登录成功 2. ✅ 能进入课程管理页面 3. ✅ 能进入课程创建页面 4. ✅ 7 个步骤能正常切换 5. ✅ 必填项验证生效 6. ✅ 提交后显示成功提示 7. ✅ 跳转到课程列表页 8. ✅ 新课程包在列表中可见 9. ✅ 查看课程包详情,数据完整 ## 测试检查清单 ### 测试前检查 - [ ] 后端服务已启动 - [ ] 前端服务已启动 - [ ] 数据库连接正常 - [ ] 测试主题数据存在 - [ ] 超管账号可用 ### 测试后清理 - [ ] 停止前后端服务 - [ ] 清理测试数据(可选) - [ ] 查看测试报告 - [ ] 记录测试结果 ## 测试报告 测试完成后,查看 HTML 报告: ```bash # 生成测试报告 npx playwright show-report # 或打开报告文件 # reading-platform-frontend/playwright-report/index.html ``` ## 故障排查 ### 常见问题 1. **登录失败** - 检查超管账号密码是否正确 - 检查后端服务是否运行 - 检查数据库用户表是否有 admin 用户 2. **页面加载超时** - 检查前端服务是否运行 - 检查端口 5173 是否被占用 - 增加超时时间 `test.setTimeout()` 3. **元素找不到** - 检查页面结构是否变化 - 检查选择器是否正确 - 使用 `page.waitForTimeout()` 增加等待时间 4. **创建失败** - 检查后端日志 - 检查请求参数格式 - 检查数据库表结构 ## 测试日志 测试执行过程中的关键日志会输出到控制台,包括: - ✅ 每个步骤完成情况 - 🎉 测试通过确认 - ❌ 错误信息(如有) ## 更新记录 | 日期 | 更新内容 | |------|----------| | 2026-03-16 | 创建测试计划和测试用例 |