better-tape is intended to be an extension pack with the much requested features that are missing in tape. Here is
a 10 minute read on why
one should pick tape
over mocha
.
Following are the features that are currently supported
- Support for
before(handle)
to provide start-up hook - Support for
after(handle)
to provide clean-up hook - Full support for adding the above lifecycle hooks at all levels of a nested test suite
npm i better-tape --save-dev
This is a fork of tape, please refer to tape README for complete documentation
You always need to require('better-tape)
in your test files. You can run the tests using better-tape
binary to utilize
globbing, for example
$ better-tape tests/**/*.js
Using only
with nested test cases NEW WITH better-tape@1.1.0
const test = require('beter-tape');
test.only('Nested only test', function (suite) {
suite.test('ignored nested test-1', function (t) {
t.fail('should not be executed');
t.end();
});
suite.test('ignored nested test-2', function (t) {
t.fail('should not be executed');
t.end();
});
suite.only('nested ONLY test-3', function (t) {
t.pass('Only nested test case that should have been run');
t.end();
});
});
Output
TAP version 13
# Subtest: test/only6.js
# only6 nested only test
# nested ONLY test-3
ok 1 Only nested test case that should have been run
1..1
# tests 1
# pass 1
# ok
ok 1 - test/only6.js # time=130.732ms
1..1
# time=144.871ms
Using before
and after
hooks at top level
const test = require('beter-tape');
test.before((handle) => {
console.log(`\n>> INSIDE before`);
handle.end();
});
test.after((handle) => {
console.log(`>> INSIDE after\n`);
handle.end();
});
test('Test 1', (t) => {
t.pass('Executing Test 1');
t.end();
});
test('Test 2', (t) => {
t.pass('Executing Test 2');
t.end();
});
Output
TAP version 13
# Subtest: test/sample.js
# Test 1
>> INSIDE before
ok 1 Executing Test 1
>> INSIDE after
# Test 2
>> INSIDE before
ok 2 Executing Test 2
>> INSIDE after
1..2
# tests 2
# pass 2
# ok
ok 1 - test/sample.js # time=109.678ms
1..1
# time=122.405ms
Using before
and after
hooks with nested test cases
const test = require('better-tape');
test.before((handle) => {
console.log(`\n>> INSIDE before`);
handle.end();
});
test.after((handle) => {
console.log(`>> INSIDE after\n`);
handle.end();
});
test('Suite 1', (suite) => {
suite.before((handle) => {
console.log(`\n\t >>>> INSIDE NESTED before`);
handle.end();
});
suite.after((handle) => {
console.log(`\t >>>> INSIDE NESTED after\n`);
handle.end();
});
suite.test('Nested test 1', (t) => {
t.pass('Executing Nested Test 1');
t.end();
});
suite.test('Nested test 2', (t) => {
t.pass('Executing Nested Test 2');
t.end();
});
});
Output
TAP version 13
# Subtest: test/sample.js
# Suite 1
>> INSIDE before
# Nested test 1
>>>> INSIDE NESTED before
ok 1 Executing Nested Test 1
>>>> INSIDE NESTED after
# Nested test 2
>>>> INSIDE NESTED before
ok 2 Executing Nested Test 2
>>>> INSIDE NESTED after
>> INSIDE after
1..2
# tests 2
# pass 2
# ok
ok 1 - test/sample.js # time=102.496ms
1..1
# time=115.107ms
Copyright of large portions of project better-tape are held by James Halliday as part of project tape. All other copyright for project is under MIT license.