Skip to content

Release notes and upgrading

StableSince v0.1.0

Use this page when you need to know which package version the docs describe, what changed between versions, or where a section of the old single-page API reference went.

Current version

These docs describe v0.1.0, the version in packages/bun-test-utils/package.json. 0.1.0 is the first supported release of @archont561/bun-test-utils: it was tagged v0.1.0 and published to npm and to GitHub Packages on 2026-10-11, with the packed tarball attached to the GitHub Release. The 0.0.0 versions published earlier were name-reservation placeholders. The published version is “whatever the page footer says” — it is rendered from the package manifest at build time, not typed into a page.

Everything on this site is written against that version. A page whose surface landed later carries a Since vX.Y.Z badge at the top, and a capability whose contract is not yet frozen carries Experimental — see Stability, compatibility, and support.

0.1.0 — the first supported release

What the first release contains:

AreaWhat 0.1.0 shipsTier
Fixture enginetest(), test.extend(), session / file / test scopes, LIFO teardown, dependency injection, overridesStable
Standard fixturestmpdir, env, stdio, clock, seed, networkGuardStable
DOMwindow, document, page on happy-domStable
Browserbrowser, browserContext, browserPage, webPage on headless Chromium, browserHttpMockExperimental
HTTPhttpMock handlers, testServer, serverUrlStable
CassettesCallback record/replay, HTTP recordings, reversible serializersStable
Snapshotssnapshot(), match(), matchFile(), serializers, modesStable
Property-based testingtest.prop, defineArbitraries on fast-checkStable
BDD scenariostest.scenario, test.scenario.prop, typed step helpersExperimental
CLItest-utils init, test-utils cache clearStable

Platforms: Linux and macOS. Windows is not supported in 0.1.x. Bun >=1.1.0; peer packages are happy-dom >=20.0.0, fast-check >=4.0.0, playwright >=1.40.0, and @aboviq/bun-test-cucumber >=0.2.0, all optional. The exact compatibility surfaces are in Stability, compatibility, and support.

How a release is cut

  1. Changes land on main with a changeset describing the user-visible effect and the bump level it needs.
  2. auto-release.yml consumes the pending changesets (bun run release:version) to cut the version bump in a chore(release): prepare v<version> commit on main, then tags it. A run with no pending changesets has nothing to cut and stops before the release gates.
  3. A v<version> tag on a commit that is already on main is the release. The tag’s version must equal the version in the package manifest, or the release workflow refuses it.
  4. The tag publishes to npm (Trusted Publishing, with provenance) and to GitHub Packages, then attaches the packed tarball to the GitHub Release.

The full decision record is ADR 0029. There is no CHANGELOG.md in the repository: GitHub Releases and this page are the release history. See Contributing and docs feedback for the changeset workflow.

Upgrading

There is no earlier supported release, so there is no upgrade path yet. When one is needed, it appears here with:

  • the exact commands or dependency changes,
  • the old behaviour, the new behaviour, and why,
  • which error codes or messages changed, if any.

Stable surfaces follow semantic versioning: a breaking change to one of them means a major version, and the compatibility contract behind what counts as breaking is in ADR 0018. Experimental surfaces may change in a minor release, and each of them is listed in Stability, compatibility, and support.

Where the old API reference went

/reference/api/ was one page. It is now five, and /reference/api/ redirects to Core runner and fixture API. A static host cannot redirect an anchor, so old deep links ending in #… land on a page and then need one more click. Every old anchor is still live under its new page:

Old linkNew page
/reference/api/#importsCore runner and fixture API
/reference/api/#stability-and-platformsCore runner and fixture API
/reference/api/#testname-fn-optionsCore runner and fixture API
/reference/api/#the-iteration-protocol-iterateCore runner and fixture API
/reference/api/#testextendfixturesCore runner and fixture API
/reference/api/#testproptitle-arbitraryfactory-fn-optionsProperty, scenario, and snapshot API
/reference/api/#testscenariotitle-and-testscenarioproptitle-arbitraryfactoryProperty, scenario, and snapshot API
/reference/api/#webpage-one-fixture-two-backendsHTTP, cassette, and browser API
/reference/api/#httpmock-fetch-handlersHTTP, cassette, and browser API
/reference/api/#cassette-callbacks-and-http-recordingsHTTP, cassette, and browser API
/reference/api/#vcr-global-callback-serializersHTTP, cassette, and browser API
/reference/api/#snapshot-value-and-file-snapshotsProperty, scenario, and snapshot API
/reference/api/#built-in-fixture-namesBuilt-in fixture API
/reference/api/#error-message-compatibilityCLI, environment variables, and errors
/reference/api/#error-codesCLI, environment variables, and errors
/reference/api/#environment-variablesCLI, environment variables, and errors

The other moved pages redirect from their old URLs too: /quickstart/ → Install and first passing test, the /guides/* pages → their new homes under Fundamentals and Capabilities, and /reference/plugins/ → Built-in fixture API.

Docs for bun-test-utils v0.1.0 Release notes Report a docs issue