CheckOps
node-tap
node-tap (the `tap` package from tapjs) is a full-featured Node.js test framework built on the Test Anything Protocol, with TypeScript support, built-in coverage, snapshots, mocking and a plugin system.
Latest public signals
Not refreshed yet. Refresh reads the public site and, when the entry has a GitHub repository, the latest release.
Introduction
node-tap is one of the oldest test frameworks in the Node.js ecosystem, developed by Isaac Z. Schlueter (creator of npm). It is built around the Test Anything Protocol (TAP), a simple text format for test results that many tools can consume. Version 18 rebuilt the framework as a plugin-based system in the tapjs monorepo, and the latest release at the time of writing was tap@21.8.0 on 3 September 2026.
The tap runner runs each test file in its own process and includes code coverage by default, failing the run if coverage drops below the configured threshold (100% by default in recent versions, configurable). It supports TypeScript out of the box, snapshot testing (t.matchSnapshot), fixtures, mocking of modules (t.mockImport/t.mockRequire), spies via plugins, and timeouts. Licensing is per package in the monorepo (BlueOak-1.0.0 for the core packages; see the repository).
The source code is at tapjs/tapjs on GitHub under the BlueOak-1.0.0 (per package) licence, with about 2,400 stars; the most recent commit was on 5 November 2026.
Features
- TAP output: Standard Test Anything Protocol results consumable by many tools.
- Coverage built in: Coverage is collected and enforced by default.
- Process isolation: Each test file runs in its own process.
- Plugins: Snapshots, fixtures, module mocking, spies and more as plugins.
Pros
- Free to use: Open source under the BlueOak-1.0.0 (per package) licence, so the core tool costs nothing to use.
- Actively maintained: The repository had commits as recent as 5 November 2026.
Cons
- Strict coverage default: Default coverage enforcement surprises new users until configured.
- Smaller mindshare: Fewer tutorials than Jest or Vitest.
Usage and Links (Example)
npm install --save-dev tap
import t from "tap";
import { parse } from "../src/parse.js";
t.test("parses numbers", async (t) => {
t.equal(parse("42"), 42);
t.matchSnapshot(parse("[1,2]"), "array output");
});
npx tap
Resources:
Pricing
node-tap is free and open source under the BlueOak-1.0.0 (per package) licence.
Recommended for?
- Node.js projects that value TAP output and enforced coverage.
- Teams wanting a batteries-included, plugin-based framework.
Conclusion
node-tap is a mature, opinionated Node.js test framework with coverage, TAP output and plugins built in, best for teams that want strict quality gates by default.
Alternatives
Other tools on CheckOps that cover similar ground. Open a page, or compare one with node-tap side by side.
NNode.js Test Runner (node:test)The Node.js test runner is the built-in `node:test` module, stable since Node.js 20, providing describe/it tests, mocking, snapshots, coverage and reporters with no extra dependencies.Compare with node-tap
AAVAAVA is an MIT-licensed Node.js test runner that runs test files concurrently in separate worker processes, with a minimal API, clean output, built-in assertions and snapshot support.Compare with node-tap
MMochaMocha is a long-running, MIT-licensed JavaScript test framework for Node.js and browsers, with BDD and TDD interfaces, async support, hooks, parallel mode and a large reporter ecosystem.Compare with node-tap
JJestJest is a free, open-source JavaScript test runner with zero-config defaults, mocks, and snapshot testing.Compare with node-tap
VVitestVitest is a free, open-source unit test runner that reuses a Vite project's config, transforms, and plugins.Compare with node-tap
Cc8c8 is an ISC-licensed code coverage tool for Node.js that uses V8's built-in coverage instead of instrumentation, producing Istanbul-compatible reports for any test runner.Compare with node-tap