413ebaeaee
- Wrap Navigation tests in RoleSwitcherProvider to fix 6 test failures - Use remote CI server URL (euchre-ci.notsosm.art) for acceptance tests in CI - Fix DATABASE_URL reference from vars to secrets in PR workflow
76 lines
2.2 KiB
TypeScript
76 lines
2.2 KiB
TypeScript
import { defineConfig, devices } from '@playwright/test';
|
|
|
|
export default defineConfig({
|
|
testDir: './e2e',
|
|
timeout: 30000,
|
|
expect: {
|
|
timeout: 5000
|
|
},
|
|
// Run tests sequentially to avoid database conflicts
|
|
fullyParallel: false,
|
|
// 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,
|
|
// Always run with 1 worker to avoid database conflicts
|
|
workers: 1,
|
|
// Reporter to use
|
|
reporter: 'html',
|
|
// Global setup and teardown
|
|
globalSetup: require.resolve('./e2e/global.setup'),
|
|
globalTeardown: require.resolve('./e2e/global.teardown'),
|
|
// Use base URL for relative navigation
|
|
use: {
|
|
baseURL: process.env.CI ? 'https://euchre-ci.notsosm.art' : 'http://localhost:3000',
|
|
// Collect trace when retrying the failed test.
|
|
trace: 'on-first-retry',
|
|
// Capture screenshot only on failure
|
|
screenshot: 'only-on-failure',
|
|
},
|
|
// Configure projects
|
|
projects: [
|
|
// Setup project - runs before all other projects
|
|
{
|
|
name: 'setup',
|
|
testMatch: /global\.setup\.ts/,
|
|
},
|
|
// Main Chromium project with regular user authentication
|
|
{
|
|
name: 'chromium',
|
|
use: {
|
|
...devices['Desktop Chrome'],
|
|
// Use prepared auth state for regular user tests
|
|
storageState: 'playwright/.auth/user.json',
|
|
},
|
|
dependencies: ['setup'],
|
|
},
|
|
// Admin user project
|
|
{
|
|
name: 'chromium-admin',
|
|
use: {
|
|
...devices['Desktop Chrome'],
|
|
// Use prepared auth state for admin tests
|
|
storageState: 'playwright/.auth/admin.json',
|
|
},
|
|
dependencies: ['setup'],
|
|
},
|
|
// Unauthenticated project - for tests that don't require login
|
|
{
|
|
name: 'chromium-unauth',
|
|
use: {
|
|
...devices['Desktop Chrome'],
|
|
// No authentication state
|
|
storageState: undefined,
|
|
},
|
|
dependencies: ['setup'],
|
|
},
|
|
],
|
|
// Run your local dev server before starting the tests
|
|
webServer: process.env.CI ? undefined : {
|
|
command: 'bun run dev',
|
|
url: 'http://localhost:3000',
|
|
timeout: 120000,
|
|
reuseExistingServer: !process.env.CI,
|
|
},
|
|
});
|