test(e2e): dump console logs when test failed

This commit is contained in:
rcmerci
2025-05-22 15:32:52 +08:00
parent ed32cfb4c9
commit 5e60ce853d
5 changed files with 39 additions and 9 deletions

View File

@@ -19,7 +19,7 @@
tx# (max local-tx# remote-tx#)]
~@body
(loop [i# 5]
(when (zero? i#) (throw (ex-info "wait-tx-updated failed" {:data m#})))
(when (zero? i#) (throw (ex-info "wait-tx-updated failed" {:old m# :new (get-rtc-tx)})))
(util/wait-timeout 1000)
(let [new-m# (get-rtc-tx)
new-local-tx# (or (:local-tx new-m#) 0)

View File

@@ -1,5 +1,6 @@
(ns logseq.e2e.custom-report
(:require [clojure.stacktrace :as stack]
(:require [clojure.pprint :as pp]
[clojure.stacktrace :as stack]
[clojure.string :as string]
[clojure.test :as t]
[logseq.e2e.playwright-page :as pw-page])
@@ -10,6 +11,8 @@
record all playwright contexts in this dynamic var"
nil)
(def ^:dynamic *pw-page->console-logs* nil)
(defn screenshot
[page test-name]
(println :screenshot test-name)
@@ -37,7 +40,13 @@
;; screenshot for all pw pages when :error
(when-let [all-contexts (seq *pw-contexts*)]
(doseq [page (mapcat pw-page/get-pages all-contexts)]
(screenshot page (string/join "-" (map (comp str :name meta) t/*testing-vars*))))))
(screenshot page (string/join "-" (map (comp str :name meta) t/*testing-vars*)))))
;; dump console logs
(when-let [pw-page->console-logs (some-> *pw-page->console-logs* deref)]
(doseq [[_pw-page logs] pw-page->console-logs]
(spit (format "e2e-dump/console-logs-%s.txt" (System/currentTimeMillis))
(with-out-str (pp/pprint logs))))))
(defmethod t/report :fail
[m]
@@ -52,4 +61,10 @@
;; screenshot for all pw pages when :fail
(when-let [all-contexts (seq *pw-contexts*)]
(doseq [page (mapcat pw-page/get-pages all-contexts)]
(screenshot page (string/join "-" (map (comp str :name meta) t/*testing-vars*))))))
(screenshot page (string/join "-" (map (comp str :name meta) t/*testing-vars*)))))
;; dump console logs
(when-let [pw-page->console-logs (some-> *pw-page->console-logs* deref)]
(doseq [[_pw-page logs] pw-page->console-logs]
(spit (format "e2e-dump/console-logs-%s.txt" (System/currentTimeMillis))
(with-out-str (pp/pprint logs))))))

View File

@@ -16,11 +16,16 @@
:persistent false
:slow-mo @config/*slow-mo})
(w/grant-permissions :clipboard-write :clipboard-read)
(binding [custom-report/*pw-contexts* #{(.context (w/get-page))}]
(binding [custom-report/*pw-contexts* #{(.context (w/get-page))}
custom-report/*pw-page->console-logs* (atom {})]
(w/navigate (str "http://localhost:" (or port @config/*port)))
(settings/developer-mode)
(w/refresh)
(assert/assert-graph-loaded?)
(let [p (w/get-page)]
(.onConsoleMessage p (fn [msg]
(when custom-report/*pw-page->console-logs*
(swap! custom-report/*pw-page->console-logs* update p conj (.text msg))))))
(f))))
(def *page1 (atom nil))
@@ -39,12 +44,20 @@
(reset! *page1 p1)
(reset! *page2 p2)
(binding [custom-report/*pw-contexts* (set [(.context @p1) (.context @p2)])
custom-report/*pw-page->console-logs* (atom {})
w/*page* (delay (throw (ex-info "Don't use *page*, use *page1* and *page2* instead" {})))]
(run!
#(w/with-page %
(w/navigate (str "http://localhost:" port'))
(settings/developer-mode)
(w/refresh))
(w/refresh)
(assert/assert-graph-loaded?)
(let [p (w/get-page)]
(.onConsoleMessage
p
(fn [msg]
(when custom-report/*pw-page->console-logs*
(swap! custom-report/*pw-page->console-logs* update p conj (.text msg)))))))
[p1 p2])
(f))