custom_report.clj 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. (ns logseq.e2e.custom-report
  2. (:require [clojure.stacktrace :as stack]
  3. [clojure.string :as string]
  4. [clojure.test :as t]
  5. [logseq.e2e.playwright-page :as pw-page])
  6. (:import (com.microsoft.playwright Page$ScreenshotOptions)))
  7. (def ^:dynamic *pw-contexts*
  8. "Set of pw-contexts.
  9. record all playwright contexts in this dynamic var"
  10. nil)
  11. (defn screenshot
  12. [page test-name]
  13. (println :screenshot test-name)
  14. (.screenshot
  15. page
  16. (-> (Page$ScreenshotOptions.)
  17. (.setPath (java.nio.file.Paths/get "e2e-dump/"
  18. (into-array [(format "./screenshot-%s-%s.png" test-name (System/currentTimeMillis))]))))))
  19. (defmethod t/report :error
  20. [m]
  21. ;; copy from default impl
  22. (t/with-test-out
  23. (t/inc-report-counter :error)
  24. (println "\nERROR in" (t/testing-vars-str m))
  25. (when (seq t/*testing-contexts*) (println (t/testing-contexts-str)))
  26. (when-let [message (:message m)] (println message))
  27. (println "expected:" (pr-str (:expected m)))
  28. (print " actual: ")
  29. (let [actual (:actual m)]
  30. (if (instance? Throwable actual)
  31. (stack/print-cause-trace actual t/*stack-trace-depth*)
  32. (prn actual))))
  33. ;; screenshot for all pw pages when :error
  34. (when-let [all-contexts (seq *pw-contexts*)]
  35. (doseq [page (mapcat pw-page/get-pages all-contexts)]
  36. (screenshot page (string/join "-" (map (comp str :name meta) t/*testing-vars*))))))
  37. (defmethod t/report :fail
  38. [m]
  39. (t/with-test-out
  40. (t/inc-report-counter :fail)
  41. (println "\nFAIL in" (t/testing-vars-str m))
  42. (when (seq t/*testing-contexts*) (println (t/testing-contexts-str)))
  43. (when-let [message (:message m)] (println message))
  44. (println "expected:" (pr-str (:expected m)))
  45. (println " actual:" (pr-str (:actual m))))
  46. ;; screenshot for all pw pages when :fail
  47. (when-let [all-contexts (seq *pw-contexts*)]
  48. (doseq [page (mapcat pw-page/get-pages all-contexts)]
  49. (screenshot page (string/join "-" (map (comp str :name meta) t/*testing-vars*))))))