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