From 809c9ea997bc1ced4a1427a733bb002258980a45 Mon Sep 17 00:00:00 2001 From: thomasjm Date: Mon, 10 Jun 2024 20:42:54 -0700 Subject: [PATCH] A little more tidying in startWebDriver --- .../WebDriver/Internal/BrowserDependencies.hs | 41 ++++++++++++++++++- .../WebDriver/Internal/StartWebDriver.hs | 23 +---------- 2 files changed, 42 insertions(+), 22 deletions(-) diff --git a/sandwich-webdriver/src/Test/Sandwich/WebDriver/Internal/BrowserDependencies.hs b/sandwich-webdriver/src/Test/Sandwich/WebDriver/Internal/BrowserDependencies.hs index 95b5921..9df50e6 100644 --- a/sandwich-webdriver/src/Test/Sandwich/WebDriver/Internal/BrowserDependencies.hs +++ b/sandwich-webdriver/src/Test/Sandwich/WebDriver/Internal/BrowserDependencies.hs @@ -5,12 +5,28 @@ {-# LANGUAGE TypeApplications #-} {-# 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.Logger import Control.Monad.Reader import Data.String.Interpolate +import System.FilePath import Test.Sandwich import Test.Sandwich.Contexts.Files 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.Selenium.Types import Test.Sandwich.WebDriver.Internal.Util +import qualified Test.WebDriver as W -- * All dependencies @@ -109,3 +126,25 @@ introduceBrowserDependenciesViaNix = introduce "Introduce browser dependencies" <*> getBinaryViaNixPackage @"geckodriver" "geckodriver" debug [i|Got browser dependencies: #{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') diff --git a/sandwich-webdriver/src/Test/Sandwich/WebDriver/Internal/StartWebDriver.hs b/sandwich-webdriver/src/Test/Sandwich/WebDriver/Internal/StartWebDriver.hs index 43c21f1..e15ab2a 100644 --- a/sandwich-webdriver/src/Test/Sandwich/WebDriver/Internal/StartWebDriver.hs +++ b/sandwich-webdriver/src/Test/Sandwich/WebDriver/Internal/StartWebDriver.hs @@ -65,27 +65,8 @@ startWebDriver wdOptions@(WdOptions {capabilities=capabilities'', ..}) runRoot = -- Get selenium, driver args, and capabilities with browser paths applied java <- askFile @"java" seleniumPath <- askFile @"selenium.jar" - (driverArgs, 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') + (driverArgs, capabilities') <- fillInCapabilitiesAndGetDriverArgs webdriverRoot capabilities'' + (maybeXvfbSession, javaEnv) <- case runMode of #ifndef mingw32_HOST_OS