# 年级管理模块 Web 功能测试报告 > 测试日期:2026-06-22 19:32:45 > 模块:年级管理 (Grade Management) > 版本:v1 > 测试工具:Playwright + Chromium (headless) > Base URL:http://localhost:3000 > 覆盖子模块:admin-grades, admin-insights, management-classes, management-insights --- ## 一、测试概览 | 指标 | 数值 | |------|------| | 总测试项 | 22 | | 通过 | 20 | | 失败 | 0 | | 警告 | 2 | | 通过率 | 90.9% | ### 测试覆盖 | 子模块 | 路由 | 权限点 | admin | teacher(grade_head) | student | parent | |--------|------|--------|-------|---------------------|---------|--------| | 年级管理(admin) | /admin/school/grades | SCHOOL_MANAGE | ✅ 完整CRUD | ❌ 拒绝 | ❌ 拒绝 | ❌ 拒绝 | | 年级洞察(admin) | /admin/school/grades/insights | SCHOOL_MANAGE | ✅ 查看 | ❌ 拒绝 | ❌ 拒绝 | ❌ 拒绝 | | 年级班级管理 | /management/grade/classes | GRADE_MANAGE | ✅ 完整CRUD | ✅ 完整CRUD | ❌ 拒绝 | ❌ 拒绝 | | 年级洞察(teacher) | /management/grade/insights | GRADE_RECORD_READ | ✅ 查看 | ✅ 查看 | ❌ 拒绝 | ❌ 拒绝 | --- ## 二、各角色测试详情 ### 角色: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 - **警告**: 控制台错误: %o %s Error: Teacher not found at getTeacherIdForMutations (about://React/Server/E:%5CDesktop%5CCICD%5C.next%5Cdev%5Cserver%5Cchunks%5Cssr%5Csrc_modules_2587b0bf._.js?113:5823:27) at Teacher - **警告**: 控制台错误: 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 - **警告**: 控制台错误: %o %s Error: Teacher not found at getTeacherIdForMutations (about://React/Server/E:%5CDesktop%5CCICD%5C.next%5Cdev%5Cserver%5Cchunks%5Cssr%5Csrc_modules_2587b0bf._.js?113:5823:27) at Teacher #### 访问权限测试 | 状态 | 子模块 | 路由 | HTTP | 最终 URL | 备注 | |------|--------|------|------|----------|------| | ✅ | admin_grades | `/admin/school/grades` | 200 | `/admin/school/grades` | - | | ✅ | admin_insights | `/admin/school/grades/insights` | 200 | `/admin/school/grades/insights` | - | | ✅ | management_classes | `/management/grade/classes` | 200 | `/management/grade/classes` | - | | ✅ | management_insights | `/management/grade/insights` | 200 | `/management/grade/insights` | - | #### CRUD 功能测试 | 状态 | 功能 | 操作 | 详情 | |------|------|------|------| | ✅ | 年级 CRUD (admin) | ✅ 列表加载 | 列表/空状态正常显示 | | ✅ | 年级 CRUD (admin) | ✅ 筛选器存在 | 找到筛选器(select: 3, search: 1) | | ✅ | 年级 CRUD (admin) | ✅ 打开创建对话框 | 创建对话框已打开 | | ✅ | 年级 CRUD (admin) | ✅ 编辑入口存在 | 无数据行,跳过 | | ✅ | 年级 CRUD (admin) | ✅ 删除入口存在 | 无数据行,跳过 | | ✅ | 年级 CRUD (admin) | ✅ 洞察入口存在 | 无数据行,跳过 | | ⚠️ | 年级班级 CRUD (grade_head) | ❌ 列表加载 | 未找到表格或空状态 | | ⚠️ | 年级班级 CRUD (grade_head) | ❌ 打开创建对话框 | 异常: Locator.click: Timeout 30000ms exceeded. Call log: - waiting for locator("button:has-text(\"New\"), button:has-text(\"新建\"), button:has-text(\"Create\"), button:has-text(\"新增\")").first - locator resolved to