前后端目录重命名: - reading-platform-java/ → lesingle-edu-reading-platform-backend/ - reading-platform-frontend/ → lesingle-edu-reading-platform-frontend/ 更新相关文件: - 所有 shell 脚本中的目录引用 - pom.xml 和 application.yml 中的项目名称 - package.json 中的项目名称 - .claude/CLAUDE.md 中的路径引用 - README 文档中的路径引用
137 lines
4.5 KiB
TypeScript
137 lines
4.5 KiB
TypeScript
/**
|
||
* 教师端 E2E 测试 - 成长记录
|
||
*/
|
||
|
||
import { test, expect } from '@playwright/test';
|
||
import { loginAsTeacher, clickSubMenu, waitForTable, waitForSuccess } 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 hasRecordList = await page.locator('[class*="growth"], [class*="record"], table').count() > 0;
|
||
const hasEmpty = await page.getByText(/暂无数据 | 暂无记录/).count() > 0;
|
||
|
||
test.info().annotations.push({
|
||
type: 'info',
|
||
description: `成长记录数据:${hasRecordList ? '存在' : hasEmpty ? '空状态' : '未知'}`,
|
||
});
|
||
});
|
||
|
||
test('验证创建成长记录功能', async ({ page }) => {
|
||
// 导航到成长记录页面
|
||
await clickSubMenu(page, '', '成长档案');
|
||
|
||
// 等待页面加载
|
||
await page.waitForTimeout(2000);
|
||
|
||
// 查找创建按钮
|
||
const createBtn = page.getByRole('button', { name: /创建 | 新建 | 添加/ });
|
||
const hasCreateBtn = await createBtn.count() > 0;
|
||
|
||
test.info().annotations.push({
|
||
type: 'info',
|
||
description: `创建按钮:${hasCreateBtn ? '存在' : '不存在'}`,
|
||
});
|
||
|
||
if (hasCreateBtn) {
|
||
// 点击创建按钮
|
||
await createBtn.click();
|
||
await page.waitForTimeout(1000);
|
||
|
||
// 验证弹窗是否打开
|
||
const hasModal = await page.locator('.ant-modal, [class*="modal"]').count() > 0;
|
||
test.info().annotations.push({
|
||
type: 'info',
|
||
description: `创建弹窗:${hasModal ? '打开' : '未打开'}`,
|
||
});
|
||
|
||
if (hasModal) {
|
||
// 验证表单字段
|
||
const hasStudentSelect = await page.locator('[class*="student"] .ant-select, [placeholder*="学生"]').count() > 0;
|
||
const hasTypeSelect = await page.locator('[class*="type"] .ant-select, [placeholder*="类型"]').count() > 0;
|
||
|
||
test.info().annotations.push({
|
||
type: 'info',
|
||
description: `学生选择:${hasStudentSelect ? '存在' : '不存在'}`,
|
||
});
|
||
test.info().annotations.push({
|
||
type: 'info',
|
||
description: `类型选择:${hasTypeSelect ? '存在' : '不存在'}`,
|
||
});
|
||
}
|
||
}
|
||
});
|
||
|
||
test('验证成长记录筛选功能', async ({ page }) => {
|
||
// 导航到成长记录页面
|
||
await clickSubMenu(page, '', '成长档案');
|
||
|
||
// 等待页面加载
|
||
await page.waitForTimeout(2000);
|
||
|
||
// 查找筛选器
|
||
const hasFilter = await page.locator('[class*="filter"], [class*="search"], .ant-input, .ant-select').count() > 0;
|
||
test.info().annotations.push({
|
||
type: 'info',
|
||
description: `筛选功能:${hasFilter ? '存在' : '不存在'}`,
|
||
});
|
||
});
|
||
|
||
test('验证成长记录操作按钮', async ({ page }) => {
|
||
// 导航到成长记录页面
|
||
await clickSubMenu(page, '', '成长档案');
|
||
|
||
// 等待页面加载
|
||
await page.waitForTimeout(3000);
|
||
|
||
// 查找操作按钮(编辑、删除等)
|
||
const actionBtns = page.locator('button:has-text("编辑"), button:has-text("删除"), button:has-text("详情")');
|
||
const hasActionBtns = await actionBtns.count() > 0;
|
||
|
||
test.info().annotations.push({
|
||
type: 'info',
|
||
description: `操作按钮:${hasActionBtns ? '存在' : '不存在'}`,
|
||
});
|
||
});
|
||
|
||
test('截图保存成长记录状态', async ({ page }) => {
|
||
// 导航到成长记录页面(教师端菜单为"成长档案")
|
||
await clickSubMenu(page, '', '成长档案');
|
||
|
||
// 等待页面完全加载
|
||
await page.waitForTimeout(3000);
|
||
|
||
// 截图
|
||
await page.screenshot({ path: 'test-results/teacher-growth-records.png' });
|
||
test.info().annotations.push({
|
||
type: 'success',
|
||
description: '成长记录截图已保存',
|
||
});
|
||
});
|
||
});
|