Output formats

When running tests from the command-line you can make jstest produce a variety of output formats using the FORMAT environment variable. For example:

Where possible, it will detect whether stdout is a TTY and will not print colored output otherwise. If you need to manually disable colored output, set NO_COLOR=1.

As well as specifying this on the command-line, you can use the reporter API to programmatically set the output format. You will usually want to add the ExitStatus reporter after whichever text reporter you select. For example to get spec output you can do this:

JS.Test.autorun(function(runner) {
  runner.setReporter(new JS.Test.Reporters.Spec())
  runner.addReporter(new JS.Test.Reporters.ExitStatus())
})

The following lists all the available text output formats and their reporter classes. Note that all these reporters (except progress) work on every platform supported by jstest. In the terminal they print to stdout, and in the browser they print using console.log(). Here’s the above spec format rendered in the WebKit inspector:

dot, JS.Test.Reporters.Dot

Prints a dot for every passing test, F for assertion failures and E for errors. Prints a summary including error details at the end.

error, JS.Test.Reporters.Error

Prints nothing for passing tests, and prints error details as soon as the error happens rather than waiting until the end.

json, JS.Test.Reporters.JSON

This is a literal serialization of the reporter event data, which is useful for sending test results via an I/O stream for formatting somewhere else. For example, the PhantomJS reporter uses this to send results from the browser to the terminal.

It prints one reporter event per line using the format:

{"jstest": [eventName, data]}

progress, JS.Test.Reporters.Progress

Prints an animated progress bar. Only works in TTYs.

spec, JS.Test.Reporters.Spec

Prints the results as a nested set of specs, mirroring the tests’ structure. Prints a summary including error details at the end.

tap, JS.Test.Reporters.TAP

Prints TAP representation of the results.

tap-j, JS.Test.Reporters.TAP_JSON

Prints TAP-J output than can be piped into tapout.

tap-y, JS.Test.Reporters.TAP_YAML

Prints TAP-Y output than can be piped into tapout.

xml, JS.Test.Reporters.XML

Prints a JUnit-style XML report to stdout.