Up front...
This issue probably belongs in angular-testing-library, jest-preset-angular, or maybe jest-dom, but I can't say where at the moment, and the problem is manifest in user-event .
Also, there is may be a better title depending on where this belongs.
Please feel free to modify any of this or redirect me as appropriate.
Relevant code or config
My jest test simulates the user clicking an input, and clearing it's existing text:
await userEvent.type(inputElem, '{selectall}{backspace}', {delay: 10, skipClick: false});
What happened:
If delay is set to zero the test passes as expected.
If delay is greater than zero, the test hangs until jest times out (longer jest timeout does not help).
What you did:
user-event/src/type.js currently contains the following code:
async function runCallbacks(callbacks) {
...
for (const callback of callbacks) {
if (delay > 0) await wait(delay)
if (!currentElement().disabled) {
...
A breakpoint on if (delay > 0) is always hit.
A breakpoint on if (!currentElement().disabled) is never hit (assuming you call with delay > 0).
What I tried:
Disabling the zone.js patch of setTimeout allows the test to pass (although obviously not a real solution).
declare var window;
(window as any).__Zone_disable_timers = true;
Problem description:
This issue seems like an interaction problem between packages in the testing-library ecosystem. I've followed each packages installation and setup guides, and believe my import ordering and configurations are correct, but obviously something was missed somewhere.
Any suggestions?
Up front...
This issue probably belongs in angular-testing-library, jest-preset-angular, or maybe jest-dom, but I can't say where at the moment, and the problem is manifest in user-event .
Also, there is may be a better title depending on where this belongs.
Please feel free to modify any of this or redirect me as appropriate.
@testing-library/user-eventversion: 12.7.3Testing Framework and version:
jest: 26.6.3
angular: 11.2.2
node: 12.18.4
jest-dom: 5.11.9
angular-testing-library: 10.3.2
jest-preset-angular: 8.3.2
Relevant code or config
My jest test simulates the user clicking an input, and clearing it's existing text:
What happened:
If
delayis set to zero the test passes as expected.If
delayis greater than zero, the test hangs until jest times out (longer jest timeout does not help).What you did:
user-event/src/type.js currently contains the following code:
A breakpoint on
if (delay > 0)is always hit.A breakpoint on
if (!currentElement().disabled)is never hit (assuming you call with delay > 0).What I tried:
Disabling the zone.js patch of setTimeout allows the test to pass (although obviously not a real solution).
Problem description:
This issue seems like an interaction problem between packages in the testing-library ecosystem. I've followed each packages installation and setup guides, and believe my import ordering and configurations are correct, but obviously something was missed somewhere.
Any suggestions?