
Company News
Socket Named Top Sales Organization by RepVue
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.
An almost-drop-in replacement for the assert module provided by Node core that
prints TAP compliant output instead of throwing AssertionErrors.
Uses
assert if you prefer bare asserts and no test
runner or harness but you still want TAP output (node plain.js)assert if you use a TAP consuming test runner
but don't want to use a "real" test harness (tap plain.js)assert to tapUse tapsert the same as you would use assert if you don't use a test runner.
Start with the assert module from node core.
var assert = require('assert');
assert.equal('actual', 'expected', 'core assert style');
Replace require('assert') with require('tapsert') to produce TAP output.
var assert = require('tapsert');
assert.equal('actual', 'expected', 'core assert style');
Rename assert to tap to prepare for switching to https://github.com/tapjs/node-tap.
var tap = require('tapsert');
tap.equal('actual', 'expected', 'tap assert style');
Replace require('tapsert') with require('tap') and you're using tap.
var tap = require('tap');
tap.equal('actual', 'expected', 'tap assert style');
Tests are written as simple asserts revealing full intentions.
// example.js
var assert = require(process.env.ASSERT || './');
assert(assert, 'assert exists');
assert(assert.equal, 'assert.equal exists');
assert.equal(typeof assert.strictEqual, 'function',
'assert.strictEqual is a function');
assert.ok(false, 'really want false to be true');
assert.doesNotThrow(function() {
assert.throws(function() {
throw Error('expected!');
}, /expected/, 'supports assert.throws');
}, 'nested asserts are weird.');
Output shows the result of each assertion, even if there are failures:
$ node test.js
TAP version 13
ok 1 - assert exists
ok 2 - assert.equal exists
ok 3 - assert.strictEqual is a function
not ok 4 - really want false to be true
# actual: false
# expected: true
# operator: "=="
# message: really want false to be true
# AssertionError: really want false to be true
# at Function.tapifiedAssert [as ok] (/Users/ryan/work/tapsert/index.js:25:14)
# at Object.<anonymous> (/Users/ryan/work/tapsert/example.js:7:8)
# at Module._compile (module.js:456:26)
# at Object.Module._extensions..js (module.js:474:10)
# at Module.load (module.js:356:32)
# at Function.Module._load (module.js:312:12)
# at Function.Module.runMain (module.js:497:10)
# at startup (node.js:119:16)
# at node.js:906:3
ok 6 - supports assert.throws
ok 5 - nested asserts are weird.
1..6
# tests 6
# pass 5
# fail 1
$ echo $?
1
The same tests run with assert from node core (output captured from stderr):
$ ASSERT=assert node example.js
assert.js:92
throw new assert.AssertionError({
^
AssertionError: really want false to be true
at Object.<anonymous> (/Users/ryan/work/tapsert/example.js:7:8)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:906:3
$ echo $?
8
© 2014 Ryan Graham
FAQs
Drop in assert replacement that produces TAP output.
We found that tapsert demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.

Security News
NIST will stop enriching most CVEs under a new risk-based model, narrowing the NVD's scope as vulnerability submissions continue to surge.

Company News
/Security News
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.