const { test, expect } = require('@playwright/test'); const BASE_URL = 'https://ajy.danclub.cn'; const TEST_ADMIN = { username: 'admin', password: 'admin123' }; test.describe('数据导入导出测试', () => { test.beforeEach(async ({ page }) => { await page.goto(BASE_URL); await page.waitForLoadState('networkidle'); await page.getByPlaceholder('请输入用户名').fill(TEST_ADMIN.username); await page.getByPlaceholder('请输入密码').fill(TEST_ADMIN.password); await page.getByRole('button', { name: '登 录' }).click(); await page.waitForURL(`${BASE_URL}/#/user/app`, { timeout: 10000 }); }); test('IE-001: 用户列表导出Excel', async ({ page }) => { await page.goto(`${BASE_URL}/#/user/app`); await page.waitForLoadState('networkidle'); await page.waitForTimeout(1000); }); test('IE-002: 设备列表导出Excel', async ({ page }) => { await page.goto(`${BASE_URL}/#/device`); await page.waitForLoadState('networkidle'); await page.waitForTimeout(1000); }); test('IE-003: 导入用户-文件格式错误', async ({ page }) => { await page.goto(`${BASE_URL}/#/user/app`); await page.waitForLoadState('networkidle'); const importBtn = page.getByRole('button', { name: '导入' }); if (await importBtn.isVisible()) { await importBtn.click(); await page.waitForTimeout(500); } }); test('IE-004: 导入设备-文件格式错误', async ({ page }) => { await page.goto(`${BASE_URL}/#/device`); await page.waitForLoadState('networkidle'); const importBtn = page.getByRole('button', { name: '导入' }); if (await importBtn.isVisible()) { await importBtn.click(); await page.waitForTimeout(500); } }); test('IE-005: 导入用户-必填字段缺失', async ({ page }) => { await page.goto(`${BASE_URL}/#/user/app`); await page.waitForLoadState('networkidle'); }); test('IE-006: 导入用户-手机号格式错误', async ({ page }) => { await page.goto(`${BASE_URL}/#/user/app`); await page.waitForLoadState('networkidle'); }); test('IE-007: 导入用户-重复手机号', async ({ page }) => { await page.goto(`${BASE_URL}/#/user/app`); await page.waitForLoadState('networkidle'); }); test('IE-008: 导入设备-设备编号重复', async ({ page }) => { await page.goto(`${BASE_URL}/#/device`); await page.waitForLoadState('networkidle'); }); });