webdriver-0.13.0.0: tests/TestLib/Contexts/BrowserDependencies.hs
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeOperators #-}
module TestLib.Contexts.BrowserDependencies where
import Control.Monad.IO.Unlift
import Data.String.Interpolate
import Test.Sandwich hiding (BrowserToUse(..))
import Test.Sandwich.Contexts.Files
import Test.Sandwich.Contexts.Nix
import TestLib.Types
import TestLib.Types.Cli
introduceBrowserDependencies :: forall m context. (
MonadUnliftIO m, HasBaseContext context, HasNixContext context, HasCommandLineOptions context UserOptions
) => SpecFree (LabelValue "browserDependencies" BrowserDependencies :> context) m () -> SpecFree context m ()
introduceBrowserDependencies = introduce "Introduce browser dependencies" browserDependencies alloc (const $ return ())
where
alloc = do
UserOptions {..} <- getUserCommandLineOptions
deps <- case optBrowserToUse of
UseChrome ->
BrowserDependenciesChrome <$> getBinaryViaNixPackage @"google-chrome-stable" "google-chrome"
<*> getBinaryViaNixPackage @"chromedriver" "chromedriver"
<*> pure optChromeNoSandbox
UseFirefox ->
BrowserDependenciesFirefox <$> getBinaryViaNixPackage @"firefox" "firefox"
<*> getBinaryViaNixPackage @"geckodriver" "geckodriver"
debug [i|Got browser dependencies: #{deps}|]
return deps