quickcheck-webdriver-0.1.0.0: Test/QuickCheck/Monadic/WebDriver.hs
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE OverloadedStrings #-}
module Test.QuickCheck.Monadic.WebDriver
(
-- * Example
-- $example
) where
import Prelude
import Test.QuickCheck
import Test.QuickCheck.Property
import Test.QuickCheck.Monadic as QCM
import Test.WebDriver
import Data.Monoid ((<>))
import Control.Monad.IO.Class
-- |Patterned after `Test.QuickCheck.Monadic.monadicIO`.
monadicWD capabilities wd = monadic wdProperty wd
where runSesh = runSession defaultSession capabilities
wdProperty = ioProperty . runSesh
runIO :: IO a -> PropertyM WD a
runIO = QCM.run . liftIO
-- $example
-- > import Test.QuickCheck
-- > import Test.QuickCheck.Monadic (run, pick, assert)
-- > import Test.WebDriver
-- > prop_Example = monadicWD allCaps $ do
-- > pick $ oneof ("http://www.yesodweb.com", "http://snapframework.com/")
-- > run $ openPage url
-- > assert True
-- > runIO $ putStrLn $ "We've just evaluated a `Gen a` using `pick` and \
-- > \a `WD ()` using `run`, then asserted a that a \
-- > \property holds using `assert`."