Setting up and maintaining a test framework can sometimes be complex and time consuming. I've created xv
to be a low maintainance, easy to setup and use test runner.
xv
is great for small and medium projects.
- โก Super fast
~0.03s
- ๐ฆ Lighweight
<10kB
with zero dependencies - ๐ฐ Simple no API to learn, zero-config
- Natively supports ESM
Requires Node v12.20.0+
npm install xv --save-dev
yarn add xv --dev
Create a test file src/add.test.js
(or src/test.js
) and use Node's built-in assert
module:
import { strict as assert } from 'assert' // Node <=16
// import { equal } from 'assert/strict' // Node >=16
export function testAdd() {
assert.equal(1 + 2, 3)
}
Edit package.json
:
{
"scripts": {
"test": "xv src"
}
}
Run your tests:
npm test # run all test files in ./src
npx xv src/add.test.js # run a single test file
For a limited time xv
is available to Sponsors only. Once the goal of 70 sponsors is reached (currently 58), I'll release it under MIT for everyone ๐
If you like this project and my work, please help me reach this goal by becoming a sponsor. Thank you!
Note: if you're already sponsoring me via husky, feel free to use xv
in any type of project.
If you're using TypeScript, compile your .ts
and run xv
directly on compiled .js
files.
Assuming you have the following tsconfig.json
:
{
"compilerOptions": {
"outDir": "./lib"
}
}
Edit package.json
to exclude test files from being published and run tsc
before xv
:
{
"files": [
"lib",
// exclude test files
"!lib/**/*.test.js",
"!lib/**/test.js"
],
"scripts": {
"build": "rm -rf lib && tsc",
"test": "npm run build && xv lib"
}
}