Files
radicle-explorer/.github/workflows/check-e2e.yml
T
Rūdolfs Ošiņš 2c022a40df Add visual snapshot tests
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>
2022-12-16 15:06:05 +01:00

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/**/*