Release notes - uhop/tape-six GitHub Wiki

The current version: 1.x

  • 1.9.0 New features around tester behavior and extensibility. t.plan(n) records the expected direct-assertion count and emits a # plan != count: expected N, ran M TAP comment at test end on mismatch — diagnostic only, doesn't fail the test. Subtest assertions don't count toward the parent's plan (a new internal State.localAsserts counter tracks direct-only). Validates input (non-negative integer, throws TypeError otherwise). registerTesterMethod(name, fn) is the new public registrar for plugins: idempotent for the same function (so per-file plugin imports don't fail), throws on collision with a different function (so plugin name conflicts surface loudly at registration time). Tester is now declared as an interface in index.d.ts precisely so plugin packages can use TS module augmentation without restating the full class shape. The built-in t.OK() evaluator (src/OK.js) was refactored to use the new registrar and stands as the in-tree worked example. 3rd-party library catalog — three new wiki pages cover BYO patterns: assertion libraries (node:assert, chai, expect) with browser-test importmap snippets, mock libraries (node:test mock + sinon), and property-based testing (fast-check). All examples were verified in throwaway projects off-repo. Writing plugins — new wiki page with a t.spawnBin() worked example and a per-file installation table covering the runner-isolation models (tape6-seq shared / tape6 workers / tape6-proc from sister package tape-six-proc subprocesses / browser iframes); plugins must be imported in every test file that uses them. Internal: chai and @types/chai removed from devDependencies (CI smoke-test of the AssertionError path now lives in tests/cli/test-assert.js using node:assert); new tests/node/test-mock.js exercises node:test mock pinned via a new tape6.node config section in package.json; tests/test-describe.js migrated off chai to native t.*; tests/manual/test-chai.js kept as a hand-runnable visual demo. jsconfig.json updated to drop the deprecated baseUrl (TS 7.0 ready); paths now resolves relative to the config file's directory — Bun's path resolution still works.
  • 1.8.0 Added two subpath modules for HTTP-shaped test fixtures. tape-six/server ships withServer(serverHandler, clientHandler, opts?) for per-test scoped servers, startServer(server, opts?) as a procedural primitive that races 'listening' vs 'error' (port-busy rejects rather than hangs), and setupServer(serverHandler, opts?) which registers beforeAll/afterAll and returns a live-getter handle for suite-shared servers. Cross-runtime via node:http (Node, Bun, Deno; not for browsers). tape-six/response ships asText/asJson/asBytes/header/headers reading helpers that work uniformly with both W3C Response (fetch results) and Node http.IncomingMessage. Internal: bin/tape6-server.js migrated to use startServer and process.exitCode. Added types: ["node"] to tsconfig.json (required by module: "Node16" to load @types/node). node: protocol prefix now consistently used for all Node built-in imports.
  • 1.7.14 Updated vendored deep6 from 1.1.x to 1.2.0. Notable upstream changes: added URL object support (new unifier, walker, cloner, and processors), added named exports alongside default exports, added a fast path for naked objects, performance optimizations across the unifier, improved TypeScript typings, expanded test reorganization, and removed the CommonJS build (deep6 is now ESM-only). All tape-six consumer-facing APIs are unchanged — this release only refreshes the vendored copy under src/deep6/.
  • 1.7.13 Replaced process.exit() / Deno.exit() with process.exitCode in all test runners (tape6-node, tape6-bun, tape6-deno, tape6-seq) and index.js to allow graceful stdout flushing before exit. Added isCli helper in index.js. Updated dev dependencies (typescript 5.9→6.0). Updated GitHub Actions (actions/checkout 4→6, actions/setup-node 4→6, github/codeql-action 3→4). Added CI workflow.
  • 1.7.12 Added --help/-h and --version/-v options to all CLI utilities. Added printFlagOptions() to display flag documentation in help output. Updated CLI documentation.
  • 1.7.11 Documentation consistency: added missing sequential test commands (test:seq:bun, test:seq:deno) to AGENTS.md, ARCHITECTURE.md, and agent rule files. Fixed stale ts-test glob reference in prompts/write-test.md. Added test-writing clarifications.
  • 1.7.10 Switched shipped consumer artifacts from Windsurf workflows (workflows/) to vendor-neutral Agent Skills (skills/) following the agentskills.io open standard. Improved CommonJS import documentation: named import const {test} = require('tape-six') is now explicitly recommended.
  • 1.7.9 Merged ts-tests/ into tests/. Fixed .d.ts typing errors exposed by skipLibCheck: false. Added ts-check to CI. Removed standalone ts-test scripts.
  • 1.7.8 Bug fix: flush stdout before exit in Deno runners to prevent truncated output caused by async process.stdout.write() in Deno's Node compat layer.
  • 1.7.7 Bug fix: tape6-server now normalizes paths to Posix format for web clients on Windows. Documented --flags=FO option form.
  • 1.7.6 Bug fix: processArgs now stores option values under canonical names instead of alias names. Removed dead code in processArgs. Added missing TAPE6_MIN to TESTING.md.
  • 1.7.5 Refactored CLI runners to use shared initialization from config.js. Added --info option to print current configuration without running tests. Renamed dontCaptureConsole to noConsoleCapture. Flags are now written back to the environment for worker processes.
  • 1.7.4 Bug fixes: uncaught exception handlers now terminate the process immediately, added suppressStopTest to reporter report() methods, EventServer suppresses StopTest when replaying retained events, removed dead code in TestWorkers.
  • 1.7.3 Bug fixes: corrected bail-out event mapping in reporters, fixed Deno worker env var name, fixed BypassReporter abort delegation, added missing type: 'assert' to exception reports, corrected default messages for deep loose equality asserts. Documentation: corrected and expanded wiki, README, and LLM docs. Removed dead code in MinReporter.
  • 1.7.2 Minor internal refactoring and fixes.
  • 1.7.1 Added AI support, added timeout to start test runners, fixed some bugs in the sequential test runner.
  • 1.7.0 New features: after/before hooks for tests, aliases for suite(), describe(), it(), tape6-seq — an in-process sequential test runner. Improvements: stricter monochrome detection, refactoring, bugfixes, updated dev dependencies and the documentation.
  • 1.6.0 New features: support for AssertionError and 3rd-party assertion libraries based on it like node:assert and chai, support for console.assert(), support for signal to cancel asynchronous operations, tests wait for embedded tests, improved reporting of errors, updated dev dependencies.
  • 1.5.1 Better support for stopping parallel tests, better support for "failed to load" errors.
  • 1.5.0 Internal refactoring (moved state to reporters), added type identification of values in the DOM and TTY reporters, multiple minor fixes.
  • 1.4.5 Internal: added flags support for custom test runners.
  • 1.4.4 Refreshed the lock file.
  • 1.4.3 Updated dev dependencies + a minor bugfix.
  • 1.4.2 Improved documentation.
  • 1.4.1 Added browser automation support.
  • 1.4.0 Added a high-level helper OK() for evaluating simple expressions.
  • 1.3.5 Minor improvements, better docs.
  • 1.3.4 Minor bugfixes and improvements.
  • 1.3.3 Added a way to hide console/streams output, better support for file tests, better TTY formatting.
  • 1.3.2 Internal refactoring (capture console calls), updated dependencies.
  • 1.3.1 Bugfix for web browser using JSONL reporter.
  • 1.3.0 Bugfixes, updated dependencies, new feature: proxied console calls.
  • 1.2.0 Updated dependencies + added an optional prefix for JSON lines.
  • 1.1.2 Updated dependencies.
  • 1.1.1 Technical re-release with the missing index.d.ts file.
  • 1.1.0 Added TypeScript support.
  • 1.0.4 Bugfix for platform-specific tests, old platforms, minor updates to accommodate Deno 2, updated dev deps.
  • 1.0.3 Minor update to accommodate changes in Bun and updated dev deps.
  • 1.0.2 Bugfix for Deno using the JSONL reporter.
  • 1.0.1 Technical release: added more links.
  • 1.0.0 The first official release.

0.x releases

  • 0.12.3 Technical release: exposed internal classes for external utilities.
  • 0.12.2 Fixed a minor serialization issue.
  • 0.12.1 Minor Deno-related refactoring, fixed the way tests are triggered.
  • 0.12.0 Removed data to avoid serializing non-serializable objects.
  • 0.11.0 Minor improvements to the server: temporary redirects, a hyperlink to the web app.
  • 0.10.0 Refactored test runners, refactored stopping tests on failure, added JSONL reporter, fixed bugs.
  • 0.9.6 Updated deps.
  • 0.9.5 Updated the lock file.
  • 0.9.4 Updated deps. Added test runners for Bun and Deno.
  • 0.9.3 Made TTY reporter work with non-TTY streams.
  • 0.9.2 Fixed Windows runner.
  • 0.9.1 More updates related to renaming tape6tape-six.
  • 0.9.0 Initial release.