Преглед на файлове

test(rtc): add logseq.e2e.rtc-extra-part2-test (1)

rcmerci преди 6 дни
родител
ревизия
73ee1bbc16

+ 9 - 0
clj-e2e/src/logseq/e2e/const.clj

@@ -0,0 +1,9 @@
+(ns logseq.e2e.const)
+
+(def *page1
+  "this 'page' means playwright-page, not logseq-page. it points to the client1 when testing rtc"
+  (atom nil))
+
+(def *page2
+  "this 'page' means playwright-page, not logseq-page. it points to the client2 when testing rtc"
+  (atom nil))

+ 26 - 1
clj-e2e/src/logseq/e2e/page.clj

@@ -1,6 +1,8 @@
 (ns logseq.e2e.page
 (ns logseq.e2e.page
-  (:require [logseq.e2e.block :as b]
+  (:require [logseq.e2e.assert :as assert]
+            [logseq.e2e.block :as b]
             [logseq.e2e.keyboard :as k]
             [logseq.e2e.keyboard :as k]
+            [logseq.e2e.locator :as loc]
             [logseq.e2e.util :as util]
             [logseq.e2e.util :as util]
             [wally.main :as w]
             [wally.main :as w]
             [wally.selectors :as ws])
             [wally.selectors :as ws])
@@ -38,3 +40,26 @@
   (w/click "div[data-testid='page title']")
   (w/click "div[data-testid='page title']")
   (b/save-block new-page-name)
   (b/save-block new-page-name)
   (k/esc))
   (k/esc))
+
+(defn- set-tag-extends
+  [extends & [in-retry?]]
+  (util/wait-timeout 500)
+  (w/click (loc/filter ".property-value" :has-text "root tag"))
+  (let [extends-visible? (mapv #(w/visible? (format "div:has(> button):has(div:text('%s'))" %)) extends)]
+    (if (every? identity extends-visible?)
+      (doseq [extend extends]
+        (w/click (format "div:has(> button):has(div:text('%s'))" extend)))
+      (if in-retry?
+        (throw (ex-info "parent-tag not found" {:extends extends :visible? extends-visible?}))
+        (do (k/esc)
+            (set-tag-extends extends true))))))
+
+(defn convert-to-tag
+  [page-name & {:keys [extends]}]
+  (goto-page page-name)
+  (util/right-click "div[data-testid='page title']")
+  (w/click (loc/filter "div[role='menuitem']" :has-text "convert to tag"))
+  (assert/assert-is-visible ".ls-page-icon")
+  (when (seq extends)
+    (set-tag-extends extends)
+    (k/esc)))

+ 14 - 1
clj-e2e/src/logseq/e2e/rtc.clj

@@ -1,5 +1,8 @@
 (ns logseq.e2e.rtc
 (ns logseq.e2e.rtc
   (:require [clojure.edn :as edn]
   (:require [clojure.edn :as edn]
+            [logseq.e2e.assert :as assert]
+            [logseq.e2e.const :refer [*page1 *page2]]
+            [logseq.e2e.graph :as graph]
             [logseq.e2e.util :as util]
             [logseq.e2e.util :as util]
             [wally.main :as w]))
             [wally.main :as w]))
 
 
@@ -10,7 +13,7 @@
 
 
 (defmacro with-wait-tx-updated
 (defmacro with-wait-tx-updated
   "exec body, then wait for the rtc-tx update.
   "exec body, then wait for the rtc-tx update.
-  Return the updated rtc-tx(local-tx and remote-tx)"
+  Return the updated rtc-tx{:local-tx ..., :remote-tx ...}"
   [& body]
   [& body]
   `(let [m# (get-rtc-tx)
   `(let [m# (get-rtc-tx)
          local-tx# (or (:local-tx m#) 0)
          local-tx# (or (:local-tx m#) 0)
@@ -72,3 +75,13 @@
          (w/with-page p# (rtc-stop)))
          (w/with-page p# (rtc-stop)))
        ~@body
        ~@body
        ~after-body)))
        ~after-body)))
+
+(defn validate-graphs-in-2-pw-pages
+  []
+  (let [[p1-summary p2-summary]
+        (map
+         (fn [p]
+           (w/with-page p
+             (graph/validate-graph)))
+         [@*page1 @*page2])]
+    (assert/assert-graph-summary-equal p1-summary p2-summary)))

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

@@ -7,10 +7,14 @@
             [logseq.e2e.locator :as loc]
             [logseq.e2e.locator :as loc]
             [wally.main :as w]
             [wally.main :as w]
             [wally.repl :as repl])
             [wally.repl :as repl])
-  (:import (com.microsoft.playwright Locator$PressSequentiallyOptions
-                                     Locator$FilterOptions
-                                     Page$GetByTextOptions)
-           (com.microsoft.playwright TimeoutError)))
+  (:import [com.microsoft.playwright
+            Locator$PressSequentiallyOptions
+            Locator$FilterOptions
+            Locator$ClickOptions
+            Page$GetByTextOptions
+            TimeoutError]
+           [com.microsoft.playwright.options
+            MouseButton]))
 
 
 (defn repeat-until-visible
 (defn repeat-until-visible
   [n q repeat-fn]
   [n q repeat-fn]
@@ -210,3 +214,7 @@
   (if exact?
   (if exact?
     (.getByText (w/get-page) text (.setExact (Page$GetByTextOptions.) true))
     (.getByText (w/get-page) text (.setExact (Page$GetByTextOptions.) true))
     (.getByText (w/get-page) text)))
     (.getByText (w/get-page) text)))
+
+(defn right-click
+  [q]
+  (w/click q (-> (Locator$ClickOptions.) (.setButton MouseButton/RIGHT))))

+ 52 - 8
clj-e2e/test/logseq/e2e/fixtures.clj

@@ -1,11 +1,15 @@
 (ns logseq.e2e.fixtures
 (ns logseq.e2e.fixtures
-  (:require [logseq.e2e.assert :as assert]
+  (:require [com.climate.claypoole :as cp]
+            [logseq.e2e.assert :as assert]
             [logseq.e2e.config :as config]
             [logseq.e2e.config :as config]
+            [logseq.e2e.const :refer [*page1 *page2]]
             [logseq.e2e.custom-report :as custom-report]
             [logseq.e2e.custom-report :as custom-report]
             [logseq.e2e.graph :as graph]
             [logseq.e2e.graph :as graph]
             [logseq.e2e.page :as page]
             [logseq.e2e.page :as page]
             [logseq.e2e.playwright-page :as pw-page]
             [logseq.e2e.playwright-page :as pw-page]
+            [logseq.e2e.rtc :as rtc]
             [logseq.e2e.settings :as settings]
             [logseq.e2e.settings :as settings]
+            [logseq.e2e.util :as util]
             [wally.main :as w]))
             [wally.main :as w]))
 
 
 ;; TODO: save trace
 ;; TODO: save trace
@@ -29,13 +33,6 @@
                                  (swap! custom-report/*pw-page->console-logs* update p conj (.text msg))))))
                                  (swap! custom-report/*pw-page->console-logs* update p conj (.text msg))))))
       (f))))
       (f))))
 
 
-(def *page1
-  "this 'page' means playwright-page, not logseq-page. it points to the client1 when testing rtc"
-  (atom nil))
-(def *page2
-  "this 'page' means playwright-page, not logseq-page. it points to the client2 when testing rtc"
-  (atom nil))
-
 (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]}]
@@ -102,6 +99,23 @@
   (create-page)
   (create-page)
   (f))
   (f))
 
 
+(defn new-logseq-page-in-rtc*
+  "create a logseq page and switch to this page on both `*page1` and `*page2`"
+  [& [page-name]]
+  (let [*page-name (atom nil)
+        {:keys [_local-tx remote-tx]}
+        (w/with-page @*page1
+          (rtc/with-wait-tx-updated
+            (reset! *page-name (create-page page-name))))]
+    (w/with-page @*page2
+      (rtc/wait-tx-update-to remote-tx)
+      (page/goto-page @*page-name))))
+
+(defn new-logseq-page-in-rtc
+  [f]
+  (new-logseq-page-in-rtc*)
+  (f))
+
 (defn validate-graph
 (defn validate-graph
   [f]
   [f]
   (f)
   (f)
@@ -111,3 +125,33 @@
         (graph/validate-graph)))
         (graph/validate-graph)))
 
 
     (graph/validate-graph)))
     (graph/validate-graph)))
+
+(def ^:private formatter (java.time.format.DateTimeFormatter/ofPattern "yyyy-MM-dd'T'HH-mm-ss"))
+(defn- inst-string
+  [inst]
+  (.format formatter (.atZone inst (java.time.ZoneId/of "UTC"))))
+
+(defn prepare-rtc-graph-fixture
+  "open 2 app instances, add a rtc graph, check this graph available on other instance"
+  [graph-name-prefix f]
+  (let [graph-name (str graph-name-prefix "-" (inst-string (java.time.Instant/now)))]
+    (cp/prun!
+     2
+     #(w/with-page %
+        (settings/developer-mode)
+        (w/refresh)
+        (util/login-test-account))
+     [@*page1 @*page2])
+    (w/with-page @*page1
+      (graph/new-graph graph-name true))
+    (w/with-page @*page2
+      (graph/wait-for-remote-graph graph-name)
+      (graph/switch-graph graph-name true))
+
+    (binding [custom-report/*preserve-graph* false]
+      (f)
+      ;; cleanup
+      (if custom-report/*preserve-graph*
+        (println "Don't remove graph: " graph-name)
+        (w/with-page @*page2
+          (graph/remove-remote-graph graph-name))))))

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

@@ -4,7 +4,8 @@
    [com.climate.claypoole :as cp]
    [com.climate.claypoole :as cp]
    [logseq.e2e.assert :as assert]
    [logseq.e2e.assert :as assert]
    [logseq.e2e.block :as b]
    [logseq.e2e.block :as b]
-   [logseq.e2e.fixtures :as fixtures :refer [*page1 *page2]]
+   [logseq.e2e.const :refer [*page1 *page2]]
+   [logseq.e2e.fixtures :as fixtures]
    [logseq.e2e.graph :as graph]
    [logseq.e2e.graph :as graph]
    [logseq.e2e.page :as page]
    [logseq.e2e.page :as page]
    [logseq.e2e.rtc :as rtc]
    [logseq.e2e.rtc :as rtc]

+ 55 - 0
clj-e2e/test/logseq/e2e/rtc_extra_part2_test.clj

@@ -0,0 +1,55 @@
+(ns logseq.e2e.rtc-extra-part2-test
+  (:require [clojure.string :as string]
+            [clojure.test :refer [deftest testing is use-fixtures run-test]]
+            [logseq.e2e.block :as b]
+            [logseq.e2e.const :refer [*page1 *page2]]
+            [logseq.e2e.fixtures :as fixtures]
+            [logseq.e2e.page :as page]
+            [logseq.e2e.rtc :as rtc]
+            [logseq.e2e.util :as util]
+            [wally.main :as w]
+            [wally.repl :as repl]))
+
+(use-fixtures :once
+  fixtures/open-2-pages
+  (partial fixtures/prepare-rtc-graph-fixture "rtc-extra-part2-test-graph"))
+
+(use-fixtures :each
+  fixtures/new-logseq-page-in-rtc)
+
+;;; https://github.com/logseq/db-test/issues/651
+(deftest issue-651-block-title-double-transit-encoded-test
+  (testing "
+1. create pages named \"bbb\", \"aaa\", and turn these pages into tag
+2. set \"bbb\" parent to \"aaa\"
+3. create a new page \"ccc\", and create a simple query with filter tags = aaa/bbb
+wait for 5-10 seconds, will found that \"aaa/bbb\" became \"aaa/<encrypted-string>\"
+"
+    (w/with-page @*page1
+      (page/new-page "aaa")
+      (page/convert-to-tag "aaa")
+      (page/new-page "bbb")
+      (page/convert-to-tag "bbb" :extends ["aaa"])
+      (page/new-page "ccc")
+      (b/new-block "")
+      (util/input-command "query")
+      (w/click (util/-query-last "button:text('filter')"))
+      (util/input "tags")
+      (w/click "a.menu-link:has-text('tags')")
+      (w/click "a.menu-link:has-text('bbb')")
+      (util/wait-timeout 5000)          ;as described in issue-url
+      )
+    (let [{:keys [remote-tx]}
+          (w/with-page @*page1
+            (rtc/with-wait-tx-updated
+              (b/new-block "done")))]
+      (w/with-page @*page2
+        (rtc/wait-tx-update-to remote-tx)))
+
+;; check 'aaa/bbb' still exists
+    (w/with-page @*page1
+      (page/goto-page "aaa/bbb"))
+    (w/with-page @*page2
+      (page/goto-page "aaa/bbb"))
+
+    (rtc/validate-graphs-in-2-pw-pages)))

+ 22 - 77
clj-e2e/test/logseq/e2e/rtc_extra_test.clj

@@ -1,71 +1,26 @@
 (ns logseq.e2e.rtc-extra-test
 (ns logseq.e2e.rtc-extra-test
   (:require
   (:require
    [clojure.test :refer [deftest testing is use-fixtures run-test]]
    [clojure.test :refer [deftest testing is use-fixtures run-test]]
-   [com.climate.claypoole :as cp]
    [logseq.e2e.assert :as assert]
    [logseq.e2e.assert :as assert]
    [logseq.e2e.block :as b]
    [logseq.e2e.block :as b]
-   [logseq.e2e.custom-report :as custom-report]
-   [logseq.e2e.fixtures :as fixtures :refer [*page1 *page2]]
-   [logseq.e2e.graph :as graph]
+   [logseq.e2e.const :refer [*page1 *page2]]
+   [logseq.e2e.fixtures :as fixtures]
    [logseq.e2e.keyboard :as k]
    [logseq.e2e.keyboard :as k]
    [logseq.e2e.locator :as loc]
    [logseq.e2e.locator :as loc]
    [logseq.e2e.outliner-basic-test :as outliner-basic-test]
    [logseq.e2e.outliner-basic-test :as outliner-basic-test]
    [logseq.e2e.page :as page]
    [logseq.e2e.page :as page]
    [logseq.e2e.property-basic-test :as property-basic-test]
    [logseq.e2e.property-basic-test :as property-basic-test]
-   [logseq.e2e.rtc :as rtc]
-   [logseq.e2e.settings :as settings]
+   [logseq.e2e.rtc :as rtc :refer [validate-graphs-in-2-pw-pages]]
    [logseq.e2e.util :as util]
    [logseq.e2e.util :as util]
    [wally.main :as w]
    [wally.main :as w]
    [wally.repl :as repl]))
    [wally.repl :as repl]))
 
 
-(defn- prepare-rtc-graph-fixture
-  "open 2 app instances, add a rtc graph, check this graph available on other instance"
-  [f]
-  (let [graph-name (str "rtc-extra-test-graph-" (.toEpochMilli (java.time.Instant/now)))]
-    (cp/prun!
-     2
-     #(w/with-page %
-        (settings/developer-mode)
-        (w/refresh)
-        (util/login-test-account))
-     [@*page1 @*page2])
-    (w/with-page @*page1
-      (graph/new-graph graph-name true))
-    (w/with-page @*page2
-      (graph/wait-for-remote-graph graph-name)
-      (graph/switch-graph graph-name true))
-
-    (binding [custom-report/*preserve-graph* false]
-      (f)
-      ;; cleanup
-      (if custom-report/*preserve-graph*
-        (println "Don't remove graph: " graph-name)
-        (w/with-page @*page2
-          (graph/remove-remote-graph graph-name))))))
-
-(defn- new-logseq-page
-  "new logseq page and switch to this page on both page1 and page2"
-  [& [page-name]]
-  (let [*page-name (atom nil)
-        {:keys [_local-tx remote-tx]}
-        (w/with-page @*page1
-          (rtc/with-wait-tx-updated
-            (reset! *page-name (fixtures/create-page page-name))))]
-    (w/with-page @*page2
-      (rtc/wait-tx-update-to remote-tx)
-      (page/goto-page @*page-name))))
-
-(defn- new-logseq-page-fixture
-  [f]
-  (new-logseq-page)
-  (f))
-
 (use-fixtures :once
 (use-fixtures :once
   fixtures/open-2-pages
   fixtures/open-2-pages
-  prepare-rtc-graph-fixture)
+  (partial fixtures/prepare-rtc-graph-fixture "rtc-extra-test-graph"))
 
 
 (use-fixtures :each
 (use-fixtures :each
-  new-logseq-page-fixture)
+  fixtures/new-logseq-page-in-rtc)
 
 
 (defn- with-stop-restart-rtc
 (defn- with-stop-restart-rtc
   [pw-page f]
   [pw-page f]
@@ -75,16 +30,6 @@
   (w/with-page pw-page
   (w/with-page pw-page
     (rtc/rtc-start)))
     (rtc/rtc-start)))
 
 
-(defn- validate-2-graphs
-  []
-  (let [[p1-summary p2-summary]
-        (map
-         (fn [p]
-           (w/with-page p
-             (graph/validate-graph)))
-         [@*page1 @*page2])]
-    (assert/assert-graph-summary-equal p1-summary p2-summary)))
-
 (def status->icon-name
 (def status->icon-name
   {"Backlog" "Backlog"
   {"Backlog" "Backlog"
    "Todo" "Todo"
    "Todo" "Todo"
@@ -151,7 +96,7 @@
           [@*page1 (rtc/wait-tx-update-to @*latest-remote-tx)]
           [@*page1 (rtc/wait-tx-update-to @*latest-remote-tx)]
           (insert-task-blocks-in-page2 *latest-remote-tx))
           (insert-task-blocks-in-page2 *latest-remote-tx))
         (validate-task-blocks)
         (validate-task-blocks)
-        (validate-2-graphs)))
+        (validate-graphs-in-2-pw-pages)))
 
 
     (testing "update task blocks while rtc disconnected on page1"
     (testing "update task blocks while rtc disconnected on page1"
       (let [*latest-remote-tx (atom nil)]
       (let [*latest-remote-tx (atom nil)]
@@ -160,9 +105,9 @@
           [@*page1 (rtc/wait-tx-update-to @*latest-remote-tx)]
           [@*page1 (rtc/wait-tx-update-to @*latest-remote-tx)]
           (update-task-blocks-in-page2 *latest-remote-tx))
           (update-task-blocks-in-page2 *latest-remote-tx))
         (validate-task-blocks)
         (validate-task-blocks)
-        (validate-2-graphs)))
+        (validate-graphs-in-2-pw-pages)))
 
 
-    (new-logseq-page)
+    (fixtures/new-logseq-page-in-rtc*)
 
 
     (testing "perform same operations on page2 while keeping rtc connected on page1"
     (testing "perform same operations on page2 while keeping rtc connected on page1"
       (let [*latest-remote-tx (atom nil)]
       (let [*latest-remote-tx (atom nil)]
@@ -170,7 +115,7 @@
         (w/with-page @*page1
         (w/with-page @*page1
           (rtc/wait-tx-update-to @*latest-remote-tx))
           (rtc/wait-tx-update-to @*latest-remote-tx))
         (validate-task-blocks)
         (validate-task-blocks)
-        (validate-2-graphs)))
+        (validate-graphs-in-2-pw-pages)))
 
 
     (testing "update task blocks while rtc connected on page1"
     (testing "update task blocks while rtc connected on page1"
       (let [*latest-remote-tx (atom nil)]
       (let [*latest-remote-tx (atom nil)]
@@ -178,7 +123,7 @@
         (w/with-page @*page1
         (w/with-page @*page1
           (rtc/wait-tx-update-to @*latest-remote-tx))
           (rtc/wait-tx-update-to @*latest-remote-tx))
         (validate-task-blocks)
         (validate-task-blocks)
-        (validate-2-graphs)))))
+        (validate-graphs-in-2-pw-pages)))))
 
 
 (deftest rtc-property-test
 (deftest rtc-property-test
   (let [insert-new-property-blocks-in-page2
   (let [insert-new-property-blocks-in-page2
@@ -194,16 +139,16 @@
           [@*page1]
           [@*page1]
           [@*page1 (rtc/wait-tx-update-to @*latest-remote-tx)]
           [@*page1 (rtc/wait-tx-update-to @*latest-remote-tx)]
           (insert-new-property-blocks-in-page2 *latest-remote-tx "rtc-property-test-1"))
           (insert-new-property-blocks-in-page2 *latest-remote-tx "rtc-property-test-1"))
-        (validate-2-graphs)))
+        (validate-graphs-in-2-pw-pages)))
 
 
-    (new-logseq-page)
+    (fixtures/new-logseq-page-in-rtc*)
 
 
     (testing "perform same operations on page2 while keeping rtc connected on page1"
     (testing "perform same operations on page2 while keeping rtc connected on page1"
       (let [*latest-remote-tx (atom nil)]
       (let [*latest-remote-tx (atom nil)]
         (insert-new-property-blocks-in-page2 *latest-remote-tx "rtc-property-test-2")
         (insert-new-property-blocks-in-page2 *latest-remote-tx "rtc-property-test-2")
         (w/with-page @*page1
         (w/with-page @*page1
           (rtc/wait-tx-update-to @*latest-remote-tx))
           (rtc/wait-tx-update-to @*latest-remote-tx))
-        (validate-2-graphs)))))
+        (validate-graphs-in-2-pw-pages)))))
 
 
 (deftest rtc-outliner-test
 (deftest rtc-outliner-test
   (doseq [test-fn [outliner-basic-test/create-test-page-and-insert-blocks
   (doseq [test-fn [outliner-basic-test/create-test-page-and-insert-blocks
@@ -218,12 +163,12 @@
                                        (test-fn))]
                                        (test-fn))]
                                  (reset! *latest-remote-tx remote-tx))))
                                  (reset! *latest-remote-tx remote-tx))))
           *latest-remote-tx (atom nil)]
           *latest-remote-tx (atom nil)]
-      (new-logseq-page)
+      (fixtures/new-logseq-page-in-rtc*)
       (rtc/with-stop-restart-rtc
       (rtc/with-stop-restart-rtc
         [@*page1]
         [@*page1]
         [@*page1 (rtc/wait-tx-update-to @*latest-remote-tx)]
         [@*page1 (rtc/wait-tx-update-to @*latest-remote-tx)]
         (test-fn-in-page2 *latest-remote-tx))
         (test-fn-in-page2 *latest-remote-tx))
-      (validate-2-graphs))))
+      (validate-graphs-in-2-pw-pages))))
 
 
 (deftest rtc-outliner-conflict-update-test
 (deftest rtc-outliner-conflict-update-test
   (let [title-prefix "rtc-outliner-conflict-update-test"]
   (let [title-prefix "rtc-outliner-conflict-update-test"]
@@ -236,7 +181,7 @@
             (reset! *latest-remote-tx remote-tx)))
             (reset! *latest-remote-tx remote-tx)))
         (w/with-page @*page2
         (w/with-page @*page2
           (rtc/wait-tx-update-to @*latest-remote-tx))
           (rtc/wait-tx-update-to @*latest-remote-tx))
-        (validate-2-graphs)))
+        (validate-graphs-in-2-pw-pages)))
     (testing "page1: indent block1 as child of block0, page2: delete block0"
     (testing "page1: indent block1 as child of block0, page2: delete block0"
       (rtc/with-stop-restart-rtc
       (rtc/with-stop-restart-rtc
         [@*page1 @*page2]
         [@*page1 @*page2]
@@ -254,7 +199,7 @@
         (w/with-page @*page2
         (w/with-page @*page2
           (w/click (format ".ls-block :text('%s')" (str title-prefix "-" 0)))
           (w/click (format ".ls-block :text('%s')" (str title-prefix "-" 0)))
           (b/delete-blocks)))
           (b/delete-blocks)))
-      (validate-2-graphs))
+      (validate-graphs-in-2-pw-pages))
     (testing "
     (testing "
 origin:
 origin:
 - block2
 - block2
@@ -286,7 +231,7 @@ page2:
           (k/meta+shift+arrow-down)
           (k/meta+shift+arrow-down)
           (k/enter)
           (k/enter)
           (b/indent)))
           (b/indent)))
-      (validate-2-graphs))))
+      (validate-graphs-in-2-pw-pages))))
 
 
 (deftest rtc-page-test
 (deftest rtc-page-test
   (let [prefix "rtc-page-test-"]
   (let [prefix "rtc-page-test-"]
@@ -329,8 +274,8 @@ page2:
 ;;         (validate-2-graphs)))
 ;;         (validate-2-graphs)))
     (testing "page rename"
     (testing "page rename"
       (let [page-name (str prefix 3)]
       (let [page-name (str prefix 3)]
-        (new-logseq-page page-name)
-        (validate-2-graphs)
+        (fixtures/new-logseq-page-in-rtc* page-name)
+        (validate-graphs-in-2-pw-pages)
         (rtc/with-stop-restart-rtc
         (rtc/with-stop-restart-rtc
           [@*page1 @*page2]
           [@*page1 @*page2]
           [@*page1 (rtc/with-wait-tx-updated (b/new-block "pw1-done-3"))
           [@*page1 (rtc/with-wait-tx-updated (b/new-block "pw1-done-3"))
@@ -339,7 +284,7 @@ page2:
             (page/rename-page page-name (str page-name "-rename1")))
             (page/rename-page page-name (str page-name "-rename1")))
           (w/with-page @*page2
           (w/with-page @*page2
             (page/rename-page page-name (str page-name "-rename2"))))
             (page/rename-page page-name (str page-name "-rename2"))))
-        (validate-2-graphs)))))
+        (validate-graphs-in-2-pw-pages)))))
 
 
 (deftest long-block-title-test
 (deftest long-block-title-test
   (testing "insert >4KB block/title"
   (testing "insert >4KB block/title"
@@ -350,6 +295,6 @@ page2:
               (b/new-block long-block-title)))]
               (b/new-block long-block-title)))]
       (w/with-page @*page2
       (w/with-page @*page2
         (rtc/wait-tx-update-to remote-tx))
         (rtc/wait-tx-update-to remote-tx))
-      (validate-2-graphs)
+      (validate-graphs-in-2-pw-pages)
       (w/with-page @*page2
       (w/with-page @*page2
         (assert/assert-is-visible (loc/filter ".block-title-wrap" :has-text long-block-title))))))
         (assert/assert-is-visible (loc/filter ".block-title-wrap" :has-text long-block-title))))))