import { test, expect } from '@playwright/test'; import { LoginPage } from '../../../novalon-manage-web/e2e/pages/LoginPage'; import { UserManagementPage } from '../../pages/UserManagementPage'; import { RoleManagementPage } from '../../../novalon-manage-web/e2e/pages/RoleManagementPage'; import { UATHelper } from '../../utils/uat-helper'; import { DataLoader } from '../../utils/data-loader'; test.describe('UAT - 角色管理场景', () => { let loginPage: LoginPage; let userManagementPage: UserManagementPage; let roleManagementPage: RoleManagementPage; let helper: UATHelper; test.beforeEach(async ({ page }) => { loginPage = new LoginPage(page); userManagementPage = new UserManagementPage(page); roleManagementPage = new RoleManagementPage(page); helper = new UATHelper(page); const adminUser = DataLoader.getUserByRole('admin'); await loginPage.goto(); await loginPage.login(adminUser.username, adminUser.password); }); test('角色分配与权限验证', async ({ page }) => { await roleManagementPage.goto(); await helper.waitForElement('[data-testid="role-table"]'); await roleManagementPage.clickCreateRole(); const timestamp = Date.now(); const roleData = { roleName: `测试角色_${timestamp}`, roleKey: `ROLE_${timestamp}`, description: '这是一个测试角色', permissions: ['user:read', 'user:write'] }; await roleManagementPage.fillRoleForm(roleData); await roleManagementPage.submitForm(); await helper.verifySuccessMessage('创建成功'); await helper.waitForPageLoad(); await expect(roleManagementPage.table).toContainText(roleData.roleName); await userManagementPage.navigateTo(); await helper.waitForElement('[data-testid="user-table"]'); await userManagementPage.editUser(1); await page.selectOption('select[name="role"]', roleData.roleName); await userManagementPage.submitForm(); await helper.verifySuccessMessage('更新成功'); await userManagementPage.logout(); const testUser = DataLoader.getUserByRole('user'); await loginPage.goto(); await loginPage.login(testUser.username, testUser.password); await page.goto('/user-management'); await helper.waitForElement('[data-testid="user-table"]'); await expect(page.locator('[data-testid="create-user-button"]')).not.toBeVisible(); }); });