Files
EventHubFrontAdmin/playwright.config.ts
T

62 lines
1.9 KiB
TypeScript

import { defineConfig, devices } from '@playwright/test';
const port = Number(process.env.E2E_PORT || 4173);
const baseURL = process.env.E2E_BASE_URL || `http://127.0.0.1:${port}`;
const iftBaseURL = process.env.E2E_IFT_BASE_URL || 'https://admin-ui.ift.eventhub.local';
const stageBaseURL = process.env.E2E_STAGE_BASE_URL || 'https://admin-ui.stage.eventhub.local';
const liveTarget = process.env.E2E_TARGET;
const liveChrome = {
...devices['Desktop Chrome'],
ignoreHTTPSErrors: true,
};
/** Mock-suite (CI / локально): preview + page.route mocks. */
const mockProject = {
name: 'mock',
use: { ...devices['Desktop Chrome'] },
testIgnore: [/stand\//, /ift\//],
};
/** IFT/stage после деплоя: живой SPA + admin-api, без mocks. */
const standTestMatch = /stand\//;
export default defineConfig({
testDir: './e2e/tests',
fullyParallel: false,
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 1 : 0,
workers: 1,
reporter: 'list',
timeout: 90_000,
expect: { timeout: 10_000 },
use: {
baseURL,
trace: 'on-first-retry',
locale: 'ru-RU',
},
projects: [
mockProject,
{
name: 'ift-ui',
use: { ...liveChrome, baseURL: iftBaseURL },
testMatch: standTestMatch,
},
{
name: 'stage-ui',
use: { ...liveChrome, baseURL: stageBaseURL },
testMatch: standTestMatch,
},
],
webServer: liveTarget
? undefined
: {
// strictPort: не молчать, если порт занят зомби act-preview
command: `npm run preview -- --host 127.0.0.1 --port ${port} --strictPort`,
url: baseURL,
reuseExistingServer: !process.env.CI,
timeout: 120_000,
stdout: 'pipe',
stderr: 'pipe',
},
});