module Test.Selenium.Interactive (
start,
stop,
($$),
) where
import Control.Monad.Error
import Data.Maybe
import Network.BSD
import Network.URI
import Test.Selenium.Server
infixr 0 $$
start :: String -> IO (Selenium a -> IO (Either String a))
start url = do
host <- getHostName
start' Firefox host url
start' :: Browser -> HostName -> String
-> IO (Selenium a -> IO (Either String a))
start' browser host url = do
let uri = fromJust (parseURI url)
sel = mkSeleniumRCSession host browser uri
result <- runSelenium sel startSelenium
return $ runSelenium (either (\msg -> error msg) id result)
($$) :: Show t => (Selenium () -> r)
-> Selenium t -> r
($$) s c = s $ do r <- c; liftIO (putStrLn $ "Result: " ++ show r); return ()
stop :: Selenium ()
stop = stopSelenium