Browse Source

test(e2e,electron): init nbb-e2e

rcmerci 5 months ago
parent
commit
d564666cd6
5 changed files with 57 additions and 0 deletions
  1. 5 0
      nbb-e2e/.clj-kondo/config.edn
  2. 3 0
      nbb-e2e/bb.edn
  3. 1 0
      nbb-e2e/nbb.edn
  4. 8 0
      nbb-e2e/package.json
  5. 40 0
      nbb-e2e/test/logseq/e2e/demo_test.cljs

+ 5 - 0
nbb-e2e/.clj-kondo/config.edn

@@ -0,0 +1,5 @@
+{:lint-as
+ {promesa.core/let clojure.core/let
+  promesa.core/loop clojure.core/loop
+  promesa.core/recur clojure.core/recur
+  promesa.core/doseq clojure.core/doseq}}

+ 3 - 0
nbb-e2e/bb.edn

@@ -0,0 +1,3 @@
+{:tasks
+ {test {:doc "run tests"
+        :task (shell "nbb -m logseq.e2e.demo-test")}}}

+ 1 - 0
nbb-e2e/nbb.edn

@@ -0,0 +1 @@
+{:paths ["src" "test"]}

+ 8 - 0
nbb-e2e/package.json

@@ -0,0 +1,8 @@
+{
+  "name": "nbb-e2e",
+  "version": "1.0.0",
+  "private": true,
+  "dependencies": {
+    "playwright": "^1.52.0"
+  }
+}

+ 40 - 0
nbb-e2e/test/logseq/e2e/demo_test.cljs

@@ -0,0 +1,40 @@
+(ns logseq.e2e.demo-test
+  (:require ["playwright$default" :as pw]
+            ["playwright/test" :refer [expect]]
+            [clojure.test :as t :refer [deftest async use-fixtures]]
+            [promesa.core :as p]))
+
+(def *page (atom nil))
+(def *electron (atom nil))
+
+(use-fixtures
+  :once
+  {:before
+   #(async
+     done
+     (p/let [electron-app (.launch pw/_electron (clj->js {:args ["../static/electron.js"]}))
+             page (.firstWindow electron-app)]
+       (reset! *page page)
+       (reset! *electron electron-app)
+       (done)))
+   :after
+   #(async
+     done
+     (do (.close @*electron)
+         (done)))})
+
+(deftest electron-test
+  (async
+   done
+   (p/let [page @*page
+           locator (.first (.locator page ".block-title-wrap:has-text('asdf')"))
+           _ (.toBeVisible (expect locator))
+           c (.count locator)]
+     (prn :locator locator c)
+     (.click locator)
+     (.press (.-keyboard page) "Escape")
+     (done))))
+
+(defn -main
+  [& _args]
+  (t/run-tests 'logseq.e2e.demo-test))