/** * 教师端 E2E 测试 - 班级管理 */ import { test, expect } from '@playwright/test'; import { loginAsTeacher, clickSubMenu, waitForTable } from './helpers'; test.describe('教师端班级管理功能', () => { test.beforeEach(async ({ page }) => { await loginAsTeacher(page); }); test('验证班级列表页面加载', async ({ page }) => { // 导航到班级管理页面 await clickSubMenu(page, '班级管理', '班级列表'); // 等待页面加载 await page.waitForTimeout(2000); // 验证页面标题 const hasTitle = await page.getByText(/班级 | 我的班级/).count() > 0; test.info().annotations.push({ type: hasTitle ? 'success' : 'warning', description: `班级标题:${hasTitle ? '存在' : '不存在'}`, }); }); test('验证班级数据加载', async ({ page }) => { // 导航到班级管理页面 await clickSubMenu(page, '班级管理', '班级列表'); // 等待页面加载 await page.waitForTimeout(3000); // 检查是否有班级数据 const hasClassList = await page.locator('[class*="class"], [class*="card"], table').count() > 0; const hasEmpty = await page.getByText(/暂无数据 | 暂无班级/).count() > 0; test.info().annotations.push({ type: 'info', description: `班级数据:${hasClassList ? '存在' : hasEmpty ? '空状态' : '未知'}`, }); }); test('验证班级学生列表', async ({ page }) => { // 导航到班级管理页面 await clickSubMenu(page, '班级管理', '班级列表'); // 等待页面加载 await page.waitForTimeout(2000); // 查找第一个班级并点击进入 const firstClass = page.locator('[class*="class-card"], [class*="class-item"], table tbody tr').first(); const hasClass = await firstClass.count() > 0; if (hasClass) { // 尝试点击进入班级详情 await firstClass.click(); await page.waitForTimeout(2000); // 验证是否进入班级详情页 const hasStudentList = await page.locator('[class*="student"], table').count() > 0; test.info().annotations.push({ type: 'info', description: `学生列表:${hasStudentList ? '存在' : '不存在'}`, }); } else { test.info().annotations.push({ type: 'warning', description: '没有找到班级数据', }); } }); test('验证班级教师列表', async ({ page }) => { // 导航到班级管理页面 await clickSubMenu(page, '班级管理', '班级列表'); // 等待页面加载 await page.waitForTimeout(2000); // 查找第一个班级并查看教师 const firstClass = page.locator('[class*="class-card"], [class*="class-item"], table tbody tr').first(); const hasClass = await firstClass.count() > 0; if (hasClass) { // 查找查看教师按钮 const viewTeachersBtn = page.getByRole('button', { name: /教师 | 老师/ }).first(); const hasBtn = await viewTeachersBtn.count() > 0; test.info().annotations.push({ type: 'info', description: `查看教师按钮:${hasBtn ? '存在' : '不存在'}`, }); } }); test('截图保存班级列表状态', async ({ page }) => { // 导航到班级管理页面 await clickSubMenu(page, '班级管理', '班级列表'); // 等待页面完全加载 await page.waitForTimeout(3000); // 截图 await page.screenshot({ path: 'test-results/teacher-classes.png' }); test.info().annotations.push({ type: 'success', description: '班级列表截图已保存', }); }); });