Skip to content
main
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
img
 
 
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

js-reporters

Chat on Gitter Build Status Coverage Status npm npm

The Common Reporter Interface (CRI) for JavaScript Testing Frameworks.

Avoid this: Do this:

Specification

See Common Reporter Interface for the latest version of the specification.

See also:

  • example, illustrates how reporting works in practice.
  • frameworks, studies various popular testing frameworks.
  • Integrations, a list of real-world implementations.

Help with AsciiDoc (used for the standard document):

Background

In 2014, the QUnit team started discussing the possibility of interoperability between JavaScript testing frameworks such as QUnit, Mocha, Jasmine, Intern, Buster, etc. The "Common Reporter Interface" would be an allow integrations for output formats and communication bridges to be shared between frameworks. This would also benefit high-level consumers of these frameworks such as Karma, BrowserStack, SauceLabs, Testling, by having a standard machine-readable interface.

Our mission is to deliver:

  • a common JavaScript API, e.g. based on EventEmitter featuring .on() and .off().
  • a minimum viable set of events with standardized event names and event data.
  • a minimum viable set of concepts behind those events to allow consumers to set expectations (e.g. define what "pass", "fail", "skip", "todo", and "pending" mean).
  • work with participating testing frameworks to support the Common Reporter Interface.

Would you be interested in discussing this with us further? Please join in!

js-reporters Package

Usage

Listen to the events and receive the emitted data:

// Attach one of the exiting adapters.
const runner = JsReporters.autoRegister();

// Listen to the same events for any testing framework.
runner.on('testEnd', function (test) {
  console.log('Test %s has errors:', test.fullname.join(' '), test.errors);
});

runner.on('runEnd', function (globalSuite) {
  const testCounts = globalSuite.testCounts;

  console.log('Testsuite status: %s', globalSuite.status);

  console.log('Total %d tests: %d passed, %d failed, %d skipped',
    testCounts.total,
    testCounts.passed,
    testCounts.failed,
    testCounts.skipped);

  console.log('Total duration: %d', globalSuite.runtime);
});

// Or use one of the built-in reporters.
JsReporters.TapReporter.init(runner);

Adapter support

Testing framework Supported Last checked Unresolved
QUnit 1.20+ qunit@2.11.1 (Sep 2020)
Jasmine 2.1+ jasmine@3.6.1 (Jul 2020)
Mocha 1.18+ mocha@7.2.0 (May 2020) ⚠️ >= mocha@8.0.0 (issue #116)

See also past issues.

API

autoRegister()

Automatically detects which testing framework you use and attaches any adapters as needed, and returns a compatible runner object. If no framework is found, it will throw an Error.

JsReporters.autoRegister();

Integrations

Runners:

Reporters:

  • TAP, implements the Test Anything Protocol for command-line output.
  • browserstack-runner, runs JavaScript unit tests remotely in multiple browsers, summarize the results by browser, and fail or pass the continuous integration build accordingly.
  • Add your own, and let us know!

Cross-project coordination

Testing frameworks:

Reporters and proxy layers:

About

📋 Common Reporter Interface (CRI) for JavaScript testing frameworks.

Topics

Resources

License

You can’t perform that action at this time.