module Test.Selenium.HUnit (
runSeleniumTestsTT,
runSeleniumTestsBare
) where
import Control.Monad.Reader
import Test.HUnit
import Test.Selenium.Server
mkSeleniumTest :: Selenium () -> SeleniumRCSession -> Test
mkSeleniumTest body sel = TestCase $ do
result <- runSelenium sel body
either (\msg -> assertFailure msg) (\_ -> return ()) result
runSeleniumTestsTT :: [(String, Selenium ())] -> Selenium Counts
runSeleniumTestsTT tests = do
sel <- ask
liftIO $ runTestTT $ TestList $
map (\(name, tst) -> name ~: mkSeleniumTest tst sel) tests
runSeleniumTestsBare :: [(String, Selenium ())] -> Selenium ()
runSeleniumTestsBare tests = mapM_ runTestBare tests
where runTestBare :: (String, Selenium ()) -> Selenium ()
runTestBare (name, body) = do liftIO $ putStr (name ++ spaces name)
body
liftIO $ putStrLn "[OK]"
maxLen = maximum (map (length . fst) tests)
spaces name = replicate (maxLen length name + 2) ' '