import { test, expect } from '@playwright/test'; import { LoginPage } from './pages/LoginPage'; import { DashboardPage } from './pages/DashboardPage'; import { RoleManagementPage } from './pages/RoleManagementPage'; test.describe('角色管理 E2E 测试', () => { let loginPage: LoginPage; let dashboardPage: DashboardPage; let roleManagementPage: RoleManagementPage; test.beforeEach(async ({ page }) => { loginPage = new LoginPage(page); dashboardPage = new DashboardPage(page); roleManagementPage = new RoleManagementPage(page); await loginPage.goto(); await loginPage.login('admin', 'password'); }); test('创建角色完整流程', async ({ page }) => { await dashboardPage.navigateToRoleManagement(); await roleManagementPage.clickCreateRole(); const timestamp = Date.now(); const roleData = { roleName: `测试角色_${timestamp}`, roleKey: `test_role_${timestamp}`, roleSort: '1', status: '1', remark: `测试角色备注_${timestamp}`, }; await roleManagementPage.fillRoleForm(roleData); await roleManagementPage.submitForm(); await expect(roleManagementPage.successMessage).toBeVisible(); await expect(roleManagementPage.table).toContainText(roleData.roleName); }); test('编辑角色流程', async ({ page }) => { await dashboardPage.navigateToRoleManagement(); await roleManagementPage.editRole(1); await page.fill('input[name="roleName"]', '更新后的角色名称'); await roleManagementPage.submitForm(); await expect(roleManagementPage.successMessage).toBeVisible(); await expect(roleManagementPage.table).toContainText('更新后的角色名称'); }); test('分配权限流程', async ({ page }) => { await dashboardPage.navigateToRoleManagement(); await roleManagementPage.openPermissionDialog(1); await roleManagementPage.selectPermission('user:view'); await roleManagementPage.selectPermission('user:create'); await roleManagementPage.selectPermission('user:edit'); await roleManagementPage.selectPermission('user:delete'); await roleManagementPage.savePermissions(); await expect(roleManagementPage.successMessage).toBeVisible(); }); test('删除角色流程', async ({ page }) => { await dashboardPage.navigateToRoleManagement(); const roleName = await roleManagementPage.getRoleName(1); await roleManagementPage.deleteRole(1); await roleManagementPage.confirmDelete(); await expect(roleManagementPage.successMessage).toBeVisible(); await roleManagementPage.reload(); await expect(roleManagementPage.table).not.toContainText(roleName); }); test('角色状态切换', async ({ page }) => { await dashboardPage.navigateToRoleManagement(); await page.click('table tbody tr:first-child .status-toggle'); await expect(roleManagementPage.successMessage).toBeVisible(); }); test('搜索角色功能', async ({ page }) => { await dashboardPage.navigateToRoleManagement(); await page.fill('input[name="keyword"]', 'admin'); await page.click('button[type="search"]'); await expect(roleManagementPage.table).toContainText('admin'); }); test('批量删除角色', async ({ page }) => { await dashboardPage.navigateToRoleManagement(); await page.check('table tbody tr:nth-child(1) input[type="checkbox"]'); await page.check('table tbody tr:nth-child(2) input[type="checkbox"]'); await page.click('button:has-text("批量删除")'); await page.click('.confirm-dialog .confirm-button'); await expect(roleManagementPage.successMessage).toBeVisible(); }); test('复制角色', async ({ page }) => { await dashboardPage.navigateToRoleManagement(); await page.click('table tbody tr:first-child .copy-button'); const timestamp = Date.now(); await page.fill('input[name="roleName"]', `复制角色_${timestamp}`); await page.fill('input[name="roleKey"]', `copy_role_${timestamp}`); await roleManagementPage.submitForm(); await expect(roleManagementPage.successMessage).toBeVisible(); await expect(roleManagementPage.table).toContainText(`复制角色_${timestamp}`); }); });