Files
app/frontend/playwright.config.ts
T
stroblme fbd886f7a7 make test-frontend runs against a stack of its own
The suite creates and deletes flows, dashboards and users, and ran against
whatever stack was up, which is the dev instance's data. make test-stack starts
the compose project fluksio-test (compose.test.yml over the local stack's
files) with its own containers, volumes and image tags, served by the local
Traefik on app.test.localhost and api.test.localhost, and leaves it running.
The hostname is fixed, so it no longer comes off the running dev stack, and a
LAN stack makes no difference. The suite's default origin is the test stack.
2026-10-15 16:15:32 +02:00

109 lines
3.3 KiB
TypeScript

import { defineConfig, devices } from '@playwright/test';
import 'dotenv/config'
import { appUrl } from './tests/config.ts'
/**
* Read environment variables from file.
* https://github.com/motdotla/dotenv
*/
/**
* See https://playwright.dev/docs/test-configuration.
*/
export default defineConfig({
testDir: './tests',
/* 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. */
workers: process.env.CI ? 1 : undefined,
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
reporter: process.env.CI ? 'blob' : 'html',
/* Nothing runs until the target is known not to be a live instance. */
globalSetup: './tests/guard.ts',
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
use: {
/* Base URL to use in actions like `await page.goto('/')`. Defaults to the
suite's own stack (`make test-stack`), never the dev instance's data.
Point PLAYWRIGHT_BASE_URL elsewhere to test another running server; the
API origin follows it (see tests/config.ts). */
baseURL: appUrl,
/* Chromium pins *.localhost to loopback whatever /etc/hosts says, so a
containerised run maps the names here as well as through --add-host. */
launchOptions: process.env.HOST_RESOLVER_RULES
? { args: [`--host-resolver-rules=${process.env.HOST_RESOLVER_RULES}`] }
: {},
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
trace: 'on-first-retry',
},
/* Configure projects for major browsers */
projects: [
{ name: 'setup', testMatch: /.*\.setup\.ts/ },
{
name: 'chromium',
use: {
...devices['Desktop Chrome'],
storageState: 'playwright/.auth/user.json',
},
/* The mobile suite is the same app at a phone's width; running it here
too would only re-assert the desktop layout. */
testIgnore: /mobile\.spec\.ts/,
dependencies: ['setup'],
},
/* Every screen at 393px, checking the one thing that is easy to break and
hard to notice: a page that scrolls sideways. See the Responsive section
of the root DESIGN-GUIDELINES.md. */
{
name: 'mobile',
use: {
...devices['Pixel 5'],
storageState: 'playwright/.auth/user.json',
},
testMatch: /mobile\.spec\.ts/,
dependencies: ['setup'],
},
// {
// name: 'firefox',
// use: {
// ...devices['Desktop Firefox'],
// storageState: 'playwright/.auth/user.json',
// },
// dependencies: ['setup'],
// },
// {
// name: 'webkit',
// use: {
// ...devices['Desktop Safari'],
// storageState: 'playwright/.auth/user.json',
// },
// dependencies: ['setup'],
// },
// {
// name: 'Mobile Safari',
// use: { ...devices['iPhone 12'] },
// },
/* Test against branded browsers. */
// {
// name: 'Microsoft Edge',
// use: { ...devices['Desktop Edge'], channel: 'msedge' },
// },
// {
// name: 'Google Chrome',
// use: { ...devices['Desktop Chrome'], channel: 'chrome' },
// },
],
});