-
-
Notifications
You must be signed in to change notification settings - Fork 51
/
example.cljs
54 lines (45 loc) · 1.47 KB
/
example.cljs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
(ns example
{:clj-kondo/config '{:lint-as {promesa.core/let clojure.core/let
example/defp clojure.core/def}}}
(:require
["puppeteer$default" :as puppeteer]
[clojure.string :as str]
[clojure.test :as t :refer [deftest is async]]
[promesa.core :as p]))
(def continue (atom nil))
(defn pause []
(js/Promise. (fn [resolve]
(reset! continue resolve))))
(deftest browser-test
(async done
(p/let [browser (.launch puppeteer #js {:headless false})
page (.newPage browser)
_ (.goto page "https://clojure.org")
_ (-> (.screenshot page #js{:path "screenshot.png"})
(.catch #(js/console.log %)))
content (.content page)
;; uncomment to save content to variable for inspection
;; _ (def c content)
;; uncomment to pause execution to inspect state in browser
;; _ (pause)
]
(is (str/includes? content "clojure"))
(.close browser)
(done))))
(t/run-tests 'example)
;;;; Scratch
(comment
(browser-test)
;; evaluate to continue after pause
(@continue)
;; inspect content captured during test
;; (subs c 0 10)
(defmacro defp
"Define var when promise is resolved"
[binding expr]
`(-> ~expr (.then (fn [val]
(def ~binding val)))))
(defp browser (.launch puppeteer #js {:headless false}))
(defp page (.newPage browser))
(.goto page "https://clojure.org")
)