name: Playwright Tests on: push: branches: [master] pull_request: permissions: contents: read jobs: playwright: timeout-minutes: 60 runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: cache: "npm" node-version-file: ".node-version" - name: Install dependencies run: npm ci - 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 --with-deps chromium - name: Grab latest dictionaries from dictionaries branch uses: actions/checkout@v3 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@5e780fc7bbd0cac69fc73271ed86edf5dcb72d67 # 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@v3 with: name: playwright-screenshots path: test/playwright/__screenshots__/ - uses: actions/upload-artifact@v3 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@v3 with: name: master-screenshots-outcome path: master-screenshots-outcome if: github.event_name == 'pull_request' - uses: actions/upload-artifact@v3 with: name: playwright-output path: playwright-output if: github.event_name == 'pull_request'