NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #824 most downloaded on npm
Simple and complete DOM testing utilities that encourage good testing practices.
Last release 21 days ago
13 Sep 2026
Ships unpredictably
gaps range from 8 days to 1.1 years
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
230 releases · first in 2019
deps: pin @types/node to a TypeScript 4-compatible version
One column per quarter.
Reduce caught exceptions in prettyDom (reland)
safer read of DEBUG_PRINT_LIMIT
Revert "feat: Reduce caught exceptions in prettyDom ( #1321 )"
Reduce caught exceptions in prettyDom
Support anonymous custom elements when pretty printing DOM
Add window events "pagehide" / "pageshow"
use defineProperty on the error object instead of setting the message directly ( #1268 ) ( 3580f25 ), closes #1259
aria-query changes various roles. Check out the changed tests in 2c57055 to get an overview about what changed.Stop calling waitFor callback after timeout
use defineProperty on the error object instead of setting the message directly (#1268) (3580f25), closes #1259
role-helpers: refine logRoles fn types
Minimum supported Node.js version is now 18.x
update node version in codesandbox
drop support for node 16 too
Stop calling waitFor callback after timeout
use defineProperty on the error object instead of setting the message directly (#1261) (270a531), closes #1259
role-helpers: refine logRoles fn types
## 9.3.1 (2023-06-14) ### Bug Fixes * pin aria-query
waitFor: Support async unstable_advanceTimersWrapper
ByRole: Allow filter by value state
ByRole: Allow filter by busy state
Ensure MIT licensed lz-string is used
ByRole: Only allow string as a role. Drop support for exact, trim, collapseWhitespace, and normalizer options.
ByRole: Only allow string as a role. Drop support for exact, trim, collapseWhitespace, and normalizer options.
string as a role.
Drop support for exact, trim, collapseWhitespace, and normalizer options.Minimum supported Node.js version is now 14.x
pin aria-query version and upgrade lz-string
# 8.20.0 (2023-01-16) ### Features * add offline/online events
Bump used aria-query types (#1198) (9f363af), closes #1197
Enhance ByText error with selector
Pin supported target environment
Allow disabling colorized debug output
log ignored selectors correctly on error
ByRole: improved byRole query performance
Don't assume named exports interop
add a return value from logTestingPlaygroundURL
add name hint to missing error in find by queries
load and error dispatch Event instead of UIEvent
add defaultIgnore config option
# 8.13.0 (2022-04-05) ### Features * byRole: Add description filter
# 8.12.0 (2022-03-26) ### Features * enhance byText missing error
reset regexg to prevent regexg with global flags to not match every element
improve error message when no window found
within: Add extra type paramater to allow reassigning in TypeScript
wait-for: Don't queue microtasks after condition is met
Prioritize accessible names check higher than inaccessibility check in byRole queries
## 8.10.1 (2021-10-18) ### Bug Fixes * Bump dom-accessibility-api
# 8.10.0 (2021-10-18) ### Features * Use ARIA 1.2 for role queries
ByRole: Ensure valid query selectors in all transpilation targets
ByRole: Check only elements that could be a match
within: types should list custom and base queries
buildQuery: get*Error functions receive same Arguments type as queryAllBy parameter
add generics to screen queries (#1034) (99bc2c0), closes #1033
Add support for firing all transition events
config: Add unstable_advanceTimersWrapper
restore prettyDOM logging for Cypress
ByRole: Allow filter by aria-current state
support getting text of inputs of type reset
# 8.1.0 (2021-07-01) ### Features * fireEvent: Add resize event
Remove deprecated waitFormDOMChange
jest fake timers make sure you use modern timers
jest 27:-jest.useFakeTimers('legacy')
+jest.useFakeTimers('modern')
// jest.config.js
-"timers": "legacy",
+"timers": "modern",
jest 26:-jest.useFakeTimers()
+jest.useFakeTimers('modern')
// jest.config.js
-"timers": "legacy",
+"timers": "modern",
waitFormDOMChangewaitForElementtimeout in waitFor(callback, { interval, timeout } ) now uses the same clock as interval. Previously timeout was always using the real clock while interval was using the global clock which could've been mocked out. For the old behavior I'd recommend waitFor(callback, { interval, timeout: Number.POSITIVE_INFINITY }) and rely on your test runner to timeout considering real timers.<script />, <style /> and comment nodes are now ignored by default in prettyDOM .If you whish to return to the old behavior, use a custom filterNode function. In this case prettyDOM(element, { filterNode: () => true }).# 8.0.0-alpha.7 (2021-06-20) ### Bug Fixes * Consider labelable
node 10 is no longer supported. It reached its end-of-life on 30.04.2021.
Your coding agent can read these notes before it upgrades. Set up the MCP server →