mirror of
https://seed.radicle.dev/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5.git
synced 2026-11-15 19:30:38 +08:00
We use the cache Github action to store snapshots when pushing to master and then load them in pull requests and run the visual tests against it. This way we don't have to commit the images to the repository and always get diffs to the latest master. Signed-off-by: Rūdolfs Ošiņš <rudolfs@osins.org>
68 lines
1.9 KiB
YAML
68 lines
1.9 KiB
YAML
name: check-e2e
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
|
|
jobs:
|
|
check-e2e:
|
|
continue-on-error: true
|
|
strategy:
|
|
matrix:
|
|
browser: [chromium, firefox, visual]
|
|
timeout-minutes: 30
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: "18.12.1"
|
|
|
|
- name: Install dependencies
|
|
run: npm ci
|
|
|
|
- name: Cache Playwright browsers
|
|
uses: actions/cache@v3
|
|
id: playwright-dep-cache
|
|
with:
|
|
path: ~/.cache/ms-playwright
|
|
key: ${{ runner.os }}-playwright-${{ hashFiles('package-lock.json') }}
|
|
|
|
- name: Cache snapshots (generate on master, load on pull_request)
|
|
uses: actions/cache@v3
|
|
id: playwright-snapshot-cache
|
|
with:
|
|
path: tests/visual/snapshots/**/*
|
|
key: ${{ runner.os }}-snapshots
|
|
|
|
- name: Install Playwright with deps unless cached
|
|
if: steps.playwright-dep-cache.outputs.cache-hit != 'true'
|
|
run: npx playwright install --with-deps
|
|
|
|
- name: Install only Playwright OS dependencies if cache hit
|
|
if: steps.playwright-dep-cache.outputs.cache-hit == 'true'
|
|
run: npx playwright install-deps
|
|
|
|
- name: Start http-api test server
|
|
run: ./scripts/run-http-api-with-fixtures --non-interactive --detach
|
|
|
|
- name: Run Playwright tests
|
|
run: |
|
|
if [ ${{ matrix.browser }} = "visual" ] && [ ${{ github.ref }} = "refs/heads/master" ]; then
|
|
npm run test:e2e -- --project ${{ matrix.browser }} --update-snapshots;
|
|
else
|
|
npm run test:e2e -- --project ${{ matrix.browser }};
|
|
fi
|
|
|
|
- uses: actions/upload-artifact@v3
|
|
if: always()
|
|
with:
|
|
name: test-artifacts-${{ runner.os }}
|
|
retention-days: 30
|
|
path: |
|
|
tests/artifacts/**/*
|