module Test.WebDriver.Config(
WDConfig(..), defaultConfig
, modifyCaps, useBrowser, useVersion, usePlatform, useProxy
, SessionHistoryConfig, noHistory, unlimitedHistory, onlyMostRecentHistory
, WebDriverConfig(..)
) where
import Test.WebDriver.Capabilities
import Test.WebDriver.Session
import Data.Default.Class (Default(..))
import Data.String (fromString)
import Control.Monad.Base
import Network.HTTP.Client (Manager, newManager, defaultManagerSettings)
import Network.HTTP.Types (RequestHeaders)
data WDConfig = WDConfig {
wdHost :: String
, wdPort :: Int
, wdCapabilities :: Capabilities
, wdBasePath :: String
, wdRequestHeaders :: RequestHeaders
, wdAuthHeaders :: RequestHeaders
, wdHistoryConfig :: SessionHistoryConfig
, wdHTTPManager :: Maybe Manager
, wdHTTPRetryCount :: Int
}
instance GetCapabilities WDConfig where
getCaps = wdCapabilities
instance SetCapabilities WDConfig where
setCaps caps conf = conf { wdCapabilities = caps }
instance Default WDConfig where
def = WDConfig {
wdHost = "127.0.0.1"
, wdPort = 4444
, wdRequestHeaders = []
, wdAuthHeaders = []
, wdCapabilities = def
, wdHistoryConfig = unlimitedHistory
, wdBasePath = "/wd/hub"
, wdHTTPManager = Nothing
, wdHTTPRetryCount = 0
}
defaultConfig :: WDConfig
defaultConfig = def
class WebDriverConfig c where
mkCaps :: MonadBase IO m => c -> m Capabilities
mkSession :: MonadBase IO m => c -> m WDSession
instance WebDriverConfig WDConfig where
mkCaps = return . getCaps
mkSession WDConfig{..} = do
manager <- maybe createManager return wdHTTPManager
return WDSession { wdSessHost = fromString $ wdHost
, wdSessPort = wdPort
, wdSessRequestHeaders = wdRequestHeaders
, wdSessAuthHeaders = wdAuthHeaders
, wdSessBasePath = fromString $ wdBasePath
, wdSessId = Nothing
, wdSessHist = []
, wdSessHistUpdate = wdHistoryConfig
, wdSessHTTPManager = manager
, wdSessHTTPRetryCount = wdHTTPRetryCount }
where
createManager = liftBase $ newManager defaultManagerSettings