Browse Source

wip: e2e parallel tests

Tienson Qin 6 months ago
parent
commit
9704256d8b

+ 1 - 1
clj-e2e/bb.edn

@@ -13,7 +13,7 @@
   prn {:task (clojure "-X clojure.core/prn" cli-opts)}
 
   test {:task (do
-                (clojure "-T:build test")
+                (clojure "-X:eftest")
                 (System/exit 0))}
 
   -dev {:depends [serve prn test]}

+ 5 - 4
clj-e2e/build.clj

@@ -6,13 +6,14 @@
 (defn test "Run all the tests."
   [_opts]
   (println "\nRunning tests...")
-  (let [basis    (b/create-basis {:aliases [:test]})
-        combined (t/combine-aliases basis [:test])
+  (let [basis    (b/create-basis {:aliases [:eftest]})
+        combined (t/combine-aliases basis [:eftest])
         cmds     (b/java-command
                   {:basis basis
                    :java-opts (:jvm-opts combined)
-                   :main      'clojure.main
-                   :main-args ["-m" "cognitect.test-runner"]})
+                   :main      'logseq.e2e.core
+                   ;; :main-args ["-m" "cognitect.test-runner"]
+                   })
         {:keys [exit]} (b/process cmds)]
     (when-not (zero? exit)
       (throw (ex-info "Tests failed" {})))))

+ 6 - 2
clj-e2e/deps.edn

@@ -2,7 +2,7 @@
  :deps {org.clojure/clojure {:mvn/version "1.12.0"}
         ;; io.github.pfeodrippe/wally {:local/root "../../../wally"}
         io.github.pfeodrippe/wally {:git/url "https://github.com/logseq/wally"
-                                    :sha "80ea665c75704a8ca80cb22caeaec3ae6f39ffdb"}
+                                    :sha "1fce69d261e7ee1e609e59a8cb802fe90fc23c08"}
         ;; io.github.zmedelis/bosquet {:mvn/version "2025.03.28"}
         org.clj-commons/claypoole          {:mvn/version "1.2.2"}
         clj-time/clj-time                  {:mvn/version "0.15.2"}}
@@ -17,4 +17,8 @@
          :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"}}}
-  :dev {:extra-paths ["dev" "test"]}}}
+  :eftest {:extra-deps {eftest/eftest {:mvn/version "0.6.0"}}
+           :extra-paths ["test"]
+           :exec-fn logseq.e2e.core/-main}
+  :dev {:extra-paths ["dev" "test"]
+        :extra-deps {eftest/eftest {:mvn/version "0.6.0"}}}}}

+ 8 - 5
clj-e2e/dev/user.clj

@@ -1,6 +1,7 @@
 (ns user
   "fns used on repl"
   (:require [clojure.test :refer [run-tests run-test]]
+            [eftest.runner :as eftest]
             [logseq.e2e.block :as b]
             [logseq.e2e.commands-test]
             [logseq.e2e.config :as config]
@@ -83,11 +84,13 @@
              'logseq.e2e.outliner-test
              'logseq.e2e.rtc-basic-test)
 
-  (do
-    (reset! config/*headless true)
-    (reset! config/*slow-mo 50)
-    (dotimes [i 5]
-      (run-multi-tabs-test)))
+  (time
+   (do
+     (reset! config/*headless true)
+     (reset! config/*slow-mo 50)
+     (eftest/run-tests (eftest/find-tests "test") {:multithread? :namespaces})
+     (dotimes [i 5]
+      (run-multi-tabs-test))))
 
   ;;
   )

+ 14 - 0
clj-e2e/src/logseq/e2e/core.clj

@@ -0,0 +1,14 @@
+(ns logseq.e2e.core
+  (:require [eftest.runner :as eftest]))
+
+(defn -main
+  [& _args]
+  (println "\nRunning tests...")
+  (let [{:keys [fail error]} (eftest/run-tests (eftest/find-tests "test") {:multithread? :namespaces})
+        exit-code (cond
+                    (and (pos? fail)
+                         (pos? error)) 30
+                    (pos? error)       20
+                    (pos? fail)        10
+                    :else              0)]
+    (System/exit exit-code)))

+ 2 - 2
clj-e2e/src/logseq/e2e/util.clj

@@ -151,8 +151,8 @@
       :or {username "e2etest"
            password "Logseq-e2e"}}]
   (w/eval-js "localStorage.setItem(\"login-enabled\",true);")
-  (w/click "button[title=\"More\"]")
-  (w/click "div:text(\"Login\")")
+  (w/click "button.toolbar-dots-btn")
+  (w/click (w/get-by-text "Login"))
   (input username)
   (k/tab)
   (input password)

+ 1 - 2
clj-e2e/test/logseq/e2e/rtc_basic_test.clj

@@ -8,8 +8,7 @@
    [logseq.e2e.page :as page]
    [logseq.e2e.rtc :as rtc]
    [logseq.e2e.util :as util]
-   [wally.main :as w]
-   [wally.repl :as repl]))
+   [wally.main :as w]))
 
 (use-fixtures :once fixtures/open-2-pages)