86 lines
2.7 KiB
TypeScript
86 lines
2.7 KiB
TypeScript
/**
|
|
* 教师端 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 ? '存在' : '不存在'}`,
|
|
});
|
|
});
|
|
});
|