2.1.1 • Published 3 years ago
xv v2.1.1
A tiny test runner focused on simplicity and speed
$ xv ./src
src/add.test.js: 0.103ms
src/sub.test.js: 0.064msExtracted from lowdb (TypeScript and ESM local database). One of the fastest test runner according to this benchmark.
Install
npm install xv --save-devUsage
Create a test file and use Node's built-in assert module:
// src/add.test.js
import assert from 'node:assert/strict'
import add from './add.js'
// This is plain Node code, there's no xv API
export function testAdd() {
assert.equal(add(1, 2), 3)
}Edit package.json:
{
"scripts": {
"test": "xv src"
}
}Run tests:
npm test # run all test files in ./src
npx xv src/add.test.js # run a single test fileConvention
By default, xv will look for files named: *.test.js, test.js, *.test.ts and test.ts
TypeScript
With TypeScript + ts-node
npm install ts-node --save-dev{
"scripts": {
"test": "xv --loader=ts-node/esm src"
}
}With TypeScript only
Compile your .ts files using tsc and run xv on compiled .js files.
For example, assuming your compiled files are in lib/, edit package.json to run xv after tsc:
{
"scripts": {
"test": "tsc && xv lib"
}
}If you're publishing to npm, edit package.json to exclude compiled test files:
{
"files": [
"lib",
"!lib/**/*.test.js",
"!lib/**/test.js"
]
}Common JS
// src/add.test.js
const assert = require('assert').strict;
const add = require('./add')
exports.testAdd = function() {
assert.equal(add(1, 2), 3)
}Watch mode
xv doesn't have a watch mode. If the feature is needed, it's recommended to use tools like watchexec or chokidar-cli to re-run xv when there are changes.