|
@@ -0,0 +1,388 @@
|
|
|
|
|
+import { test, expect, type Page } from '../../utils/test-setup';
|
|
|
|
|
+import { readFileSync } from 'fs';
|
|
|
|
|
+import { join, dirname } from 'path';
|
|
|
|
|
+import { fileURLToPath } from 'url';
|
|
|
|
|
+
|
|
|
|
|
+const __filename = fileURLToPath(import.meta.url);
|
|
|
|
|
+const __dirname = dirname(__filename);
|
|
|
|
|
+const testUsers = JSON.parse(readFileSync(join(__dirname, '../../fixtures/test-users.json'), 'utf-8'));
|
|
|
|
|
+
|
|
|
|
|
+test.describe.serial('残疾人管理 - 照片上传功能', () => {
|
|
|
|
|
+ test.beforeEach(async ({ adminLoginPage, disabilityPersonPage }) => {
|
|
|
|
|
+ // 以管理员身份登录后台
|
|
|
|
|
+ await adminLoginPage.goto();
|
|
|
|
|
+ await adminLoginPage.login(testUsers.admin.username, testUsers.admin.password);
|
|
|
|
|
+ await adminLoginPage.expectLoginSuccess();
|
|
|
|
|
+ await disabilityPersonPage.goto();
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 辅助函数:上传照片到指定索引的照片槽
|
|
|
|
|
+ * @param page Playwright Page 对象
|
|
|
|
|
+ * @param photoIndex 照片索引 (0, 1, 2, ...)
|
|
|
|
|
+ * @param filePath 文件绝对路径
|
|
|
|
|
+ */
|
|
|
|
|
+ async function uploadPhotoToSlot(page: Page, photoIndex: number, filePath: string) {
|
|
|
|
|
+ // 1. 点击"添加照片"按钮创建照片卡片(如果还没有添加)
|
|
|
|
|
+ const addPhotoButton = page.locator('[data-testid="add-photo-button"]');
|
|
|
|
|
+ const photoCardCount = await page.locator('[data-testid^="remove-photo-button-"]').count();
|
|
|
|
|
+ if (photoCardCount <= photoIndex) {
|
|
|
|
|
+ for (let i = photoCardCount; i <= photoIndex; i++) {
|
|
|
|
|
+ await addPhotoButton.first().click();
|
|
|
|
|
+ await page.waitForTimeout(300);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 2. 滚动到目标照片卡片
|
|
|
|
|
+ const photoCard = page.locator('[data-testid^="remove-photo-button-"]').nth(photoIndex);
|
|
|
|
|
+ await photoCard.scrollIntoViewIfNeeded();
|
|
|
|
|
+ await page.waitForTimeout(200);
|
|
|
|
|
+
|
|
|
|
|
+ // 3. 点击"选择或上传照片"按钮打开文件选择对话框
|
|
|
|
|
+ const selectButton = photoCard.locator('button').filter({ hasText: /选择或上传照片/ }).or(
|
|
|
|
|
+ photoCard.locator('[data-testid="file-selector-button"]')
|
|
|
|
|
+ );
|
|
|
|
|
+ await selectButton.click();
|
|
|
|
|
+ await page.waitForTimeout(500);
|
|
|
|
|
+
|
|
|
|
|
+ // 4. 等待文件选择对话框出现
|
|
|
|
|
+ const fileDialog = page.locator('[data-testid="file-selector-dialog"]');
|
|
|
|
|
+ await expect(fileDialog).toBeVisible({ timeout: 5000 });
|
|
|
|
|
+
|
|
|
|
|
+ // 5. 找到上传区域的文件输入框(MinioUploader)
|
|
|
|
|
+ const fileInput = fileDialog.locator(`[data-testid="photo-upload-${photoIndex}"][type="file"]`);
|
|
|
|
|
+ const inputCount = await fileInput.count();
|
|
|
|
|
+
|
|
|
|
|
+ if (inputCount === 0) {
|
|
|
|
|
+ // 如果找不到特定 testId 的输入框,尝试查找通用的 minio-uploader-input
|
|
|
|
|
+ const fallbackInput = fileDialog.locator('[data-testid="minio-uploader-input"][type="file"]');
|
|
|
|
|
+ await fallbackInput.setInputFiles(filePath);
|
|
|
|
|
+ console.debug(` ✓ 使用 fallback 选择器上传文件 [${photoIndex}]`);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ await fileInput.setInputFiles(filePath);
|
|
|
|
|
+ console.debug(` ✓ 上传文件到 photo-upload-${photoIndex}`);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 6. 等待上传完成(等待上传成功提示或列表刷新)
|
|
|
|
|
+ await page.waitForTimeout(3000);
|
|
|
|
|
+
|
|
|
|
|
+ // 7. 点击上传后的文件进行选择(查找第一个可点击的文件)
|
|
|
|
|
+ const uploadedFile = fileDialog.locator('.border-primary').or(
|
|
|
|
|
+ fileDialog.locator('img').first()
|
|
|
|
|
+ );
|
|
|
|
|
+ const fileExists = await uploadedFile.count() > 0;
|
|
|
|
|
+
|
|
|
|
|
+ if (fileExists) {
|
|
|
|
|
+ await uploadedFile.first().click();
|
|
|
|
|
+ await page.waitForTimeout(300);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 8. 点击"确认选择"按钮
|
|
|
|
|
+ const confirmButton = fileDialog.locator('button').filter({ hasText: /确认选择/ });
|
|
|
|
|
+ await confirmButton.click();
|
|
|
|
|
+ await page.waitForTimeout(500);
|
|
|
|
|
+
|
|
|
|
|
+ // 9. 等待对话框关闭
|
|
|
|
|
+ await expect(fileDialog).toBeHidden({ timeout: 5000 }).catch(() => {});
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ test('应该成功上传单张照片 - 身份证正面', async ({ disabilityPersonPage, page }) => {
|
|
|
|
|
+ const timestamp = Date.now();
|
|
|
|
|
+ const testData = {
|
|
|
|
|
+ name: `照片单张测试_${timestamp}`,
|
|
|
|
|
+ gender: '男',
|
|
|
|
|
+ idCard: `42010119900101123${timestamp % 10}`,
|
|
|
|
|
+ disabilityId: `5110011990010${timestamp % 10}`,
|
|
|
|
|
+ disabilityType: '视力残疾',
|
|
|
|
|
+ disabilityLevel: '一级',
|
|
|
|
|
+ phone: `1380013800${timestamp % 10}`,
|
|
|
|
|
+ idAddress: '湖北省武汉市测试街道1号',
|
|
|
|
|
+ province: '湖北省',
|
|
|
|
|
+ city: '武汉市'
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ console.log('\n========== 单张照片上传测试 ==========');
|
|
|
|
|
+
|
|
|
|
|
+ // 打开对话框并填写基本信息
|
|
|
|
|
+ await disabilityPersonPage.openCreateDialog();
|
|
|
|
|
+ await disabilityPersonPage.fillBasicForm(testData);
|
|
|
|
|
+
|
|
|
|
|
+ // 上传身份证正面照片
|
|
|
|
|
+ await uploadPhotoToSlot(page, 0, '/mnt/code/188-179-template-6/web/tests/fixtures/images/id-card-front.jpg');
|
|
|
|
|
+
|
|
|
|
|
+ // 等待预览显示
|
|
|
|
|
+ await page.waitForTimeout(1000);
|
|
|
|
|
+
|
|
|
|
|
+ // 验证预览图片存在(通过查找删除按钮来确认照片卡片存在)
|
|
|
|
|
+ const photoCard = page.locator('[data-testid="remove-photo-button-0"]');
|
|
|
|
|
+ await expect(photoCard).toBeVisible({ timeout: 5000 });
|
|
|
|
|
+
|
|
|
|
|
+ console.log('✅ 单张照片上传测试通过');
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ test('应该成功上传多张照片 - 身份证正反面', async ({ disabilityPersonPage, page }) => {
|
|
|
|
|
+ const timestamp = Date.now();
|
|
|
|
|
+ const testData = {
|
|
|
|
|
+ name: `多张照片测试_${timestamp}`,
|
|
|
|
|
+ gender: '女',
|
|
|
|
|
+ idCard: `42010119900101123${timestamp % 10}`,
|
|
|
|
|
+ disabilityId: `5110011990010${timestamp % 10}`,
|
|
|
|
|
+ disabilityType: '听力残疾',
|
|
|
|
|
+ disabilityLevel: '二级',
|
|
|
|
|
+ phone: `1380013800${timestamp % 10}`,
|
|
|
|
|
+ idAddress: '湖北省武汉市测试街道2号',
|
|
|
|
|
+ province: '湖北省',
|
|
|
|
|
+ city: '武汉市'
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ console.log('\n========== 多张照片上传测试 ==========');
|
|
|
|
|
+
|
|
|
|
|
+ // 打开对话框并填写基本信息
|
|
|
|
|
+ await disabilityPersonPage.openCreateDialog();
|
|
|
|
|
+ await disabilityPersonPage.fillBasicForm(testData);
|
|
|
|
|
+
|
|
|
|
|
+ // 上传身份证正面和反面
|
|
|
|
|
+ await uploadPhotoToSlot(page, 0, '/mnt/code/188-179-template-6/web/tests/fixtures/images/id-card-front.jpg');
|
|
|
|
|
+ await uploadPhotoToSlot(page, 1, '/mnt/code/188-179-template-6/web/tests/fixtures/images/id-card-back.jpg');
|
|
|
|
|
+
|
|
|
|
|
+ // 验证两个照片卡片都存在
|
|
|
|
|
+ const photoCard0 = page.locator('[data-testid="remove-photo-button-0"]');
|
|
|
|
|
+ const photoCard1 = page.locator('[data-testid="remove-photo-button-1"]');
|
|
|
|
|
+ await expect(photoCard0).toBeVisible({ timeout: 5000 });
|
|
|
|
|
+ await expect(photoCard1).toBeVisible({ timeout: 5000 });
|
|
|
|
|
+
|
|
|
|
|
+ console.log('✅ 多张照片上传测试通过');
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ test('应该支持 JPG 格式上传', async ({ disabilityPersonPage, page }) => {
|
|
|
|
|
+ const timestamp = Date.now();
|
|
|
|
|
+ const testData = {
|
|
|
|
|
+ name: `JPG格式测试_${timestamp}`,
|
|
|
|
|
+ gender: '男',
|
|
|
|
|
+ idCard: `42010119900101123${timestamp % 10}`,
|
|
|
|
|
+ disabilityId: `5110011990010${timestamp % 10}`,
|
|
|
|
|
+ disabilityType: '肢体残疾',
|
|
|
|
|
+ disabilityLevel: '三级',
|
|
|
|
|
+ phone: `1380013800${timestamp % 10}`,
|
|
|
|
|
+ idAddress: '湖北省武汉市测试街道3号',
|
|
|
|
|
+ province: '湖北省',
|
|
|
|
|
+ city: '武汉市'
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ console.log('\n========== JPG 格式支持测试 ==========');
|
|
|
|
|
+
|
|
|
|
|
+ await disabilityPersonPage.openCreateDialog();
|
|
|
|
|
+ await disabilityPersonPage.fillBasicForm(testData);
|
|
|
|
|
+
|
|
|
|
|
+ await uploadPhotoToSlot(page, 0, '/mnt/code/188-179-template-6/web/tests/fixtures/images/photo.jpg');
|
|
|
|
|
+
|
|
|
|
|
+ const photoCard = page.locator('[data-testid="remove-photo-button-0"]');
|
|
|
|
|
+ await expect(photoCard).toBeVisible({ timeout: 5000 });
|
|
|
|
|
+
|
|
|
|
|
+ console.log('✅ JPG 格式支持测试通过');
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ test('应该支持 PNG 格式上传', async ({ disabilityPersonPage, page }) => {
|
|
|
|
|
+ const timestamp = Date.now();
|
|
|
|
|
+ const testData = {
|
|
|
|
|
+ name: `PNG格式测试_${timestamp}`,
|
|
|
|
|
+ gender: '女',
|
|
|
|
|
+ idCard: `42010119900101123${timestamp % 10}`,
|
|
|
|
|
+ disabilityId: `5110011990010${timestamp % 10}`,
|
|
|
|
|
+ disabilityType: '言语残疾',
|
|
|
|
|
+ disabilityLevel: '四级',
|
|
|
|
|
+ phone: `1380013800${timestamp % 10}`,
|
|
|
|
|
+ idAddress: '湖北省武汉市测试街道4号',
|
|
|
|
|
+ province: '湖北省',
|
|
|
|
|
+ city: '武汉市'
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ console.log('\n========== PNG 格式支持测试 ==========');
|
|
|
|
|
+
|
|
|
|
|
+ await disabilityPersonPage.openCreateDialog();
|
|
|
|
|
+ await disabilityPersonPage.fillBasicForm(testData);
|
|
|
|
|
+
|
|
|
|
|
+ await uploadPhotoToSlot(page, 0, '/mnt/code/188-179-template-6/web/tests/fixtures/images/photo.png');
|
|
|
|
|
+
|
|
|
|
|
+ const photoCard = page.locator('[data-testid="remove-photo-button-0"]');
|
|
|
|
|
+ await expect(photoCard).toBeVisible({ timeout: 5000 });
|
|
|
|
|
+
|
|
|
|
|
+ console.log('✅ PNG 格式支持测试通过');
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ test('应该支持 WEBP 格式上传', async ({ disabilityPersonPage, page }) => {
|
|
|
|
|
+ const timestamp = Date.now();
|
|
|
|
|
+ const testData = {
|
|
|
|
|
+ name: `WEBP格式测试_${timestamp}`,
|
|
|
|
|
+ gender: '男',
|
|
|
|
|
+ idCard: `42010119900101123${timestamp % 10}`,
|
|
|
|
|
+ disabilityId: `5110011990010${timestamp % 10}`,
|
|
|
|
|
+ disabilityType: '智力残疾',
|
|
|
|
|
+ disabilityLevel: '二级',
|
|
|
|
|
+ phone: `1380013800${timestamp % 10}`,
|
|
|
|
|
+ idAddress: '湖北省武汉市测试街道5号',
|
|
|
|
|
+ province: '湖北省',
|
|
|
|
|
+ city: '武汉市'
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ console.log('\n========== WEBP 格式支持测试 ==========');
|
|
|
|
|
+
|
|
|
|
|
+ await disabilityPersonPage.openCreateDialog();
|
|
|
|
|
+ await disabilityPersonPage.fillBasicForm(testData);
|
|
|
|
|
+
|
|
|
|
|
+ await uploadPhotoToSlot(page, 0, '/mnt/code/188-179-template-6/web/tests/fixtures/images/photo.webp');
|
|
|
|
|
+
|
|
|
|
|
+ const photoCard = page.locator('[data-testid="remove-photo-button-0"]');
|
|
|
|
|
+ await expect(photoCard).toBeVisible({ timeout: 5000 });
|
|
|
|
|
+
|
|
|
|
|
+ console.log('✅ WEBP 格式支持测试通过');
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ test('应该能够删除已上传的照片', async ({ disabilityPersonPage, page }) => {
|
|
|
|
|
+ const timestamp = Date.now();
|
|
|
|
|
+ const testData = {
|
|
|
|
|
+ name: `删除照片测试_${timestamp}`,
|
|
|
|
|
+ gender: '女',
|
|
|
|
|
+ idCard: `42010119900101123${timestamp % 10}`,
|
|
|
|
|
+ disabilityId: `5110011990010${timestamp % 10}`,
|
|
|
|
|
+ disabilityType: '精神残疾',
|
|
|
|
|
+ disabilityLevel: '一级',
|
|
|
|
|
+ phone: `1380013800${timestamp % 10}`,
|
|
|
|
|
+ idAddress: '湖北省武汉市测试街道6号',
|
|
|
|
|
+ province: '湖北省',
|
|
|
|
|
+ city: '武汉市'
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ console.log('\n========== 删除照片测试 ==========');
|
|
|
|
|
+
|
|
|
|
|
+ await disabilityPersonPage.openCreateDialog();
|
|
|
|
|
+ await disabilityPersonPage.fillBasicForm(testData);
|
|
|
|
|
+
|
|
|
|
|
+ // 上传照片
|
|
|
|
|
+ await uploadPhotoToSlot(page, 0, '/mnt/code/188-179-template-6/web/tests/fixtures/images/id-card-front.jpg');
|
|
|
|
|
+
|
|
|
|
|
+ // 验证照片卡片存在
|
|
|
|
|
+ let photoCard = page.locator('[data-testid="remove-photo-button-0"]');
|
|
|
|
|
+ await expect(photoCard).toBeVisible({ timeout: 5000 });
|
|
|
|
|
+ console.debug(' ✓ 预览显示确认');
|
|
|
|
|
+
|
|
|
|
|
+ // 点击删除按钮
|
|
|
|
|
+ await photoCard.click();
|
|
|
|
|
+ console.debug(' ✓ 点击删除按钮');
|
|
|
|
|
+
|
|
|
|
|
+ await page.waitForTimeout(500);
|
|
|
|
|
+
|
|
|
|
|
+ // 验证照片卡片已被删除
|
|
|
|
|
+ photoCard = page.locator('[data-testid="remove-photo-button-0"]');
|
|
|
|
|
+ const isVisible = await photoCard.count() > 0;
|
|
|
|
|
+ expect(isVisible).toBe(false);
|
|
|
|
|
+
|
|
|
|
|
+ console.log('✅ 删除照片测试通过');
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ test('超大文件应该有合理处理', async ({ disabilityPersonPage, page }) => {
|
|
|
|
|
+ const timestamp = Date.now();
|
|
|
|
|
+ const testData = {
|
|
|
|
|
+ name: `超大文件测试_${timestamp}`,
|
|
|
|
|
+ gender: '男',
|
|
|
|
|
+ idCard: `42010119900101123${timestamp % 10}`,
|
|
|
|
|
+ disabilityId: `5110011990010${timestamp % 10}`,
|
|
|
|
|
+ disabilityType: '视力残疾',
|
|
|
|
|
+ disabilityLevel: '二级',
|
|
|
|
|
+ phone: `1380013800${timestamp % 10}`,
|
|
|
|
|
+ idAddress: '湖北省武汉市测试街道7号',
|
|
|
|
|
+ province: '湖北省',
|
|
|
|
|
+ city: '武汉市'
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ console.log('\n========== 超大文件处理测试 ==========');
|
|
|
|
|
+
|
|
|
|
|
+ await disabilityPersonPage.openCreateDialog();
|
|
|
|
|
+ await disabilityPersonPage.fillBasicForm(testData);
|
|
|
|
|
+
|
|
|
|
|
+ // 尝试上传超大文件
|
|
|
|
|
+ try {
|
|
|
|
|
+ await uploadPhotoToSlot(page, 0, '/mnt/code/188-179-template-6/web/tests/fixtures/images/large-file.jpg');
|
|
|
|
|
+
|
|
|
|
|
+ // 验证:检查是否有错误提示或预览显示
|
|
|
|
|
+ const errorToast = page.locator('[data-sonner-toast][data-type="error"]');
|
|
|
|
|
+ const photoCard = page.locator('[data-testid="remove-photo-button-0"]');
|
|
|
|
|
+
|
|
|
|
|
+ const hasError = await errorToast.count() > 0;
|
|
|
|
|
+ const hasPreview = await photoCard.count() > 0;
|
|
|
|
|
+
|
|
|
|
|
+ if (hasPreview) {
|
|
|
|
|
+ console.debug(' ✓ 超大文件上传成功(预览显示)');
|
|
|
|
|
+ } else if (hasError) {
|
|
|
|
|
+ console.debug(' ✓ 超大文件被正确拒绝(错误提示显示)');
|
|
|
|
|
+ } else {
|
|
|
|
|
+ console.debug(' ℹ 超大文件状态未知');
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.debug(' ✓ 超大文件处理完成(可能被拒绝)');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ console.log('✅ 超大文件处理测试完成');
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ test('完整流程:上传多种格式照片并提交', async ({ disabilityPersonPage, page }) => {
|
|
|
|
|
+ const timestamp = Date.now();
|
|
|
|
|
+ const testData = {
|
|
|
|
|
+ name: `完整照片流程测试_${timestamp}`,
|
|
|
|
|
+ gender: '男',
|
|
|
|
|
+ idCard: `42010119900101123${timestamp % 10}`,
|
|
|
|
|
+ disabilityId: `5110011990010${timestamp % 10}`,
|
|
|
|
|
+ disabilityType: '肢体残疾',
|
|
|
|
|
+ disabilityLevel: '四级',
|
|
|
|
|
+ phone: `1380013800${timestamp % 10}`,
|
|
|
|
|
+ idAddress: '湖北省武汉市测试街道9号',
|
|
|
|
|
+ province: '湖北省',
|
|
|
|
|
+ city: '武汉市'
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ console.log('\n========== 完整照片上传流程测试 ==========');
|
|
|
|
|
+
|
|
|
|
|
+ // 打开对话框并填写基本信息
|
|
|
|
|
+ await disabilityPersonPage.openCreateDialog();
|
|
|
|
|
+ await disabilityPersonPage.fillBasicForm(testData);
|
|
|
|
|
+
|
|
|
|
|
+ // 上传多种格式的照片
|
|
|
|
|
+ await uploadPhotoToSlot(page, 0, '/mnt/code/188-179-template-6/web/tests/fixtures/images/id-card-front.jpg');
|
|
|
|
|
+ console.debug(' ✓ 上传 JPG 格式:身份证正面');
|
|
|
|
|
+
|
|
|
|
|
+ await uploadPhotoToSlot(page, 1, '/mnt/code/188-179-template-6/web/tests/fixtures/images/id-card-back.jpg');
|
|
|
|
|
+ console.debug(' ✓ 上传 JPG 格式:身份证反面');
|
|
|
|
|
+
|
|
|
|
|
+ await uploadPhotoToSlot(page, 2, '/mnt/code/188-179-template-6/web/tests/fixtures/images/disability-card.jpg');
|
|
|
|
|
+ console.debug(' ✓ 上传 JPG 格式:残疾证');
|
|
|
|
|
+
|
|
|
|
|
+ await uploadPhotoToSlot(page, 3, '/mnt/code/188-179-template-6/web/tests/fixtures/images/photo.png');
|
|
|
|
|
+ console.debug(' ✓ 上传 PNG 格式:个人照片');
|
|
|
|
|
+
|
|
|
|
|
+ // 验证至少有4个照片卡片
|
|
|
|
|
+ const photoCards = page.locator('[data-testid^="remove-photo-button-"]');
|
|
|
|
|
+ const cardCount = await photoCards.count();
|
|
|
|
|
+ console.debug(` 照片卡片数量: ${cardCount}`);
|
|
|
|
|
+ expect(cardCount).toBeGreaterThanOrEqual(4);
|
|
|
|
|
+
|
|
|
|
|
+ // 提交表单
|
|
|
|
|
+ const result = await disabilityPersonPage.submitForm();
|
|
|
|
|
+
|
|
|
|
|
+ console.log('\n========== 测试结果 ==========');
|
|
|
|
|
+ console.log('有错误提示:', result.hasError);
|
|
|
|
|
+ console.log('有成功提示:', result.hasSuccess);
|
|
|
|
|
+
|
|
|
|
|
+ if (result.hasError) {
|
|
|
|
|
+ console.log('错误消息:', result.errorMessage);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (result.hasSuccess) {
|
|
|
|
|
+ console.log('成功消息:', result.successMessage);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 验证对话框关闭(成功或失败都关闭)
|
|
|
|
|
+ await disabilityPersonPage.waitForDialogClosed();
|
|
|
|
|
+
|
|
|
|
|
+ console.log('✅ 完整照片上传流程测试完成');
|
|
|
|
|
+ });
|
|
|
|
|
+});
|