Bladeren bron

test(e2e): add logseq.e2e.locator

rcmerci 5 maanden geleden
bovenliggende
commit
d5d5694f78

+ 1 - 1
clj-e2e/dev/user.clj

@@ -18,7 +18,7 @@
 (reset! config/*port 3001)
 ;; show ui
 (reset! config/*headless false)
-(reset! config/*slow-mo 100)
+(reset! config/*slow-mo 50)
 
 (def *futures (atom {}))
 

+ 30 - 0
clj-e2e/src/logseq/e2e/locator.clj

@@ -0,0 +1,30 @@
+(ns logseq.e2e.locator
+  (:refer-clojure :exclude [or and filter])
+  (:require [wally.main :as w])
+  (:import (com.microsoft.playwright Locator$FilterOptions)))
+
+(defn or
+  "Return locator"
+  [q1 q2 & qs]
+  (let [locators (map w/-query (concat [q1 q2] qs))]
+    (reduce (fn [loc1 loc2] (.or loc1 loc2)) locators)))
+
+(defn and
+  "Return locator"
+  [q1 q2 & qs]
+  (let [locators (map w/-query (concat [q1 q2] qs))]
+    (reduce (fn [loc1 loc2] (.and loc1 loc2)) locators)))
+
+(defn- ->filter-options
+  [& {:keys [has has-text has-not has-not-text]}]
+  (cond-> (Locator$FilterOptions.)
+    has (.setHas (w/-query has))
+    has-not (.setHasNot (w/-query has-not))
+    has-text (.setHasText has-text)
+    has-not-text (.setHasNotText has-not-text)))
+
+(defn filter
+  "Return locator"
+  {:arglists '([q & {:keys [has has-text has-not has-not-text]}])}
+  [q & opts]
+  (.filter (w/-query q) (->filter-options opts)))

+ 4 - 5
clj-e2e/src/logseq/e2e/util.clj

@@ -3,6 +3,7 @@
   (:require [clojure.test :refer [is]]
             [logseq.e2e.assert :as assert]
             [logseq.e2e.keyboard :as k]
+            [logseq.e2e.locator :as loc]
             [wally.main :as w]
             [wally.repl :as repl])
   (:import (com.microsoft.playwright Locator$PressSequentiallyOptions
@@ -194,11 +195,9 @@
   (w/click (format "a.menu-link:has-text(\"%s\")" tag))
   ;; wait tag added on ui
   (assert/assert-is-visible
-   (-> (w/-query ".ls-block")
-       (.filter (.setHas (Locator$FilterOptions.)
-                         (w/-query ".editor-wrapper textarea")))
-       (.filter (.setHas (Locator$FilterOptions.)
-                         (w/-query (format ".block-tag :text('%s')" tag)))))))
+   (-> ".ls-block"
+       (loc/filter :has ".editor-wrapper textarea")
+       (loc/filter :has (format ".block-tag :text('%s')" tag)))))
 
 (defn -query-last
   [q]

+ 5 - 2
clj-e2e/test/logseq/e2e/commands_test.clj

@@ -8,6 +8,7 @@
    [logseq.e2e.block :as b]
    [logseq.e2e.fixtures :as fixtures]
    [logseq.e2e.keyboard :as k]
+   [logseq.e2e.locator :as loc]
    [logseq.e2e.util :as util]
    [wally.main :as w]
    [wally.repl :as repl]))
@@ -252,8 +253,10 @@
     (util/input "template 1")
     (k/enter)
     (doseq [text ["block 1" "block 2" "block 3"]]
-      (assert/assert-have-count (.or (w/-query (format ".ls-block .block-title-wrap:text('%s')" text))
-                                     (w/-query (format ".ls-block textarea:text('%s')" text))) 2))))
+      (assert/assert-have-count
+       (loc/or (format ".ls-block .block-title-wrap:text('%s')" text)
+               (format ".ls-block textarea:text('%s')" text))
+       2))))
 
 (deftest embed-html-test
   (testing "embed html"