diff --git a/.github/workflows/test_and_deploy.yml b/.github/workflows/test_and_deploy.yml
index 346cde50..f19bd28a 100644
--- a/.github/workflows/test_and_deploy.yml
+++ b/.github/workflows/test_and_deploy.yml
@@ -48,6 +48,14 @@ jobs:
       - name: Test with tox
         run: python -m tox
 
+      - name: Upload pytest test results
+        uses: actions/upload-artifact@v3
+        with:
+          name: pytest-results-${{ matrix.platform }} py${{ matrix.python-version }}
+          path: reports/
+        # Use always() to always run this step to publish test results when there are test failures
+        if: ${{ always() }}
+
       - name: Coverage
         uses: codecov/codecov-action@v2
 
diff --git a/tox.ini b/tox.ini
index 6f7a4823..7f78e2d5 100644
--- a/tox.ini
+++ b/tox.ini
@@ -11,6 +11,12 @@ python =
 
 [testenv]
 extras = testing
+allowlist_externals =
+    cp
+    ls
+    tree
 commands =
+    cp -R {toxinidir}/src/napari_matplotlib/tests/baseline {envdir}/baseline
+    ls {toxinidir}/src/napari_matplotlib/tests/baseline
     python -c 'from skimage import data; data.brain()'
-    python -m pytest --mpl -v --color=yes --cov=napari_matplotlib --cov-report=xml
+    python -m pytest --mpl --mpl-generate-summary=html --mpl-results-path={toxinidir}/reports -v --color=yes --cov=napari_matplotlib --cov-report=xml