webdriver-0.6: src/Test/WebDriver/Config.hs
{-# LANGUAGE OverloadedStrings, RecordWildCards, FlexibleContexts #-}
module Test.WebDriver.Config(
-- * WebDriver configuration
WDConfig(..), defaultConfig, mkSession
) where
import Test.WebDriver.Session
import Test.WebDriver.Capabilities
import Data.Default (Default, def)
import Data.String (fromString)
import Network.HTTP.Client (Manager, newManager, defaultManagerSettings)
import Control.Monad.Base (MonadBase, liftBase)
-- |WebDriver session configuration
data WDConfig = WDConfig {
-- |Host name of the WebDriver server for this
-- session (default 127.0.0.1)
wdHost :: String
-- |Port number of the server (default 4444)
, wdPort :: Int
-- |Capabilities to use for this session
, wdCapabilities :: Capabilities
-- |Whether or not we should keep a history of HTTP requests/responses
--
-- By default, only the last request/response pair is stored (O(1) heap consumption).
-- Enable this option for more detailed debugging info for HTTP requests.
, wdKeepSessHist :: Bool
-- |Base path for all API requests (default "/wd/hub")
, wdBasePath :: String
-- |Use the given http-client 'Manager' instead of the default
, wdHTTPManager :: Maybe Manager
}
instance Default WDConfig where
def = WDConfig {
wdHost = "127.0.0.1"
, wdPort = 4444
, wdCapabilities = def
, wdKeepSessHist = False
, wdBasePath = "/wd/hub"
, wdHTTPManager = Nothing
}
{- |A default session config connects to localhost on port 4444, and hasn't been
initialized server-side. This value is the same as 'def' but with a less
polymorphic type. -}
defaultConfig :: WDConfig
defaultConfig = def
-- |Constructs a new 'WDSession' from a given 'WDConfig'
mkSession :: MonadBase IO m => WDConfig -> m WDSession
mkSession WDConfig{..} = do
manager <- maybe createManager return wdHTTPManager
return WDSession { wdSessHost = fromString $ wdHost
, wdSessPort = wdPort
, wdSessBasePath = fromString $ wdBasePath
, wdSessId = Nothing
, wdSessHist = []
, wdSessHistUpdate = histUpdate
, wdSessHTTPManager = manager }
where
createManager = liftBase $ newManager defaultManagerSettings
histUpdate
| wdKeepSessHist = (:)
| otherwise = \x _ -> [x]