b207bfa7af
test: 添加单元测试和端到端测试 refactor: 重构登录页面和上传模块 ci: 更新测试覆盖率阈值至42% build: 添加测试相关依赖 docs: 更新测试文档 style: 修复代码格式问题
111 lines
2.7 KiB
TypeScript
111 lines
2.7 KiB
TypeScript
import { defineConfig, devices } from '@playwright/test';
|
|
import { getEnvironment } from './src/config/environments';
|
|
import { getMobileDevices } from './src/utils/devices';
|
|
|
|
const env = getEnvironment();
|
|
|
|
export default defineConfig({
|
|
testDir: './src/tests',
|
|
fullyParallel: true,
|
|
forbidOnly: !!process.env.CI,
|
|
retries: env.retries,
|
|
workers: process.env.CI ? 4 : '50%',
|
|
globalSetup: require.resolve('./global-setup'),
|
|
reporter: [
|
|
['html', { open: 'never' }],
|
|
['json', { outputFile: 'test-results/results.json' }],
|
|
['junit', { outputFile: 'test-results/junit.xml' }],
|
|
['line'],
|
|
['list'],
|
|
['allure-playwright', {
|
|
outputFolder: 'allure-results',
|
|
detail: true,
|
|
suiteTitle: false,
|
|
}],
|
|
],
|
|
timeout: 90000,
|
|
expect: {
|
|
timeout: 45000,
|
|
},
|
|
use: {
|
|
baseURL: env.baseURL,
|
|
trace: env.trace,
|
|
screenshot: env.screenshot,
|
|
video: env.video,
|
|
headless: true,
|
|
viewport: { width: 1280, height: 720 },
|
|
actionTimeout: 45000,
|
|
navigationTimeout: 90000,
|
|
launchOptions: {
|
|
slowMo: env.slowMo,
|
|
},
|
|
storageState: '.auth/admin.json',
|
|
},
|
|
projects: [
|
|
{
|
|
name: 'chromium',
|
|
use: { ...devices['Desktop Chrome'] },
|
|
},
|
|
{
|
|
name: 'chromium-coverage',
|
|
use: {
|
|
...devices['Desktop Chrome'],
|
|
browserName: 'chromium',
|
|
},
|
|
testMatch: /.*\.spec\.ts/,
|
|
globalSetup: undefined,
|
|
},
|
|
{
|
|
name: 'firefox',
|
|
use: { ...devices['Desktop Firefox'] },
|
|
},
|
|
{
|
|
name: 'webkit',
|
|
use: { ...devices['Desktop Safari'] },
|
|
},
|
|
{
|
|
name: 'Mobile Chrome',
|
|
use: { ...devices['Pixel 5'] },
|
|
},
|
|
{
|
|
name: 'Mobile Safari',
|
|
use: { ...devices['iPhone 12'] },
|
|
},
|
|
...getMobileDevices().map(device => ({
|
|
name: `mobile-${device.name.replace(/\s+/g, '-').toLowerCase()}`,
|
|
use: {
|
|
...devices['Mobile Chrome'],
|
|
viewport: device.viewport,
|
|
userAgent: device.userAgent,
|
|
deviceScaleFactor: device.deviceScaleFactor,
|
|
isMobile: true,
|
|
},
|
|
})),
|
|
{
|
|
name: 'performance-mobile',
|
|
use: {
|
|
...devices['Mobile Chrome'],
|
|
viewport: { width: 375, height: 667 },
|
|
isMobile: true,
|
|
},
|
|
testMatch: /.*\.perf\.spec\.ts/,
|
|
},
|
|
{
|
|
name: 'pwa-mobile',
|
|
use: {
|
|
...devices['Mobile Chrome'],
|
|
viewport: { width: 375, height: 667 },
|
|
isMobile: true,
|
|
serviceWorkers: 'allow',
|
|
},
|
|
testMatch: /.*\.pwa\.spec\.ts/,
|
|
},
|
|
],
|
|
webServer: env.name === 'development' ? {
|
|
command: 'cd .. && npm run dev',
|
|
url: 'http://localhost:3000',
|
|
timeout: 120000,
|
|
reuseExistingServer: !process.env.CI,
|
|
} : undefined,
|
|
});
|