Skip to content

dy/tst

Repository files navigation

tst

Test without efforts.

  • tape API
  • no tooling, vanilla ESM
  • async functions support
  • inspectable errors
  • correct stacktrace with sourcemaps
  • good l&f in browser/node
  • supports assert, chai etc.
  • tiny bundle, 0dep

usage

import test, { ok, is, not, throws } from 'tst.js'

test('pass', () => {
	ok(true);
	ok(true, 'this time with an optional message');
	ok('not true, but truthy enough');

	is(1 + 1, 2);
	is(Math.max(1, 2, 3), 3);
	is({}, {})

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

test('fail', () => {
	is(42, '42');
	is({}, {x:1});
})

Creates output in console:

preview

api

  • test.skip − bypass test, mutes output
  • test.only − run only the indicated test, can be multiple
  • test.todo − bypass test, indicate WIP sign
  • test.demo − demo run, skips failed assertions.

assert

  • ok(a, msg?) − generic truthfulness assert
  • is(a, b, msg?) − assert with Object.is for primitives and deepEqual for objects
  • not(a, b, msg?) - assert with !Object.is for primitives and !deepEqual for objects
  • any(a, [a, b, c], msg?) − assert with optional results
  • almost(a, b, eps, msg?) − assert approximate value/array
  • same(listA, listB, msg?) − assert same members of a list/set/map/object
  • throws(fn, msg?) − fn must throw
  • pass(msg), fail(msf) − pass or fail the whole test.

why?

Testing should not involve maintaining test runner.
It should be simple as tap/tape, working in browser/node, ESM, with nice l&f, done in a straightforward way.
I wasn't able to find such test runner that so I had to create one.

similar

🕉️