tap-arc
A small (~12kB) TAP reporter with spec-like output, streaming, and failure diffing.
Objectives
- minimal, informative spec-like output for all assertions
- minimal, maintained dependencies -- can't be shipping React to CI
- streaming in and out
- helpful diffing for failures
Installation & Usage
Requires Node.js 14+
For a JavaScript project, save tap-arc
as a development dependency:
npm i -D tap-arc
Simply pipe tap output to tap-arc
.
Example npm test
script:
"scripts": {
"test": "tape test/**/*.js | tap-arc"
}
💁 tap-arc
will format output from any tap reporter. tape
was used for testing.
Alternatively, use tap-arc
globally:
npm i -g tap-arc
tap-arc --help
Usage:
tap-arc <options>
Parses TAP data from stdin, and outputs a "spec-like" formatted result.
Options:
-v | --verbose
Output full stack trace
-p | --pessimistic | --bail
Immediately exit upon encountering a failure
example: tap-arc -p
--padding [space, dot, <custom characters>]
String to use when padding output (default=" ")
example: tap-arc --padding "••"
example: tap-arc --padding dot
--indent [space, dot, <custom characters>]
String to use when indenting Object diffs (default="··")
example: tap-arc --indent ">>"
example: tap-arc --indent space
Development
The entirety of the reporter lives in ./index.js
.
When building tap-arc
, it's helpful to try various TAP outputs. See package.json
"scripts"
for useful "tap-arc:*" commands to test passing and failing TAP.
npm run tap-arc:simple
The main library is snapshot tested (npm test
loads all snapshots to compare to current output). Create snapshots with the npm run make-snapshots
commands.
Credit & Inspiration
- tap-spec ol' reliable, but a bit stale and npm vulnerabilities
- tap-difflet inspired output and diffing, also vulnerable
- tap-min helpful approaches to streaming and exit codes
- ansi-regex copied regex pattern for ansi