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

264 lines
9.2 KiB
TypeScript

import { test, expect } from './test-fixtures.js';
/**
* 角色管理模块完整测试套件
* 采用TDD方法:Red -> Green -> Refactor
* 测试覆盖:CRUD操作、权限分配、搜索、表单验证
*/
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();
await pageObjects.roleManagementPage.navigate();
await pageObjects.roleManagementPage.waitForLoad();
});
test.afterEach(async ({ testLogger, helpers }) => {
testLogger.info('角色管理列表测试用例完成');
await helpers.screenshot.takeScreenshot('after-role-list-test');
});
test('应该显示角色列表页面', async ({ pageObjects, testLogger }) => {
testLogger.startTest('角色列表页面显示');
try {
const roleCount = await pageObjects.roleManagementPage.getRoleCount();
expect(roleCount).toBeGreaterThanOrEqual(0);
testLogger.endTest('角色列表页面显示', 'passed');
} catch (error) {
testLogger.endTest('角色列表页面显示', 'failed', error as Error);
throw error;
}
});
test('应该能够搜索角色', async ({ pageObjects, testLogger }) => {
testLogger.startTest('搜索角色功能');
try {
await pageObjects.roleManagementPage.searchRole('admin');
const roleCount = await pageObjects.roleManagementPage.getRoleCount();
expect(roleCount).toBeGreaterThanOrEqual(0);
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();
await pageObjects.roleManagementPage.navigate();
await pageObjects.roleManagementPage.waitForLoad();
});
test('应该成功创建新角色', async ({ pageObjects, testData, testLogger, helpers }) => {
testLogger.startTest('创建新角色');
try {
await pageObjects.roleManagementPage.clickAddRole();
await helpers.form.fillForm({
roleName: testData.role.name,
roleKey: testData.role.code,
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, helpers }) => {
testLogger.startTest('角色名称空值验证');
try {
await pageObjects.roleManagementPage.clickAddRole();
await helpers.form.fillForm({
roleKey: testData.role.code,
status: testData.role.status
});
await helpers.form.submitForm();
const errorMessage = await pageObjects.roleManagementPage.getErrorMessage();
expect(errorMessage).toBeTruthy();
testLogger.endTest('角色名称空值验证', 'passed');
} catch (error) {
testLogger.endTest('角色名称空值验证', 'failed', error as Error);
throw error;
}
});
test('应该验证角色标识不能为空', async ({ pageObjects, testData, testLogger, helpers }) => {
testLogger.startTest('角色标识空值验证');
try {
await pageObjects.roleManagementPage.clickAddRole();
await helpers.form.fillForm({
roleName: testData.role.name,
status: testData.role.status
});
await helpers.form.submitForm();
const errorMessage = await pageObjects.roleManagementPage.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();
await pageObjects.roleManagementPage.navigate();
await pageObjects.roleManagementPage.waitForLoad();
});
test('应该成功编辑角色信息', async ({ pageObjects, testData, testLogger, helpers }) => {
testLogger.startTest('编辑角色信息');
try {
// 先搜索角色
await pageObjects.roleManagementPage.searchRole(testData.role.name);
// 点击编辑按钮(第一行)
await pageObjects.roleManagementPage.clickEditRole(0);
// 修改角色描述
const updatedDescription = 'Updated role description';
await helpers.form.fillField('textarea[name="remark"]', updatedDescription);
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.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();
await pageObjects.roleManagementPage.navigate();
await pageObjects.roleManagementPage.waitForLoad();
});
test('应该成功删除角色', async ({ pageObjects, testData, testLogger }) => {
testLogger.startTest('删除角色');
try {
// 先搜索角色
await pageObjects.roleManagementPage.searchRole(testData.role.name);
// 点击删除按钮(第一行)
await pageObjects.roleManagementPage.clickDeleteRole(0);
// 确认删除
await pageObjects.roleManagementPage.confirmDelete();
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('应该完成完整的角色CRUD流程', async ({ pageObjects, testData, testLogger, helpers }) => {
testLogger.startTest('完整角色CRUD流程');
try {
// 步骤1: 登录
testLogger.startStep('用户登录');
await pageObjects.loginPage.navigate();
await pageObjects.loginPage.login(testData.admin.username, testData.admin.password);
await pageObjects.dashboardPage.waitForLoad();
testLogger.endStep('用户登录', 'passed');
// 步骤2: 导航到角色管理
testLogger.startStep('导航到角色管理');
await pageObjects.roleManagementPage.navigate();
await pageObjects.roleManagementPage.waitForLoad();
testLogger.endStep('导航到角色管理', 'passed');
// 步骤3: 创建角色
testLogger.startStep('创建新角色');
await pageObjects.roleManagementPage.clickAddRole();
await helpers.form.fillForm({
roleName: testData.role.name,
roleKey: testData.role.code,
status: testData.role.status
});
await helpers.form.submitForm();
testLogger.endStep('创建新角色', 'passed');
// 步骤4: 搜索角色
testLogger.startStep('搜索角色');
await pageObjects.roleManagementPage.searchRole(testData.role.name);
const roleCount = await pageObjects.roleManagementPage.getRoleCount();
expect(roleCount).toBeGreaterThan(0);
testLogger.endStep('搜索角色', 'passed');
// 步骤5: 编辑角色
testLogger.startStep('编辑角色');
await pageObjects.roleManagementPage.clickEditRole(0);
await helpers.form.fillField('textarea[name="remark"]', 'Updated description');
await helpers.form.submitForm();
testLogger.endStep('编辑角色', 'passed');
// 步骤6: 删除角色
testLogger.startStep('删除角色');
await pageObjects.roleManagementPage.searchRole(testData.role.name);
await pageObjects.roleManagementPage.clickDeleteRole(0);
await pageObjects.roleManagementPage.confirmDelete();
testLogger.endStep('删除角色', 'passed');
testLogger.endTest('完整角色CRUD流程', 'passed');
} catch (error) {
testLogger.endTest('完整角色CRUD流程', 'failed', error as Error);
throw error;
}
});
});