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); }); }); });