@@ -15,6 +15,7 @@ import Control.Monad
1515import Control.Monad.Catch
1616import Control.Monad.Fix
1717import Control.Monad.IO.Class
18+import qualified Data.ByteString as BS
1819import Data.Foldable (traverse_)
1920import Data.IORef
2021import Data.Maybe (fromMaybe)
@@ -39,6 +40,7 @@ import qualified GHCJS.DOM.File as File
3940--import System.IO.Silently
4041import System.IO.Temp
4142import System.Directory
43+import System.Process
4244import qualified System.FilePath as FilePath
4345
4446import qualified GHCJS.DOM.EventM as EventM
@@ -52,8 +54,8 @@ import qualified Test.WebDriver as WD
5254testTimeLimit :: Int
5355testTimeLimit = 1 * 1000 * 1000
5456
55−chromeConfig :: WD.WDConfig
56−chromeConfig = WD.useBrowser (WD.chrome { WD.chromeBinary = Just "/run/current-system/sw/bin/chromium", WD.chromeOptions = ["--headless"]}) WD.defaultConfig
57+chromeConfig :: FilePath -> WD.WDConfig
58+chromeConfig chromePath = WD.useBrowser (WD.chrome { WD.chromeBinary = Just "/nix/store/hf9r4nmjsz03mb73c11gn4prdcf47sxa-chromium-69.0.3497.81/bin/chromium", WD.chromeOptions = ["--headless"]}) WD.defaultConfig
5759
5860-- TODO list
5961-- use only available ports
@@ -680,7 +682,12 @@ testWidget' beforeJS afterSwitchover bodyWidget = maybe (error "test timed out")
680682 -- hSilence to get rid of ConnectionClosed logs
681683 jsaddleWarp = forkIO $ Warp.runSettings settings application
682684 bracket jsaddleWarp killThread $ \_ -> do
683− WD.runSession chromeConfig . WD.finallyClose $ do
685+ (_, Just out, Just err, _) <- createProcess $ (shell "whereis chromium") { std_out = CreatePipe }
686+ whereisRes <- liftIO $ TE.decodeUtf8 <$> BS.hGetContents out
687+ let chromePath = case T.words whereisRes of
688+ _:path:_ -> path
689+ _ -> "/run/current-system/sw/bin/chromium" -- TODO: Need proper error if chrome not found
690+ WD.runSession (chromeConfig (T.unpack chromePath)) . WD.finallyClose $ do
684691 WD.openPage $ "http://localhost:" <> show port
685692 a <- beforeJS
686693 liftIO $ putMVar waitBeforeJS ()