summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Pope <nick@nickpope.me.uk>2024-05-01 09:56:49 +0100
committerSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2024-05-10 10:37:56 +0200
commit962215db13506deca67fae5dcba5b5bb4a1029a3 (patch)
tree3c505e87ac9f3e0625702c3b1de43538f474b0f9
parent02c2090dc0e0b25e26fd3bb7dd7c1e4e12b17c59 (diff)
Organized images in the screenshots workflow.
Added a top-level directory in the zip archive that is the commit hash which makes it easier when downloading multiple artifacts for comparison. Updated the filenames of screenshots for easier comparison between different cases. Added that an error is raised if no screenshots uploaded in workflow.
-rw-r--r--.github/workflows/screenshots.yml8
-rw-r--r--django/test/selenium.py6
2 files changed, 12 insertions, 2 deletions
diff --git a/.github/workflows/screenshots.yml b/.github/workflows/screenshots.yml
index f9f372102d..7b9db7d064 100644
--- a/.github/workflows/screenshots.yml
+++ b/.github/workflows/screenshots.yml
@@ -47,8 +47,14 @@ jobs:
- name: Optimize screenshots
run: oxipng --interlace=0 --opt=4 --strip=safe tests/screenshots/*.png
+ - name: Organize screenshots
+ run: |
+ mkdir --parents "/tmp/screenshots/${{ github.event.pull_request.head.sha }}"
+ mv tests/screenshots/* "/tmp/screenshots/${{ github.event.pull_request.head.sha }}/"
+
- name: Upload screenshots
uses: actions/upload-artifact@v4
with:
name: screenshots-${{ github.event.pull_request.head.sha }}
- path: tests/screenshots/
+ path: /tmp/screenshots/
+ if-no-files-found: error
diff --git a/django/test/selenium.py b/django/test/selenium.py
index eecfd87bf1..2840afb9ec 100644
--- a/django/test/selenium.py
+++ b/django/test/selenium.py
@@ -142,6 +142,8 @@ class SeleniumTestCase(LiveServerTestCase, metaclass=SeleniumTestCaseBase):
test.__name__ = f"{name}_{screenshot_case}"
test.__qualname__ = f"{test.__qualname__}_{screenshot_case}"
+ test._screenshot_name = name
+ test._screenshot_case = screenshot_case
setattr(cls, test.__name__, test)
@classproperty
@@ -214,7 +216,9 @@ class SeleniumTestCase(LiveServerTestCase, metaclass=SeleniumTestCaseBase):
def take_screenshot(self, name):
if not self.screenshots:
return
- path = Path.cwd() / "screenshots" / f"{self._testMethodName}-{name}.png"
+ test = getattr(self, self._testMethodName)
+ filename = f"{test._screenshot_name}--{name}--{test._screenshot_case}.png"
+ path = Path.cwd() / "screenshots" / filename
path.parent.mkdir(exist_ok=True, parents=True)
self.selenium.save_screenshot(path)