import { test, expect } from '@playwright/test'; /** * 基础页面测试 */ test.describe('基础页面测试', () => { test('页面加载测试', async ({ page }) => { await page.goto('/'); // 检查页面标题 await expect(page).toHaveTitle(/若依管理系统/); // 检查页面是否成功加载 await expect(page.locator('body')).toBeVisible(); }); test('登录页面测试', async ({ page }) => { await page.goto('/login'); // 检查登录表单元素是否存在 await expect(page.locator('input[type="text"], input[type="username"]')).toBeVisible(); await expect(page.locator('input[type="password"]')).toBeVisible(); await expect(page.locator('button[type="submit"]')).toBeVisible(); }); test('响应式布局测试', async ({ page }) => { await page.goto('/'); // 测试桌面视图 await page.setViewportSize({ width: 1920, height: 1080 }); await expect(page.locator('body')).toBeVisible(); // 测试平板视图 await page.setViewportSize({ width: 768, height: 1024 }); await expect(page.locator('body')).toBeVisible(); // 测试移动端视图 await page.setViewportSize({ width: 375, height: 667 }); await expect(page.locator('body')).toBeVisible(); }); }); /** * Cesium 地图测试 */ test.describe('Cesium 地图测试', () => { test('地图容器加载测试', async ({ page }) => { await page.goto('/'); // 等待 Cesium 容器加载 await page.waitForSelector('#cesiumContainer, .cesium-viewer, [class*="cesium"]', { timeout: 10000 }); // 检查地图容器是否可见 const cesiumContainer = page.locator('#cesiumContainer, .cesium-viewer, [class*="cesium"]').first(); await expect(cesiumContainer).toBeVisible(); }); test('地图交互测试', async ({ page }) => { await page.goto('/'); // 等待地图加载 await page.waitForSelector('#cesiumContainer, .cesium-viewer, [class*="cesium"]', { timeout: 10000 }); // 模拟鼠标交互 const cesiumContainer = page.locator('#cesiumContainer, .cesium-viewer, [class*="cesium"]').first(); await cesiumContainer.click({ position: { x: 100, y: 100 } }); // 检查是否有交互响应 await page.waitForTimeout(1000); }); }); /** * 性能测试 */ test.describe('性能测试', () => { test('页面加载性能', async ({ page }) => { const startTime = Date.now(); await page.goto('/'); await page.waitForLoadState('networkidle'); const loadTime = Date.now() - startTime; console.log(`页面加载时间: ${loadTime}ms`); // 页面应该在合理时间内加载完成 expect(loadTime).toBeLessThan(10000); }); test('资源加载测试', async ({ page }) => { const failedRequests: string[] = []; page.on('requestfailed', (request) => { failedRequests.push(request.url()); }); await page.goto('/'); await page.waitForLoadState('networkidle'); // 检查是否有失败的请求 if (failedRequests.length > 0) { console.warn('失败的请求:', failedRequests); } // 允许少量请求失败,但不能太多 expect(failedRequests.length).toBeLessThan(5); }); });