kindergarten_java/reading-platform-frontend/tests/e2e/teacher/00-login.spec.ts

86 lines
2.7 KiB
TypeScript
Raw Normal View History

2026-03-17 10:38:51 +08:00
/**
* E2E -
*/
import { test, expect } from '@playwright/test';
import { TEACHER_CONFIG } from './fixtures';
test.describe('教师端登录功能', () => {
test('验证登录页面加载', async ({ page }) => {
await page.goto('/login');
// 验证页面标题
await expect(page).toHaveTitle(/幼儿阅读教学服务平台/);
// 验证角色选择按钮存在
await expect(page.locator('.role-btn')).toBeVisible();
// 验证教师角色按钮存在
const teacherBtn = page.locator('.role-btn').filter({ hasText: '教师' });
await expect(teacherBtn).toBeVisible();
});
test('使用正确账号密码登录', async ({ page }) => {
await page.goto('/login');
// 点击教师角色按钮
await page.locator('.role-btn').filter({ hasText: '教师' }).first().click();
// 输入账号密码
await page.getByPlaceholder('请输入账号').fill(TEACHER_CONFIG.account);
await page.getByPlaceholder('请输入密码').fill(TEACHER_CONFIG.password);
// 点击登录按钮
await page.locator('.login-btn').click();
// 等待登录按钮消失
await page.locator('.login-btn').waitFor({ state: 'hidden', timeout: 10000 });
// 等待页面跳转
await page.waitForURL(/teacher/, { timeout: 10000 });
// 验证跳转到教师端首页
await expect(page).toHaveURL(/.*teacher.*/);
});
test('使用错误密码登录', async ({ page }) => {
await page.goto('/login');
// 点击教师角色按钮
await page.locator('.role-btn').filter({ hasText: '教师' }).first().click();
// 输入账号和错误密码
await page.getByPlaceholder('请输入账号').fill(TEACHER_CONFIG.account);
await page.getByPlaceholder('请输入密码').fill('wrongpassword');
// 点击登录按钮
await page.locator('.login-btn').click();
// 等待错误提示
await page.waitForSelector('.ant-message-error, [class*="error"]', { timeout: 5000 }).catch(() => {});
// 验证仍在登录页
await expect(page).toHaveURL(/.*login.*/);
});
test('登录表单验证', async ({ page }) => {
await page.goto('/login');
// 点击教师角色按钮
await page.locator('.role-btn').filter({ hasText: '教师' }).first().click();
// 不输入账号密码直接点击登录
await page.locator('.login-btn').click();
// 等待验证提示
await page.waitForTimeout(1000);
// 验证是否显示验证错误提示
const hasError = await page.locator('.ant-message-error, .ant-form-item-explain-error').count() > 0;
test.info().annotations.push({
type: 'info',
description: `表单验证提示:${hasError ? '存在' : '不存在'}`,
});
});
});