{-# LANGUAGE OverloadedLists #-}
module Test.Sandwich.WebDriver.Internal.Capabilities (
chromeCapabilities
, headlessChromeCapabilities
, firefoxCapabilities
, headlessFirefoxCapabilities
) where
import qualified Data.Aeson as A
import Data.Default
import qualified Data.HashMap.Strict as HM
import qualified Data.Text as T
import Test.WebDriver
loggingPrefs :: A.Value
loggingPrefs :: Value
loggingPrefs = [Pair] -> Value
A.object [(Text
"browser", Value
"ALL")
, (Text
"client", Value
"WARNING")
, (Text
"driver", Value
"WARNING")
, (Text
"performance", Value
"ALL")
, (Text
"server", Value
"WARNING")
]
chromeCapabilities :: Capabilities
chromeCapabilities :: Capabilities
chromeCapabilities =
Capabilities
forall a. Default a => a
def {browser :: Browser
browser=Maybe String
-> Maybe String
-> [String]
-> [ChromeExtension]
-> Object
-> Browser
Chrome Maybe String
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing [String]
args [] Object
chromePrefs
, additionalCaps :: [Pair]
additionalCaps=[(Text
"loggingPrefs", Value
loggingPrefs)
, (Text
"goog:loggingPrefs", Value
loggingPrefs)]
}
where args :: [String]
args = [Item [String]
"--verbose"]
headlessChromeCapabilities :: Capabilities
headlessChromeCapabilities :: Capabilities
headlessChromeCapabilities =
Capabilities
forall a. Default a => a
def {browser :: Browser
browser=Maybe String
-> Maybe String
-> [String]
-> [ChromeExtension]
-> Object
-> Browser
Chrome Maybe String
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing [String]
args [] Object
chromePrefs
, additionalCaps :: [Pair]
additionalCaps=[(Text
"loggingPrefs", Value
loggingPrefs)
, (Text
"goog:loggingPrefs", Value
loggingPrefs)]
}
where args :: [String]
args = [Item [String]
"--verbose", Item [String]
"--headless"]
chromePrefs :: HM.HashMap T.Text A.Value
chromePrefs :: Object
chromePrefs = [Pair] -> Object
forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v
HM.fromList [
(Text
"prefs", [Pair] -> Value
A.object [(Text
"profile.default_content_setting_values.automatic_downloads", Scientific -> Value
A.Number Scientific
1)
, (Text
"profile.content_settings.exceptions.automatic_downloads.*.setting", Scientific -> Value
A.Number Scientific
1)
, (Text
"download.prompt_for_download", Bool -> Value
A.Bool Bool
False)
, (Text
"download.directory_upgrade", Bool -> Value
A.Bool Bool
True)
, (Text
"download.default_directory", Value
"/tmp")])
]
firefoxCapabilities :: Capabilities
firefoxCapabilities :: Capabilities
firefoxCapabilities = Capabilities
forall a. Default a => a
def { browser :: Browser
browser=Browser
ff }
where
ff :: Browser
ff = Firefox :: Maybe (PreparedProfile Firefox)
-> LogLevel -> Maybe String -> Maybe Bool -> Browser
Firefox { ffProfile :: Maybe (PreparedProfile Firefox)
ffProfile = Maybe (PreparedProfile Firefox)
forall a. Maybe a
Nothing
, ffLogPref :: LogLevel
ffLogPref = LogLevel
LogAll
, ffBinary :: Maybe String
ffBinary = Maybe String
forall a. Maybe a
Nothing
, ffAcceptInsecureCerts :: Maybe Bool
ffAcceptInsecureCerts = Maybe Bool
forall a. Maybe a
Nothing
}
headlessFirefoxCapabilities :: Capabilities
headlessFirefoxCapabilities :: Capabilities
headlessFirefoxCapabilities = Capabilities
forall a. Default a => a
def { browser :: Browser
browser=Browser
ff, additionalCaps :: [Pair]
additionalCaps=[Pair]
additionalCaps }
where
ff :: Browser
ff = Firefox :: Maybe (PreparedProfile Firefox)
-> LogLevel -> Maybe String -> Maybe Bool -> Browser
Firefox { ffProfile :: Maybe (PreparedProfile Firefox)
ffProfile = Maybe (PreparedProfile Firefox)
forall a. Maybe a
Nothing
, ffLogPref :: LogLevel
ffLogPref = LogLevel
LogAll
, ffBinary :: Maybe String
ffBinary = Maybe String
forall a. Maybe a
Nothing
, ffAcceptInsecureCerts :: Maybe Bool
ffAcceptInsecureCerts = Maybe Bool
forall a. Maybe a
Nothing
}
additionalCaps :: [Pair]
additionalCaps = [(Text
"moz:firefoxOptions", [Pair] -> Value
A.object [(Text
"args", Array -> Value
A.Array [Item Array
"-headless"])])]