|
@@ -1,21 +1,20 @@
|
|
|
(ns logseq.e2e.fixtures
|
|
(ns logseq.e2e.fixtures
|
|
|
- (:require [wally.main :as w]))
|
|
|
|
|
-
|
|
|
|
|
-(defonce *port (atom 3002))
|
|
|
|
|
-(defonce *headless (atom true))
|
|
|
|
|
|
|
+ (:require [wally.main :as w]
|
|
|
|
|
+ [logseq.e2e.config :as config]
|
|
|
|
|
+ [logseq.e2e.playwright-page :as pw-page]))
|
|
|
|
|
|
|
|
;; TODO: save trace
|
|
;; TODO: save trace
|
|
|
;; TODO: parallel support
|
|
;; TODO: parallel support
|
|
|
(defn open-page
|
|
(defn open-page
|
|
|
[f & {:keys [headless port]}]
|
|
[f & {:keys [headless port]}]
|
|
|
(w/with-page-open
|
|
(w/with-page-open
|
|
|
- (w/make-page {:headless (or headless @*headless)
|
|
|
|
|
|
|
+ (w/make-page {:headless (or headless @config/*headless)
|
|
|
:persistent false
|
|
:persistent false
|
|
|
:slow-mo 100
|
|
:slow-mo 100
|
|
|
;; Set `slow-mo` lower to find more flaky tests
|
|
;; Set `slow-mo` lower to find more flaky tests
|
|
|
;; :slow-mo 30
|
|
;; :slow-mo 30
|
|
|
})
|
|
})
|
|
|
- (w/navigate (str "http://localhost:" (or port @*port)))
|
|
|
|
|
|
|
+ (w/navigate (str "http://localhost:" (or port @config/*port)))
|
|
|
(f)))
|
|
(f)))
|
|
|
|
|
|
|
|
(def *page1 (atom nil))
|
|
(def *page1 (atom nil))
|
|
@@ -24,13 +23,13 @@
|
|
|
(defn open-2-pages
|
|
(defn open-2-pages
|
|
|
"Use `*page1` and `*page2` in `f`"
|
|
"Use `*page1` and `*page2` in `f`"
|
|
|
[f & {:keys [headless port]}]
|
|
[f & {:keys [headless port]}]
|
|
|
- (let [headless (or headless @*headless)
|
|
|
|
|
|
|
+ (let [headless (or headless @config/*headless)
|
|
|
page-opts {:headless headless
|
|
page-opts {:headless headless
|
|
|
:persistent false
|
|
:persistent false
|
|
|
:slow-mo 100}
|
|
:slow-mo 100}
|
|
|
p1 (w/make-page page-opts)
|
|
p1 (w/make-page page-opts)
|
|
|
p2 (w/make-page page-opts)
|
|
p2 (w/make-page page-opts)
|
|
|
- port' (or port @*port)]
|
|
|
|
|
|
|
+ port' (or port @config/*port)]
|
|
|
(run!
|
|
(run!
|
|
|
#(w/with-page %
|
|
#(w/with-page %
|
|
|
(w/navigate (str "http://localhost:" port')))
|
|
(w/navigate (str "http://localhost:" port')))
|
|
@@ -42,3 +41,18 @@
|
|
|
(f))
|
|
(f))
|
|
|
(w/with-page-open p1)
|
|
(w/with-page-open p1)
|
|
|
(w/with-page-open p2)))
|
|
(w/with-page-open p2)))
|
|
|
|
|
+
|
|
|
|
|
+(def ^:dynamic *pw-ctx* nil)
|
|
|
|
|
+(defn open-new-context
|
|
|
|
|
+ "create a new playwright-context in `*pw-ctx*`"
|
|
|
|
|
+ [f]
|
|
|
|
|
+ (let [page-opts {:headless false
|
|
|
|
|
+ :persistent false
|
|
|
|
|
+ :slow-mo 100}
|
|
|
|
|
+ p @(w/make-page page-opts)
|
|
|
|
|
+ ctx (.newContext (.browser (.context p)))]
|
|
|
|
|
+ ;; context for p is no longer needed
|
|
|
|
|
+ (.close (.context p))
|
|
|
|
|
+ (binding [*pw-ctx* ctx]
|
|
|
|
|
+ (f)
|
|
|
|
|
+ (pw-page/close-pw-ctx *pw-ctx*))))
|