diff --git a/packages/react-dom/src/__tests__/ReactTestUtils-test.js b/packages/react-dom/src/__tests__/ReactTestUtils-test.js index 49d64fe3ba2bb..280908c77a0c5 100644 --- a/packages/react-dom/src/__tests__/ReactTestUtils-test.js +++ b/packages/react-dom/src/__tests__/ReactTestUtils-test.js @@ -665,6 +665,12 @@ describe('ReactTestUtils', () => { }); it('warns if you return a value inside act', () => { + expect(() => act(() => null)).toWarnDev( + [ + 'The callback passed to ReactTestUtils.act(...) function must not return anything.', + ], + {withoutStack: true}, + ); expect(() => act(() => 123)).toWarnDev( [ 'The callback passed to ReactTestUtils.act(...) function must not return anything.', diff --git a/packages/react-dom/src/test-utils/ReactTestUtils.js b/packages/react-dom/src/test-utils/ReactTestUtils.js index 5bf6755bbbd62..dcb20d88cf9f7 100644 --- a/packages/react-dom/src/test-utils/ReactTestUtils.js +++ b/packages/react-dom/src/test-utils/ReactTestUtils.js @@ -397,7 +397,7 @@ const ReactTestUtils = { if (__DEV__) { if (result !== undefined) { let addendum; - if (typeof result.then === 'function') { + if (result !== null && typeof result.then === 'function') { addendum = '\n\nIt looks like you wrote ReactTestUtils.act(async () => ...), ' + 'or returned a Promise from the callback passed to it. ' + diff --git a/packages/react-noop-renderer/src/createReactNoop.js b/packages/react-noop-renderer/src/createReactNoop.js index 491ab5948ba0b..b9832e6221fba 100644 --- a/packages/react-noop-renderer/src/createReactNoop.js +++ b/packages/react-noop-renderer/src/createReactNoop.js @@ -878,7 +878,7 @@ function createReactNoop(reconciler: Function, useMutation: boolean) { if (__DEV__) { if (result !== undefined) { let addendum; - if (typeof result.then === 'function') { + if (result !== null && typeof result.then === 'function') { addendum = "\n\nIt looks like you wrote ReactNoop.act(async () => ...) or returned a Promise from it's callback. " + 'Putting asynchronous logic inside ReactNoop.act(...) is not supported.\n'; diff --git a/packages/react-test-renderer/src/ReactTestRenderer.js b/packages/react-test-renderer/src/ReactTestRenderer.js index e3b911f95843a..39767e5bc77ed 100644 --- a/packages/react-test-renderer/src/ReactTestRenderer.js +++ b/packages/react-test-renderer/src/ReactTestRenderer.js @@ -571,7 +571,7 @@ const ReactTestRendererFiber = { if (__DEV__) { if (result !== undefined) { let addendum; - if (typeof result.then === 'function') { + if (result !== null && typeof result.then === 'function') { addendum = "\n\nIt looks like you wrote TestRenderer.act(async () => ...) or returned a Promise from it's callback. " + 'Putting asynchronous logic inside TestRenderer.act(...) is not supported.\n';