diff --git a/src/Test/Syd/Webdriver/Yesod.hs b/src/Test/Syd/Webdriver/Yesod.hs
--- a/src/Test/Syd/Webdriver/Yesod.hs
+++ b/src/Test/Syd/Webdriver/Yesod.hs
@@ -16,6 +16,7 @@
 module Test.Syd.Webdriver.Yesod
   ( -- * Defining webdriver tests with yesod
     webdriverYesodSpec,
+    webdriverYesodSpecWithMiddlewares,
 
     -- * Implementing webdriver tests with yesod
     openRoute,
@@ -41,6 +42,7 @@
 import Network.HTTP.Client as HTTP
 import qualified Network.HTTP.Types as HTTP
 import Network.URI
+import Network.Wai (Middleware)
 import Test.Syd
 import Test.Syd.Wai
 import Test.Syd.Webdriver
@@ -50,7 +52,7 @@
 
 -- | Run webdriver tests given a 'SetupFunc' for your app.
 webdriverYesodSpec ::
-  Yesod.YesodDispatch app =>
+  (Yesod.YesodDispatch app) =>
   (HTTP.Manager -> SetupFunc app) ->
   WebdriverSpec app ->
   Spec
@@ -59,16 +61,28 @@
   YesodClient {..} <- yesodClientSetupFunc man site
   pure (yesodClientSiteURI, yesodClientSite)
 
+-- | Run webdriver tests given a 'SetupFunc' for your app.
+webdriverYesodSpecWithMiddlewares ::
+  (Yesod.YesodDispatch app) =>
+  (HTTP.Manager -> SetupFunc app) ->
+  [Middleware] ->
+  WebdriverSpec app ->
+  Spec
+webdriverYesodSpecWithMiddlewares appSetupFunc middlewares = webdriverSpec $ \man -> do
+  site <- appSetupFunc man
+  YesodClient {..} <- yesodClientSetupFuncWithMiddlewares middlewares man site
+  pure (yesodClientSiteURI, yesodClientSite)
+
 -- | Open a given yesod 'Route'
 openRoute ::
-  Yesod.RenderRoute app =>
+  (Yesod.RenderRoute app) =>
   Route app ->
   WebdriverTestM app ()
 openRoute route = openRouteWithParams route []
 
 -- | Open a given yesod 'Route' with parameters
 openRouteWithParams ::
-  Yesod.RenderRoute app =>
+  (Yesod.RenderRoute app) =>
   Route app ->
   [(Text, Text)] ->
   WebdriverTestM app ()
@@ -92,7 +106,7 @@
 
 -- | Get the current 'Route'
 getCurrentRoute ::
-  Yesod.ParseRoute app =>
+  (Yesod.ParseRoute app) =>
   WebdriverTestM app (Route app)
 getCurrentRoute = do
   currentUrl <- getCurrentURL
@@ -126,21 +140,21 @@
 -- | Get the link text for a given I18N message.
 --
 -- This will only work if the language hasn't been set.
-getLinkTextI :: Yesod.RenderMessage app message => message -> WebdriverTestM app Text
+getLinkTextI :: (Yesod.RenderMessage app message) => message -> WebdriverTestM app Text
 getLinkTextI message = do
   y <- asks webdriverTestEnvApp
   pure $ Yesod.renderMessage y [] message
 
 -- | Find an 'Element', 'ByLinkText' the text obtained by 'getLinkTextI'
-findElemByLinkTextI :: Yesod.RenderMessage app message => message -> WebdriverTestM app Element
+findElemByLinkTextI :: (Yesod.RenderMessage app message) => message -> WebdriverTestM app Element
 findElemByLinkTextI message = getLinkTextI message >>= findElem . ByLinkText
 
 -- | Find an 'Element', 'ByPartialLinkText' the text obtained by 'getLinkTextI'
-findElemByPartialLinkTextI :: Yesod.RenderMessage app message => message -> WebdriverTestM app Element
+findElemByPartialLinkTextI :: (Yesod.RenderMessage app message) => message -> WebdriverTestM app Element
 findElemByPartialLinkTextI message = getLinkTextI message >>= findElem . ByPartialLinkText
 
 -- | Find an 'Element', 'ByLinkText' the text obtained by 'getLinkTextI'
-findElemByButtonTextI :: Yesod.RenderMessage app message => message -> WebdriverTestM app Element
+findElemByButtonTextI :: (Yesod.RenderMessage app message) => message -> WebdriverTestM app Element
 findElemByButtonTextI message = do
   t <- getLinkTextI message
   findElem $ ByXPath $ mconcat ["//button[normalize-space()=\"", t, "\"]"]
diff --git a/sydtest-webdriver-yesod.cabal b/sydtest-webdriver-yesod.cabal
--- a/sydtest-webdriver-yesod.cabal
+++ b/sydtest-webdriver-yesod.cabal
@@ -1,11 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.34.7.
+-- This file has been generated from package.yaml by hpack version 0.37.0.
 --
 -- see: https://github.com/sol/hpack
 
 name:           sydtest-webdriver-yesod
-version:        0.0.0.1
+version:        0.0.1.0
 synopsis:       A webdriver+yesod companion library for sydtest
 category:       Testing
 author:         Tom Sydney Kerckhove
@@ -36,6 +36,7 @@
     , sydtest-webdriver
     , sydtest-yesod
     , text
+    , wai
     , webdriver
     , yesod
   default-language: Haskell2010
