Comment on the PR with Playwright results #3112
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Comment on the PR with Playwright results | |
on: | |
workflow_run: | |
workflows: ["Playwright Tests"] | |
types: | |
- completed | |
permissions: {} | |
jobs: | |
playwright_comment: | |
runs-on: ubuntu-latest | |
permissions: | |
pull-requests: write | |
if: > | |
github.event.workflow_run.event == 'pull_request' && | |
github.event.workflow_run.conclusion == 'success' | |
steps: | |
- name: Harden Runner | |
uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 | |
with: | |
egress-policy: audit | |
- name: Grab playwright-output from PR run | |
uses: dawidd6/action-download-artifact@bf251b5aa9c2f7eeb574a96ee720e24f801b7c11 # pin@v2 | |
continue-on-error: true | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
run_id: ${{ github.event.workflow_run.id }} | |
name: playwright-output | |
- name: Grab master-screenshots-outcome from PR run | |
uses: dawidd6/action-download-artifact@bf251b5aa9c2f7eeb574a96ee720e24f801b7c11 # pin@v2 | |
continue-on-error: true | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
run_id: ${{ github.event.workflow_run.id }} | |
name: master-screenshots-outcome | |
- name: Grab playwright-results-json from PR run | |
uses: dawidd6/action-download-artifact@bf251b5aa9c2f7eeb574a96ee720e24f801b7c11 # pin@v2 | |
continue-on-error: true | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
run_id: ${{ github.event.workflow_run.id }} | |
name: playwright-results-json | |
- name: Generate summary from playwright-results.json (expected to fail to comment) | |
id: playwright-summary | |
uses: daun/playwright-report-summary@v3 | |
with: | |
report-file: playwright-results.json | |
- name: Load artifacts into environment variables | |
id: playwright | |
run: | | |
EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) | |
echo "PLAYWRIGHT_OUTPUT<<$EOF" >> $GITHUB_OUTPUT | |
cat ./playwright-output >> $GITHUB_OUTPUT | |
echo "$EOF" >> $GITHUB_OUTPUT | |
echo "MASTER_SCREENSHOTS_OUTCOME<<$EOF" >> $GITHUB_OUTPUT | |
cat ./master-screenshots-outcome >> $GITHUB_OUTPUT | |
echo "$EOF" >> $GITHUB_OUTPUT | |
echo "FAILED=$(grep -c '^ *[0-9] failed$' $GITHUB_OUTPUT)" >> $GITHUB_OUTPUT | |
echo "FLAKY=$(grep -c '^ *[0-9] flaky$' $GITHUB_OUTPUT)" >> $GITHUB_OUTPUT | |
# this is required because github.event.workflow_run.pull_requests is not available for PRs from forks | |
- name: "Get PR information" | |
uses: potiuk/get-workflow-origin@e2dae063368361e4cd1f510e8785cd73bca9352e # pin@v1_5 | |
id: source-run-info | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
sourceRunId: ${{ github.event.workflow_run.id }} | |
- name: "[Comment] Couldn't download screenshots from master branch" | |
uses: mshick/add-pr-comment@dd126dd8c253650d181ad9538d8b4fa218fc31e8 # pin@v2 | |
if: steps.playwright.outputs.MASTER_SCREENSHOTS_OUTCOME == 'failure' | |
with: | |
issue: ${{ steps.source-run-info.outputs.pullRequestNumber }} | |
message: | | |
:heavy_exclamation_mark: Could not fetch screenshots from master branch, so had nothing to make a visual comparison against; please check the "master-screenshots" step in the workflow run and rerun it before merging. | |
- name: "[Comment] Warning: Flaky tests or visual differences caused by this PR; please check the playwright report" | |
uses: mshick/add-pr-comment@dd126dd8c253650d181ad9538d8b4fa218fc31e8 # pin@v2 | |
if: steps.playwright.outputs.MASTER_SCREENSHOTS_OUTCOME != 'failure' && (steps.playwright.outputs.FLAKY != 0 || steps.playwright.outputs.FAILED != 0) | |
with: | |
issue: ${{ steps.source-run-info.outputs.pullRequestNumber }} | |
message: ${{ steps.playwright-summary.outputs.summary }} | |
- name: "[Comment] Success: No visual differences introduced by this PR" | |
uses: mshick/add-pr-comment@dd126dd8c253650d181ad9538d8b4fa218fc31e8 # pin@v2 | |
if: steps.playwright.outputs.MASTER_SCREENSHOTS_OUTCOME != 'failure' && steps.playwright.outputs.FLAKY == 0 && steps.playwright.outputs.FAILED == 0 | |
with: | |
issue: ${{ steps.source-run-info.outputs.pullRequestNumber }} | |
message: ${{ steps.playwright-summary.outputs.summary }} | |
update-only: true |