08ea5fbe98
添加用户管理视图、API和状态管理文件
361 lines
12 KiB
TypeScript
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;
|
|
}
|
|
});
|
|
});
|