diff options
| author | Nick Pope <nick@nickpope.me.uk> | 2024-05-01 09:56:49 +0100 |
|---|---|---|
| committer | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2024-05-10 10:37:56 +0200 |
| commit | 962215db13506deca67fae5dcba5b5bb4a1029a3 (patch) | |
| tree | 3c505e87ac9f3e0625702c3b1de43538f474b0f9 | |
| parent | 02c2090dc0e0b25e26fd3bb7dd7c1e4e12b17c59 (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.yml | 8 | ||||
| -rw-r--r-- | django/test/selenium.py | 6 |
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) |
