    'is' call 'report' to indicate results.  The argument given to
    'report' will be a map with a :type key."
      :dynamic true}
-  report (fn [_ m] (:type m)))
+  report (fn [env m] [(:reporter env) (:type m)]))
 
 (defmethod report :default [env m]
   (prn m))
 
-(defmethod report :pass [env m]
+(defmethod report [::default :pass] [env m]
   (inc-report-counter env :pass))
 
-(defmethod report :fail [env m]
+(defmethod report [::default :fail] [env m]
   (println "\nFAIL in" (testing-vars-str env m))
   (when (seq (:testing-contexts env))
     (println (testing-contexts-str env)))

  (println "  actual:" (pr-str (:actual m)))
  (inc-report-counter env :fail))

(defmethod report :error [env m]
  (println "\nERROR in" (testing-vars-str env m))
  (when (seq (:testing-contexts env))
    (println (testing-contexts-str env)))

            :fail (merge (file-and-line (js/Error.) 1) m)
            :error (merge (file-and-line (:actual m) 0) m)
            m)]
   (report env m)))

(defn empty-env
  ([] (empty-env ::default))
  ([reporter]
   {:report-counters {:test 0 :pass 0 :fail 0 :error 0}
    :testing-vars ()
