CheckOps
AVA
AVA 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.
Latest public signals
Not refreshed yet. Refresh reads the public site and, when the entry has a GitHub repository, the latest release.
Introduction
AVA is a test runner for Node.js that “lets you develop with confidence”. Its signature design choice is concurrency: each test file runs in its own worker (worker threads by default), and tests within a file run concurrently unless marked serial. This isolation means global state cannot leak between files and makes AVA fast on multi-core machines.
AVA has no implicit globals; you import test and use the assertion object t passed to each test (t.is, t.deepEqual, t.throws, t.snapshot and more). It supports async functions, observables, TypeScript via loaders, watch mode, and magic assert output that shows clear diffs. The latest release, v8.4.0, was published on 7 November 2026.
The source code is at avajs/ava on GitHub under the MIT licence, with about 20,800 stars; the most recent commit was on 7 November 2026.
Features
- Concurrent by default: Files run in separate workers; tests in a file run concurrently.
- No globals: Explicit
import test from 'ava'keeps scope clean. - Built-in assertions and snapshots:
t.*assertions with readable diffs andt.snapshot. - Watch mode: Re-runs affected tests as files change.
Pros
- Free to use: Open source under the MIT licence, so the core tool costs nothing to use.
- Actively maintained: The repository had commits as recent as 7 November 2026.
- Community: About 20,800 GitHub stars.
Cons
- Concurrency needs care: Tests that share external resources must use
test.serial. - No built-in mocking: Pair with Sinon or similar for stubs.
Usage and Links (Example)
npm init ava
import test from "ava";
import { slugify } from "./slugify.js";
test("slugify lowercases and hyphenates", (t) => {
t.is(slugify("Hello World"), "hello-world");
});
test("async fetch", async (t) => {
const user = await loadUser(1);
t.like(user, { id: 1 });
});
npx ava --watch
Resources:
Pricing
AVA is free and open source under the MIT licence.
Recommended for?
- Node.js library authors wanting fast, isolated tests.
- Teams who prefer explicit imports over global test APIs.
Conclusion
AVA offers a minimal, concurrency-first approach to Node.js testing with excellent isolation and output, ideal for libraries and backend modules.
Alternatives
Other tools on CheckOps that cover similar ground. Open a page, or compare one with AVA side by side.
JJestJest is a free, open-source JavaScript test runner with zero-config defaults, mocks, and snapshot testing.Compare with AVA
VVitestVitest is a free, open-source unit test runner that reuses a Vite project's config, transforms, and plugins.Compare with AVA
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 AVA
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 AVA
Nnode-tapnode-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.Compare with AVA
JJasmineJasmine is a long-established, MIT-licensed behaviour-driven JavaScript testing framework for browsers and Node.js, with built-in assertions, spies and asynchronous support and no required dependencies.Compare with AVA