Files
pezkuwi-dev/packages/dev-test
Satoshi Qazi Muhammed 71c6f83ba0 dev-test: asymmetric matchers in .toEqual; arrayContaining checks entries
.toEqual compared with assert.deepEqual and never looked at matchers, so
expect(x).toEqual(expect.arrayContaining(...)) or
.toEqual(expect.stringContaining(...)) always failed; matchers only
worked inside toHaveBeenCalledWith. arrayContaining was also typed to
take a string and checked value.includes(theWholeArray).

.toEqual (and .not.toEqual) now apply matchers wherever they appear in
the expected value, with the previous deepEqual unchanged when there
are none; arrayContaining asserts that every expected entry equals (or
matches) one of the array's entries. Seven new cases; with the old
.toEqual six of them fail.
2026-10-10 06:36:44 +04:00
..

@pezkuwi/dev-test

This is a very basic Jest-compatible environment that could be used alongside tests. The need for this came from replacing Jest with node --test without rewriting all assertions.

It provides the following -

  1. Browser window, document, navigator (see usage for browser-specific path)
  2. jest functions, specifically spyOn (not comprehensive, some will error, some witll noop)
  3. expect functions (not comprehensive, caters for specific pezkuwi-js usage)

Usage

On thing to note is that node:test is still rapidly evolving - this includes the APIs and features. As such this requires at least Node 18.14, however 18.15+ is recommended.

The entry points are different based on the environment you would like to operate in. For a browser-like environment,

node --require @pezkuwi/dev-test/browser ...

or for a basic describe/expect/jest-only global environment

node --require @pezkuwi/dev-test/node ...

The ... above indicates any additional Node options, for instance a full command could be -

node --require @pezkuwi/dev-test/node --test something.test.js