diff --git a/src/Test/Syd/Webdriver/Screenshot.hs b/src/Test/Syd/Webdriver/Screenshot.hs
--- a/src/Test/Syd/Webdriver/Screenshot.hs
+++ b/src/Test/Syd/Webdriver/Screenshot.hs
@@ -54,22 +54,18 @@
                     screenshotImage = convertRGB8 dynamicImage
                   },
       goldenTestProduce = do
-        let sb = LB.toStrict contents
-        case decodePng sb of
-          Left err -> expectationFailure $ "Could not parse screenshot as png: " <> err
-          Right dynamicImage -> do
-            let image = convertRGB8 dynamicImage
-            relFile <- parseRelFile fp
-            tempDir <- resolveDir' "screenshot-comparison"
-            let tempFile = tempDir </> relFile
-            ensureDir $ parent tempFile
-            -- Write it to a file so we can compare it if it differs.
-            writePng (fromAbsFile tempFile) image
-            pure $
-              Screenshot
-                { screenshotFile = tempFile,
-                  screenshotImage = image
-                },
+        image <- normaliseImage contents
+        relFile <- parseRelFile fp
+        tempDir <- resolveDir' "screenshot-comparison"
+        let tempFile = tempDir </> relFile
+        ensureDir $ parent tempFile
+        -- Write it to a file so we can compare it if it differs.
+        writePng (fromAbsFile tempFile) image
+        pure $
+          Screenshot
+            { screenshotFile = tempFile,
+              screenshotImage = image
+            },
       goldenTestWrite = \(Screenshot _ actual) -> do
         relFile <- parseRelFile fp
         currentDir <- getCurrentDir
@@ -88,3 +84,19 @@
                     "actual: " <> fromAbsFile actualPath
                   ]
     }
+
+debugScreenshot :: FilePath -> WebdriverTestM app ()
+debugScreenshot fp = do
+  contents <- screenshot
+  liftIO $ do
+    image <- normaliseImage contents
+    writePng fp image
+
+normaliseImage :: LB.ByteString -> IO (Image PixelRGB8)
+normaliseImage contents = do
+  let sb = LB.toStrict contents
+  case decodePng sb of
+    Left err -> expectationFailure $ "Could not parse screenshot as png: " <> err
+    Right dynamicImage -> do
+      let image = convertRGB8 dynamicImage
+      pure image
diff --git a/sydtest-webdriver-screenshot.cabal b/sydtest-webdriver-screenshot.cabal
--- a/sydtest-webdriver-screenshot.cabal
+++ b/sydtest-webdriver-screenshot.cabal
@@ -1,11 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.34.6.
+-- This file has been generated from package.yaml by hpack version 0.34.7.
 --
 -- see: https://github.com/sol/hpack
 
 name:           sydtest-webdriver-screenshot
-version:        0.0.0.0
+version:        0.0.0.1
 synopsis:       A webdriver screenshot companion library for sydtest
 category:       Testing
 author:         Tom Sydney Kerckhove
@@ -16,6 +16,7 @@
 build-type:     Simple
 extra-source-files:
     LICENSE.md
+    test_resources/home.png
 
 library
   exposed-modules:
@@ -28,13 +29,10 @@
       JuicyPixels
     , base >=4.7 && <5
     , bytestring
-    , http-types
     , mtl
-    , network-uri
     , path
     , path-io
     , sydtest
-    , sydtest-wai
     , sydtest-webdriver
     , webdriver
   default-language: Haskell2010
diff --git a/test_resources/home.png b/test_resources/home.png
new file mode 100644
Binary files /dev/null and b/test_resources/home.png differ
