e8f51309e5
- 更新 Page Object 模型适配新字段名 - 新增 UAT 测试套件与 journey 测试用例 - 优化测试辅助工具与数据工厂 - 更新 playwright 认证状态
135 lines
4.0 KiB
TypeScript
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);
|
|
});
|
|
});
|
|
});
|