mirror of
https://seed.radicle.dev/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5.git
synced 2026-11-02 02:00:31 +08:00
We use built in devices for testing instead of our own custom ones. Split up desktop and mobile visual tests for better separation.
91 lines
2.7 KiB
YAML
91 lines
2.7 KiB
YAML
name: check-visual
|
|
on: push
|
|
|
|
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@v3
|
|
|
|
- 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@v3
|
|
with:
|
|
node-version: "20.9.0"
|
|
|
|
- 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 Playwright visual snapshots
|
|
uses: actions/cache@v3
|
|
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 Radicle binaries
|
|
run: |
|
|
mkdir -p tests/artifacts;
|
|
./scripts/install-binaries;
|
|
./scripts/install-binaries --show-path >> $GITHUB_PATH;
|
|
|
|
- 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@v3
|
|
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
|