import { test, expect, Page } from '@playwright/test'; import { LoginPage } from '../pages/login-page'; import { DashboardPage } from '../pages/dashboard-page'; import { UserManagementPage } from '../pages/user-management-page'; import { testConfig } from '../core/test-config'; import { PerformanceMetrics, PerformanceTestHelper } from '../helpers/performance-helper'; test.describe.configure({ mode: 'serial', timeout: 120000 }); test.describe('性能测试 - API响应性能', () => { const metrics = new PerformanceMetrics(); const helper = new PerformanceTestHelper(); test.afterAll(() => { metrics.printReport(); }); test.beforeEach(async ({ page }) => { const loginPage = new LoginPage(page); await page.goto(testConfig.getBaseURL()); await loginPage.login('admin', 'admin123'); }); test('PT-006: 用户登录API性能', async ({ page }) => { await helper.clearCacheAndCookies(page); const responseTime = await helper.measureApiCall(page, async () => { await page.goto(testConfig.getBaseURL()); const loginPage = new LoginPage(page); await loginPage.login('admin', 'admin123'); }); metrics.recordMetric('用户登录API响应时间', responseTime); expect(responseTime).toBeLessThan(2000); }); test('PT-007: 获取用户列表API性能', async ({ page }) => { const responseTime = await helper.measureApiCall(page, async () => { await page.goto(`${testConfig.getBaseURL()}/users`); await page.waitForSelector('[data-testid="user-table"]'); }); metrics.recordMetric('获取用户列表API响应时间', responseTime); expect(responseTime).toBeLessThan(1500); }); test('PT-008: 创建用户API性能', async ({ page }) => { const userManagementPage = new UserManagementPage(page); const testUsername = `perfuser_${Date.now()}`; const responseTime = await helper.measureApiCall(page, async () => { await page.goto(`${testConfig.getBaseURL()}/users`); await userManagementPage.clickAddUser(); await userManagementPage.fillUserForm({ username: testUsername, email: `perfuser_${Date.now()}@example.com`, password: 'Test@123456', confirmPassword: 'Test@123456', role: 'USER', status: 'ACTIVE' }); await userManagementPage.submitUserForm(); await page.waitForSelector('.ant-message-success'); }); metrics.recordMetric('创建用户API响应时间', responseTime); expect(responseTime).toBeLessThan(2000); }); test('PT-009: 黄历查询API性能', async ({ page }) => { const responseTime = await helper.measureApiCall(page, async () => { await page.goto(`${testConfig.getBaseURL()}/almanac`); await page.fill('[data-testid="date-picker"]', '2024-01-01'); await page.click('[data-testid="query-button"]'); await page.waitForSelector('[data-testid="almanac-result"]'); }); metrics.recordMetric('黄历查询API响应时间', responseTime); expect(responseTime).toBeLessThan(1500); }); test('PT-010: 运势查询API性能', async ({ page }) => { const responseTime = await helper.measureApiCall(page, async () => { await page.goto(`${testConfig.getBaseURL()}/fortune`); await page.fill('[data-testid="fortune-date"]', '2024-01-15'); await page.click('[data-testid="query-fortune-button"]'); await page.waitForSelector('[data-testid="daily-fortune"]'); }); metrics.recordMetric('运势查询API响应时间', responseTime); expect(responseTime).toBeLessThan(2000); }); test('PT-011: 紫微斗数生成API性能', async ({ page }) => { const responseTime = await helper.measureApiCall(page, async () => { await page.goto(`${testConfig.getBaseURL()}/ziwei`); await page.fill('[data-testid="birth-date"]', '1990-05-15'); await page.fill('[data-testid="birth-time"]', '08:30'); await page.click('[data-testid="gender-male"]'); await page.click('[data-testid="generate-chart-button"]'); await page.waitForSelector('[data-testid="ziwei-chart"]'); }); metrics.recordMetric('紫微斗数生成API响应时间', responseTime); expect(responseTime).toBeLessThan(3000); }); });