first commit
This commit is contained in:
112
tests/e2e/playwright.config.ts
Normal file
112
tests/e2e/playwright.config.ts
Normal file
@@ -0,0 +1,112 @@
|
||||
import { defineConfig, devices } from '@playwright/test'
|
||||
|
||||
/**
|
||||
* Playwright configuration for Bifrost E2E tests
|
||||
* @see https://playwright.dev/docs/test-configuration
|
||||
*/
|
||||
export default defineConfig({
|
||||
// Look for test files in the features directory
|
||||
testDir: './features',
|
||||
|
||||
// Run tests in files in parallel
|
||||
fullyParallel: true,
|
||||
|
||||
// Fail the build on CI if you accidentally left test.only in the source code
|
||||
forbidOnly: !!process.env.CI,
|
||||
|
||||
// Retry on CI only
|
||||
retries: process.env.CI ? 2 : 0,
|
||||
|
||||
// Opt out of parallel tests on CI for stability
|
||||
workers: process.env.CI ? 1 : undefined,
|
||||
|
||||
// Reporter to use
|
||||
reporter: [
|
||||
[
|
||||
'html',
|
||||
{
|
||||
// Report in tests/e2e/playwright-report so `npx playwright show-report`
|
||||
// (run from tests/e2e) finds it. CI uploads tests/e2e/playwright-report/.
|
||||
outputFolder: 'playwright-report',
|
||||
open: 'never',
|
||||
},
|
||||
],
|
||||
['list'],
|
||||
],
|
||||
|
||||
// Shared settings for all the projects below
|
||||
use: {
|
||||
// Base URL for the application
|
||||
baseURL: process.env.BASE_URL || 'http://localhost:3000',
|
||||
|
||||
// Collect trace when retrying the failed test
|
||||
trace: 'on-first-retry',
|
||||
|
||||
// Take screenshot only on failure
|
||||
screenshot: 'only-on-failure',
|
||||
|
||||
// Record video only on failure
|
||||
video: 'retain-on-failure',
|
||||
|
||||
// Timeout for each action
|
||||
actionTimeout: 10000,
|
||||
|
||||
// Timeout for navigation
|
||||
navigationTimeout: 30000,
|
||||
},
|
||||
|
||||
// Global timeout for each test
|
||||
timeout: 60000,
|
||||
|
||||
// Expect timeout
|
||||
expect: {
|
||||
timeout: 10000,
|
||||
},
|
||||
|
||||
// Configure projects: run all tests first, then config last (via dependency order)
|
||||
projects: [
|
||||
{
|
||||
name: 'chromium',
|
||||
use: { ...devices['Desktop Chrome'] },
|
||||
testIgnore: ['**/config/**', '**/plugins/**', '**/virtual-keys/**', '**/mcp-registry/**', '**/model-limits/**', '**/providers/**'],
|
||||
},
|
||||
{
|
||||
name: 'chromium-serial',
|
||||
use: { ...devices['Desktop Chrome'] },
|
||||
testMatch: ['**/plugins/**/*.spec.ts', '**/virtual-keys/**/*.spec.ts', '**/mcp-registry/**/*.spec.ts', '**/model-limits/**/*.spec.ts', '**/providers/**/*.spec.ts'],
|
||||
fullyParallel: false,
|
||||
},
|
||||
{
|
||||
name: 'chromium-config',
|
||||
use: { ...devices['Desktop Chrome'] },
|
||||
testMatch: ['**/config/**/*.spec.ts'],
|
||||
dependencies: ['chromium', 'chromium-serial'],
|
||||
},
|
||||
// Uncomment for additional browser testing
|
||||
// {
|
||||
// name: 'firefox',
|
||||
// use: { ...devices['Desktop Firefox'] },
|
||||
// },
|
||||
// {
|
||||
// name: 'webkit',
|
||||
// use: { ...devices['Desktop Safari'] },
|
||||
// },
|
||||
],
|
||||
|
||||
// Run local dev server before starting tests
|
||||
// Set SKIP_WEB_SERVER=1 to skip auto-starting the dev server
|
||||
webServer: process.env.SKIP_WEB_SERVER ? undefined : {
|
||||
command: 'npm run dev',
|
||||
url: 'http://localhost:3000',
|
||||
reuseExistingServer: true,
|
||||
cwd: '../../ui',
|
||||
timeout: 120000,
|
||||
env: {
|
||||
...process.env,
|
||||
BIFROST_DISABLE_PROFILER: '1',
|
||||
},
|
||||
},
|
||||
|
||||
// Global setup: Build test plugin and start MCP servers; returns teardown to stop MCP servers
|
||||
globalSetup: require.resolve('./global-setup'),
|
||||
})
|
||||
Reference in New Issue
Block a user