webdriver-0.15.0.0: src/Test/WebDriver/Capabilities/FirefoxOptions.hs
{-# LANGUAGE TemplateHaskell #-}
module Test.WebDriver.Capabilities.FirefoxOptions where
import Data.Aeson as A
import Data.Aeson.TH
import Data.Map (Map)
import Lens.Micro.TH
import Test.WebDriver.Capabilities.Aeson
import Test.WebDriver.Profile
data FirefoxLogLevelType =
FirefoxLogLevelTypeTrace
| FirefoxLogLevelTypeDebug
| FirefoxLogLevelTypeConfig
| FirefoxLogLevelTypeInfo
| FirefoxLogLevelTypeWarn
| FirefoxLogLevelTypeError
| FirefoxLogLevelTypeFatal
deriving (Show, Eq)
deriveJSON toCamelC4 ''FirefoxLogLevelType
makeLenses ''FirefoxLogLevelType
data FirefoxLogLevel = FirefoxLogLevel {
_firefoxLogLevelLevel :: FirefoxLogLevelType
}
deriving (Show, Eq)
deriveJSON toCamel3 ''FirefoxLogLevel
makeLenses ''FirefoxLogLevel
-- | See https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities/firefoxOptions
data FirefoxOptions = FirefoxOptions {
-- | Absolute path to the custom Firefox binary to use.
--
-- On macOS you may either give the path to the application bundle, i.e.
-- @\/Applications\/Firefox.app@, or the absolute path to the executable
-- binary inside this bundle, for example
-- @\/Applications\/Firefox.app\/Contents\/MacOS\/firefox-bin@.
--
-- geckodriver will attempt to deduce the default location of Firefox on the
-- current system if left undefined.
_firefoxOptionsBinary :: Maybe String
-- | Command line arguments to pass to the Firefox binary. These must include
-- the leading dash (-) where required, e.g. ["-headless"].
--
-- To have geckodriver pick up an existing profile on the local filesystem,
-- you may pass @["-profile", -- "\/path\/to\/profile"]@. But if a profile has
-- to be transferred to a target machine it is recommended to use the profile
-- entry.
, _firefoxOptionsArgs :: Maybe [String]
-- | Base64-encoded ZIP of a profile directory to use for the Firefox
-- instance. This may be used to e.g. install extensions or custom
-- certificates, but for setting custom preferences we recommend using the
-- prefs entry instead.
, _firefoxOptionsProfile :: Maybe (Profile Firefox)
-- | To increase the logging verbosity of geckodriver and Firefox, you may
-- pass a log object that may look like {"log": {"level": "trace"}} to include
-- all trace-level logs and above.
, _firefoxOptionsLog :: Maybe FirefoxLogLevel
-- | Map of preference name to preference value, which can be a string, a
-- boolean or an integer.
, _firefoxOptionsPrefs :: Maybe A.Object
-- | Map of environment variable name to environment variable value, both of
-- which must be strings.
--
-- On Desktop, the Firefox under test will launch with given variable in its
-- environment. On Android, the GeckoView-based App will have the given
-- variable added to the env block in its configuration YAML.
, _firefoxOptionsEnv :: Maybe (Map String String)
-- TODO: Android options
}
deriving (Show, Eq)
deriveJSON toCamel2 ''FirefoxOptions
makeLenses ''FirefoxOptions
emptyFirefoxOptions :: FirefoxOptions
emptyFirefoxOptions = FirefoxOptions {
_firefoxOptionsBinary = Nothing
, _firefoxOptionsArgs = Nothing
, _firefoxOptionsProfile = Nothing
, _firefoxOptionsLog = Nothing
, _firefoxOptionsPrefs = Nothing
, _firefoxOptionsEnv = Nothing
}
-- | Empty 'FirefoxOptions'.
defaultFirefoxOptions :: FirefoxOptions
defaultFirefoxOptions = emptyFirefoxOptions