name: Playwright Tests on: push: branches: [master] pull_request: permissions: contents: read jobs: playwright: timeout-minutes: 60 runs-on: ubuntu-latest steps: - name: Remove all fonts run: rm -rf /usr/share/fonts - uses: actions/checkout@v4 - name: Install CJK fonts uses: awalsh128/cache-apt-pkgs-action@a6c3917cc929dd0345bfb2d3feaf9101823370ad # v1.4.2 with: packages: fonts-ipafont-mincho execute_install_scripts: true - uses: actions/setup-node@v4 with: cache: "npm" node-version-file: "package.json" - name: Install dependencies run: npm ci - name: Build run: npm run build - name: Cache playwright browsers id: cache-playwright uses: actions/cache@v4 with: path: | ~/.cache/ms-playwright key: cache-playwright-${{ hashFiles('package-lock.json') }} # playwright version is included in package-lock, so this serves as a reasonable cache key - if: ${{ steps.cache-playwright.outputs.cache-hit != 'true' }} name: Install Playwright Browsers run: npx playwright install chromium - name: Grab latest dictionaries from dictionaries branch uses: actions/checkout@v4 with: repository: themoeway/yomitan # so that this works on forks ref: dictionaries path: dictionaries - name: Grab latest screenshots from master branch uses: dawidd6/action-download-artifact@09f2f74827fd3a8607589e5ad7f9398816f540fe # pin@v2 continue-on-error: true id: master-screenshots with: github_token: ${{ secrets.GITHUB_TOKEN }} repo: themoeway/yomitan # so that this works on forks name: playwright-screenshots branch: master workflow: playwright.yml workflow_conclusion: success path: test/playwright/__screenshots__/ - name: "[PR] Generate new screenshots & compare against master" id: playwright run: | npx playwright test 2>&1 | tee ./playwright-output || true continue-on-error: true if: github.event_name == 'pull_request' && steps.master-screenshots.outcome != 'failure' - name: "[Push] Generate new authoritative screenshots for master" id: playwright-master run: npx playwright test -u if: github.event_name == 'push' - uses: actions/upload-artifact@v4 with: name: playwright-screenshots path: test/playwright/__screenshots__/ - uses: actions/upload-artifact@v4 with: name: playwright-report path: playwright-report/ - name: "[PR] Store steps.master-screenshots.outcome in a file" run: echo ${{ steps.master-screenshots.outcome }} > ./master-screenshots-outcome if: github.event_name == 'pull_request' - uses: actions/upload-artifact@v4 with: name: master-screenshots-outcome path: master-screenshots-outcome if: github.event_name == 'pull_request' - uses: actions/upload-artifact@v4 with: name: playwright-output path: playwright-output if: github.event_name == 'pull_request'