webdriver-0.13.0.0: tests/Spec/Navigation.hs
module Spec.Navigation where
import Data.String.Interpolate
import Data.Text (Text)
import qualified Data.Text as T
import Network.URI
import Test.Sandwich
import Test.WebDriver.Commands
import Test.WebDriver.Types
import TestLib.Contexts.Session
import TestLib.Contexts.StaticServer
import TestLib.Types
tests :: SessionSpec
tests = introduceSession $ describe "Navigation" $ before "Open test page" openSimpleTestPage $ do
it "getCurrentURL / getTitle" $ do
urlShouldEndWith "test.html"
getTitle >>= (`shouldBe` "Test page")
it "openPage / getCurrentURL / getTitle" $ do
url <- parseAbsoluteURI <$> getCurrentURL >>= \case
Nothing -> expectationFailure [i|Couldn't parse URI|]
Just u -> pure u
openPage $ show (url { uriPath = "/test2.html" })
urlShouldEndWith "test2.html"
getTitle >>= (`shouldBe` "Test page 2")
it "back" $ do
back
urlShouldEndWith "test.html"
it "forward" $ do
forward
urlShouldEndWith "test2.html"
it "refresh" $ do
refresh
it "getTitle" $ do
getTitle >>= (`shouldBe` "Test page 2")
urlShouldEndWith :: (WebDriver m) => Text -> m ()
urlShouldEndWith suffix = do
url <- getCurrentURL
(suffix `T.isSuffixOf` (T.pack url)) `shouldBe` True