Files
radicle-explorer/.github/workflows/check-visual.yml
T
Rūdolfs Ošiņš a1b0723908 Bump nodejs 22.12.0 -> 24.15.0
This also drops .tool-versions to keep a single source of truth for the
node version in .nvmrc. We also point the github actions to .nvmrc now.
I'm the only dev who's using asdf to manage my tooling and I decided to
just configure it to fall back to .nvmrc via `legacy_version_file =
yes`.
2026-04-22 11:20:25 +02:00

96 lines
2.8 KiB
YAML

name: check-visual
on:
push:
workflow_dispatch:
jobs:
generate-visual-diffs:
concurrency:
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: true
timeout-minutes: 30
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Evict playwright snapshot cache when pushing to master
run: |
if [ ${{ github.ref }} = "refs/heads/master" ]; then
echo "Deleting ${{ runner.os }}-snapshots cache"
gh extension install actions/gh-actions-cache
gh actions-cache delete ${{ runner.os }}-snapshots --confirm || true
echo "Done"
fi
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: Install dependencies
run: npm ci
- name: Cache Playwright browsers
uses: actions/cache@v4
id: playwright-dep-cache
with:
path: ~/.cache/ms-playwright
key: ${{ runner.os }}-playwright-${{ hashFiles('package-lock.json') }}
- name: Cache Playwright visual snapshots
uses: actions/cache@v4
id: playwright-snapshot-cache
with:
path: tests/visual/snapshots/**/*
key: ${{ runner.os }}-snapshots
- name: Install Playwright browsers
if: steps.playwright-dep-cache.outputs.cache-hit != 'true'
run: npx playwright install chromium webkit --with-deps
- name: Install Playwright dependencies
if: steps.playwright-dep-cache.outputs.cache-hit == 'true'
run: npx playwright install-deps
- name: Install Radicle binaries
run: |
mkdir -p tests/artifacts;
./scripts/install-binaries;
- name: Run Playwright tests
run: |
if [ ${{ github.ref }} = "refs/heads/master" ]; then
npm run test:e2e -- --project visual-desktop visual-mobile --update-snapshots || true;
else
npm run test:e2e -- --project visual-desktop visual-mobile;
fi
# We don't care about logs in visual snapshot tests, only the images.
- name: Cleanup artifacts
if: always()
run: |
shopt -s globstar;
rm -rf tests/artifacts/**/*.log;
- name: Upload artifacts
id: artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: test-artifacts-${{ runner.os }}
retention-days: 30
if-no-files-found: "ignore"
path: |
tests/artifacts/**/*
- name: Check for artifacts
id: check_artifacts
run: |
if find ./tests/artifacts/**/*.png; then
echo "present=true" >> $GITHUB_OUTPUT
else
echo "present=false" >> $GITHUB_OUTPUT
fi