kindergarten_java/docs/dev-logs/2026-03-13-admin-e2e-tests.md
En 6e11c874d2 chore: 忽略 target 目录和 .class 文件
- 添加 target/ 到 .gitignore
- 从 git 暂存区移除已追踪的 target 目录

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 16:50:54 +08:00

6.4 KiB
Raw Blame History

开发日志 - 2026-03-13

今日工作内容

超管端 E2E 自动化测试开发

工作时间: 全天 开发人员: AI Assistant


完成的任务

1. 测试框架配置

基于现有的 Playwright 测试框架,为超管端 (Admin) 创建完整的 E2E 测试套件。

配置文件:

  • playwright.config.ts - 已存在,使用 Chromium 浏览器
  • 测试目录:tests/e2e/admin/

2. 测试工具文件创建

fixtures.ts - 测试数据和常量

- ADMIN_CONFIG: 超管登录配置 (admin/123456)
- TEST_DATA: 测试数据模板 (租户、课程包、套餐、主题、资源)
- PACKAGE_TYPE_MAP: 套餐类型映射
- COURSE_CATEGORY_MAP: 课程分类映射

helpers.ts - 通用工具函数

- loginAsAdmin(): 超管登录
- logout(): 退出登录
- waitForTable(): 等待表格加载
- waitForModal(): 等待弹窗显示
- waitForSuccess/error(): 等待提示消息
- clickRowAction(): 点击表格行操作
- closeModal(): 关闭弹窗

3. 测试用例开发

01-login.spec.ts - 登录流程测试 (5 个用例)

  • 超管登录成功
  • 验证跳转到正确的仪表盘页面
  • 记住登录状态(刷新页面)
  • 错误密码登录失败
  • 账号不存在登录失败

02-dashboard.spec.ts - 数据看板测试 (7 个用例)

  • 验证统计卡片显示(租户数、课程包数、月授课次数、覆盖学生)
  • 验证趋势图加载
  • 验证活跃租户 TOP5 列表
  • 验证热门课程包 TOP5 列表
  • 验证快捷入口点击跳转(创建课程包、管理租户、资源库)

03-courses.spec.ts - 课程包管理测试 (12 个用例)

  • 列表页面:访问、加载、搜索、筛选、分页
  • 创建课程包:点击创建、步骤 1-6 填写
  • 编辑课程包:点击编辑、修改信息
  • 删除课程包:点击删除、确认弹窗
  • 课程包详情:查看详情、资源

04-packages.spec.ts - 套餐管理测试 (7 个用例)

  • 列表页面:访问、加载
  • 创建套餐:填写信息、设置配额、保存
  • 编辑套餐:点击编辑、修改信息
  • 删除套餐:点击删除、确认弹窗

05-themes.spec.ts - 主题字典测试 (7 个用例)

  • 列表页面:访问、加载
  • 创建主题:填写信息、上传图片、保存
  • 编辑主题:点击编辑、修改信息
  • 删除主题:点击删除、确认弹窗

06-tenants.spec.ts - 租户管理测试 (15 个用例)

  • 列表页面:访问、加载、搜索、筛选、分页
  • 创建租户:填写基本信息、选择套餐、设置配额、有效期、保存
  • 查看租户详情:基本信息、教师列表、学生列表
  • 编辑租户:点击编辑、修改信息、调整配额
  • 租户状态管理:禁用、启用
  • 重置密码:点击重置、获取临时密码
  • 删除租户:点击删除、确认弹窗

07-resources.spec.ts - 资源库测试 (9 个用例)

  • 列表页面:访问、加载、搜索、筛选、分页
  • 创建资源:填写信息、上传文件、保存
  • 编辑资源:点击编辑、修改信息
  • 删除资源:点击删除、确认弹窗

08-settings.spec.ts - 系统设置测试 (12 个用例)

  • 基本设置:系统名称、联系电话、邮箱、上传 Logo、保存
  • 安全设置密码强度、登录限制、Token 有效期、强制 HTTPS、保存
  • 通知设置:邮件/短信通知、SMTP 配置、保存
  • 存储设置:存储类型、上传限制、文件类型、保存

99-logout.spec.ts - 退出登录测试 (4 个用例)

  • 点击退出登录
  • 验证跳转回登录页
  • 验证 token 已清除localStorage/sessionStorage
  • 退出后无法访问管理页面(重定向)

admin-full-flow.spec.ts - 完整流程集成测试 (1 个用例)

  • 从登录开始,依次测试:
    1. 数据看板验证
    2. 租户管理流程
    3. 课程包管理流程
    4. 套餐管理流程
    5. 主题管理流程
    6. 资源库管理流程
    7. 系统设置验证4 个标签页)
    8. 退出登录验证

测试统计

模块 测试文件 测试用例数
登录流程 01-login.spec.ts 5
数据看板 02-dashboard.spec.ts 7
课程包管理 03-courses.spec.ts 12
套餐管理 04-packages.spec.ts 7
主题字典 05-themes.spec.ts 7
租户管理 06-tenants.spec.ts 15
资源库 07-resources.spec.ts 9
系统设置 08-settings.spec.ts 12
退出登录 99-logout.spec.ts 4
完整流程 admin-full-flow.spec.ts 1
总计 11 个文件 79 个用例

执行命令

# 方式一:运行所有超管端测试(推荐)
npm run test:e2e:headed -- --project=chromium tests/e2e/admin/

# 方式二:运行单个测试文件
npm run test:e2e:headed -- tests/e2e/admin/01-login.spec.ts
npm run test:e2e:headed -- tests/e2e/admin/06-tenants.spec.ts

# 方式三:运行完整流程测试(一键测试所有功能)
npm run test:e2e:headed -- tests/e2e/admin/admin-full-flow.spec.ts

# 方式四无头模式CI/CD 环境)
npm run test:e2e -- --project=chromium tests/e2e/admin/

查看测试报告

npx playwright show-report

测试记录文档

  • 测试记录:docs/test-logs/admin/2026-03-13-admin-e2e-test.md

技术亮点

  1. 模块化设计: 使用 fixtures.ts 和 helpers.ts 提取公共逻辑
  2. 页面对象模式: 通过选择器定位页面元素,易于维护
  3. 智能等待: 使用 waitForTable 等工具函数处理异步加载
  4. 非破坏性测试: 创建/编辑/删除操作默认点击取消,不影响测试环境
  5. 完整流程覆盖: admin-full-flow.spec.ts 模拟真实用户操作流程
  6. 类型安全: 使用 TypeScript 编写,享受完整的类型提示

注意事项

  1. 测试依赖于后端 API 的实际响应,需确保后端服务正常运行
  2. 文件上传相关测试仅验证组件存在,不实际上传文件
  3. 测试用例设计遵循幂等性原则,可重复执行
  4. 测试账号admin / 123456

明日计划

  • 根据实际测试结果修复失败的测试用例
  • 为学校端 (School) 创建类似的 E2E 测试套件
  • 为教师端 (Teacher) 创建 E2E 测试套件
  • 将测试集成到 CI/CD 流程中

记录时间: 2026-03-13 最后更新: 2026-03-13