UNPKG

basictap

Version:
116 lines (91 loc) 3.15 kB
# basictap ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/markwylde/basictap?style=flat-square) [![GitHub package.json version](https://img.shields.io/github/package-json/v/markwylde/basictap?style=flat-square)](https://github.com/markwylde/basictap/blob/master/package.json) [![GitHub](https://img.shields.io/github/license/markwylde/basictap?style=flat-square)](https://github.com/markwylde/basictap/blob/master/LICENSE) [![js-semistandard-style](https://img.shields.io/badge/code%20style-semistandard-brightgreen.svg?style=flat-square)](https://github.com/standard/semistandard) Light tap adherent test runner. - Asyncronous tests run in parallel - Outputs tap syntax - Uses built in node `assert` library ## Installation ```bash npm install --save basictap ``` ## Features ```javascript test.only('will only run this (and other only) tests', t => {}); test.skip('will not run this (or other skip) test', t => {}); test.todo('will not run and will remind you at the end') test('will run', t => {}); ``` ## Assertions Adheres and uses the built in [assert](https://nodejs.org/api/assert.html) library from node. ```javascript t.plan(1) // number of expected assertions t.timeout(1000) // in milliseconds t.waitFor(() => true), { timeout: 500 }) // continuously try until passes or timesout (in milliseconds) t.pass() t.fail() t.ok(true) t.notOk(null) t.equal('test', 'test') t.notEqual('test', 'no') t.deepEqual({ a: 1 }, { a: 1 }) t.notDeepEqual({ a: 1 }, { a: 2 }) t.deepStrictEqual({ a: 1 }, { a: 1 }) t.notDeepStrictEqual({ a: 1 }, { a: 2 }) t.strictEqual('test', 'test') t.notStrictEqual('test', 'no') t.throws(result, new Error('oh noes')) t.rejects(result, new Error('oh noes')) t.doesNotThrow(result, new Error('oh noes')) t.doesNotReject(result, new Error('oh noes')) t.match('I will pass', /pass/); t.doesNotMatch('I will fail', /pass/); ``` ## Example ```javascript const test = require('basictap'); // default is 1 // setting to 5 will run a maximum of 5 tests at a time // setting to Infinity will run all tests at once test.maximumConcurrentTests = Infinity; test.on('finish', totalAssertionsFailed => console.log('run once all tests have finished')); test('basic test that passes', t => { t.plan(1); t.equal(1, 1); }); test('basic test that assets with a description', t => { t.plan(1); t.equal(1, 1, 'optional message to describe assertion'); }); test('plan is optional, but recommended', t => { t.equal(1, 1); }); test('basic test that passes with async', async t => { t.plan(1); const something = await doSomething(); t.equal(something, 1); }); test('basic test that passes with timer', async t => { t.plan(1); setTimeout(() => { t.equal(something, 1); }, 100); }); test('cleanup', async t => { t.plan(1); const server = http.createServer((request, response) => { response.end('ok'); }).listen(8080); fetch('http://localhost:8080') .then(response => response.text()) .then(text => { t.equal(text, 'ok'); }); // this will run once the number of planned tests is reached return () => { server.close(); }; }); ```