diff --git a/packages/react-dom/src/__tests__/ReactUnmockedSchedulerWarning-test.internal.js b/packages/react-dom/src/__tests__/ReactUnmockedSchedulerWarning-test.internal.js index 1543d9b97c3e8..d9195099d52d2 100644 --- a/packages/react-dom/src/__tests__/ReactUnmockedSchedulerWarning-test.internal.js +++ b/packages/react-dom/src/__tests__/ReactUnmockedSchedulerWarning-test.internal.js @@ -40,3 +40,17 @@ it('should warn in sync mode', () => { ReactDOM.render(, document.createElement('div')); }).toWarnDev([]); }); + +it('does not warn if Scheduler is mocked', () => { + jest.resetModules(); + jest.mock('scheduler', () => require('scheduler/unstable_mock')); + React = require('react'); + ReactDOM = require('react-dom'); + ReactFeatureFlags = require('shared/ReactFeatureFlags'); + ReactFeatureFlags.warnAboutUnmockedScheduler = true; + + // This should not warn + expect(() => { + ReactDOM.render(, document.createElement('div')); + }).toWarnDev([]); +}); diff --git a/packages/react-reconciler/src/ReactFiberWorkLoop.js b/packages/react-reconciler/src/ReactFiberWorkLoop.js index 35679634cd3de..375f7a5e94071 100644 --- a/packages/react-reconciler/src/ReactFiberWorkLoop.js +++ b/packages/react-reconciler/src/ReactFiberWorkLoop.js @@ -2576,11 +2576,14 @@ let didWarnAboutUnmockedScheduler = false; export function warnIfUnmockedScheduler(fiber: Fiber) { if (__DEV__) { - if (didWarnAboutUnmockedScheduler === false) { + if ( + didWarnAboutUnmockedScheduler === false && + Scheduler.unstable_flushAllWithoutAsserting === undefined + ) { if (fiber.mode & BatchedMode || fiber.mode & ConcurrentMode) { didWarnAboutUnmockedScheduler = true; warningWithoutStack( - Scheduler.unstable_flushAllWithoutAsserting !== undefined, + false, 'In Concurrent or Sync modes, the "scheduler" module needs to be mocked ' + 'to guarantee consistent behaviour across tests and browsers. ' + 'For example, with jest: \n' + @@ -2590,7 +2593,7 @@ export function warnIfUnmockedScheduler(fiber: Fiber) { } else if (warnAboutUnmockedScheduler === true) { didWarnAboutUnmockedScheduler = true; warningWithoutStack( - null, + false, 'Starting from React v17, the "scheduler" module will need to be mocked ' + 'to guarantee consistent behaviour across tests and browsers. ' + 'For example, with jest: \n' +