From b808bcc44a0b4cd1ea9a54cad9ae05aab36004ad Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Wed, 27 Nov 2024 14:14:39 +0000 Subject: [PATCH] added e2e github workflow --- .github/workflows/playwright-e2e.yml | 27 ++++++++++++++++ playwright-e2e.config.js | 47 ++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 .github/workflows/playwright-e2e.yml create mode 100644 playwright-e2e.config.js diff --git a/.github/workflows/playwright-e2e.yml b/.github/workflows/playwright-e2e.yml new file mode 100644 index 000000000..c9385a828 --- /dev/null +++ b/.github/workflows/playwright-e2e.yml @@ -0,0 +1,27 @@ +name: Playwright Tests +on: + push: + branches: [ main, master, beta-master ] + pull_request: + branches: [ main, master, beta-master ] +jobs: + test: + timeout-minutes: 60 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: lts/* + - name: Install dependencies + run: npm ci + - name: Install Playwright Browsers + run: npx playwright install --with-deps + - name: Run Playwright Component and unit tests + run: npx playwright test -c playwright-e2e.config.js + - uses: actions/upload-artifact@v4 + if: always() + with: + name: playwright-report + path: playwright-report/ + retention-days: 30 diff --git a/playwright-e2e.config.js b/playwright-e2e.config.js new file mode 100644 index 000000000..c759c35f7 --- /dev/null +++ b/playwright-e2e.config.js @@ -0,0 +1,47 @@ +// @ts-check +const { defineConfig, devices } = require('@playwright/experimental-ct-react'); + +/** + * @see https://playwright.dev/docs/test-configuration + */ +module.exports = defineConfig({ + testDir: './tests/e2e', + /* The base directory, relative to the config file, for snapshot files created with toMatchSnapshot and toHaveScreenshot. */ + snapshotDir: './__snapshots__', + /* Maximum time one test can run for. */ + timeout: 10 * 1000, + /* 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: 'html', + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on-first-retry', + + /* Port to use for Playwright component endpoint. */ + ctPort: 3100, + }, + + /* Configure projects for major browsers */ + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + // { + // name: 'firefox', + // use: { ...devices['Desktop Firefox'] }, + // }, + // { + // name: 'webkit', + // use: { ...devices['Desktop Safari'] }, + // }, + ], +});