Skip to content

Karma Progress Reporter

progress is Karma's default, built-in reporter — the one you see if you never configure reporters at all. This lesson explains exactly how to read its output and when it's (and isn't) the right choice.

What progress Actually Shows

The progress reporter prints a running count of executed specs per browser as the suite runs, followed by a final summary line per browser showing total executed, success, and failure counts, plus total run time.

config.set({
  reporters: ['progress']
});

// Example output:
// Chrome Headless 120.0.0 (Mac OS 10.15.7): Executed 42 of 42 SUCCESS (1.203 secs / 0.847 secs)
// TOTAL: 42 SUCCESS

This is Karma's default even if reporters is never explicitly configured at all.

Reading a Failing Summary

Chrome Headless 120.0.0 (Mac OS 10.15.7) Calculator adds two numbers FAILED
  Expected 5 to be 6.
      at <Jasmine>
      at UserContext.<anonymous> (src/calculator.spec.js:8:25)
Chrome Headless 120.0.0 (Mac OS 10.15.7): Executed 42 of 42 (1 FAILED) (1.203 secs / 0.847 secs)
TOTAL: 1 FAILED, 41 SUCCESS
  • Each failure prints the full spec description path, the assertion message, and a stack trace.
  • The per-browser summary line always shows executed/total counts and timing.
  • The final TOTAL: line aggregates every browser's results into one pass/fail count.
  • A non-zero process exit code follows any failure when singleRun: true.

Progress Reporter Cheat Sheet

What each part of the output means.

Output Element Meaning
Browser name/version line Identifies which browser produced the following results
Executed X of Y How many specs ran out of the total discovered
(a secs / b secs) Total time / time excluding browser launch overhead
FAILED block Spec path, assertion message, and stack trace
TOTAL: line Aggregate pass/fail count across all browsers

When progress Is Genuinely Enough

For small to medium suites, and especially in CI where output is read after the fact rather than watched live, progress's compact summary is often all you need — it clearly reports failures with full context and doesn't clutter logs with one line per passing spec.

Where progress Falls Short

As suites grow very large, or when you specifically want to see every spec description scroll by (useful for confirming which specific tests exist, or spotting one running unexpectedly slowly), a reporter like spec provides much finer-grained, per-test visibility that progress intentionally omits.

  • progress doesn't show individual passing spec names — only failures and the final summary.
  • Large suites with many nested describe() blocks can benefit from spec's indented, hierarchical output.
  • If you need to eyeball exactly which specs exist in a suite, progress alone won't show you that.

Common Mistakes

  • Assuming progress shows every passing spec by name — it deliberately only calls out failures individually.
  • Not scrolling up far enough in long CI logs to find the full failure stack trace above the final summary.
  • Switching away from progress for large suites without first checking whether the more verbose output actually helps.
  • Missing that TOTAL: aggregates across every configured browser, not just the first one listed.

Key Takeaways

  • progress is Karma's built-in default reporter, requiring no extra installation.
  • It shows per-browser execution counts, full failure details, and a final aggregate TOTAL: line.
  • It's well-suited to small/medium suites and CI logs, but omits individual passing spec names.
  • Switch to spec (covered next) when you need finer-grained, per-test visibility.

Pro Tip

When a CI log is truncated or hard to scroll, remember that failure details in progress output always appear directly above the final per-browser summary line — search backward from TOTAL: rather than scanning from the top.