webdriver-precore-0.2.0.0: test/BiDi/Demos/OtherDemos.hs
module BiDi.Demos.OtherDemos where
import BiDi.Actions (BiDiActions (..))
import BiDi.DemoUtils
import Config (Config)
import ConfigLoader (loadConfig)
import Data.Text (Text)
import IOUtils (DemoActions (..))
import TestData (navigation1Url, navigation2Url)
import BiDi.BiDiUrl (parseUrl)
import WebDriverPreCore.BiDi.Protocol
( KnownSubscriptionType (..),
Navigate (..),
ReadinessState (..),
)
import Utils (txt)
import Prelude hiding (log, putStrLn)
-- low level demos - TODO turn into tests ---
-- >>> parseUrlDemo
-- "Right\n MkBiDiUrl\n { host = \"127.0.0.1\"\n , port = 9222\n , path = \"/session/e43698d9-b02a-4284-a936-12041deb3552\"\n }"
parseUrlDemo :: Text
parseUrlDemo = txt $ parseUrl "ws://127.0.0.1:9222/session/e43698d9-b02a-4284-a936-12041deb3552"
-- Check expected errors when rigged to fail
-- >>> evalFail getFailDemo
getFailDemo :: Config -> IO ()
getFailDemo c = expectErrorText "getfail" "Forced failure for testing: get" $ runDemoFail' c 0 2 0 failDemo
-- >>> evalFail sendFailDemo
sendFailDemo :: Config -> IO ()
sendFailDemo c = expectErrorText "sendfail" "Forced failure for testing: send" $ runDemoFail' c 2 0 0 failDemo
-- >>> evalFail eventFailDemo
eventFailDemo :: Config -> IO ()
eventFailDemo c = expectErrorText "eventfail" "Forced failure for testing: eventhandler (call #2)" $ runDemoFail' c 0 0 2 failDemo
evalFail :: (Config -> IO ()) -> IO ()
evalFail failAction = do
c <- loadConfig
failAction c
-- >>> runDemo dummyDemo
failDemo :: BiDiDemo
failDemo =
demo "Fail demo" action
where
action :: DemoActions -> BiDiActions -> IO ()
action utils@MkDemoActions {pause, logTxt, logShow, timeLimitLog} bidi@MkBiDiActions {..} = do
bc <- rootContext utils bidi
logTxt "Subscribe to navigation started events"
(startedEventFired, waitStartedEventFired) <- timeLimitLog BrowsingContextNavigationStarted
subscribeBrowsingContextNavigationStarted startedEventFired
logTxt "Navigate to navigation1.html"
nav1 <- navigation1Url
navResult1 <- browsingContextNavigate $ MkNavigate {context = bc, url = nav1, wait = Just Complete}
logShow "Navigation result 1" navResult1
pause
logTxt "Navigate to navigation2.html"
nav2 <- navigation2Url
navResult2 <- browsingContextNavigate $ MkNavigate {context = bc, url = nav2, wait = Just Complete}
logShow "Navigation result 2" navResult2
pause
waitStartedEventFired