# 备课模块（lesson-preparation）Web 测试报告 v1

> 测试日期：2026-06-22 19:57:34
> 模块：备课 (lesson-preparation)
> Base URL：http://localhost:3000
> 测试方式：Playwright 自动化测试

---

## 一、测试概览

| 指标 | 数值 |
|------|------|
| 测试角色总数 | 4 |
| 通过 | 2 |
| 失败 | 0 |
| 警告 | 2 |

### 测试覆盖范围

- **角色覆盖**：admin / teacher / student / parent
- **路由覆盖**：`/teacher/lesson-plans`（列表）、`/teacher/lesson-plans/new`（新建）、`/teacher/lesson-plans/[planId]/edit`（编辑）
- **功能覆盖**：列表查看、模板选择、新建课案、节点图画布、侧边面板、版本历史、复制、归档
- **权限测试**：student/parent 应被拒绝访问 `/teacher/*` 路由

---

## 二、角色访问权限测试

| 角色 | 登录 | 列表页 | 新建页 | 备注 |
|------|------|--------|--------|------|
| admin | ✅ | ✅ | ✅ | 只读访问 |
| teacher | ✅ | ⚠️ | ✅ | 完整功能 |
| student | ✅ | ✅ | ❓ | 应被拒绝（重定向到自己的 dashboard） |
| parent | ✅ | ⚠️ | ❓ | 应被拒绝（重定向到自己的 dashboard） |

---

## 三、教师完整功能测试详情

| 功能 | 状态 | 检查项数 | 通过数 | 错误 |
|------|------|----------|--------|------|
| 列表页 | ✅ | 4 | 4 | - |
| 新建课案 | ✅ | 3 | 3 | - |
| 编辑器 | ✅ | 6 | 5 | - |
| 节点选中与侧边面板 | ✅ | 1 | 1 | - |
| 版本历史 | ✅ | 1 | 0 | - |
| 复制与归档 | ✅ | 4 | 3 | - |

### 详细检查项

#### 列表页

- **状态**：passed
- **检查项**：
  - ✅ 页面标题包含'备课'/'Lesson Plan'（body 长度 380020）
  - ✅ 存在'新建课案'按钮（找到 1 个）
  - ✅ 存在筛选器（找到 4 个 input/select）
  - ✅ 课案卡片或空状态（找到 12 个课案链接）

#### 新建课案

- **状态**：passed
- **检查项**：
  - ✅ 存在模板选择按钮（找到 11 个按钮）
  - ✅ 模板选中状态可视化（选中 5 个）
  - ✅ 创建后跳转到编辑页（planId=gpqmy3bpyts1lpnhomibnzr2）

#### 编辑器

- **状态**：passed
- **检查项**：
  - ❌ 标题输入框存在且有值（标题=''）
  - ✅ React Flow 节点渲染（渲染 8 个节点）
  - ✅ React Flow 边渲染（渲染 7 条边）
  - ✅ 存在保存版本按钮（找到 1 个）
  - ✅ 存在版本历史按钮（找到 2 个）
  - ✅ 存在添加节点按钮（找到 1 个）

#### 节点选中与侧边面板

- **状态**：passed
- **检查项**：
  - ✅ 点击节点后出现侧边面板（找到编辑元素: True）

#### 版本历史

- **状态**：passed
- **检查项**：
  - ❌ 版本历史抽屉打开（找到 0 个 dialog/drawer）

#### 复制与归档

- **状态**：passed
- **检查项**：
  - ✅ 列表页存在课案卡片（找到 13 个）
  - ✅ 存在复制按钮（找到 12 个）
  - ✅ 存在归档按钮（找到 12 个）
  - ❌ 复制后课案数量增加（复制前 13 → 复制后 13）

---

## 四、控制台错误汇总

共收集到 2 条控制台错误：

- `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`

---

## 五、测试截图

截图保存在 `webtest/screenshots/lesson-preparation/` 目录下：

- `access_admin_list.png`
- `access_admin_new.png`
- `access_teacher_list.png`
- `access_teacher_new.png`
- `access_student_list.png`
- `access_parent_list.png`
- `teacher_feature_list.png`
- `teacher_feature_create.png`
- `teacher_feature_editor.png`
- `teacher_feature_panel.png`
- `teacher_feature_versions.png`
- `teacher_feature_duplicate.png`

---

## 六、测试结论

⚠️ **测试通过但有 2 个警告**。建议检查警告项。

---

## 七、附录：测试账号

| 角色 | 邮箱 | 预期路径 |
|------|------|----------|
| admin | admin@xiaoxue.edu.cn | /admin/dashboard |
| teacher | t_chinese_1@xiaoxue.edu.cn | /teacher/dashboard |
| student | student_g1c1_1@xiaoxue.edu.cn | /student/dashboard |
| parent | parent_g1c1_1@xiaoxue.edu.cn | /parent/dashboard |
