 (defmethod report [::default :pass] [m]
   (inc-report-counter! :pass))
 
+(defn- print-comparison [m]
+  (let [formatter-fn (or (:formatter (get-current-env)) pr-str)]
+    (println "expected:" (formatter-fn (:expected m)))
+    (println "  actual:" (formatter-fn (:actual m)))))
+
 (defmethod report [::default :fail] [m]
   (inc-report-counter! :fail)
   (println "\nFAIL in" (testing-vars-str m))
   (when (seq (:testing-contexts (get-current-env)))
     (println (testing-contexts-str)))
   (when-let [message (:message m)] (println message))
-  (println "expected:" (pr-str (:expected m)))
-  (println "  actual:" (pr-str (:actual m))))
+  (print-comparison m))
 
 (defmethod report [::default :error] [m]
   (inc-report-counter! :error)

  #_(println ":begin-test-var" (testing-vars-str m)))
(defmethod report [::default :end-test-var] [m])
(defmethod report [::default :end-run-tests] [m])

(defn js-line-and-column [stack-element]
  (let [parts (.split stack-element ":")

  (when (seq (:testing-contexts (get-current-env)))
    (println (testing-contexts-str)))
  (when-let [message (:message m)] (println message))
  (print-comparison m))

(defmethod report [::default :summary] [m]
  (println "\nRan" (:test m) "tests containing"
