Three languages · six runtime paths

Test the language you ship.

Use one native JavaScript module unchanged in Node.js and real browsers. vanilla-test works with bundlers and without a bundler. Native ESM uses a standard import map and no transpilation.

  • Node.js
  • Real browser
  • Native V8 coverage
# JavaScript · Node + browser
npm install vanilla-test

No build step. Node and browsers execute the ES module directly.

Why Vanilla Test

Less machinery between code and truth.

Vanilla is a control-surface choice. JavaScript stays an ordinary ES module in Node and Chrome. Rust stays ordinary safe Rust natively and compiles its tests with Cargo. C# stays an ordinary .NET library and reuses its parameterless MSTest methods through a browser-hosted .NET runtime. No language implementation wraps another.

Your language

End to end by choice.

JavaScript, Rust, and C# each own their native lifecycle and browser path.

Same inventory

Runtime paths, not test copies.

Each language's browser path executes the same source used by its native path.

Fewer seams

A smaller control surface.

No JavaScript build pipeline, Rust WASM framework, or C# test-source copy is required.

Published quality snapshot

Loading verified status… latest successful main build main

Shared runtime suite Node + Chrome

One untransformed verification module in both runtimes.

Node tooling suite Integration verified

CLI, configuration, timeout, server, and path-safety behavior.

Shared-core coverage Independent gates

Statements, branches, functions, and lines in Node and Chrome.

Badge information

What each badge proves.

Badges are compact links to package metadata or build evidence. Use the testing and coverage pages when you need the scope, commit, timestamp, and raw reports behind them.

CI workflow status npm package version monthly npm downloads MIT license published quality gates published Node core coverage published Chrome core coverage
CI

Required repository gates

Links to the workflow that runs JavaScript, Rust, and C# natively and in real Chrome, verifies packages, and deploys Pages evidence.

npm

Published package metadata

Version and download badges come from npm. The license badge reflects the repository's MIT license.

Quality

Test results with provenance

The quality endpoint is generated from the successful main build. The Testing page shows each gate separately.

Coverage

Runtime-specific evidence

Node and Chrome badges stay separate because each runtime collects and enforces its own native V8 coverage.

JavaScript engineer paths

Focused Node + browser references.

These detailed pages belong to the JavaScript lane. Use the persistent language selector for Rust or C# documentation.

Implement

Run one suite in two hosts

Create the shared entry, add the Node adapter, and configure the complete document-relative browser import map.

Read the getting-started guide →
Learn by example

Copy complete working patterns

Start from runnable browser, Node, async, failure, and type-check examples.

Browse the examples →
Integrate

Use the lifecycle correctly

Understand active-test guards, immutable result snapshots, completion events, and strict decisions.

Open the API reference →
Experiment

Run code in the playground

Edit a real ES module, inspect its mirrored console output, and reset the isolated runtime between runs.

Launch the playground →

Install

Choose the package for your language.

Each package preserves the same small lifecycle while staying idiomatic to its runtime.

npm install vanilla-test
Check the terminal.

A successful install exits with status 0.