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@44c33b32f808cdddd5ac0366d70595ed63661ed8 # v1.3.1 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@v3 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@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e # 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'