A little more tidying in startWebDriver

This commit is contained in:
thomasjm 2024-06-10 20:42:54 -07:00
parent b001342c1f
commit 809c9ea997
2 changed files with 42 additions and 22 deletions

View File

@ -5,12 +5,28 @@
{-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeOperators #-} {-# LANGUAGE TypeOperators #-}
module Test.Sandwich.WebDriver.Internal.BrowserDependencies where module Test.Sandwich.WebDriver.Internal.BrowserDependencies (
WebDriverDependencies(..)
, BrowserDependenciesSpec(..)
, defaultWebDriverDependencies
, nixFirefoxWebDriverDependencies
, nixChromeWebDriverDependencies
, BrowserDependencies(..)
, browserDependencies
, HasBrowserDependencies
, getBrowserDependencies
, introduceBrowserDependenciesViaNix
, fillInCapabilitiesAndGetDriverArgs
) where
import Control.Monad.IO.Unlift import Control.Monad.IO.Unlift
import Control.Monad.Logger import Control.Monad.Logger
import Control.Monad.Reader import Control.Monad.Reader
import Data.String.Interpolate import Data.String.Interpolate
import System.FilePath
import Test.Sandwich import Test.Sandwich
import Test.Sandwich.Contexts.Files import Test.Sandwich.Contexts.Files
import Test.Sandwich.Contexts.Nix import Test.Sandwich.Contexts.Nix
@ -19,6 +35,7 @@ import Test.Sandwich.WebDriver.Internal.Binaries.Firefox
import Test.Sandwich.WebDriver.Internal.Binaries.Firefox.Types import Test.Sandwich.WebDriver.Internal.Binaries.Firefox.Types
import Test.Sandwich.WebDriver.Internal.Binaries.Selenium.Types import Test.Sandwich.WebDriver.Internal.Binaries.Selenium.Types
import Test.Sandwich.WebDriver.Internal.Util import Test.Sandwich.WebDriver.Internal.Util
import qualified Test.WebDriver as W
-- * All dependencies -- * All dependencies
@ -109,3 +126,25 @@ introduceBrowserDependenciesViaNix = introduce "Introduce browser dependencies"
<*> getBinaryViaNixPackage @"geckodriver" "geckodriver" <*> getBinaryViaNixPackage @"geckodriver" "geckodriver"
debug [i|Got browser dependencies: #{deps}|] debug [i|Got browser dependencies: #{deps}|]
return deps return deps
fillInCapabilitiesAndGetDriverArgs webdriverRoot capabilities'' = getContext browserDependencies >>= \case
BrowserDependenciesFirefox {..} -> do
let args = [
[i|-Dwebdriver.gecko.driver=#{browserDependenciesFirefoxGeckodriver}|]
-- , [i|-Dwebdriver.gecko.logfile=#{webdriverRoot </> "geckodriver.log"}|]
-- , [i|-Dwebdriver.gecko.verboseLogging=true|]
]
let capabilities' = capabilities'' {
W.browser = W.firefox { W.ffBinary = Just browserDependenciesFirefoxFirefox }
}
return (args, capabilities')
BrowserDependenciesChrome {..} -> do
let args = [
[i|-Dwebdriver.chrome.driver=#{browserDependenciesChromeChromedriver}|]
, [i|-Dwebdriver.chrome.logfile=#{webdriverRoot </> "chromedriver.log"}|]
, [i|-Dwebdriver.chrome.verboseLogging=true|]
]
let capabilities' = capabilities'' {
W.browser = W.chrome { W.chromeBinary = Just browserDependenciesChromeChrome }
}
return (args, capabilities')

View File

@ -65,27 +65,8 @@ startWebDriver wdOptions@(WdOptions {capabilities=capabilities'', ..}) runRoot =
-- Get selenium, driver args, and capabilities with browser paths applied -- Get selenium, driver args, and capabilities with browser paths applied
java <- askFile @"java" java <- askFile @"java"
seleniumPath <- askFile @"selenium.jar" seleniumPath <- askFile @"selenium.jar"
(driverArgs, capabilities') <- getContext browserDependencies >>= \case (driverArgs, capabilities') <- fillInCapabilitiesAndGetDriverArgs webdriverRoot capabilities''
BrowserDependenciesFirefox {..} -> do
let args = [
[i|-Dwebdriver.gecko.driver=#{browserDependenciesFirefoxGeckodriver}|]
-- , [i|-Dwebdriver.gecko.logfile=#{webdriverRoot </> "geckodriver.log"}|]
-- , [i|-Dwebdriver.gecko.verboseLogging=true|]
]
let capabilities' = capabilities'' {
W.browser = W.firefox { W.ffBinary = Just browserDependenciesFirefoxFirefox }
}
return (args, capabilities')
BrowserDependenciesChrome {..} -> do
let args = [
[i|-Dwebdriver.chrome.driver=#{browserDependenciesChromeChromedriver}|]
, [i|-Dwebdriver.chrome.logfile=#{webdriverRoot </> "chromedriver.log"}|]
, [i|-Dwebdriver.chrome.verboseLogging=true|]
]
let capabilities' = capabilities'' {
W.browser = W.chrome { W.chromeBinary = Just browserDependenciesChromeChrome }
}
return (args, capabilities')
(maybeXvfbSession, javaEnv) <- case runMode of (maybeXvfbSession, javaEnv) <- case runMode of
#ifndef mingw32_HOST_OS #ifndef mingw32_HOST_OS