@@ -28,19 +28,40 @@ jobs:
28
28
run : npx playwright install --with-deps
29
29
- name : Run Playwright tests
30
30
id : test-visual
31
- run : make tests
31
+ run : |
32
+ make tests
33
+ if grep -q -e "Error: A snapshot doesn't exist at" -e "Screenshot comparison failed" output.log; then
34
+ echo "Playwright tests failed due to a snapshot issue."
35
+ echo "SNAPSHOT_DIFFERENCES=true" >> $GITHUB_ENV
36
+ exit 1
37
+ elif grep -q "failed" output.log; then
38
+ echo "Playwright tests failed due to a non-snapshot issue."
39
+ exit 1
40
+ fi
32
41
- uses : actions/upload-artifact@v4
42
+ id : artifact-upload
33
43
if : ${{ !cancelled() && failure() && steps.test-visual.conclusion == 'failure' }}
34
44
with :
35
45
name : playwright-report
36
46
path : tests/playwright-report/
37
47
retention-days : 3
38
- - uses : actions/upload-artifact@v4
39
- if : ${{ !cancelled() && failure() && steps.test-visual.conclusion == 'failure' }}
48
+ - name : Comment on PR with Playwright report
49
+ uses : actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
50
+ if : ${{ failure() && env.SNAPSHOT_DIFFERENCES == 'true' }}
40
51
with :
41
- name : test-results
42
- path : tests/test-results/
43
- retention-days : 3
52
+ script : |
53
+ const body = `### <span aria-hidden="true">❌</span> Playwright visual snapshot differences were detected.
54
+
55
+ View the [Playwright report](${{ steps.artifact-upload.outputs.artifact-url }})
56
+ **To approve the snapshot changes and update the snapshots, please comment:** /approve-snapshots`;
57
+
58
+ await github.rest.issues.createComment({
59
+ issue_number: context.issue.number,
60
+ owner: context.repo.owner,
61
+ repo: context.repo.repo,
62
+ body: body,
63
+ });
64
+
44
65
# - name: Update the screenshots based on Ubuntu env on GH
45
66
# id: test-visual-update
46
67
# if: ${{ failure() && steps.test-visual.conclusion == 'failure' }}
0 commit comments