diff --git a/packages/react/src/__tests__/ReactContextValidator-test.js b/packages/react/src/__tests__/ReactContextValidator-test.js index 9bccbbc51f3d2..ac6fc10343d04 100644 --- a/packages/react/src/__tests__/ReactContextValidator-test.js +++ b/packages/react/src/__tests__/ReactContextValidator-test.js @@ -17,9 +17,10 @@ let PropTypes; let React; -let ReactDOM; +let ReactDOMClient; let ReactDOMServer; let ReactTestUtils; +let act; describe('ReactContextValidator', () => { beforeEach(() => { @@ -27,9 +28,10 @@ describe('ReactContextValidator', () => { PropTypes = require('prop-types'); React = require('react'); - ReactDOM = require('react-dom'); + ReactDOMClient = require('react-dom/client'); ReactDOMServer = require('react-dom/server'); ReactTestUtils = require('react-dom/test-utils'); + act = require('internal-test-utils').act; }); // TODO: This behavior creates a runtime dependency on propTypes. We should @@ -72,7 +74,7 @@ describe('ReactContextValidator', () => { }); // @gate !disableLegacyContext - it('should pass next context to lifecycles', () => { + it('should pass next context to lifecycles', async () => { let componentDidMountContext; let componentDidUpdateContext; let componentWillReceivePropsContext; @@ -135,11 +137,18 @@ describe('ReactContextValidator', () => { }; const container = document.createElement('div'); - ReactDOM.render(, container); + const root = ReactDOMClient.createRoot(container); + await act(() => { + root.render(); + }); + expect(constructorContext).toEqual({foo: 'abc'}); expect(renderContext).toEqual({foo: 'abc'}); expect(componentDidMountContext).toEqual({foo: 'abc'}); - ReactDOM.render(, container); + await act(() => { + root.render(); + }); + expect(componentWillReceivePropsContext).toEqual({foo: 'abc'}); expect(componentWillReceivePropsNextContext).toEqual({foo: 'def'}); expect(shouldComponentUpdateContext).toEqual({foo: 'abc'}); @@ -369,7 +378,7 @@ describe('ReactContextValidator', () => { expect(childContext.foo).toBe('FOO'); }); - it('should pass next context to lifecycles', () => { + it('should pass next context to lifecycles', async () => { let componentDidMountContext; let componentDidUpdateContext; let componentWillReceivePropsContext; @@ -417,21 +426,26 @@ describe('ReactContextValidator', () => { const secondContext = {bar: 456}; const container = document.createElement('div'); - ReactDOM.render( - - - , - container, - ); + const root = ReactDOMClient.createRoot(container); + await act(() => { + root.render( + + + , + ); + }); + expect(constructorContext).toBe(firstContext); expect(renderContext).toBe(firstContext); expect(componentDidMountContext).toBe(firstContext); - ReactDOM.render( - - - , - container, - ); + await act(() => { + root.render( + + + , + ); + }); + expect(componentWillReceivePropsContext).toBe(firstContext); expect(componentWillReceivePropsNextContext).toBe(secondContext); expect(componentWillUpdateContext).toBe(firstContext); @@ -447,7 +461,7 @@ describe('ReactContextValidator', () => { } }); - it('should re-render PureComponents when context Provider updates', () => { + it('should re-render PureComponents when context Provider updates', async () => { let renderedContext; const Context = React.createContext(); @@ -464,19 +478,24 @@ describe('ReactContextValidator', () => { const secondContext = {bar: 456}; const container = document.createElement('div'); - ReactDOM.render( - - - , - container, - ); + const root = ReactDOMClient.createRoot(container); + await act(() => { + root.render( + + + , + ); + }); + expect(renderedContext).toBe(firstContext); - ReactDOM.render( - - - , - container, - ); + await act(() => { + root.render( + + + , + ); + }); + expect(renderedContext).toBe(secondContext); });