@@ -0,0 +1,67 @@
5+import Data.Array as Array
6+import Data.Foldable (for_)
7+import Data.Newtype (unwrap)
9+import Effect.Aff (Aff, launchAff_)
10+import Effect.Class (liftEffect)
11+import Effect.Console as Console
12+import Foreign (Foreign)
13+import Foreign as Foreign
14+import Node.FS.Sync (realpath)
15+import Test.Unit.Assert as Assert
21+ path <- liftEffect $ realpath "."
23+ let indexHTML = T.URL $ "file://" <> path <> "/generated-docs/html/index.html"
24+ prim = T.URL $ "file://" <> path <> "/generated-docs/html/Prim.html"
25+ docsSearch = T.URL $ "file://" <> path <> "/generated-docs/html/Docs.Search.App.html"
27+ for_ [ indexHTML, prim, docsSearch ] \url -> do
28+ withPage url \page -> do
29+ void $ T.pageWaitForSelector (T.Selector "#group-modules__label") { timeout: 10000 } page
30+ log $ "has module grouping: " <> unwrap url
32+ withPage url \page -> do
33+ T.keyboardPress (T.KeyboardKey "s") {} page
34+ void $ T.keyboardType "slice" {} page
35+ T.keyboardPress (T.KeyboardKey "Enter") {} page
36+ void $ T.pageWaitForSelector (T.Selector ".result__actions__item") { timeout: 10000 } page
37+ log $ "has working search field: " <> unwrap url
39+ withPage url \page -> do
40+ T.keyboardPress (T.KeyboardKey "s") {} page
41+ void $ T.keyboardType "a -> b" {} page
42+ T.keyboardPress (T.KeyboardKey "Enter") {} page
43+ void $ T.pageWaitForSelector (T.Selector ".result__actions__item") { timeout: 10000 } page
44+ arr <- readStringArray <$> T.unsafeEvaluateStringFunction getResultTitlesCode page
45+ Assert.assert "resulting array contains unsafeCoerce" (Array.elem "unsafeCoerce" arr)
46+ log $ "is able to find unsafeCoerce by type: " <> unwrap url
48+ withPage (T.URL $ unwrap url <> "#search:unsafeCoerce") \page -> do
49+ void $ T.pageWaitForSelector (T.Selector ".result__actions__item") { timeout: 10000 } page
50+ arr <- readStringArray <$> T.unsafeEvaluateStringFunction getResultTitlesCode page
51+ Assert.assert "resulting array contains unsafeCoerce" (Array.elem "unsafeCoerce" arr)
52+ log $ "can read URI hash: " <> unwrap url
55+ log = liftEffect <<< Console.log
56+ getResultTitlesCode = "[].map.call(document.querySelectorAll('.result__title'), el => el.textContent)"
57+ readStringArray :: Foreign -> Array String
58+ readStringArray = Foreign.unsafeFromForeign
61+withPage :: forall a. T.URL -> (T.Page -> Aff a) -> Aff Unit
63+ browser <- T.launch {}
64+ page <- T.newPage browser