Kaynağa Gözat

test(e2e): split ns logseq.e2e.block

rcmerci 8 ay önce
ebeveyn
işleme
b8c53fc6e5

+ 6 - 1
clj-e2e/src/logseq/e2e/assert.clj

@@ -5,8 +5,9 @@
 (def assert-that PlaywrightAssertions/assertThat)
 
 (defn assert-is-visible
+  "Multiple elements may match `q`, check and wait for the first element to be visible."
   [q]
-  (-> (w/-query q) assert-that .isVisible)
+  (-> q w/query first assert-that .isVisible)
   true)
 
 (defn assert-is-hidden
@@ -23,3 +24,7 @@
   (assert-is-hidden ".selection-action-bar")
   (assert-is-visible "#search-button")
   true)
+
+(defn assert-graph-loaded?
+  []
+  (assert-is-visible "span.block-title-wrap"))

+ 41 - 0
clj-e2e/src/logseq/e2e/block.clj

@@ -0,0 +1,41 @@
+(ns logseq.e2e.block
+  (:require [logseq.e2e.assert :as assert]
+            [logseq.e2e.keyboard :as k]
+            [logseq.e2e.util :as util]
+            [wally.main :as w]
+            [clojure.string :as string]))
+
+(defn open-last-block
+  []
+  (util/double-esc)
+  (assert/assert-in-normal-mode?)
+  (w/click (last (w/query ".ls-page-blocks .ls-block .block-content"))))
+
+(defn new-block
+  [title]
+  (k/enter)
+  (util/input title))
+
+(defn save-block
+  [text]
+  (util/input text))
+
+(defn delete-blocks
+  "Delete the current block if in editing mode, otherwise, delete all the selected blocks."
+  []
+  (let [editor (util/get-editor)]
+    (when editor (util/exit-edit))
+    (k/backspace)))
+
+;; TODO: support tree
+(defn new-blocks
+  [titles]
+  (open-last-block)
+  (let [value (util/get-edit-content)]
+    (if (string/blank? value)           ; empty block
+      (do
+        (save-block (first titles))
+        (doseq [title (rest titles)]
+          (new-block title)))
+      (doseq [title titles]
+        (new-block title)))))

+ 16 - 5
clj-e2e/src/logseq/e2e/graph.clj

@@ -1,11 +1,17 @@
 (ns logseq.e2e.graph
-  (:require [logseq.e2e.util :as util]
+  (:require [logseq.e2e.assert :as assert]
+            [logseq.e2e.util :as util]
             [wally.main :as w]))
 
 (defn- refresh-all-remote-graphs
   []
   (w/click "span:text(\"Refresh\")"))
 
+(defn goto-all-graphs
+  []
+  (util/search "go to all graphs")
+  (w/click (w/get-by-label "Go to all graphs")))
+
 (defn new-graph
   [graph-name enable-sync?]
   (util/search "add a db graph")
@@ -21,14 +27,19 @@
 
 (defn wait-for-remote-graph
   [graph-name]
-  (util/search "go to all graphs")
-  (w/click (w/get-by-label "Go to all graphs"))
+  (goto-all-graphs)
   (util/repeat-until-visible 5
-                             (format "div[aria-label='e2e %s']" graph-name)
+                             (format "div[aria-label='e2e logseq_db_%s']" graph-name)
                              refresh-all-remote-graphs))
 
 (defn remove-remote-graph
   [graph-name]
   (wait-for-remote-graph graph-name)
-  (w/click (format "div[aria-label='e2e %s'] a:has-text(\"Remove (server)\")" graph-name))
+  (w/click (format "div[aria-label='e2e logseq_db_%s'] a:has-text(\"Remove (server)\")" graph-name))
   (w/click "div[role='alertdialog'] button:text('ok')"))
+
+(defn switch-graph
+  [to-graph-name]
+  (goto-all-graphs)
+  (w/click (format "div[aria-label='e2e logseq_db_%1$s'] span:text('%1$s')" to-graph-name))
+  (assert/assert-graph-loaded?))

+ 3 - 2
clj-e2e/src/logseq/e2e/playwright_page.clj

@@ -1,6 +1,7 @@
 (ns logseq.e2e.playwright-page
   "operations on playwright pages."
-  (:require [logseq.e2e.config :as config]
+  (:require [logseq.e2e.assert :as assert]
+            [logseq.e2e.config :as config]
             [wally.main :as w]))
 
 (defn get-pages
@@ -16,7 +17,7 @@
         (.navigate page url)
         ;; wait the demo graph loaded
         (w/with-page page
-          (w/wait-for "span.block-title-wrap"))))))
+          (assert/assert-graph-loaded?))))))
 
 (defn close-pages
   [pages]

+ 1 - 37
clj-e2e/src/logseq/e2e/util.clj

@@ -1,7 +1,6 @@
 (ns logseq.e2e.util
   (:refer-clojure :exclude [type])
-  (:require [clojure.string :as string]
-            [clojure.test :refer [is]]
+  (:require [clojure.test :refer [is]]
             [logseq.e2e.assert :as assert]
             [logseq.e2e.keyboard :as k]
             [wally.main :as w]
@@ -87,26 +86,10 @@
   []
   (count-elements ".ls-page-blocks .ls-block"))
 
-(defn new-block
-  [title]
-  (k/enter)
-  (input title))
-
-(defn save-block
-  [text]
-  (input text))
-
 (defn exit-edit
   []
   (k/esc))
 
-(defn delete-blocks
-  "Delete the current block if in editing mode, otherwise, delete all the selected blocks."
-  []
-  (let [editor (get-editor)]
-    (when editor (exit-edit))
-    (k/backspace)))
-
 (defn get-text
   [locator]
   (if (string? locator)
@@ -141,25 +124,6 @@
   []
   (indent-outdent false))
 
-(defn open-last-block
-  []
-  (double-esc)
-  (assert/assert-in-normal-mode?)
-  (w/click (last (w/query ".ls-page-blocks .ls-block .block-content"))))
-
-;; TODO: support tree
-(defn new-blocks
-  [titles]
-  (open-last-block)
-  (let [value (get-edit-content)]
-    (if (string/blank? value)           ; empty block
-      (do
-        (save-block (first titles))
-        (doseq [title (rest titles)]
-          (new-block title)))
-      (doseq [title titles]
-        (new-block title)))))
-
 (defn repeat-keyboard
   [n shortcut]
   (dotimes [_i n]

+ 4 - 3
clj-e2e/test/logseq/e2e/editor_test.clj

@@ -2,6 +2,7 @@
   (:require
    [clojure.string :as string]
    [clojure.test :refer [deftest testing is use-fixtures]]
+   [logseq.e2e.block :as b]
    [logseq.e2e.fixtures :as fixtures]
    [logseq.e2e.keyboard :as k]
    [logseq.e2e.util :as util]
@@ -12,7 +13,7 @@
 (deftest commands-test
   (testing "/command trigger popup"
     (util/new-page "Test")
-    (util/save-block "b1")
+    (b/save-block "b1")
     (util/type " /")
     (w/wait-for ".ui__popover-content")
     (is (some? (w/find-one-by-text "span" "Node reference")))
@@ -21,7 +22,7 @@
 
   (testing "Node reference"
     (testing "Page reference"
-      (util/new-block "/")
+      (b/new-block "/")
       (util/type "Node eferen")
       (w/wait-for ".ui__popover-content")
       (k/enter)
@@ -31,7 +32,7 @@
       (util/exit-edit)
       (is (= "Another page" (util/get-text "a.page-ref"))))
     (testing "Block reference"
-      (util/new-block "/")
+      (b/new-block "/")
       (util/type "Node eferen")
       (w/wait-for ".ui__popover-content")
       (k/enter)

+ 21 - 2
clj-e2e/test/logseq/e2e/multi_tabs_test.clj

@@ -1,6 +1,8 @@
 (ns logseq.e2e.multi-tabs-test
   (:require
    [clojure.test :refer [deftest testing is use-fixtures]]
+   [com.climate.claypoole :as cp]
+   [logseq.e2e.block :as b]
    [logseq.e2e.fixtures :as fixtures]
    [logseq.e2e.playwright-page :as pw-page]
    [logseq.e2e.util :as util]
@@ -9,6 +11,17 @@
 
 (use-fixtures :once fixtures/open-new-context)
 
+(defn- add-blocks-and-check-on-other-tabs
+  [new-blocks add-blocks-tab check-blocks-tabs]
+  (let [new-blocks-count (count new-blocks)]
+    (w/with-page add-blocks-tab
+      (b/new-blocks new-blocks))
+    (cp/prun!
+     (count check-blocks-tabs)
+     #(w/with-page %
+        (is (= (util/page-blocks-count) new-blocks-count)))
+     check-blocks-tabs)))
+
 (deftest multi-tabs-test
   (testing "edit on one tab, check all tab's blocks are same"
     (pw-page/open-pages fixtures/*pw-ctx* 3)
@@ -16,8 +29,14 @@
           blocks-to-add (map #(str "b" %) (range 10))]
       (is (= 3 (count pages)))
       (w/with-page p1
-        (util/new-blocks blocks-to-add))
+        (b/new-blocks blocks-to-add))
       (w/with-page p2
         (is (= (util/page-blocks-count) (count blocks-to-add))))
       (w/with-page p3
-        (is (= (util/page-blocks-count) (count blocks-to-add)))))))
+        (is (= (util/page-blocks-count) (count blocks-to-add))))))
+
+  ;; (testing "add new graphs, and do switching graphs on tabs"
+  ;;   (let [[p1 p2 p3 :as pages] (pw-page/get-pages fixtures/*pw-ctx*)]
+  ;;     (w/with-page p1
+  ;;       (repl/pause))))
+  )

+ 12 - 11
clj-e2e/test/logseq/e2e/outliner_test.clj

@@ -3,6 +3,7 @@
    [clojure.test :refer [deftest testing is use-fixtures]]
    [logseq.e2e.fixtures :as fixtures]
    [logseq.e2e.keyboard :as k]
+   [logseq.e2e.block :as b]
    [logseq.e2e.util :as util]
    [wally.main :as w]))
 
@@ -12,19 +13,19 @@
   (util/new-page "p1")
   ;; a page block and a child block
   (is (= 2 (util/blocks-count)))
-  (util/new-blocks ["first block" "second block"])
+  (b/new-blocks ["first block" "second block"])
   (util/exit-edit)
   (is (= 3 (util/blocks-count))))
 
 (deftest indent-and-outdent-test
   (util/new-page "p2")
-  (util/new-blocks ["b1" "b2"])
+  (b/new-blocks ["b1" "b2"])
   (testing "simple indent and outdent"
     (util/indent)
     (util/outdent))
 
   (testing "indent a block with its children"
-    (util/new-block "b3")
+    (b/new-block "b3")
     (util/indent)
     (k/arrow-up)
     (util/indent)
@@ -33,8 +34,8 @@
       (is (< x1 x2 x3))))
 
   (testing "unindent a block with its children"
-    (util/open-last-block)
-    (util/new-blocks ["b4" "b5"])
+    (b/open-last-block)
+    (b/new-blocks ["b4" "b5"])
     (util/indent)
     (k/arrow-up)
     (util/outdent)
@@ -44,7 +45,7 @@
 
 (deftest move-up-down-test
   (util/new-page "p3")
-  (util/new-blocks ["b1" "b2" "b3" "b4"])
+  (b/new-blocks ["b1" "b2" "b3" "b4"])
   (util/repeat-keyboard 2 "Shift+ArrowUp")
   (let [contents (util/get-page-blocks-contents)]
     (is (= contents ["b1" "b2" "b3" "b4"])))
@@ -58,20 +59,20 @@
 (deftest delete-test
   (testing "Delete blocks case 1"
     (util/new-page "p4")
-    (util/new-blocks ["b1" "b2" "b3" "b4"])
-    (util/delete-blocks)                   ; delete b4
+    (b/new-blocks ["b1" "b2" "b3" "b4"])
+    (b/delete-blocks)                   ; delete b4
     (util/repeat-keyboard 2 "Shift+ArrowUp") ; select b3 and b2
-    (util/delete-blocks)
+    (b/delete-blocks)
     (is (= "b1" (util/get-edit-content)))
     (is (= 1 (util/page-blocks-count))))
 
   (testing "Delete block with its children"
     (util/new-page "p5")
-    (util/new-blocks ["b1" "b2" "b3" "b4"])
+    (b/new-blocks ["b1" "b2" "b3" "b4"])
     (util/indent)
     (k/arrow-up)
     (util/indent)
     (k/arrow-up)
-    (util/delete-blocks)
+    (b/delete-blocks)
     (is (= "b1" (util/get-edit-content)))
     (is (= 1 (util/page-blocks-count)))))

+ 2 - 2
src/main/frontend/components/repo.cljs

@@ -69,14 +69,14 @@
         :let [only-cloud? (and remote? (nil? root))
               db-based? (config/db-based-graph? url)]]
     [:div.flex.justify-between.mb-4.items-center.group {:key (or url GraphUUID)
-                                                        :aria-label (str "e2e " GraphName)}
+                                                        :aria-label (str "e2e " url)}
      [:div
       [:span.flex.items-center.gap-1
        (normalized-graph-label repo
                                (fn []
                                  (when-not (state/sub :rtc/downloading-graph-uuid)
                                    (cond
-                                     root                                         ; exists locally
+                                     root ; exists locally
                                      (state/pub-event! [:graph/switch url])
 
                                      (and db-based? remote?)