                                             :fixedcase :literal)
                   "/%s-resources/"))
          (report-file (getenv "XML_OUTPUT_FILE"))
+         (fail-fast (equal (getenv "TESTBRIDGE_TEST_RUNNER_FAIL_FAST") "1"))
          (random-seed (or (getenv "TEST_RANDOM_SEED") ""))
          (shard-count (string-to-number (or (getenv "TEST_TOTAL_SHARDS") "1")))
          (shard-index (string-to-number (or (getenv "TEST_SHARD_INDEX") "0")))

                           ,@report)
                test-reports)))
      (message "Running %d tests finished, %d results unexpected"
               (length tests) unexpected)
      (unless (member report-file '(nil ""))
        (with-temp-buffer
          ;; The expected format of the XML output file isn’t well-documented.

                             collect test))
        (or tests (message "Empty shard with index %d" shard-index)))
      (message "Running %d tests" (length tests))
      (while tests
        (message "Running test %s" (ert-test-name (car tests)))
        (let* ((test (pop tests))
               (name (ert-test-name test))
               (start-time (current-time))
               (result (ert-run-test test))
               (duration (time-subtract nil start-time))
