08ea5fbe98
添加用户管理视图、API和状态管理文件
110 lines
4.2 KiB
TypeScript
110 lines
4.2 KiB
TypeScript
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);
|
|
});
|
|
}); |