Files
everything-is-suitable/everything-is-suitable-test/e2e/full/full-tests.spec.ts
T
张翔 08ea5fbe98 feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
2026-03-28 14:37:29 +08:00

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');
});
});