feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
This commit is contained in:
@@ -0,0 +1,250 @@
|
||||
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');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user