Просмотр исходного кода

enhance: dev/user setup for clj e2e tests

Tienson Qin 6 месяцев назад
Родитель
Сommit
8d7654fd57
3 измененных файлов с 36 добавлено и 25 удалено
  1. 2 1
      clj-e2e/deps.edn
  2. 19 10
      clj-e2e/dev/user.clj
  3. 15 14
      clj-e2e/test/logseq/e2e/fixtures.clj

+ 2 - 1
clj-e2e/deps.edn

@@ -15,4 +15,5 @@
          :main-opts ["-m" "cognitect.test-runner"]
          :extra-deps {org.clojure/test.check {:mvn/version "1.1.1"}
                       io.github.cognitect-labs/test-runner
-                      {:git/tag "v0.5.1" :git/sha "dfb30dd"}}}}}
+                      {:git/tag "v0.5.1" :git/sha "dfb30dd"}}}
+  :dev {:extra-paths ["dev" "test"]}}}

+ 19 - 10
clj-e2e/src/logseq/e2e/repl.clj → clj-e2e/dev/user.clj

@@ -1,21 +1,27 @@
-(ns logseq.e2e.repl
+(ns user
   "fns used on repl"
   (:require [clojure.test :refer [run-tests run-test]]
             [logseq.e2e.util :as util]
             [wally.main :as w]
-            [wally.repl :as repl]))
+            [wally.repl :as repl]
+            [logseq.e2e.editor-test]
+            [logseq.e2e.outliner-test]
+            [logseq.e2e.rtc-basic-test]
+            [logseq.e2e.fixtures :as fixtures]))
+
+;; Use port 3001 for local testing
+(reset! fixtures/*port 3001)
+;; show ui
+(reset! fixtures/*headless false)
 
 (comment
 
   (future
-    (w/with-page-open
-      (w/make-page {:headless false
-                    :persistent false
-                    :slow-mo 20})
-      (w/navigate "http://localhost:3001")
-      (repl/pause)))
-
-  ;; You can put `(repl/pause)` in any test to pause the tests,
+    (fixtures/open-page
+     repl/pause
+     {:headless false}))
+
+;; You can put `(repl/pause)` in any test to pause the tests,
   ;; this allows us to continue experimenting with the current page.
   (repl/pause)
 
@@ -24,8 +30,11 @@
 
   ;; Run all the tests in specific ns with `future` to not block repl
   (future (run-tests 'logseq.e2e.editor-test))
+
   (future (run-tests 'logseq.e2e.outliner-test))
 
+  (future (run-tests 'logseq.e2e.rtc-basic-test))
+
   ;; Run specific test
   (future (run-test logseq.e2e.editor-test/commands-test))
 

+ 15 - 14
clj-e2e/test/logseq/e2e/fixtures.clj

@@ -1,20 +1,21 @@
 (ns logseq.e2e.fixtures
   (:require [wally.main :as w]))
 
+(defonce *port (atom 3002))
+(defonce *headless (atom true))
+
 ;; TODO: save trace
 ;; TODO: parallel support
 (defn open-page
-  [f & {:keys [headless port]
-        :or {headless true
-             port 3002}}]
+  [f & {:keys [headless port]}]
   (w/with-page-open
-    (w/make-page {:headless headless
+    (w/make-page {:headless (or headless @*headless)
                   :persistent false
                   :slow-mo 100
                   ;; Set `slow-mo` lower to find more flaky tests
                   ;; :slow-mo 30
                   })
-    (w/navigate (str "http://localhost:" port))
+    (w/navigate (str "http://localhost:" (or port @*port)))
     (f)))
 
 (def *page1 (atom nil))
@@ -23,17 +24,17 @@
 (defn open-2-pages
   "Use `*page1` and `*page2` in `f`"
   [f & {:keys [headless port]
-        :or {headless true
-             port 3002}}]
-  (let [p1 (w/make-page {:headless headless
-                         :persistent false
-                         :slow-mo 100})
-        p2 (w/make-page {:headless headless
-                         :persistent false
-                         :slow-mo 100})]
+        :or {headless true}}]
+  (let [headless (or headless @*headless)
+        page-opts {:headless headless
+                   :persistent false
+                   :slow-mo 100}
+        p1 (w/make-page page-opts)
+        p2 (w/make-page page-opts)
+        port' (or port @*port)]
     (run!
      #(w/with-page %
-        (w/navigate (str "http://localhost:" port)))
+        (w/navigate (str "http://localhost:" port')))
      [p1 p2])
 
     (reset! *page1 p1)