|
@@ -45,6 +45,71 @@ test.describe.serial('残疾人管理 - 完整 CRUD 流程测试', () => {
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
test.describe('AC1: 新增残疾人完整流程', () => {
|
|
test.describe('AC1: 新增残疾人完整流程', () => {
|
|
|
|
|
+ test('应该成功完成新增残疾人完整流程(基本信息 + 备注 + 银行卡)', async ({ disabilityPersonPage, page }) => {
|
|
|
|
|
+ const testData = generateTestPerson('full');
|
|
|
|
|
+
|
|
|
|
|
+ console.log('\n========== 测试:新增残疾人完整流程(所有功能) ==========');
|
|
|
|
|
+
|
|
|
|
|
+ // 1. 打开新增对话框
|
|
|
|
|
+ await disabilityPersonPage.openCreateDialog();
|
|
|
|
|
+ console.log('✓ 对话框已打开');
|
|
|
|
|
+
|
|
|
|
|
+ // 2. 填写基本信息
|
|
|
|
|
+ await disabilityPersonPage.fillBasicForm(testData);
|
|
|
|
|
+ console.log('✓ 基本信息已填写');
|
|
|
|
|
+
|
|
|
|
|
+ // 3. 添加银行卡(使用 Page Object 方法)
|
|
|
|
|
+ await disabilityPersonPage.scrollToSection('银行卡');
|
|
|
|
|
+ await disabilityPersonPage.addBankCard({
|
|
|
|
|
+ bankName: '中国工商银行',
|
|
|
|
|
+ subBankName: '测试支行',
|
|
|
|
|
+ cardNumber: '6222021234567890123',
|
|
|
|
|
+ cardholderName: testData.name,
|
|
|
|
|
+ cardType: '借记卡',
|
|
|
|
|
+ isDefault: true,
|
|
|
|
|
+ });
|
|
|
|
|
+ console.log('✓ 银行卡已添加');
|
|
|
|
|
+
|
|
|
|
|
+ // 4. 添加备注
|
|
|
|
|
+ await disabilityPersonPage.scrollToSection('备注');
|
|
|
|
|
+ await disabilityPersonPage.addNote(`完整测试备注_${UNIQUE_ID}`);
|
|
|
|
|
+ console.log('✓ 备注已添加');
|
|
|
|
|
+
|
|
|
|
|
+ // 5. 提交表单
|
|
|
|
|
+ const result = await disabilityPersonPage.submitForm();
|
|
|
|
|
+
|
|
|
|
|
+ // 6. 验证提交结果
|
|
|
|
|
+ console.log('提交结果:', { hasSuccess: result.hasSuccess, hasError: result.hasError });
|
|
|
|
|
+
|
|
|
|
|
+ if (result.hasError) {
|
|
|
|
|
+ console.log('错误消息:', result.errorMessage);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 7. 等待对话框关闭
|
|
|
|
|
+ await disabilityPersonPage.waitForDialogClosed();
|
|
|
|
|
+
|
|
|
|
|
+ // 8. 刷新页面并搜索新创建的记录
|
|
|
|
|
+ await page.reload();
|
|
|
|
|
+ await page.waitForLoadState('networkidle');
|
|
|
|
|
+ await disabilityPersonPage.goto();
|
|
|
|
|
+
|
|
|
|
|
+ await disabilityPersonPage.searchByName(testData.name);
|
|
|
|
|
+ await page.waitForTimeout(1000);
|
|
|
|
|
+
|
|
|
|
|
+ // 9. 验证记录创建成功
|
|
|
|
|
+ const personExists = await disabilityPersonPage.personExists(testData.name);
|
|
|
|
|
+
|
|
|
|
|
+ console.log('========== 验证结果 ==========');
|
|
|
|
|
+ console.log('数据创建成功:', personExists);
|
|
|
|
|
+
|
|
|
|
|
+ expect(personExists).toBe(true);
|
|
|
|
|
+ console.log('✓ AC1 完整流程测试通过(基本信息 + 银行卡 + 备注)');
|
|
|
|
|
+
|
|
|
|
|
+ // 清理测试数据
|
|
|
|
|
+ await disabilityPersonPage.deleteDisabilityPerson(testData.name);
|
|
|
|
|
+ console.log('✓ 测试数据已清理');
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
test('应该成功完成新增残疾人完整流程(基本信息)', async ({ disabilityPersonPage, page }) => {
|
|
test('应该成功完成新增残疾人完整流程(基本信息)', async ({ disabilityPersonPage, page }) => {
|
|
|
const testData = generateTestPerson('create');
|
|
const testData = generateTestPerson('create');
|
|
|
|
|
|
|
@@ -550,22 +615,71 @@ test.describe.serial('残疾人管理 - 完整 CRUD 流程测试', () => {
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
test.describe('AC6: 数据导出', () => {
|
|
test.describe('AC6: 数据导出', () => {
|
|
|
- test('应该支持数据导出功能(功能可用性验证)', async ({ disabilityPersonPage, page }) => {
|
|
|
|
|
|
|
+ test('应该支持数据导出功能', async ({ disabilityPersonPage, page }) => {
|
|
|
console.log('\n========== 测试:数据导出功能 ==========');
|
|
console.log('\n========== 测试:数据导出功能 ==========');
|
|
|
|
|
|
|
|
- // 检查是否存在导出按钮
|
|
|
|
|
|
|
+ // 1. 检查是否存在导出按钮
|
|
|
const exportButton = page.getByRole('button', { name: /导出|下载|Export/i });
|
|
const exportButton = page.getByRole('button', { name: /导出|下载|Export/i });
|
|
|
const exportExists = await exportButton.count() > 0;
|
|
const exportExists = await exportButton.count() > 0;
|
|
|
|
|
|
|
|
- if (exportExists) {
|
|
|
|
|
- console.log('✓ 找到导出按钮');
|
|
|
|
|
- // 注意:实际测试导出功能需要处理下载文件,这里只验证按钮存在
|
|
|
|
|
- expect(exportButton).toBeVisible();
|
|
|
|
|
|
|
+ if (!exportExists) {
|
|
|
|
|
+ console.log('ℹ️ 导出按钮不存在,功能可能未实现');
|
|
|
|
|
+ // 跳过测试而非失败
|
|
|
|
|
+ test.skip();
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ console.log('✓ 找到导出按钮');
|
|
|
|
|
+
|
|
|
|
|
+ // 2. 使用 Page Object 的 exportData 方法执行导出
|
|
|
|
|
+ const result = await disabilityPersonPage.exportData();
|
|
|
|
|
+
|
|
|
|
|
+ // 3. 验证导出结果
|
|
|
|
|
+ if (result.success) {
|
|
|
|
|
+ console.log(`✓ 导出成功: ${result.fileName || '文件已下载'}`);
|
|
|
|
|
+ expect(result.success).toBe(true);
|
|
|
} else {
|
|
} else {
|
|
|
- console.log('ℹ️ 未找到导出按钮,可能该功能未实现或使用其他方式');
|
|
|
|
|
- // 这不是错误,只是功能可能未实现
|
|
|
|
|
|
|
+ console.log('⚠️ 导出失败或未触发下载');
|
|
|
|
|
+ // 如果导出功能存在但未工作,这是需要关注的问题
|
|
|
|
|
+ expect(result.success).toBe(true);
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
|
|
+
|
|
|
|
|
+ test('应该验证导出文件包含正确数据', async ({ disabilityPersonPage, page }) => {
|
|
|
|
|
+ console.log('\n========== 测试:导出数据正确性 ==========');
|
|
|
|
|
+
|
|
|
|
|
+ // 检查导出按钮是否存在
|
|
|
|
|
+ const exportButton = page.getByRole('button', { name: /导出|下载|Export/i });
|
|
|
|
|
+ const exportExists = await exportButton.count() > 0;
|
|
|
|
|
+
|
|
|
|
|
+ if (!exportExists) {
|
|
|
|
|
+ test.skip();
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 1. 创建一条测试记录以便验证导出数据
|
|
|
|
|
+ const testData = generateTestPerson('export_verify');
|
|
|
|
|
+
|
|
|
|
|
+ await disabilityPersonPage.openCreateDialog();
|
|
|
|
|
+ await disabilityPersonPage.fillBasicForm(testData);
|
|
|
|
|
+ await disabilityPersonPage.submitForm();
|
|
|
|
|
+ await disabilityPersonPage.waitForDialogClosed();
|
|
|
|
|
+
|
|
|
|
|
+ await page.reload();
|
|
|
|
|
+ await page.waitForLoadState('networkidle');
|
|
|
|
|
+ await disabilityPersonPage.goto();
|
|
|
|
|
+
|
|
|
|
|
+ // 2. 执行导出
|
|
|
|
|
+ const result = await disabilityPersonPage.exportData();
|
|
|
|
|
+
|
|
|
|
|
+ // 3. 验证导出成功
|
|
|
|
|
+ expect(result.success).toBe(true);
|
|
|
|
|
+ console.log(`✓ 导出成功: ${result.fileName || '文件已下载'}`);
|
|
|
|
|
+
|
|
|
|
|
+ // 4. 清理测试数据
|
|
|
|
|
+ await disabilityPersonPage.deleteDisabilityPerson(testData.name);
|
|
|
|
|
+ console.log('✓ 测试数据已清理');
|
|
|
|
|
+ });
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
test.describe('综合测试:完整 CRUD 流程', () => {
|
|
test.describe('综合测试:完整 CRUD 流程', () => {
|