@testing-library/user-event
's type()
is slow
Testing Library is the current recommended way to unit test React code. By itself it works great and does a lot of the heavy lifting for you. Its sibling library @testing-library/user-event
which can be used to trigger click events, typing etc is still a bit green though.
The type()
command is great for simulating user input letter-by-letter, however it has some issues: without a delay, it is non-deterministic, meaning you’ll need to manually wait for the UI to update in certain cases. On the flip side, even if you use Number.MIN_VALUE
(smallest non-zero positive number in Javascript) for the delay, it takes a huge performance hit.
Average time spent:
type(target, text) (210ms)
Unless you necessarily need the letter-by-letter input to correctly test behavior, the paste()
command will save you considerable time on your test runs:
Average time spent:
paste(target, text) (20ms)
For the time being, the library maintainers don’t see this as an issue so using the above workaround seems like the best option.