import { test, expect } from '../test-fixtures'; test.describe('登录功能测试', () => { test.beforeEach(async ({ testLogger }) => { testLogger.info('开始登录功能测试套件'); }); test.afterEach(async ({ testLogger, helpers }) => { testLogger.info('登录功能测试用例完成'); await helpers.screenshot.takeScreenshot('after-test'); }); test('成功登录', async ({ pageObjects, testData, testLogger, helpers }) => { testLogger.startTest('成功登录'); try { await pageObjects.loginPage.navigate(); await pageObjects.loginPage.login(testData.admin.username, testData.admin.password); await pageObjects.dashboardPage.waitForLoad(); const pageTitle = await pageObjects.dashboardPage.getPageTitle(); expect(pageTitle).toContain('仪表盘'); testLogger.endTest('成功登录', 'passed'); } catch (error) { testLogger.endTest('成功登录', 'failed', error as Error); throw error; } }); test('登录失败 - 用户名错误', async ({ pageObjects, testData, testLogger }) => { testLogger.startTest('登录失败 - 用户名错误'); try { await pageObjects.loginPage.navigate(); await pageObjects.loginPage.login('wronguser', testData.admin.password); const errorMessage = await pageObjects.loginPage.getErrorMessage(); expect(errorMessage).toBeTruthy(); testLogger.endTest('登录失败 - 用户名错误', 'passed'); } catch (error) { testLogger.endTest('登录失败 - 用户名错误', 'failed', error as Error); throw error; } }); test('登录失败 - 密码错误', async ({ pageObjects, testData, testLogger }) => { testLogger.startTest('登录失败 - 密码错误'); try { await pageObjects.loginPage.navigate(); await pageObjects.loginPage.login(testData.admin.username, 'wrongpassword'); const errorMessage = await pageObjects.loginPage.getErrorMessage(); expect(errorMessage).toBeTruthy(); testLogger.endTest('登录失败 - 密码错误', 'passed'); } catch (error) { testLogger.endTest('登录失败 - 密码错误', 'failed', error as Error); throw error; } }); }); test.describe('用户管理功能测试', () => { test.beforeEach(async ({ pageObjects, testData, testLogger }) => { testLogger.info('开始用户管理功能测试套件'); await pageObjects.loginPage.navigate(); await pageObjects.loginPage.login(testData.admin.username, testData.admin.password); await pageObjects.dashboardPage.waitForLoad(); }); test.afterEach(async ({ testLogger, helpers }) => { testLogger.info('用户管理功能测试用例完成'); await helpers.screenshot.takeScreenshot('after-test'); }); test('创建新用户', async ({ pageObjects, testData, testLogger, helpers }) => { testLogger.startTest('创建新用户'); try { await pageObjects.userManagementPage.navigate(); await pageObjects.userManagementPage.waitForLoad(); await pageObjects.userManagementPage.clickAddUser(); await helpers.form.fillForm({ username: testData.user.username, password: testData.user.password, email: testData.user.email, phone: testData.user.phone, realName: testData.user.realName, status: testData.user.status }); await helpers.form.submitForm(); const successMessage = await pageObjects.userManagementPage.getSuccessMessage(); expect(successMessage).toBeTruthy(); testLogger.endTest('创建新用户', 'passed'); } catch (error) { testLogger.endTest('创建新用户', 'failed', error as Error); throw error; } }); test('搜索用户', async ({ pageObjects, testData, testLogger }) => { testLogger.startTest('搜索用户'); try { await pageObjects.userManagementPage.navigate(); await pageObjects.userManagementPage.waitForLoad(); await pageObjects.userManagementPage.searchUser(testData.user.username); const rowCount = await helpers.table.getRowCount('.ant-table'); expect(rowCount).toBeGreaterThan(0); testLogger.endTest('搜索用户', 'passed'); } catch (error) { testLogger.endTest('搜索用户', 'failed', error as Error); throw error; } }); test('编辑用户', async ({ pageObjects, testData, testLogger, helpers }) => { testLogger.startTest('编辑用户'); try { await pageObjects.userManagementPage.navigate(); await pageObjects.userManagementPage.waitForLoad(); await pageObjects.userManagementPage.searchUser(testData.user.username); await pageObjects.userManagementPage.clickEditUser(0); const updatedEmail = 'updated@example.com'; await helpers.form.fillField('input[type="email"]', updatedEmail); await helpers.form.submitForm(); const successMessage = await pageObjects.userManagementPage.getSuccessMessage(); expect(successMessage).toBeTruthy(); testLogger.endTest('编辑用户', 'passed'); } catch (error) { testLogger.endTest('编辑用户', 'failed', error as Error); throw error; } }); test('删除用户', async ({ pageObjects, testData, testLogger }) => { testLogger.startTest('删除用户'); try { await pageObjects.userManagementPage.navigate(); await pageObjects.userManagementPage.waitForLoad(); await pageObjects.userManagementPage.searchUser(testData.user.username); await pageObjects.userManagementPage.clickDeleteUser(0); await pageObjects.userManagementPage.confirmDelete(); const successMessage = await pageObjects.userManagementPage.getSuccessMessage(); expect(successMessage).toBeTruthy(); testLogger.endTest('删除用户', 'passed'); } catch (error) { testLogger.endTest('删除用户', 'failed', error as Error); throw error; } }); }); test.describe('角色管理功能测试', () => { test.beforeEach(async ({ pageObjects, testData, testLogger }) => { testLogger.info('开始角色管理功能测试套件'); await pageObjects.loginPage.navigate(); await pageObjects.loginPage.login(testData.admin.username, testData.admin.password); await pageObjects.dashboardPage.waitForLoad(); }); test.afterEach(async ({ testLogger, helpers }) => { testLogger.info('角色管理功能测试用例完成'); await helpers.screenshot.takeScreenshot('after-test'); }); test('创建新角色', async ({ pageObjects, testData, testLogger, helpers }) => { testLogger.startTest('创建新角色'); try { await pageObjects.roleManagementPage.navigate(); await pageObjects.roleManagementPage.waitForLoad(); await pageObjects.roleManagementPage.clickAddRole(); await helpers.form.fillForm({ roleName: testData.role.roleName, roleCode: testData.role.roleCode, status: testData.role.status }); await helpers.form.submitForm(); const successMessage = await pageObjects.roleManagementPage.getSuccessMessage(); expect(successMessage).toBeTruthy(); testLogger.endTest('创建新角色', 'passed'); } catch (error) { testLogger.endTest('创建新角色', 'failed', error as Error); throw error; } }); test('分配权限给角色', async ({ pageObjects, testData, testLogger }) => { testLogger.startTest('分配权限给角色'); try { await pageObjects.roleManagementPage.navigate(); await pageObjects.roleManagementPage.waitForLoad(); await pageObjects.roleManagementPage.clickAssignPermissions(testData.role.roleCode); await pageObjects.roleManagementPage.selectPermissions(['user:view', 'user:add']); await pageObjects.roleManagementPage.savePermissions(); const successMessage = await pageObjects.roleManagementPage.getSuccessMessage(); expect(successMessage).toBeTruthy(); testLogger.endTest('分配权限给角色', 'passed'); } catch (error) { testLogger.endTest('分配权限给角色', 'failed', error as Error); throw error; } }); }); test.describe('菜单管理功能测试', () => { test.beforeEach(async ({ pageObjects, testData, testLogger }) => { testLogger.info('开始菜单管理功能测试套件'); await pageObjects.loginPage.navigate(); await pageObjects.loginPage.login(testData.admin.username, testData.admin.password); await pageObjects.dashboardPage.waitForLoad(); }); test.afterEach(async ({ testLogger, helpers }) => { testLogger.info('菜单管理功能测试用例完成'); await helpers.screenshot.takeScreenshot('after-test'); }); test('创建新菜单', async ({ pageObjects, testData, testLogger, helpers }) => { testLogger.startTest('创建新菜单'); try { await pageObjects.menuManagementPage.navigate(); await pageObjects.menuManagementPage.waitForLoad(); await pageObjects.menuManagementPage.clickAddMenu(); await helpers.form.fillForm({ menuName: testData.menu.menuName, menuType: testData.menu.menuType, path: testData.menu.path, status: testData.menu.status }); await helpers.form.submitForm(); const successMessage = await pageObjects.menuManagementPage.getSuccessMessage(); expect(successMessage).toBeTruthy(); testLogger.endTest('创建新菜单', 'passed'); } catch (error) { testLogger.endTest('创建新菜单', 'failed', error as Error); throw error; } }); test('菜单排序', async ({ pageObjects, testLogger }) => { testLogger.startTest('菜单排序'); try { await pageObjects.menuManagementPage.navigate(); await pageObjects.menuManagementPage.waitForLoad(); await pageObjects.menuManagementPage.dragMenu(0, 1); const successMessage = await pageObjects.menuManagementPage.getSuccessMessage(); expect(successMessage).toBeTruthy(); testLogger.endTest('菜单排序', 'passed'); } catch (error) { testLogger.endTest('菜单排序', 'failed', error as Error); throw error; } }); }); test.describe('端到端测试', () => { test('完整的用户管理流程', async ({ pageObjects, testData, testLogger, helpers }) => { testLogger.startTest('完整的用户管理流程'); try { testLogger.startStep('用户登录'); await pageObjects.loginPage.navigate(); await pageObjects.loginPage.login(testData.admin.username, testData.admin.password); await pageObjects.dashboardPage.waitForLoad(); testLogger.endStep('用户登录', 'passed'); testLogger.startStep('创建用户'); await pageObjects.userManagementPage.navigate(); await pageObjects.userManagementPage.waitForLoad(); await pageObjects.userManagementPage.clickAddUser(); await helpers.form.fillForm({ username: testData.user.username, password: testData.user.password, email: testData.user.email, phone: testData.user.phone, realName: testData.user.realName, status: testData.user.status }); await helpers.form.submitForm(); testLogger.endStep('创建用户', 'passed'); testLogger.startStep('搜索用户'); await pageObjects.userManagementPage.searchUser(testData.user.username); const rowCount = await helpers.table.getRowCount('.ant-table'); expect(rowCount).toBeGreaterThan(0); testLogger.endStep('搜索用户', 'passed'); testLogger.startStep('编辑用户'); await pageObjects.userManagementPage.clickEditUser(0); const updatedEmail = 'updated@example.com'; await helpers.form.fillField('input[type="email"]', updatedEmail); await helpers.form.submitForm(); testLogger.endStep('编辑用户', 'passed'); testLogger.startStep('删除用户'); await pageObjects.userManagementPage.searchUser(testData.user.username); await pageObjects.userManagementPage.clickDeleteUser(0); await pageObjects.userManagementPage.confirmDelete(); testLogger.endStep('删除用户', 'passed'); testLogger.endTest('完整的用户管理流程', 'passed'); } catch (error) { testLogger.endTest('完整的用户管理流程', 'failed', error as Error); throw error; } }); });