|
@@ -12,62 +12,57 @@ import { UserType } from '@d8d/shared-types';
|
|
|
* @see {@link ../pages/admin/disability-person.page.ts} DisabilityPersonManagementPage
|
|
* @see {@link ../pages/admin/disability-person.page.ts} DisabilityPersonManagementPage
|
|
|
*/
|
|
*/
|
|
|
test.describe('人才用户创建功能', () => {
|
|
test.describe('人才用户创建功能', () => {
|
|
|
- // 测试创建的残疾人姓名,用于清理
|
|
|
|
|
- let testPersonName: string;
|
|
|
|
|
|
|
+ // 使用固定的残疾人数据名称
|
|
|
|
|
+ const FIXED_TEST_PERSON_NAME = 'E2E测试_人才用户专用残疾人';
|
|
|
|
|
|
|
|
- test.beforeEach(async ({ adminLoginPage, disabilityPersonPage, userManagementPage }) => {
|
|
|
|
|
- // 以管理员身份登录后台
|
|
|
|
|
|
|
+ // 初始化测试:确保残疾人数据存在
|
|
|
|
|
+ // 此测试会先于其他测试运行,创建所需的残疾人数据
|
|
|
|
|
+ test('初始化:创建测试用残疾人数据', async ({ adminLoginPage, disabilityPersonPage }) => {
|
|
|
await adminLoginPage.goto();
|
|
await adminLoginPage.goto();
|
|
|
await adminLoginPage.login('admin', 'admin123');
|
|
await adminLoginPage.login('admin', 'admin123');
|
|
|
await adminLoginPage.expectLoginSuccess();
|
|
await adminLoginPage.expectLoginSuccess();
|
|
|
|
|
|
|
|
- // 创建测试残疾人(人才用户必须关联残疾人)
|
|
|
|
|
- const timestamp = Date.now();
|
|
|
|
|
- testPersonName = `测试残疾人_${timestamp}`;
|
|
|
|
|
-
|
|
|
|
|
|
|
+ // 检查残疾人数据是否存在
|
|
|
await disabilityPersonPage.goto();
|
|
await disabilityPersonPage.goto();
|
|
|
- await disabilityPersonPage.openCreateDialog();
|
|
|
|
|
-
|
|
|
|
|
- // 填写残疾人基本信息(必填字段)
|
|
|
|
|
- await disabilityPersonPage.fillBasicForm({
|
|
|
|
|
- name: testPersonName,
|
|
|
|
|
- gender: '男',
|
|
|
|
|
- idCard: generateTestIdCard(timestamp),
|
|
|
|
|
- disabilityId: `证${timestamp}`,
|
|
|
|
|
- disabilityType: '视力残疾',
|
|
|
|
|
- disabilityLevel: '一级',
|
|
|
|
|
- phone: '13800138000',
|
|
|
|
|
- idAddress: `测试身份证地址_${timestamp}`,
|
|
|
|
|
- province: '广东省',
|
|
|
|
|
- city: '广州市',
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ await disabilityPersonPage.searchByName(FIXED_TEST_PERSON_NAME);
|
|
|
|
|
|
|
|
- // 提交表单
|
|
|
|
|
- await disabilityPersonPage.submitForm();
|
|
|
|
|
- await disabilityPersonPage.waitForDialogClosed();
|
|
|
|
|
-
|
|
|
|
|
- // 验证残疾人创建成功
|
|
|
|
|
- const personCreated = await disabilityPersonPage.waitForPersonExists(testPersonName, { timeout: TIMEOUTS.TABLE_LOAD });
|
|
|
|
|
- expect(personCreated).toBe(true);
|
|
|
|
|
|
|
+ const personExists = await disabilityPersonPage.personExists(FIXED_TEST_PERSON_NAME);
|
|
|
|
|
+ if (!personExists) {
|
|
|
|
|
+ // 创建固定的测试残疾人数据
|
|
|
|
|
+ const timestamp = Date.now();
|
|
|
|
|
|
|
|
- // 导航到用户管理页面
|
|
|
|
|
- await userManagementPage.goto();
|
|
|
|
|
|
|
+ await disabilityPersonPage.goto();
|
|
|
|
|
+ await disabilityPersonPage.openCreateDialog();
|
|
|
|
|
+
|
|
|
|
|
+ await disabilityPersonPage.fillBasicForm({
|
|
|
|
|
+ name: FIXED_TEST_PERSON_NAME,
|
|
|
|
|
+ gender: '男',
|
|
|
|
|
+ idCard: generateTestIdCard(timestamp),
|
|
|
|
|
+ disabilityId: `E2E_TALENT_${timestamp}`,
|
|
|
|
|
+ disabilityType: '视力残疾',
|
|
|
|
|
+ disabilityLevel: '一级',
|
|
|
|
|
+ phone: '13800138000',
|
|
|
|
|
+ idAddress: `E2E测试地址_人才用户专用`,
|
|
|
|
|
+ province: '广东省',
|
|
|
|
|
+ city: '广州市',
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ await disabilityPersonPage.submitForm();
|
|
|
|
|
+ await disabilityPersonPage.waitForDialogClosed();
|
|
|
|
|
+
|
|
|
|
|
+ const personCreated = await disabilityPersonPage.waitForPersonExists(FIXED_TEST_PERSON_NAME, { timeout: TIMEOUTS.TABLE_LOAD });
|
|
|
|
|
+ expect(personCreated).toBe(true);
|
|
|
|
|
+ }
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- test.afterEach(async ({ disabilityPersonPage }) => {
|
|
|
|
|
- // 清理测试数据(残疾人)
|
|
|
|
|
- await disabilityPersonPage.goto();
|
|
|
|
|
- await disabilityPersonPage.searchByName(testPersonName);
|
|
|
|
|
-
|
|
|
|
|
- // 等待搜索结果
|
|
|
|
|
- const exists = await disabilityPersonPage.personExists(testPersonName);
|
|
|
|
|
- if (exists) {
|
|
|
|
|
- await disabilityPersonPage.deleteDisabilityPerson(testPersonName);
|
|
|
|
|
|
|
+ test.beforeEach(async ({ adminLoginPage, userManagementPage }) => {
|
|
|
|
|
+ // 以管理员身份登录后台
|
|
|
|
|
+ await adminLoginPage.goto();
|
|
|
|
|
+ await adminLoginPage.login('admin', 'admin123');
|
|
|
|
|
+ await adminLoginPage.expectLoginSuccess();
|
|
|
|
|
|
|
|
- // 等待删除完成
|
|
|
|
|
- const deleted = await disabilityPersonPage.waitForPersonNotExists(testPersonName, { timeout: TIMEOUTS.TABLE_LOAD });
|
|
|
|
|
- expect(deleted).toBe(true);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // 导航到用户管理页面
|
|
|
|
|
+ await userManagementPage.goto();
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
test.describe('基本创建流程测试', () => {
|
|
test.describe('基本创建流程测试', () => {
|
|
@@ -82,7 +77,7 @@ test.describe('人才用户创建功能', () => {
|
|
|
password: 'password123',
|
|
password: 'password123',
|
|
|
nickname: '测试人才用户',
|
|
nickname: '测试人才用户',
|
|
|
userType: UserType.TALENT,
|
|
userType: UserType.TALENT,
|
|
|
- }, undefined, testPersonName);
|
|
|
|
|
|
|
+ }, undefined, FIXED_TEST_PERSON_NAME);
|
|
|
|
|
|
|
|
// 验证 API 响应成功
|
|
// 验证 API 响应成功
|
|
|
expect(result.responses).toBeDefined();
|
|
expect(result.responses).toBeDefined();
|
|
@@ -126,7 +121,7 @@ test.describe('人才用户创建功能', () => {
|
|
|
password: 'password123',
|
|
password: 'password123',
|
|
|
nickname: '列表测试用户',
|
|
nickname: '列表测试用户',
|
|
|
userType: UserType.TALENT,
|
|
userType: UserType.TALENT,
|
|
|
- }, undefined, testPersonName);
|
|
|
|
|
|
|
+ }, undefined, FIXED_TEST_PERSON_NAME);
|
|
|
|
|
|
|
|
// 验证用户出现在列表中
|
|
// 验证用户出现在列表中
|
|
|
const exists = await userManagementPage.userExists(username);
|
|
const exists = await userManagementPage.userExists(username);
|
|
@@ -151,7 +146,7 @@ test.describe('人才用户创建功能', () => {
|
|
|
phone: '13800138001',
|
|
phone: '13800138001',
|
|
|
name: '张三',
|
|
name: '张三',
|
|
|
userType: UserType.TALENT,
|
|
userType: UserType.TALENT,
|
|
|
- }, undefined, testPersonName);
|
|
|
|
|
|
|
+ }, undefined, FIXED_TEST_PERSON_NAME);
|
|
|
|
|
|
|
|
// 验证 API 响应成功
|
|
// 验证 API 响应成功
|
|
|
const createResponse = result.responses?.find(r => r.url.includes('/api/v1/users'));
|
|
const createResponse = result.responses?.find(r => r.url.includes('/api/v1/users'));
|
|
@@ -180,7 +175,7 @@ test.describe('人才用户创建功能', () => {
|
|
|
phone: '13900139000',
|
|
phone: '13900139000',
|
|
|
name: '李四',
|
|
name: '李四',
|
|
|
userType: UserType.TALENT,
|
|
userType: UserType.TALENT,
|
|
|
- }, undefined, testPersonName);
|
|
|
|
|
|
|
+ }, undefined, FIXED_TEST_PERSON_NAME);
|
|
|
|
|
|
|
|
// 验证创建成功(优先检查 API 响应)
|
|
// 验证创建成功(优先检查 API 响应)
|
|
|
const createResponse = result.responses?.find(r => r.url.includes('/api/v1/users'));
|
|
const createResponse = result.responses?.find(r => r.url.includes('/api/v1/users'));
|
|
@@ -342,7 +337,7 @@ test.describe('人才用户创建功能', () => {
|
|
|
password: 'password123',
|
|
password: 'password123',
|
|
|
nickname: '唯一性测试A',
|
|
nickname: '唯一性测试A',
|
|
|
userType: UserType.TALENT,
|
|
userType: UserType.TALENT,
|
|
|
- }, undefined, testPersonName);
|
|
|
|
|
|
|
+ }, undefined, FIXED_TEST_PERSON_NAME);
|
|
|
|
|
|
|
|
expect(await userManagementPage.userExists(username1)).toBe(true);
|
|
expect(await userManagementPage.userExists(username1)).toBe(true);
|
|
|
|
|
|
|
@@ -352,7 +347,7 @@ test.describe('人才用户创建功能', () => {
|
|
|
password: 'password123',
|
|
password: 'password123',
|
|
|
nickname: '唯一性测试B',
|
|
nickname: '唯一性测试B',
|
|
|
userType: UserType.TALENT,
|
|
userType: UserType.TALENT,
|
|
|
- }, undefined, testPersonName);
|
|
|
|
|
|
|
+ }, undefined, FIXED_TEST_PERSON_NAME);
|
|
|
|
|
|
|
|
expect(await userManagementPage.userExists(username2)).toBe(true);
|
|
expect(await userManagementPage.userExists(username2)).toBe(true);
|
|
|
|
|
|
|
@@ -376,7 +371,7 @@ test.describe('人才用户创建功能', () => {
|
|
|
password: 'password123',
|
|
password: 'password123',
|
|
|
nickname: '时间戳测试用户',
|
|
nickname: '时间戳测试用户',
|
|
|
userType: UserType.TALENT,
|
|
userType: UserType.TALENT,
|
|
|
- }, undefined, testPersonName);
|
|
|
|
|
|
|
+ }, undefined, FIXED_TEST_PERSON_NAME);
|
|
|
|
|
|
|
|
// 验证用户创建成功
|
|
// 验证用户创建成功
|
|
|
expect(await userManagementPage.userExists(username)).toBe(true);
|
|
expect(await userManagementPage.userExists(username)).toBe(true);
|
|
@@ -399,7 +394,7 @@ test.describe('人才用户创建功能', () => {
|
|
|
email: `cleanup_${timestamp}@test.com`,
|
|
email: `cleanup_${timestamp}@test.com`,
|
|
|
phone: '13800003333',
|
|
phone: '13800003333',
|
|
|
userType: UserType.TALENT,
|
|
userType: UserType.TALENT,
|
|
|
- }, undefined, testPersonName);
|
|
|
|
|
|
|
+ }, undefined, FIXED_TEST_PERSON_NAME);
|
|
|
|
|
|
|
|
// 验证用户存在
|
|
// 验证用户存在
|
|
|
const createResponse = result.responses?.find(r => r.url.includes('/api/v1/users'));
|
|
const createResponse = result.responses?.find(r => r.url.includes('/api/v1/users'));
|