on develop help sign in
Add support for using custom port in selenium-server
830a8fdLuigy Leon
reflex-dom-core/test/hydration.hs+19−10
@@ -63,11 +63,11 @@ chromeConfig fp = WD.useBrowser (WD.chrome { WD.chromeBinary = Just $ T.unpack f
63-- parallel (requires port fix)
63-- parallel (requires port fix)
64
64
65main :: IO ()
65main :: IO ()
66−main = withSeleniumServer $ \stopServer ->
66+main = withSeleniumServer $ \selenium ->
67− hspec (parallel tests) `finally` stopServer
67+ hspec (parallel (tests selenium)) `finally` _selenium_stopServer selenium
68
68
69−tests :: Spec
69+tests :: Selenium -> Spec
70−tests = do
70+tests selenium = do
71 describe "text" $ parallel $ do
71 describe "text" $ parallel $ do
72 it "works" $ do
72 it "works" $ do
73 testWidgetStatic (checkBodyText "hello world") $ do
73 testWidgetStatic (checkBodyText "hello world") $ do
@@ -598,19 +598,28 @@ tests = do
598 (traverse_ elementShouldBeRemoved)
598 (traverse_ elementShouldBeRemoved)
599 (el "span" $ prerender (text "One") (text "Two"))
599 (el "span" $ prerender (text "One") (text "Two"))
600
600
601+data Selenium = Selenium
602+ { _selenium_portNumber :: PortNumber
603+ , _selenium_stopServer :: IO ()
604+ }
605+
601−startSeleniumServer :: IO (IO ())
606+startSeleniumServer :: PortNumber -> IO (IO ())
602−startSeleniumServer = do
607+startSeleniumServer port = do
603− (_,_,_,ph) <- createProcess $ (proc "selenium-server" [])
608+ (_,_,_,ph) <- createProcess $ (proc "selenium-server" ["-port", show port])
604 { std_in = NoStream
609 { std_in = NoStream
605 , std_out = NoStream
610 , std_out = NoStream
606 }
611 }
607 return $ terminateProcess ph
612 return $ terminateProcess ph
608
613
609−withSeleniumServer :: (IO () -> IO ()) -> IO ()
614+withSeleniumServer :: (Selenium -> IO ()) -> IO ()
610withSeleniumServer f = do
615withSeleniumServer f = do
616+ let port = 4444 -- TODO port <- getFreePort
611− stopServer <- startSeleniumServer
617+ stopServer <- startSeleniumServer port
612 threadDelay $ 1000 * 1000 * 2 -- TODO poll or wait on a a signal to block on
618 threadDelay $ 1000 * 1000 * 2 -- TODO poll or wait on a a signal to block on
619+ f $ Selenium
620+ { _selenium_portNumber = port
613− f stopServer
621+ , _selenium_stopServer = stopServer
622+ }
614
623
615assertAttr :: WD.Element -> Text -> Maybe Text -> WD ()
624assertAttr :: WD.Element -> Text -> Maybe Text -> WD ()
616assertAttr e k v = liftIO . assertEqual "Incorrect attribute value" v =<< WD.attr e k
625assertAttr e k v = liftIO . assertEqual "Incorrect attribute value" v =<< WD.attr e k