Files
agentic-dev/docs/library-decisions/2026-05-14-@testing-library/user-event.md
Danijel Martinek f77e6ea881 chore(template): clean-slate template snapshot from bb4a0c7
Curated, product-agnostic snapshot of the post-story-04 tree: demo
content deleted, auth-only reference feature, web-next shell, all gates
green. Product-specific docs, ADRs 027-029, PRDs/epics/archive, editor
library traces, and product naming are curated out; generic template
repairs (coverage provider devDeps, root test:coverage script, live
lint fixes, root-only release-please) are kept. See TEMPLATE.md for
provenance, curation list, and usage.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016j8z4VHjedXDTjEDNg7qHK
2026-07-12 20:40:54 +02:00

3.1 KiB

package, version, tier, decision, date, deciders, adr, filter-results, verification-commands, accepted-cves
package version tier decision date deciders adr filter-results verification-commands accepted-cves
@testing-library/user-event ^14.5.0 core approved 2026-05-14
Danijel Martinek
null
license types maintenance boundary-fit shadow-check eu-residency cve-scan named-consumer socketRisk
MIT native active pass pass n/a clean pass clean
npm view @testing-library/user-event license
npm view @testing-library/user-event version
pnpm audit --audit-level=moderate

Filter: license

npm view @testing-library/user-event license returns MIT. MIT is on the allowlist.

Filter: types

@testing-library/user-event ships its own TypeScript declaration files. No separate @types/ package is needed.

Filter: maintenance

Actively maintained by the Testing Library organization. The 14.x line is the current major. Regular releases.

Filter: boundary-fit

@testing-library/user-event is a dependency of @repo/core-testing, the workspace's shared testing infrastructure. It provides realistic user interaction simulation (userEvent.click, userEvent.type, etc.) that more accurately models browser behavior than fireEvent. This is the correct placement for shared test infrastructure.

Filter: shadow-check

@testing-library/user-event is the sole user interaction simulation library in the workspace. No competing library is present.

Filter: eu-residency

@testing-library/user-event is a test utility library with no network communication. EU residency does not apply.

Filter: cve-scan

pnpm audit --audit-level=moderate reports no advisories against @testing-library/user-event at the time of this trace.

Filter: named-consumer

@repo/core-testing uses @testing-library/user-event to provide realistic interaction utilities for component tests. Feature packages with interactive UI components use these via core-testing. Named, non-hypothetical consumer exists today.

Prompt: replaces

@testing-library/user-event replaces @testing-library/dom's fireEvent for interaction tests. userEvent simulates the full browser event sequence (pointerdown → mousedown → focus → click → pointerup → mouseup) rather than dispatching a single synthetic event, producing more faithful integration tests.

Prompt: migration-cost-out

Low. @testing-library/user-event is used in component tests alongside @testing-library/react. Removing it requires downgrading interaction tests to fireEvent calls — a mechanical change but a loss of test fidelity.

Prompt: alternatives-considered

  1. fireEvent only — Simpler but fires only one synthetic event per interaction; misses focus/blur and keyboard event sequences that real browsers emit.
  2. Playwright component testing — Full browser testing is reserved for e2e (pnpm test:e2e); userEvent is the right tool for unit/integration component tests.