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
103 lines
2.7 KiB
TypeScript
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,
|
|
},
|
|
},
|
|
],
|
|
})
|