mirror of
https://github.com/logseq/logseq.git
synced 2026-04-24 22:25:01 +00:00
test(e2e): dump console logs when test failed
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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))))))
|
||||
|
||||
@@ -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))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user