mirror of
https://github.com/facebook/react.git
synced 2026-02-26 16:24:59 +00:00
Currently, in a React 18 root, `act` only works if you mock the Scheduler package. This was because we didn't want to add additional checks at runtime. But now that the `act` testing API is dev-only, we can simplify its implementation. Now when an update is wrapped with `act`, React will bypass Scheduler entirely and push its tasks onto a special internal queue. Then, when the outermost `act` scope exists, we'll flush that queue. I also removed the "wrong act" warning, because the plan is to move `act` to an isomorphic entry point, simlar to `startTransition`. That's not directly related to this PR, but I didn't want to bother re-implementing that warning only to immediately remove it. I'll add the isomorphic API in a follow up. Note that the internal version of `act` that we use in our own tests still depends on mocking the Scheduler package, because it needs to work in production. I'm planning to move that implementation to a shared (internal) module, too.
23 lines
747 B
JavaScript
23 lines
747 B
JavaScript
'use strict';
|
|
|
|
jest.mock('shared/ReactFeatureFlags', () => {
|
|
jest.mock(
|
|
'ReactFeatureFlags',
|
|
() => jest.requireActual('shared/forks/ReactFeatureFlags.www-dynamic'),
|
|
{virtual: true}
|
|
);
|
|
|
|
const wwwFlags = jest.requireActual('shared/forks/ReactFeatureFlags.www');
|
|
const defaultFlags = jest.requireActual('shared/ReactFeatureFlags');
|
|
|
|
// TODO: Many tests were written before we started running them against the
|
|
// www configuration. Update those tests so that they work against the www
|
|
// configuration, too. Then remove these overrides.
|
|
wwwFlags.disableLegacyContext = defaultFlags.disableLegacyContext;
|
|
wwwFlags.disableJavaScriptURLs = defaultFlags.disableJavaScriptURLs;
|
|
|
|
return wwwFlags;
|
|
});
|
|
|
|
global.__WWW__ = true;
|