kindergarten_java/docs/dev-logs/2026-03-13-admin-e2e-tests.md

204 lines
6.4 KiB
Markdown
Raw Permalink Normal View History

# 开发日志 - 2026-03-13
## 今日工作内容
### 超管端 E2E 自动化测试开发
**工作时间**: 全天
**开发人员**: AI Assistant
---
## 完成的任务
### 1. 测试框架配置 ✅
基于现有的 Playwright 测试框架,为超管端 (Admin) 创建完整的 E2E 测试套件。
**配置文件**:
- `playwright.config.ts` - 已存在,使用 Chromium 浏览器
- 测试目录:`tests/e2e/admin/`
---
### 2. 测试工具文件创建 ✅
**fixtures.ts** - 测试数据和常量
```typescript
- ADMIN_CONFIG: 超管登录配置 (admin/123456)
- TEST_DATA: 测试数据模板 (租户、课程包、套餐、主题、资源)
- PACKAGE_TYPE_MAP: 套餐类型映射
- COURSE_CATEGORY_MAP: 课程分类映射
```
**helpers.ts** - 通用工具函数
```typescript
- 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 个用例** |
---
## 执行命令
```bash
# 方式一:运行所有超管端测试(推荐)
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/
```
---
## 查看测试报告
```bash
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