Files
novalon-manage-system/novalon-manage-web/e2e/journeys/user-role-management.spec.ts
T
张翔 e8f51309e5 test: E2E 测试用例更新与新增
- 更新 Page Object 模型适配新字段名
- 新增 UAT 测试套件与 journey 测试用例
- 优化测试辅助工具与数据工厂
- 更新 playwright 认证状态
2026-05-06 19:43:39 +08:00

135 lines
4.0 KiB
TypeScript

import { test, expect } from '@playwright/test';
import { LoginPage } from '../pages/LoginPage';
import { DashboardPage } from '../pages/DashboardPage';
import { UserManagementPage } from '../pages/UserManagementPage';
import { RoleManagementPage } from '../pages/RoleManagementPage';
test.describe('User Journey: 用户与角色管理全链路', () => {
test.describe.configure({ mode: 'serial' });
let loginPage: LoginPage;
let dashboardPage: DashboardPage;
let userPage: UserManagementPage;
let rolePage: RoleManagementPage;
const timestamp = Date.now();
const roleName = `E2E角色_${timestamp}`;
const roleKey = `e2e_role_${timestamp}`;
const username = `e2e_user_${timestamp}`;
test.beforeAll(async ({ browser }) => {
const context = await browser.newContext();
const page = await context.newPage();
loginPage = new LoginPage(page);
await loginPage.goto();
await loginPage.login('admin', 'Test@123');
dashboardPage = new DashboardPage(page);
userPage = new UserManagementPage(page);
rolePage = new RoleManagementPage(page);
});
test('UJ-02a: 创建角色', async () => {
await test.step('导航到角色管理', async () => {
await rolePage.goto();
});
await test.step('点击新增角色', async () => {
await rolePage.clickCreateRole();
});
await test.step('填写角色表单', async () => {
await rolePage.fillRoleForm({
roleName,
roleKey,
roleSort: 99,
status: 'ACTIVE',
});
});
await test.step('提交表单', async () => {
await rolePage.submitForm();
});
await test.step('验证创建成功', async () => {
const success = await rolePage.waitForSuccessMessage();
expect(success).toBe(true);
});
});
test('UJ-02b: 创建用户并分配角色', async () => {
await test.step('导航到用户管理', async () => {
await userPage.goto();
});
await test.step('点击新增用户', async () => {
await userPage.clickCreateUser();
});
await test.step('填写用户表单', async () => {
await userPage.fillUserForm({
username,
password: 'Test@123456',
nickname: `E2E测试用户_${timestamp}`,
email: `e2e_${timestamp}@test.com`,
phone: '13800138000',
});
});
await test.step('提交表单', async () => {
await userPage.submitForm();
});
await test.step('验证创建成功', async () => {
const success = await userPage.waitForSuccessMessage();
expect(success).toBe(true);
});
});
test('UJ-02c: 编辑用户', async () => {
await test.step('导航到用户管理', async () => {
await userPage.goto();
await userPage.waitForTableReady();
});
await test.step('编辑第一个用户', async () => {
await userPage.editUser(1);
});
await test.step('修改昵称', async () => {
const modal = userPage.page.locator('.ant-modal').filter({ hasText: /编辑用户/ });
const nicknameInput = modal.locator('.ant-form-item').filter({ hasText: '昵称' }).locator('input');
await nicknameInput.clear();
await nicknameInput.fill(`修改昵称_${timestamp}`);
});
await test.step('提交修改', async () => {
await userPage.submitForm();
});
await test.step('验证修改成功', async () => {
const success = await userPage.waitForSuccessMessage();
expect(success).toBe(true);
});
});
test('UJ-02d: 删除用户', async () => {
await test.step('导航到用户管理', async () => {
await userPage.goto();
await userPage.waitForTableReady();
});
await test.step('删除最后一个用户', async () => {
const count = await userPage.getUserCount();
if (count > 0) {
await userPage.deleteUser(count);
await userPage.confirmDelete();
}
});
await test.step('验证删除成功', async () => {
const success = await userPage.waitForSuccessMessage();
expect(success).toBe(true);
});
});
});