08ea5fbe98
添加用户管理视图、API和状态管理文件
251 lines
11 KiB
TypeScript
251 lines
11 KiB
TypeScript
import { test, expect } from '../test-fixtures';
|
|
|
|
test.describe('@full 完整E2E测试', () => {
|
|
test.beforeEach(async ({ testLogger }) => {
|
|
testLogger.startTest('完整E2E测试');
|
|
});
|
|
|
|
test.afterEach(async ({ testLogger, helpers }) => {
|
|
await helpers.screenshot.takeScreenshot('after-test');
|
|
testLogger.endTest('完整E2E测试', 'passed');
|
|
});
|
|
|
|
test('@complete 完整用户管理流程', async ({ pageObjects, testData, testLogger, helpers }) => {
|
|
testLogger.startStep('步骤1: 登录系统');
|
|
await pageObjects.loginPage.navigate();
|
|
await pageObjects.loginPage.login(testData.admin.username, testData.admin.password);
|
|
await pageObjects.dashboardPage.waitForLoad();
|
|
testLogger.endStep('步骤1: 登录系统', 'passed');
|
|
|
|
testLogger.startStep('步骤2: 创建用户');
|
|
await pageObjects.dashboardPage.navigateToUserManagement();
|
|
await pageObjects.userManagementPage.waitForLoad();
|
|
|
|
const userData = {
|
|
username: `e2e_user_${Date.now()}`,
|
|
realName: 'E2E测试用户',
|
|
email: `e2e_${Date.now()}@example.com`,
|
|
phone: '13800138000',
|
|
status: 1
|
|
};
|
|
|
|
await pageObjects.userManagementPage.createUser(userData);
|
|
const userCreated = await pageObjects.userManagementPage.searchUser(userData.username);
|
|
expect(userCreated).toBeTruthy();
|
|
testLogger.endStep('步骤2: 创建用户', 'passed');
|
|
|
|
testLogger.startStep('步骤3: 编辑用户');
|
|
const updatedUserData = {
|
|
username: userData.username,
|
|
realName: '更新后的E2E用户',
|
|
email: 'updated@example.com'
|
|
};
|
|
|
|
await pageObjects.userManagementPage.editUser(userData.username, updatedUserData);
|
|
const updatedUser = await pageObjects.userManagementPage.searchUser(userData.username);
|
|
expect(updatedUser).toBeTruthy();
|
|
testLogger.endStep('步骤3: 编辑用户', 'passed');
|
|
|
|
testLogger.startStep('步骤4: 分配角色');
|
|
await pageObjects.userManagementPage.assignRoles(userData.username, [1]);
|
|
const userRoles = await pageObjects.userManagementPage.getUserRoles(userData.username);
|
|
expect(userRoles.length).toBeGreaterThan(0);
|
|
testLogger.endStep('步骤4: 分配角色', 'passed');
|
|
|
|
testLogger.startStep('步骤5: 删除用户');
|
|
await pageObjects.userManagementPage.deleteUser(userData.username);
|
|
const userDeleted = await pageObjects.userManagementPage.searchUser(userData.username);
|
|
expect(userDeleted).toBeFalsy();
|
|
testLogger.endStep('步骤5: 删除用户', 'passed');
|
|
});
|
|
|
|
test('@complete 完整角色管理流程', async ({ pageObjects, testData, testLogger }) => {
|
|
testLogger.startStep('步骤1: 登录系统');
|
|
await pageObjects.loginPage.navigate();
|
|
await pageObjects.loginPage.login(testData.admin.username, testData.admin.password);
|
|
await pageObjects.dashboardPage.waitForLoad();
|
|
testLogger.endStep('步骤1: 登录系统', 'passed');
|
|
|
|
testLogger.startStep('步骤2: 创建角色');
|
|
await pageObjects.dashboardPage.navigateToRoleManagement();
|
|
await pageObjects.roleManagementPage.waitForLoad();
|
|
|
|
const roleData = {
|
|
roleName: `E2E测试角色_${Date.now()}`,
|
|
roleCode: `e2e_role_${Date.now()}`,
|
|
description: 'E2E测试角色描述',
|
|
status: 1
|
|
};
|
|
|
|
await pageObjects.roleManagementPage.createRole(roleData);
|
|
const roleCreated = await pageObjects.roleManagementPage.searchRole(roleData.roleCode);
|
|
expect(roleCreated).toBeTruthy();
|
|
testLogger.endStep('步骤2: 创建角色', 'passed');
|
|
|
|
testLogger.startStep('步骤3: 分配权限');
|
|
const permissions = ['dashboard:view', 'user:view', 'user:create', 'user:edit', 'user:delete'];
|
|
await pageObjects.roleManagementPage.assignPermissions(roleData.roleCode, permissions);
|
|
const assignedPermissions = await pageObjects.roleManagementPage.getRolePermissions(roleData.roleCode);
|
|
expect(assignedPermissions.length).toBeGreaterThan(0);
|
|
testLogger.endStep('步骤3: 分配权限', 'passed');
|
|
|
|
testLogger.startStep('步骤4: 编辑角色');
|
|
const updatedRoleData = {
|
|
roleCode: roleData.roleCode,
|
|
roleName: '更新后的E2E角色',
|
|
description: '更新后的描述'
|
|
};
|
|
|
|
await pageObjects.roleManagementPage.editRole(roleData.roleCode, updatedRoleData);
|
|
const updatedRole = await pageObjects.roleManagementPage.searchRole(roleData.roleCode);
|
|
expect(updatedRole).toBeTruthy();
|
|
testLogger.endStep('步骤4: 编辑角色', 'passed');
|
|
|
|
testLogger.startStep('步骤5: 删除角色');
|
|
await pageObjects.roleManagementPage.deleteRole(roleData.roleCode);
|
|
const roleDeleted = await pageObjects.roleManagementPage.searchRole(roleData.roleCode);
|
|
expect(roleDeleted).toBeFalsy();
|
|
testLogger.endStep('步骤5: 删除角色', 'passed');
|
|
});
|
|
|
|
test('@complete 完整菜单管理流程', async ({ pageObjects, testData, testLogger }) => {
|
|
testLogger.startStep('步骤1: 登录系统');
|
|
await pageObjects.loginPage.navigate();
|
|
await pageObjects.loginPage.login(testData.admin.username, testData.admin.password);
|
|
await pageObjects.dashboardPage.waitForLoad();
|
|
testLogger.endStep('步骤1: 登录系统', 'passed');
|
|
|
|
testLogger.startStep('步骤2: 创建父菜单');
|
|
await pageObjects.dashboardPage.navigateToMenuManagement();
|
|
await pageObjects.menuManagementPage.waitForLoad();
|
|
|
|
const parentMenuData = {
|
|
name: `E2E父菜单_${Date.now()}`,
|
|
code: `e2e_parent_${Date.now()}`,
|
|
path: '/e2e-parent',
|
|
icon: 'SettingOutlined',
|
|
sortOrder: 1,
|
|
status: 1,
|
|
parentId: 0
|
|
};
|
|
|
|
await pageObjects.menuManagementPage.createMenu(parentMenuData);
|
|
const parentMenuCreated = await pageObjects.menuManagementPage.searchMenu(parentMenuData.code);
|
|
expect(parentMenuCreated).toBeTruthy();
|
|
testLogger.endStep('步骤2: 创建父菜单', 'passed');
|
|
|
|
testLogger.startStep('步骤3: 创建子菜单');
|
|
const childMenuData = {
|
|
name: `E2E子菜单_${Date.now()}`,
|
|
code: `e2e_child_${Date.now()}`,
|
|
path: '/e2e-child',
|
|
icon: 'FileOutlined',
|
|
sortOrder: 1,
|
|
status: 1,
|
|
parentId: parentMenuCreated?.id || 0
|
|
};
|
|
|
|
await pageObjects.menuManagementPage.createMenu(childMenuData);
|
|
const childMenuCreated = await pageObjects.menuManagementPage.searchMenu(childMenuData.code);
|
|
expect(childMenuCreated).toBeTruthy();
|
|
testLogger.endStep('步骤3: 创建子菜单', 'passed');
|
|
|
|
testLogger.startStep('步骤4: 编辑菜单');
|
|
const updatedMenuData = {
|
|
code: childMenuData.code,
|
|
name: '更新后的E2E子菜单',
|
|
path: '/e2e-child-updated'
|
|
};
|
|
|
|
await pageObjects.menuManagementPage.editMenu(childMenuData.code, updatedMenuData);
|
|
const updatedMenu = await pageObjects.menuManagementPage.searchMenu(childMenuData.code);
|
|
expect(updatedMenu).toBeTruthy();
|
|
testLogger.endStep('步骤4: 编辑菜单', 'passed');
|
|
|
|
testLogger.startStep('步骤5: 删除菜单');
|
|
await pageObjects.menuManagementPage.deleteMenu(childMenuData.code);
|
|
const childMenuDeleted = await pageObjects.menuManagementPage.searchMenu(childMenuData.code);
|
|
expect(childMenuDeleted).toBeFalsy();
|
|
|
|
await pageObjects.menuManagementPage.deleteMenu(parentMenuData.code);
|
|
const parentMenuDeleted = await pageObjects.menuManagementPage.searchMenu(parentMenuData.code);
|
|
expect(parentMenuDeleted).toBeFalsy();
|
|
testLogger.endStep('步骤5: 删除菜单', 'passed');
|
|
});
|
|
|
|
test('@complete 完整业务流程', async ({ pageObjects, testData, testLogger }) => {
|
|
testLogger.startStep('步骤1: 登录系统');
|
|
await pageObjects.loginPage.navigate();
|
|
await pageObjects.loginPage.login(testData.admin.username, testData.admin.password);
|
|
await pageObjects.dashboardPage.waitForLoad();
|
|
testLogger.endStep('步骤1: 登录系统', 'passed');
|
|
|
|
testLogger.startStep('步骤2: 创建角色');
|
|
await pageObjects.dashboardPage.navigateToRoleManagement();
|
|
await pageObjects.roleManagementPage.waitForLoad();
|
|
|
|
const roleData = {
|
|
roleName: `业务角色_${Date.now()}`,
|
|
roleCode: `business_role_${Date.now()}`,
|
|
description: '业务流程测试角色',
|
|
status: 1
|
|
};
|
|
|
|
await pageObjects.roleManagementPage.createRole(roleData);
|
|
const roleCreated = await pageObjects.roleManagementPage.searchRole(roleData.roleCode);
|
|
expect(roleCreated).toBeTruthy();
|
|
testLogger.endStep('步骤2: 创建角色', 'passed');
|
|
|
|
testLogger.startStep('步骤3: 分配权限');
|
|
const permissions = ['dashboard:view', 'user:view', 'user:create', 'user:edit'];
|
|
await pageObjects.roleManagementPage.assignPermissions(roleData.roleCode, permissions);
|
|
testLogger.endStep('步骤3: 分配权限', 'passed');
|
|
|
|
testLogger.startStep('步骤4: 创建用户');
|
|
await pageObjects.dashboardPage.navigateToUserManagement();
|
|
await pageObjects.userManagementPage.waitForLoad();
|
|
|
|
const userData = {
|
|
username: `business_user_${Date.now()}`,
|
|
realName: '业务流程用户',
|
|
email: `business_${Date.now()}@example.com`,
|
|
phone: '13800138000',
|
|
status: 1
|
|
};
|
|
|
|
await pageObjects.userManagementPage.createUser(userData);
|
|
const userCreated = await pageObjects.userManagementPage.searchUser(userData.username);
|
|
expect(userCreated).toBeTruthy();
|
|
testLogger.endStep('步骤4: 创建用户', 'passed');
|
|
|
|
testLogger.startStep('步骤5: 分配角色');
|
|
await pageObjects.userManagementPage.assignRoles(userData.username, [roleCreated?.id || 1]);
|
|
const userRoles = await pageObjects.userManagementPage.getUserRoles(userData.username);
|
|
expect(userRoles.length).toBeGreaterThan(0);
|
|
testLogger.endStep('步骤5: 分配角色', 'passed');
|
|
|
|
testLogger.startStep('步骤6: 退出登录');
|
|
await pageObjects.dashboardPage.logout();
|
|
testLogger.endStep('步骤6: 退出登录', 'passed');
|
|
|
|
testLogger.startStep('步骤7: 使用新用户登录');
|
|
await pageObjects.loginPage.login(userData.username, 'Test@123456');
|
|
await pageObjects.dashboardPage.waitForLoad();
|
|
const pageTitle = await pageObjects.dashboardPage.getPageTitle();
|
|
expect(pageTitle).toBeTruthy();
|
|
testLogger.endStep('步骤7: 使用新用户登录', 'passed');
|
|
|
|
testLogger.startStep('步骤8: 清理测试数据');
|
|
await pageObjects.dashboardPage.logout();
|
|
await pageObjects.loginPage.login(testData.admin.username, testData.admin.password);
|
|
await pageObjects.dashboardPage.waitForLoad();
|
|
|
|
await pageObjects.dashboardPage.navigateToUserManagement();
|
|
await pageObjects.userManagementPage.deleteUser(userData.username);
|
|
|
|
await pageObjects.dashboardPage.navigateToRoleManagement();
|
|
await pageObjects.roleManagementPage.deleteRole(roleData.roleCode);
|
|
testLogger.endStep('步骤8: 清理测试数据', 'passed');
|
|
});
|
|
});
|