127 lines
4.2 KiB
TypeScript
127 lines
4.2 KiB
TypeScript
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}`);
|
|
});
|
|
});
|