NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #1326 most downloaded on npm
Fire events the same way the user does
Last release 1 months ago
02 Sep 2026
Ships unpredictably
gaps range from 8 days to 1.5 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
206 releases · first in 2019
One column per quarter.
tab retargeting if focus moved during keydown
14.6.4 (2026-08-11) Bug Fixes keyboard event repeat property
release: manually release a patch version ( #1321 ) ( 1d18b1f ), closes #1317
correct description for delay option
delay option (#1175) (2edf14d)ContextMenu to defaultKeyMap (#1079) (3e471d1)defaultKeyMap (#1226) (543ecb0)pointerdown is defaultPrevented (#1121) (f681f7b)button and buttons properties on PointerEvent (#1219) (6614f72)1 as default value for PointerEvent.width and PointerEvent.height (#1224) (f0468d0)click event loop on form-associated custom element (#1238) (465fc7e)click event on non-focusable control (#1130) (e429094)accept filter more leniently (#1064) (a344ad4)dispatch FocusEvent in hidden documents
DataTransferItem.getAsString() callback (#1251) (7b11b0e)PointerCoords.x in isDifferentPointerPosition (#1216) (75edef5)PointerCoords in isDifferentPointerPosition() (#1229) (5f3d28f)remove interop and deep DTL imports
incorrect default import from @testing-library/dom
## 14.4.2 (2022-08-04) ### Bug Fixes * build: add exports field
build: transpile to es2019 syntax
pointer: dispatch auxclick events
Control on AltGraph (#1003) (2852509)contextmenu events with detail: 0 (#1003) (2852509)PointerEvent.isPrimary (#1003) (2852509)button property on pointer events separately from legacy mouse events (#1003) (2852509)mousedown and mouseup happen on different elements (#1003) (2852509)mouseover, mouseenter and mousemove on disabled elements (#1003) (2852509)mouse* events per pointerdown event handler (#1003) (2852509)*out and *over events when moving into / out of nested elements (#1003) (2852509)*enter and *leave events on ancestors (#1003) (2852509)keyboard: change radio group per arrow keys
document: do not track value on HTMLSelectElement
use window.FileList instead of implicit global
document: use setters/methods on element as default
document: track HTMLInputElement.setRangeText()
tab: avert visibility check on irrelevant elements
report element with declaration in pointerEventsCheck
delete chars from value at maxlength
track calls to HTMLInputElement.select()
pointer: change selection before dispatching focus
### 14.0.2 (2022-03-31) ### Bug Fixes * work around shadowed globals
remove deprecated keyboard features
skipPointerEvents has been removed.
Use pointerEventsCheck: PointerEventsCheckLevel.Never instead.init parameter has been removed from userEvent.upload.applyAccept defaults to true.userEvent.paste API has new parameters.{ctrl}, {del}, {esc} no longer describe a key. Use {Control}, {Delete}, {Escape} instead.{alt}, {ctrl}, {meta}, {shift} no longer imply not releasing the key. Use {Alt>}, {Control>}, {Meta>}, {Shift>} instead.init parameter has been removed from these APIs:
userEvent.clickuserEvent.dblClickuserEvent.tripleClickuserEvent.hoveruserEvent.unhoveruserEvent.selectOptionsuserEvent.deselectOptionsuserEvent.upload no longer supports clickInit
as part of its init parameter.{selectall} has been removed.keyCode property on keyboard events has been removed.userEvent.clear on an element which is not editable.userEvent.clear from focussing/selecting content.focusTrap option has been removed from userEvent.tab().userEvent.type does no longer move the cursor
if used with skipClick=false and without initialSelectionStart.beforeinput (#851) (8890bd6)pointer API (#750) (c12ee44)setup API (#746) (719ba03)userEvent.copy and userEvent.cut (#787) (8727a2d)userEvent.tripleClick API (#773) (0badabd)[Tab] support (#767) (87470ff){Control}+[KeyA] (#774) (ea9b18a)pointerEventsCheck option (#823) (e2a5f43)MouseEventInit (#784) (56ebf7d)userEvent.paste (#785) (f8fe217)userEvent.clear API (#779) (1cda1b1):disabled (#872) (1a00fdf)copy/cut (#866) (5423094)paste (#862) (d3d71ac)createEvent (#781) (da5b5b7)KeyboardEvent.charCode on keypress (#771) (55e194a)<button/> on [Enter] (#808) (eca157a)activeElement on click outside of focusable (#834) (d64167c)<label/> (#810) (2c5d9f1)contextmenu on mousedown (#811) (e1c4cad)tabIndex>0 before tabIndex=0 (#809) (1bc5945)focusTrap option (#772) (a0412c0)visibility:hidden (#799) (a747b0a)log correct docs link for invalid key descriptors
## 14.0.0-beta.13 (2022-03-04) ### Bug Fixes * check for inherited :disabled
clipboard: prevent default behavior on copy/cut
## 14.0.0-beta.11 (2022-02-10) ### Features * event: support beforeinput
pointer: consider click context
## 14.0.0-beta.9 (2022-02-07) ### Bug Fixes * upload: fix order of events
pointer: blur activeElement on click outside of focusable
pointer: skipPointerEvents has been removed. Use pointerEventsCheck: PointerEventsCheckLevel.Never instead.
skipPointerEvents has been removed.
Use pointerEventsCheck: PointerEventsCheckLevel.Never instead.keyboard: move cursor and delete content in contenteditable
export types and commonjs bundle
keyboard: parse escaped bracket followed by descriptor
keyboard: submit form with on [Enter]
tab: skip elements with visibility:hidden
remove deprecated keyboard features
init parameter has been removed from userEvent.upload.userEvent.paste API has new parameters.{ctrl}, {del}, {esc} no longer describe a key. Use {Control}, {Delete}, {Escape} instead.{alt}, {ctrl}, {meta}, {shift} no longer imply not releasing the key. Use {Alt>}, {Control>}, {Meta>}, {Shift>} instead.init parameter has been removed from these APIs:
userEvent.clickuserEvent.dblClickuserEvent.tripleClickuserEvent.hoveruserEvent.unhoveruserEvent.selectOptionsuserEvent.deselectOptions{selectall} has been removed.keyCode property on keyboard events has been removed.userEvent.clear on an element which is not editable.userEvent.clear from focussing/selecting content.focusTrap option has been removed from userEvent.tab().userEvent.type does no longer move the cursor
if used with skipClick=false and without initialSelectionStart.pointer API (#750) (c12ee44)setup API (#746) (719ba03)userEvent.copy and userEvent.cut (#787) (8727a2d)userEvent.tripleClick API (#773) (0badabd)[Tab] support (#767) (87470ff){Control}+[KeyA] (#774) (ea9b18a)MouseEventInit (#784) (56ebf7d)userEvent.paste (#785) (f8fe217)userEvent.clear API (#779) (1cda1b1)createEvent (#781) (da5b5b7)KeyboardEvent.charCode on keypress (#771) (55e194a)focusTrap option (#772) (a0412c0)## 14.0.0-alpha.18 (2021-11-28) ### Bug Fixes * use relative imports
upload: init parameter has been removed from userEvent.upload.
init parameter has been removed from userEvent.upload.keyboard: parse keyboard input without nesting
## 14.0.0-alpha.15 (2021-11-25) ### ⚠ BREAKING CHANGES * APIs always return a Promise. ### Features * async APIs
add userEvent.copy and userEvent.cut
The userEvent.paste API has new parameters.
userEvent.paste API has new parameters.{ctrl}, {del}, {esc} no longer describe a key. Use {Control}, {Delete}, {Escape} instead.
{ctrl}, {del}, {esc} no longer describe a key. Use {Control}, {Delete}, {Escape} instead.{alt}, {ctrl}, {meta}, {shift} no longer imply not releasing the key. Use {Alt>}, {Control>}, {Meta>}, {Shift>} instead.init parameter has been removed from these APIs:
userEvent.clickuserEvent.dblClickuserEvent.tripleClickuserEvent.hoveruserEvent.unhoveruserEvent.selectOptionsuserEvent.deselectOptionsuserEvent.upload no longer supports clickInit
as part of its init parameter.remove deprecated keyboard features
{selectall} has been removed.keyCode property on keyboard events has been removed.An error is thrown when calling userEvent.clear on an element which is not editable.
userEvent.clear on an element which is not editable.userEvent.clear from focussing/selecting content.create MouseEvents per createEvent
keyboard: select all per {Control}+[KeyA]
## 14.0.0-alpha.7 (2021-11-09) ### Features * rewrite selection handling
## 14.0.0-alpha.6 (2021-11-03) ### Features * add userEvent.tripleClick API
tab: The focusTrap option has been removed from userEvent.tab().
maintain cursor position on controlled component
pointer: userEvent.type does no longer move the cursor if used with skipClick=false and without initialSelectionStart.
userEvent.type does no longer move the cursor
if used with skipClick=false and without initialSelectionStart.override build config for types
Your coding agent can read these notes before it upgrades. Set up the MCP server →