summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2023-10-16 12:02:39 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-10-18 11:19:54 +0200
commit97b7970c6479ef414175f22a009240ed0df8ce46 (patch)
tree394c32ef64be5fcfcfd74b857b7dd15e4845e19e
parentbe56c982c0805f62a2948d9d7a3e21215c352174 (diff)
Refs #34043 -- Added GitHub action to capture screenshots in Selenium tests.
-rw-r--r--.github/workflows/screenshots.yml77
1 files changed, 77 insertions, 0 deletions
diff --git a/.github/workflows/screenshots.yml b/.github/workflows/screenshots.yml
new file mode 100644
index 0000000000..2b4c4150b7
--- /dev/null
+++ b/.github/workflows/screenshots.yml
@@ -0,0 +1,77 @@
+name: Visual Regression Tests
+
+on:
+ pull_request:
+ types: [labeled, synchronize, opened, reopened]
+ paths-ignore:
+ - 'docs/**'
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ pull-requests: write
+
+jobs:
+ selenium-screenshots:
+ if: contains(join(github.event.pull_request.labels.*.name, '|'), 'screenshots')
+ runs-on: ubuntu-latest
+ name: Screenshots
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: '3.11'
+ cache: 'pip'
+ cache-dependency-path: 'tests/requirements/py3.txt'
+ - name: Install and upgrade packaging tools
+ run: python -m pip install --upgrade pip setuptools wheel
+ - run: python -m pip install -r tests/requirements/py3.txt -e .
+ - name: Run Selenium tests with screenshots
+ id: generate-screenshots
+ working-directory: ./tests/
+ run: |
+ python -Wall runtests.py --verbosity 2 --noinput --selenium=chrome --headless --screenshots --settings=test_sqlite --parallel 2
+ echo "date=$(date)" >> $GITHUB_OUTPUT
+ echo "🖼️ **Screenshots created**" >> $GITHUB_STEP_SUMMARY
+ echo "Generated screenshots for ${{ github.event.pull_request.head.sha }} at $(date)" >> $GITHUB_STEP_SUMMARY
+
+ - name: Upload screenshots
+ uses: actions/upload-artifact@v3
+ with:
+ name: screenshots-${{ github.event.pull_request.head.sha }}
+ path: tests/screenshots/
+
+ - name: Find comment to update
+ uses: peter-evans/find-comment@v2
+ id: find-comment
+ with:
+ issue-number: ${{ github.event.pull_request.number }}
+ comment-author: 'github-actions[bot]'
+ body-includes: You can download the generated screenshots from the workflow artifacts.
+
+ - name: Create comment
+ if: steps.find-comment.outputs.comment-id == ''
+ uses: peter-evans/create-or-update-comment@v3
+ with:
+ issue-number: ${{ github.event.pull_request.number }}
+ body: |
+ 🖼️ **Screenshots created**
+
+ You can download the generated screenshots from the workflow artifacts.
+
+ _Please note that artifacts are only available for download for ${{ github.retention_days }} days._
+
+ - Generated screenshots for ${{ github.event.pull_request.head.sha }} at ${{ steps.generate-screenshots.outputs.date }} ([download](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})).
+
+ - name: Update comment
+ if: steps.find-comment.outputs.comment-id != ''
+ uses: peter-evans/create-or-update-comment@v3
+ with:
+ comment-id: ${{ steps.find-comment.outputs.comment-id }}
+ body: |
+ - Generated screenshots for ${{ github.event.pull_request.head.sha }} at ${{ steps.generate-screenshots.outputs.date }} ([download](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})).