Files
张翔 08ea5fbe98 feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
2026-03-28 14:37:29 +08:00

361 lines
12 KiB
TypeScript

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