Files
agentic-dev/docs/library-decisions/2026-05-14-@testing-library/user-event.md
Danijel Martinek 1108e24ea0 chore(deps): backfill library traces for un-cited cluster
Add approved trace files for payload, @trpc/server, @trpc/client, zod,
superjson, @payloadcms/db-postgres, @payloadcms/richtext-lexical, globals,
react, react-dom, vitest, @tanstack/react-query, and all @testing-library/*
packages. All traces dated 2026-05-14, decision: approved, adr: null.

Establishes the baseline so the pre-commit library-decisions gate is
additive (new deps require traces) rather than disruptive (old deps fail
immediately). All 34 trace files pass validateTrace() from schema.mjs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 10:10:23 +00:00

3.0 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
MIT native active pass pass n/a clean pass
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.