webdriver-0.15.0.0: tests/TestLib/Types/Cli.hs
{-# LANGUAGE RankNTypes #-}
module TestLib.Types.Cli where
import Options.Applicative
data BrowserToUse = UseChrome | UseFirefox
deriving (Show, Eq)
browserToUse :: (forall f a. Mod f a) -> Parser BrowserToUse
browserToUse maybeInternal =
flag' UseFirefox (long "use-firefox" <> help "Use Firefox" <> maybeInternal)
<|> flag UseChrome UseChrome (long "use-chrome" <> help "Use Chrome (default)" <> maybeInternal)
data UserOptions = UserOptions {
optChromeBinary :: Maybe FilePath
, optChromeDriver :: Maybe FilePath
, optChromeNoSandbox :: Maybe Bool
, optFirefoxBinary :: Maybe FilePath
, optGeckoDriver :: Maybe FilePath
, optBrowserToUse :: BrowserToUse
, optHeadlessTests :: Maybe Bool
} deriving (Show)
userOptions :: Parser UserOptions
userOptions = UserOptions
<$> optional (strOption (long "webdriver-chrome" <> help "Path to Chrome binary"))
<*> optional (strOption (long "webdriver-chromedriver" <> help "Path to chromedriver"))
<*> optional (flag False True (long "webdriver-chrome-no-sandbox" <> help "Pass the --no-sandbox flag to Chrome (useful in GitHub Actions when installing Chrome via Nix)"))
<*> optional (strOption (long "webdriver-firefox" <> help "Path to Firefox binary"))
<*> optional (strOption (long "webdriver-geckodriver" <> help "Path to geckodriver"))
<*> browserToUse mempty
<*> optional (flag False True (long "headless-tests" <> help "Run the test browser in headless mode"))