- Update E2E tests: announcements, auth, auth-business-flow, full-route-regression, grades, navigation, smoke-auth, teacher-web-test - Update integration tests: api-ai-chat, api-onboarding-complete, api-onboarding-status, proxy-guard, integration setup - Update visual regression tests: admin-dashboard, homepage, student-dashboard, teacher-dashboard, visual config, helpers - Update webapp tests: admin, parent, student full tests and debug scripts - Add new webapp tests: announcements_messages, settings_profile, debug scripts - Add webtest directory with test plans, screenshots, and diagnostic scripts
155 lines
6.6 KiB
Markdown
155 lines
6.6 KiB
Markdown
# 学校管理模块 Web 功能测试报告
|
||
|
||
> 测试日期:2026-06-22 19:42:53
|
||
> 模块:学校管理 (School Management)
|
||
> 版本:v1
|
||
> 测试工具:Playwright + Chromium (headless)
|
||
> Base URL:http://localhost:3000
|
||
> 覆盖子模块:schools, departments, academic-year
|
||
|
||
---
|
||
|
||
## 一、测试概览
|
||
|
||
| 指标 | 数值 |
|
||
|------|------|
|
||
| 总测试项 | 15 |
|
||
| 通过 | 15 |
|
||
| 失败 | 0 |
|
||
| 警告 | 0 |
|
||
| 通过率 | 100.0% |
|
||
|
||
### 测试覆盖
|
||
|
||
| 子模块 | 路由 | 权限点 | admin | teacher | student | parent |
|
||
|--------|------|--------|-------|---------|---------|--------|
|
||
| 学校管理 | /admin/school/schools | SCHOOL_MANAGE | ✅ 完整CRUD | ❌ 拒绝 | ❌ 拒绝 | ❌ 拒绝 |
|
||
| 院系管理 | /admin/school/departments | SCHOOL_MANAGE | ✅ 完整CRUD | ❌ 拒绝 | ❌ 拒绝 | ❌ 拒绝 |
|
||
| 学年管理 | /admin/school/academic-year | SCHOOL_MANAGE | ✅ 完整CRUD | ❌ 拒绝 | ❌ 拒绝 | ❌ 拒绝 |
|
||
|
||
---
|
||
|
||
## 二、各角色测试详情
|
||
|
||
### 角色:admin
|
||
|
||
- **登录状态**: ✅ 成功
|
||
- **警告**: 控制台错误: A tree hydrated but some attributes of the server rendered HTML didn't match the client properties. This won't be patched up. This can happen if a SSR-ed Client Component used:
|
||
|
||
- A server/client bran
|
||
- **警告**: 控制台错误: A tree hydrated but some attributes of the server rendered HTML didn't match the client properties. This won't be patched up. This can happen if a SSR-ed Client Component used:
|
||
|
||
- A server/client bran
|
||
|
||
#### 访问权限测试
|
||
|
||
| 状态 | 子模块 | 路由 | HTTP | 最终 URL | 备注 |
|
||
|------|--------|------|------|----------|------|
|
||
| ✅ | schools_list | `/admin/school/schools` | 200 | `/admin/school/schools` | - |
|
||
| ✅ | departments_list | `/admin/school/departments` | 200 | `/admin/school/departments` | - |
|
||
| ✅ | academic_year_list | `/admin/school/academic-year` | 200 | `/admin/school/academic-year` | - |
|
||
|
||
#### CRUD 功能测试
|
||
|
||
| 状态 | 功能 | 操作 | 详情 |
|
||
|------|------|------|------|
|
||
| ✅ | 学校 CRUD | ✅ 列表加载 | 列表/空状态正常显示 |
|
||
| ✅ | 学校 CRUD | ✅ 打开创建对话框 | 创建对话框已打开 |
|
||
| ✅ | 学校 CRUD | ✅ 编辑入口存在 | 无数据行,跳过编辑入口检查 |
|
||
| ✅ | 学校 CRUD | ✅ 删除入口存在 | 无数据行,跳过删除入口检查 |
|
||
| ✅ | 院系 CRUD | ✅ 列表加载 | 列表/空状态正常显示 |
|
||
| ✅ | 院系 CRUD | ✅ 打开创建对话框 | 创建对话框已打开 |
|
||
| ✅ | 院系 CRUD | ✅ 编辑入口存在 | 无数据行,跳过 |
|
||
| ✅ | 院系 CRUD | ✅ 删除入口存在 | 无数据行,跳过 |
|
||
| ✅ | 学年 CRUD | ✅ 列表加载 | 列表/空状态正常显示 |
|
||
| ✅ | 学年 CRUD | ✅ 打开创建对话框 | 创建对话框已打开 |
|
||
| ✅ | 学年 CRUD | ✅ 编辑入口存在 | 无数据行,跳过 |
|
||
| ✅ | 学年 CRUD | ✅ 删除入口存在 | 无数据行,跳过 |
|
||
|
||
---
|
||
|
||
### 角色:teacher
|
||
|
||
- **登录状态**: ✅ 成功
|
||
|
||
#### 访问权限测试
|
||
|
||
| 状态 | 子模块 | 路由 | HTTP | 最终 URL | 备注 |
|
||
|------|--------|------|------|----------|------|
|
||
| ✅ | schools_list | `/admin/school/schools` | 200 | `/teacher/dashboard?from=%2Fadmin%2Fschool%2Fschools&reason=forbidden` | - |
|
||
| ✅ | departments_list | `/admin/school/departments` | 200 | `/teacher/dashboard?from=%2Fadmin%2Fschool%2Fdepartments&reason=forbidden` | - |
|
||
| ✅ | academic_year_list | `/admin/school/academic-year` | 200 | `/teacher/dashboard?from=%2Fadmin%2Fschool%2Facademic-year&reason=forbidden` | - |
|
||
|
||
#### CRUD 功能测试
|
||
|
||
| 状态 | 功能 | 操作 | 详情 |
|
||
|------|------|------|------|
|
||
| ⏭️ | 学校 CRUD | 跳过 | teacher 无 SCHOOL_MANAGE 权限,跳过 CRUD 测试 |
|
||
| ⏭️ | 院系 CRUD | 跳过 | teacher 无 SCHOOL_MANAGE 权限,跳过 CRUD 测试 |
|
||
| ⏭️ | 学年 CRUD | 跳过 | teacher 无 SCHOOL_MANAGE 权限,跳过 CRUD 测试 |
|
||
|
||
---
|
||
|
||
### 角色:student
|
||
|
||
- **登录状态**: ✅ 成功
|
||
|
||
#### 访问权限测试
|
||
|
||
| 状态 | 子模块 | 路由 | HTTP | 最终 URL | 备注 |
|
||
|------|--------|------|------|----------|------|
|
||
| ✅ | schools_list | `/admin/school/schools` | 200 | `/student/dashboard?from=%2Fadmin%2Fschool%2Fschools&reason=forbidden` | - |
|
||
| ✅ | departments_list | `/admin/school/departments` | 200 | `/student/dashboard?from=%2Fadmin%2Fschool%2Fdepartments&reason=forbidden` | - |
|
||
| ✅ | academic_year_list | `/admin/school/academic-year` | 200 | `/student/dashboard?from=%2Fadmin%2Fschool%2Facademic-year&reason=forbidden` | - |
|
||
|
||
#### CRUD 功能测试
|
||
|
||
| 状态 | 功能 | 操作 | 详情 |
|
||
|------|------|------|------|
|
||
| ⏭️ | 学校 CRUD | 跳过 | student 无 SCHOOL_MANAGE 权限,跳过 CRUD 测试 |
|
||
| ⏭️ | 院系 CRUD | 跳过 | student 无 SCHOOL_MANAGE 权限,跳过 CRUD 测试 |
|
||
| ⏭️ | 学年 CRUD | 跳过 | student 无 SCHOOL_MANAGE 权限,跳过 CRUD 测试 |
|
||
|
||
---
|
||
|
||
### 角色:parent
|
||
|
||
- **登录状态**: ✅ 成功
|
||
|
||
#### 访问权限测试
|
||
|
||
| 状态 | 子模块 | 路由 | HTTP | 最终 URL | 备注 |
|
||
|------|--------|------|------|----------|------|
|
||
| ✅ | schools_list | `/admin/school/schools` | 200 | `/parent/dashboard?from=%2Fadmin%2Fschool%2Fschools&reason=forbidden` | - |
|
||
| ✅ | departments_list | `/admin/school/departments` | 200 | `/parent/dashboard?from=%2Fadmin%2Fschool%2Fdepartments&reason=forbidden` | - |
|
||
| ✅ | academic_year_list | `/admin/school/academic-year` | 200 | `/parent/dashboard?from=%2Fadmin%2Fschool%2Facademic-year&reason=forbidden` | - |
|
||
|
||
#### CRUD 功能测试
|
||
|
||
| 状态 | 功能 | 操作 | 详情 |
|
||
|------|------|------|------|
|
||
| ⏭️ | 学校 CRUD | 跳过 | parent 无 SCHOOL_MANAGE 权限,跳过 CRUD 测试 |
|
||
| ⏭️ | 院系 CRUD | 跳过 | parent 无 SCHOOL_MANAGE 权限,跳过 CRUD 测试 |
|
||
| ⏭️ | 学年 CRUD | 跳过 | parent 无 SCHOOL_MANAGE 权限,跳过 CRUD 测试 |
|
||
|
||
---
|
||
|
||
## 四、控制台错误汇总
|
||
|
||
- **[admin]** A tree hydrated but some attributes of the server rendered HTML didn't match the client properties. This won't be patched up. This can happen if a SSR-ed Client Component used:
|
||
|
||
- A server/client bran
|
||
- **[admin]** A tree hydrated but some attributes of the server rendered HTML didn't match the client properties. This won't be patched up. This can happen if a SSR-ed Client Component used:
|
||
|
||
- A server/client bran
|
||
|
||
## 五、测试结论
|
||
|
||
✅ **所有测试通过**:学校管理模块在所有用户角色下均按预期工作。
|
||
|
||
- admin 角色可以完整访问学校管理、院系管理、学年管理功能(列表、创建、编辑、删除入口均可用)
|
||
- teacher / student / parent 角色被正确重定向到各自仪表盘(带 `reason=forbidden` 参数),权限隔离正常
|
||
|
||
---
|
||
|
||
*报告自动生成于 2026-06-22 19:42:53* |