testing-library / react-testing-library

🐐 Simple and complete React DOM testing utilities that encourage good testing practices.
https://testing-library.com/react
MIT License
18.84k stars 1.09k forks source link

asyncWrapper is not executed with act support #1302

Open lionskape opened 3 months ago

lionskape commented 3 months ago

Relevant code or config:

        const {user} = setup(<ControlDate onChange={jest.fn()} />);
        const input = screen.getByRole('textbox');
        await act(async () => {
            await user.type(input, '01.10.2015');
        });
        await act(async () => {
            await user.type(input, '02.12.2012');
        });

What you did:

I'm running events using user-events pacakge - https://github.com/testing-library/user-event

What happened:

Looks like it is executed in AsyncWrapper and make a lot of noise about "non-act environment". https://github.com/testing-library/user-event/discussions/1200

eps1lon commented 3 months ago

This may be an issue with user-event. Can you provide a reproduction witout use-event or at least the important bits inlined?

kolorfilm commented 3 months ago

I have the same problem:

For instance:

await act(async () => await userEvent.click(screen.getByTestId('backIcon')));

gives me the same error:

console.error
    Warning: The current testing environment is not configured to support act(...)
lionskape commented 2 months ago

@eps1lon sorry, I do not have reproduction without user-event

But, as I understand from user-event issues (linked in my first message) - the problem is an AsyncWrapper implementation. User event is running inside AsyncWrapper, which is "non-act" environment.

https://github.com/testing-library/react-testing-library/blob/edb6344d578a8c224daf0cd6e2984f36cc6e8d86/src/pure.js#L37-L59