Procházet zdrojové kódy

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.
Nick Pope před 11 měsíci
rodič
revize
962215db13
2 změnil soubory, kde provedl 12 přidání a 2 odebrání
  1. 7 1
      .github/workflows/screenshots.yml
  2. 5 1
      django/test/selenium.py

+ 7 - 1
.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

+ 5 - 1
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)