node:test
Node.js's built-in test runner. Zero dependencies, already installed.
What it is
Since Node 18, the runtime ships its own test runner with describe/it, mocking, coverage, watch mode and a TAP reporter, available as the node:test module and the node --test flag. For libraries and services that want no test dependencies at all, it is now a legitimate option.
Best for
Where it is strong
- No dependencies to install, audit or upgrade — a real supply-chain advantage for libraries.
- Stable and versioned with the runtime itself.
- Fast, with parallel execution by file and built-in coverage.
Where it falls short
- No DOM environment, so it is a poor fit for front-end component testing.
- Ecosystem of reporters and matchers is tiny compared to Jest or Vitest.
- TypeScript requires a loader or a build step.
Pricing
Free and open source
Open sourceFree tier: Everything, self-hosted
What drives the bill: Free and open source. You pay in engineering time and CI minutes.
Check current pricing on OpenJS Foundation’s siteFigures are indicative and were last reviewed August 2026. Vendors change pricing often; confirm before you commit.
Works with
What people who use node:test say
No reviews of node:test yet. If you have used it in anger, yours would be the first.
Alternatives to node:test
If node:test is not the right fit, these solve the same problem differently.
Vitest
Unit & Component
Vite-native test runner with instant watch mode and a Jest-compatible API.
Mocha
Unit & Component
Minimal, unopinionated Node.js test runner you assemble to taste.
AVA
Unit & Component
Concurrent Node.js test runner that isolates every file in its own process.