Freedom251 › JavaScript Testing Frameworks
Pure Test

What Pure Test is
Pure Test is a free, zero-dependency test runner for JavaScript projects running on Node.js, Deno, Bun, Cloudflare Workers, or browsers. Its API provides test suites, assertions, lifecycle hooks, spies, fake timers, and retry and timeout options. The command-line tool supports multiple reporters, test filters, file watching, sharding, and fail-fast execution. The `--shard` option splits test files across CI jobs and exits cleanly when a shard is empty. TypeScript test discovery requires `--ts` on Node.js, while Deno and Bun enable it automatically. A Deno adapter registers tests as `Deno.test()` calls for use with `deno test` and its filtering and IDE workflows. The README includes Jest and Vitest migration guides and notes compatibility for common mock methods such as `mockReturnValue` and `mock.calls`. Pure Test does not isolate tests, so its README recommends lifecycle hooks to manage test state. The project is marked beta, and its APIs may change. It is Apache-2.0 licensed and has no paid plans stated.
Who it suits
It suits developers who want a lightweight runner across several JavaScript runtimes, including teams that need CLI sharding for CI. It may also suit Jest or Vitest users considering migration, provided they can work without test isolation or the excluded features.
What it does well
- Works across Node.js, Deno, Bun, and browsers.
- Includes spies, fake timers, and lifecycle hooks.
- CLI supports filtering, watching, and sharding.
- Deno adapter works with `deno test`.
- Free under the Apache-2.0 license.
What to know first
- Tests are not isolated.
- The project is beta, and APIs may change.
- No module mocking, snapshots, or built-in coverage.
- No worker isolation or configuration files.
Limits
Pure Test is free under Apache-2.0, and no paid plans are stated. It does not isolate tests and excludes module mocking, snapshot testing, built-in coverage, worker isolation and configuration files. The project is beta, so its APIs may change.
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| Apache-2.0 open-source software | No paid plans or pricing stated | Free |
As github.com lists them, read 7 Oct 2026. The maker's own page has the final word.
Getting started
- Install the package with `npm install @igorjs/pure-test --save-dev`.
- Use the test runner with a supported runtime: Node.js, Deno, Bun, Cloudflare Workers or a browser.
- On Node.js, pass `--ts` to enable TypeScript test discovery.
- On Deno, use the adapter to register tests as `Deno.test()` calls.
Pure Test is a free, zero-dependency JavaScript test runner that spans Node.js, Deno, Bun, Cloudflare Workers, and browsers. It suits developers who want one compact tool across runtimes and are comfortable controlling test state explicitly. Its CI-friendly command line and broad runtime support are compelling, but teams needing mature APIs or automatic isolation should choose something else.
Overview
Pure Test aims to keep the test runner small while covering the essentials for unit and integration suites. Installation is a development dependency with npm install @igorjs/pure-test --save-dev. The project is Apache-2.0 licensed, and its free status removes a budget barrier for individual developers and teams.
The tradeoff is maturity. The project describes itself as beta and warns that its APIs may change, so it is better suited to projects able to absorb migration work than to organizations demanding a stable long-term test contract.
Key features
The API includes test suites, assertions, lifecycle hooks, spies, fake timers, and retry and timeout controls. That combination handles ordinary unit-test structure and timing-sensitive code without a large dependency stack. Hooks are particularly important because tests are not isolated from one another; shared state can leak between cases unless your setup and teardown code resets it.
Several familiar capabilities are intentionally outside the product's scope. There is no module mocking, snapshot testing, built-in coverage, worker isolation, or configuration-file support. A team that depends on snapshots, coverage reports, or automatic process-level separation will need supplementary tooling or a different runner.
The CLI is stronger for day-to-day and pipeline work. Multiple reporters, test filters, file watching, fail-fast execution, and sharding support make it practical for local iteration and continuous integration. The --shard option divides test files among jobs, and an empty shard exits cleanly, avoiding needless failures when a CI split leaves one worker without files.
TypeScript discovery is opt-in on Node.js through --ts; Deno and Bun discover TypeScript tests automatically. A Deno adapter registers tests as Deno.test() calls, preserving Deno's filtering and IDE-oriented workflows. Migration guides for Jest and Vitest, plus compatibility with common mock methods such as mockReturnValue and mock.calls, can reduce the effort of moving a codebase, although they do not add the unsupported mocking, snapshot, or coverage systems.
Pricing
Pure Test is free: the Apache-2.0 open-source plan costs nothing, with no paid plans, trial, renewal terms, seat charges, or usage quotas stated. That makes it suitable for personal projects, open-source maintainers, and teams that want a no-cost runner they can install and operate themselves. The price does not offset the beta status or missing features, so budget-conscious teams should still account for the engineering work needed to manage isolation, reporting, or coverage elsewhere.
Platforms
Pure Test is available on Linux, macOS, Windows, self-hosted environments, and the web. Its supported runtimes are Node.js, Deno, Bun, Cloudflare Workers, and browsers. This breadth is its clearest differentiator: a team shipping code in more than one JavaScript runtime can keep a similar runner and CLI workflow. TypeScript behavior differs by runtime, with the Node.js flag requirement contrasting with automatic discovery in Deno and Bun.
Who it's for
Choose Pure Test for a small cross-runtime project, a CI pipeline that benefits from sharding, or a team migrating from Jest or Vitest that needs a leaner runner. It is also a reasonable fit when lifecycle hooks and application-level discipline are acceptable substitutes for automatic isolation.
Look elsewhere if snapshots, built-in coverage, module mocking, worker isolation, or configuration files are core requirements. Teams with strict compatibility and stability policies should also treat the beta API warning as a material risk.
Pros and cons
Pros
- Wide runtime coverage: Node.js, Deno, Bun, Cloudflare Workers, and browsers are covered by one runner.
- Useful CI controls: Sharding, clean empty-shard exits, filtering, reporters, and fail-fast execution support real pipeline layouts.
- Lean distribution: Zero dependencies and a free Apache-2.0 license keep installation and licensing overhead low.
- Migration help: Jest and Vitest guides and common mock-method compatibility can ease adoption.
Cons
- No test isolation: Shared state can contaminate later tests, leaving cleanup to lifecycle hooks.
- Important omissions: There is no module mocking, snapshot testing, built-in coverage, worker isolation, or configuration-file support.
- Beta APIs: Changes may require maintenance as the project evolves.
- Uneven TypeScript setup: Node.js requires --ts, unlike Deno and Bun's automatic discovery.
Alternatives
Vitest is the better choice when you want a free, open-source runner with no stated plan limits and a more established Jest-oriented migration target.
Jasmine fits projects seeking a free JavaScript testing framework across Linux, macOS, web, and Windows without stated pricing or usage limits.
Mocha is a straightforward free option for projects targeting Linux or the web that prefer an open-source framework installed as a development dependency.
QUnit suits teams wanting an open-source framework distributed through CDN, npm, and Yarn, with broader listed platform coverage.
Cucumber.js is preferable when a free npm module and development-dependency installation are the desired starting point.
Web Test Runner is an alternative free open-source option focused on modern web development and browser-oriented tooling.
Testem is a free MIT-licensed open-source JavaScript test runner for Linux, macOS, and Windows.
Karma remains free across many platforms, but it is deprecated and receives no new features or general bug fixes.
Verdict
Pure Test is a strong match for developers who value one lightweight runner across several JavaScript runtimes and need practical CI sharding without license cost. Choose it when your team can enforce cleanup with hooks and live with a beta API. Choose another runner when isolation, snapshots, coverage, module mocking, or long-term API stability are non-negotiable.
Verdict
Pure Test offers a broad runtime range and CI-oriented CLI features in a free package. Its beta status and lack of isolation, snapshots, and built-in coverage are important tradeoffs.
Questions
Is Pure Test free?
Yes. It is Apache-2.0 licensed, with a listed price of $0. No paid plans are stated.
Which runtimes does it support?
The project says it works with Node.js, Deno, Bun, Cloudflare Workers and browsers.
Which platforms are listed?
Linux, macOS, Windows, web and self-hosted.
Does it support TypeScript tests?
Yes. On Node.js, enable discovery with `--ts`; on Deno and Bun, it is automatic.
Does Pure Test isolate tests or provide coverage?
It does not isolate tests and does not include built-in coverage. Its README recommends using lifecycle hooks to manage test state.
What license does it use?
The repository identifies Pure Test as Apache-2.0 licensed.
Facts from Pure Test's own pages
- CI use
- The CLI supports `--shard` to split test files across jobs and exits cleanly for empty shards. · github.com, 7 Oct 2026
- CLI
- The CLI supports multiple reporters, test filters, file watching, sharding, and fail-fast execution. · github.com, 7 Oct 2026
- Deno integration
- A Deno adapter registers tests as `Deno.test()` calls for use with `deno test` and its filtering and IDE workflows. · github.com, 7 Oct 2026
- Excluded features
- The README says the runner will not support module mocking, snapshot testing, built-in coverage, worker isolation, or configuration files. · github.com, 7 Oct 2026
- Free plan
- Yes · github.com, 20 Sept 2026
- Installation
- The README gives `npm install @igorjs/pure-test --save-dev` as the installation command. · github.com, 7 Oct 2026
- Isolation limitation
- The runner does not isolate tests; the README recommends using lifecycle hooks to manage test state. · github.com, 7 Oct 2026
- Jest and Vitest migration
- The README provides migration guides and says mock APIs are compatible for common methods such as `mockReturnValue` and `mock.calls`. · github.com, 7 Oct 2026
- License
- The repository identifies the project as Apache-2.0 licensed. · github.com, 7 Oct 2026
- Maker and company details
- The opened repository page identifies the owner as `igorjs` but does not state a maker name, headquarters, or founding date. · github.com, 7 Oct 2026
- Project status
- The README identifies the project as beta and says its APIs may change. · github.com, 7 Oct 2026
- Purpose
- Pure Test is a minimal, zero-dependency, cross-runtime test runner. · github.com, 7 Oct 2026
- Runtime support
- The project says it works on Node.js, Deno, Bun, Cloudflare Workers, and browsers. · github.com, 7 Oct 2026
- Testing features
- Its API includes test suites, assertions, lifecycle hooks, spies, fake timers, and retry and timeout options. · github.com, 7 Oct 2026
- TypeScript
- TypeScript test discovery is opt-in with `--ts` on Node.js and automatic on Deno and Bun. · github.com, 7 Oct 2026
Where Pure Test stands on Freedom251
- JavaScript Testing Frameworks#5 of 23
- Image Upscaling Software#50 of 99