Skip to content

Rich-Harris/tape-modern

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

tape-modern

Minimum viable testing framework:

  • TAP compliant
  • Works in Node and in browsers
  • Everything is assumed to be async — no need to faff around with t.plan and t.end

It requires Node 7.6+, because it uses async/await.

Installation

npm i -D tape-modern

Usage

const { test } = require('tape-modern');

test('these tests will all pass', t => {
	t.ok(true);
	t.ok(true, 'this time with an optional message');
	t.ok('not true, but truthy enough');

	t.equal(1 + 1, 2);
	t.equal(Math.max(1, 2, 3), 3);

	t.throws(() => {
		throw new Error('oh no!');
	}, /oh no!/);

	t.pass('this too shall pass');
});

test('these tests will not pass', t => {
	t.equal(42, '42');
	t.equal({}, {});
	t.fail('womp womp');
});

test.skip('this test will not run', t => {
	t.pass(false);
});

You can create custom assertions by adding methods to assert:

const { test, assert } = require('tape-modern');

assert.isArray = (value, msg = 'should be an array') => {
	assert.ok(Array.isArray(value), msg);
};

assert.isNotArray = (value, msg = 'should not be an array') => {
	assert.ok(!Array.isArray(value), msg);
};

test('things that are array-like', t => {
	const divs = document.getElementsByTagName('div');

	t.isNotArray(divs);
	t.isArray([...divs]);
});

To run (a) selected test(s), use test.only:

test('this test will not run', t => {
	// ...
});

test.only('this test will run', t => {
	// ...
});

test.only('so will this', t => {
	// ...
});

To skip a test, use test.skip:

test.skip('this test will be skipped', t => {
	// ...
});

You can check when your tests have finished running with the done promise:

const { done } = require('tape-modern');

// make it visible to e.g. Puppeteer, so that
// we can do `await page.evaluate(() => done)`
window.done = done;

License

LIL

About

Minimum viable testing framework

Resources

License

Stars

Watchers

Forks

Packages

No packages published