on develop help sign in
wip: start selenium server before running hydration tests

TODO - Properly shudown selenium server - Something better than threadDelay to ensure server has loaded

commit7df71459902603b5ba20f2221b5572233a083932 authorLuigy Leon <luigy.leon@obsidian.systems> dateTue 4 Dec 2018, 13:33 (8 years ago) parentd8ef9ff
3 files changed+15−3
reflex-dom-core/default.nix+2−1 reflex-dom-core/reflex-dom-core.cabal+2−1 reflex-dom-core/test/hydration.hs+11−1
reflex-dom-core/default.nix+2−1
@@ -7,7 +7,7 @@
77, process, random, ref-tf, reflex, semigroups, silently, stdenv
88, stm, template-haskell, temporary, text, these, transformers, unix
99, wai, wai-websockets, warp, webdriver, websockets, zenc
10−, iproute, chromium, hashable
10+, iproute, chromium, hashable, selenium-server-standalone
1111}:
1212let addGcTestDepends = drv: if stdenv.system != "x86_64-linux" then drv else drv // {
1313 testHaskellDepends = (drv.testHaskellDepends or []) ++ [ temporary jsaddle-warp process linux-namespaces ];
@@ -39,6 +39,7 @@ in mkDerivation (addGcTestDepends {
3939 # Show some output while running tests, so we might notice what's wrong
4040 testTarget = "--show-details=streaming";
4141
42+ testSystemDepends = [ selenium-server-standalone ];
4243 testHaskellDepends = [
4344 aeson base bytestring containers exceptions ghcjs-dom hlint hspec
4445 http-types HUnit jsaddle jsaddle-warp linux-namespaces process
reflex-dom-core/reflex-dom-core.cabal+2−1
@@ -168,6 +168,7 @@ test-suite hydration
168168 , random
169169 , reflex == 0.5.*
170170 , reflex-dom-core
171+ , process
171172 , silently
172173 , temporary
173174 , text
@@ -177,7 +178,7 @@ test-suite hydration
177178 , webdriver
178179 , websockets
179180 hs-source-dirs: test
180− ghc-options: -rtsopts -with-rtsopts=-T -Wall -fwarn-tabs -funbox-strict-fields -O2 -ferror-spans
181+ ghc-options: -threaded -rtsopts -with-rtsopts=-T -Wall -fwarn-tabs -funbox-strict-fields -O2 -ferror-spans
181182 ghc-prof-options: -fprof-auto -optP-DPROFILING
182183 main-is: hydration.hs
183184 type: exitcode-stdio-1.0
reflex-dom-core/test/hydration.hs+11−1
@@ -27,6 +27,7 @@ import Network.Wai
2727import Network.WebSockets
2828import Reflex.Dom.Core
2929import Reflex.Dom.Builder.Immediate (GhcjsDomSpace)
30+import System.Process
3031import System.Random
3132import System.Timeout
3233import Test.Hspec
@@ -59,7 +60,7 @@ chromeConfig = WD.useBrowser (WD.chrome { WD.chromeBinary = Just "/run/current-s
5960-- parallel (requires port fix)
6061
6162main :: IO ()
62−main = hspec $ parallel $ do
63+main = hspec $ parallel $ beforeAll startSeleniumServer $ do
6364
6465 describe "text" $ parallel $ do
6566 it "works" $ do
@@ -591,6 +592,15 @@ main = hspec $ parallel $ do
591592 (traverse_ elementShouldBeRemoved)
592593 (el "span" $ prerender (text "One") (text "Two"))
593594
595+startSeleniumServer :: IO ()
596+startSeleniumServer = do
597+ (_,_,_,ph) <- createProcess $ (proc "selenium-server" [])
598+ { std_in = NoStream
599+ , std_out = NoStream
600+ }
601+ _ <- forkIO $ print =<< waitForProcess ph
602+ threadDelay $ 1000 * 1000 * 2 -- TODO poll or wait on a a signal to block on
603+
594604assertAttr :: WD.Element -> Text -> Maybe Text -> WD ()
595605assertAttr e k v = liftIO . assertEqual "Incorrect attribute value" v =<< WD.attr e k
596606