Files
TrueGrowth/apps/web-e2e/playwright.config.ts

153 lines
3.9 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { defineConfig, devices } from '@playwright/test';
import { nxE2EPreset } from '@nx/playwright/preset';
import { workspaceRoot } from '@nx/devkit';
// For CI, you may want to set BASE_URL to the deployed application.
const baseURL = process.env['BASE_URL'] || 'http://localhost:7200';
const webServerCommand =
process.env['PLAYWRIGHT_WEB_SERVER_COMMAND'] || 'npx nx serve web';
const webServerUrl = process.env['PLAYWRIGHT_WEB_SERVER_URL'] || baseURL;
/**
* Read environment variables from file.
* https://github.com/motdotla/dotenv
*/
// require('dotenv').config();
/**
* See https://playwright.dev/docs/test-configuration.
*/
export default defineConfig({
...nxE2EPreset(__filename, { testDir: './src' }),
/* 测试超时设置 */
timeout: 60000,
expect: {
timeout: 10000,
toHaveScreenshot: {
maxDiffPixelRatio: 0.05,
},
},
/* 测试报告设置 */
reporter: [
['html', { outputFolder: 'playwright-report' }],
['json', { outputFile: 'test-results/results.json' }],
['list'],
],
/* 截图和视频设置 */
outputDir: 'test-results',
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
use: {
baseURL,
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
trace: 'on-first-retry',
/* 失败时截图 */
screenshot: 'only-on-failure',
/* 视频录制 */
video: 'retain-on-failure',
},
/* Run your local dev server before starting the tests */
webServer: {
command: webServerCommand,
url: webServerUrl,
reuseExistingServer: !process.env.CI,
cwd: workspaceRoot,
timeout: 120000,
},
projects: [
// 冒烟测试 - 仅 Chromium快速运行
{
name: 'smoke',
testMatch: '**/smoke/**/*.spec.ts',
use: { ...devices['Desktop Chrome'] },
},
// 视觉回归测试 - 仅 Chromium
{
name: 'visual',
testMatch: '**/visual/**/*.spec.ts',
use: { ...devices['Desktop Chrome'] },
},
// 功能测试 - 多浏览器
{
name: 'chromium',
testMatch: '**/features/**/*.spec.ts',
use: { ...devices['Desktop Chrome'] },
},
{
name: 'firefox',
testMatch: '**/features/**/*.spec.ts',
use: { ...devices['Desktop Firefox'] },
},
{
name: 'webkit',
testMatch: '**/features/**/*.spec.ts',
use: { ...devices['Desktop Safari'] },
},
// 手册截图生成测试 - 仅 Chromium排除 GIF 录制测试
{
name: 'manual',
testMatch: '**/manual-gen/**/*.spec.ts',
testIgnore: '**/manual-gen/gif-*.spec.ts', // 排除 GIF 录制测试
use: { ...devices['Desktop Chrome'] },
},
// 手册 GIF 视频录制 - 需要视频录制功能
{
name: 'manual-video',
testMatch: '**/manual-gen/gif-*.spec.ts', // 只匹配 GIF 录制测试
use: {
...devices['Desktop Chrome'],
video: 'on',
viewport: { width: 1280, height: 720 },
},
},
// 响应式测试 - 多视口尺寸
{
name: 'responsive',
testMatch: '**/visual/responsive-visual.spec.ts',
use: { ...devices['Desktop Chrome'] },
},
// 移动端浏览器测试
{
name: 'mobile-chrome',
testMatch: '**/visual/responsive-visual.spec.ts',
use: { ...devices['Pixel 5'] },
},
{
name: 'mobile-safari',
testMatch: '**/visual/responsive-visual.spec.ts',
use: { ...devices['iPhone 12'] },
},
// 平板测试
{
name: 'tablet',
testMatch: '**/visual/responsive-visual.spec.ts',
use: { ...devices['iPad Pro 11'] },
},
// Uncomment for branded browsers
/* {
name: 'Microsoft Edge',
use: { ...devices['Desktop Edge'], channel: 'msedge' },
},
{
name: 'Google Chrome',
use: { ...devices['Desktop Chrome'], channel: 'chrome' },
}, */
],
});