Skip to content

ci: shard over browser, cache. (#44) #35

ci: shard over browser, cache. (#44)

ci: shard over browser, cache. (#44) #35

Workflow file for this run

name: Playwright
on:
push:
branches:
- main
paths:
- 'src/**'
- 'playwright/**'
- 'package-lock.json'
- 'playwright.config.ts'
- '.github/workflows/playwright.yml'
workflow_dispatch:
jobs:
e2e:
name: E2E (Playwright, ${{ matrix.browser }})
runs-on: ubuntu-latest
timeout-minutes: 35
strategy:
fail-fast: false
matrix:
browser:
- chromium
- webkit
steps:
- name: Checkout
uses: actions/checkout@v6.0.1
- name: Setup Node
uses: actions/setup-node@v6.2.0
with:
node-version: '24.14.0'
cache: npm
- name: Install Dependencies
run: npm ci
- name: Check Types
run: npm run check-types
- name: Cache Playwright Browsers
uses: actions/cache@v5
with:
path: ~/.cache/ms-playwright
key: ${{ runner.os }}-playwright-${{ matrix.browser }}-${{ hashFiles('package-lock.json') }}
restore-keys: |
${{ runner.os }}-playwright-${{ matrix.browser }}-
- name: Install Browsers
run: npx playwright install --with-deps ${{ matrix.browser }}
- name: Run Playwright Tests
env:
CI: 'true'
run: npm run test:e2e -- --project=${{ matrix.browser }}
- name: Upload Playwright report
uses: actions/upload-artifact@v6.0.0
if: ${{ failure() }}
with:
name: playwright-report-${{ matrix.browser }}
path: playwright-report
if-no-files-found: ignore
- name: Upload Playwright test results
uses: actions/upload-artifact@v6.0.0
if: ${{ failure() }}
with:
name: test-results-${{ matrix.browser }}
path: test-results
if-no-files-found: ignore