Files
termi-blog/playwright-smoke/playwright.config.ts
limitcool 27d0827f3e
All checks were successful
docker-images / resolve-build-targets (push) Successful in 4s
ui-regression / playwright-regression (push) Successful in 5m55s
docker-images / build-and-push (admin) (push) Successful in 54s
docker-images / build-and-push (backend) (push) Successful in 4s
docker-images / build-and-push (frontend) (push) Successful in 1m8s
docker-images / submit-indexnow (push) Successful in 15s
feat: 增强维护模式和审计页面功能,优化构建流程
2026-04-03 01:33:24 +08:00

103 lines
2.7 KiB
TypeScript

import path from 'node:path'
import { fileURLToPath } from 'node:url'
import { defineConfig, devices } from '@playwright/test'
const mockBaseUrl = 'http://127.0.0.1:5159'
const frontendBaseUrl = 'http://127.0.0.1:4321'
const adminBaseUrl = 'http://127.0.0.1:4322'
const isCi = Boolean(process.env.CI)
const useBuiltApp = process.env.PLAYWRIGHT_USE_BUILT_APP === '1'
const __filename = fileURLToPath(import.meta.url)
const __dirname = path.dirname(__filename)
const repoRoot = path.resolve(__dirname, '..')
const frontendCommand = useBuiltApp
? 'node ./dist/server/entry.mjs'
: 'pnpm dev --host 127.0.0.1 --port 4321'
const adminCommand = useBuiltApp
? 'pnpm preview --host 127.0.0.1 --port 4322'
: 'pnpm dev --host 127.0.0.1 --port 4322'
export default defineConfig({
testDir: './tests',
fullyParallel: false,
workers: 1,
timeout: 60_000,
expect: {
timeout: 12_000,
},
reporter: [['list'], ['html', { open: 'never' }]],
use: {
trace: 'on-first-retry',
screenshot: 'only-on-failure',
video: 'retain-on-failure',
headless: true,
},
projects: [
{
name: 'frontend',
testMatch: /frontend\.spec\.ts/,
use: {
...devices['Desktop Chrome'],
channel: isCi ? undefined : 'msedge',
baseURL: frontendBaseUrl,
},
},
{
name: 'admin',
testMatch: /admin\.spec\.ts/,
use: {
...devices['Desktop Chrome'],
channel: isCi ? undefined : 'msedge',
baseURL: adminBaseUrl,
},
},
],
webServer: [
{
command: 'node ./mock-server.mjs',
cwd: __dirname,
url: `${mockBaseUrl}/__playwright/health`,
reuseExistingServer: !isCi,
stdout: 'pipe',
stderr: 'pipe',
env: {
...process.env,
PLAYWRIGHT_MOCK_PORT: '5159',
PLAYWRIGHT_FRONTEND_ORIGIN: frontendBaseUrl,
PLAYWRIGHT_ADMIN_ORIGIN: adminBaseUrl,
},
},
{
command: frontendCommand,
cwd: path.resolve(repoRoot, 'frontend'),
url: frontendBaseUrl,
reuseExistingServer: !isCi,
stdout: 'pipe',
stderr: 'pipe',
env: {
...process.env,
HOST: '127.0.0.1',
PORT: '4321',
...(useBuiltApp ? { NODE_ENV: 'production' } : {}),
PUBLIC_API_BASE_URL: `${mockBaseUrl}/api`,
INTERNAL_API_BASE_URL: `${mockBaseUrl}/api`,
PUBLIC_IMAGE_ALLOWED_HOSTS: '127.0.0.1:5159,127.0.0.1',
},
},
{
command: adminCommand,
cwd: path.resolve(repoRoot, 'admin'),
url: adminBaseUrl,
reuseExistingServer: !isCi,
stdout: 'pipe',
stderr: 'pipe',
env: {
...process.env,
VITE_API_BASE: mockBaseUrl,
VITE_FRONTEND_BASE_URL: frontendBaseUrl,
},
},
],
})