qunitjs / js-reporters

đź“‹ Common Reporter Interface (CRI) for JavaScript testing frameworks.
MIT License
59 stars 18 forks source link
javascript reporter standard testing

js-reporters

Chat on Gitter Build status npm package

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:

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:

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:

// Use automatic discovery of the framework adapter.
const runner = JsReporters.autoRegister();

// Listen to standard events, from any testing framework.
runner.on('testEnd', (test) => {
  console.log('Test %s has errors:', test.fullName.join(' '), test.errors);
});

runner.on('runEnd', (run) => {
  const counts = run.testCounts;

  console.log('Testsuite status: %s', run.status);
  console.log('Total %d tests: %d passed, %d failed, %d skipped',
    counts.total,
    counts.passed,
    counts.failed,
    counts.skipped
  );
  console.log('Total duration: %d', run.runtime);
});

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

Runtime support

Adapter support

Testing framework Supported Last checked Unresolved
QUnit 1.20+ ✅ qunit@2.14.1 (Apr 2021) –
Jasmine 2.1+ ✅ jasmine@3.7.0 (Apr 2021) –
Mocha 1.18+ ✅ mocha@8.3.2 (Apr 2021) –

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:

Cross-project coordination

Testing frameworks:

Reporters and proxy layers:

Credits

Testing Powered By SauceLabs