@@ -13,6 +13,7 @@ describe('ReactDOMConsoleErrorReporting', () => {
1313 let ReactDOM ;
1414
1515 let ErrorBoundary ;
16+ let NoError ;
1617 let container ;
1718 let windowOnError ;
1819
@@ -34,6 +35,9 @@ describe('ReactDOMConsoleErrorReporting', () => {
3435 return this . props . children ;
3536 }
3637 } ;
38+ NoError = function ( ) {
39+ return < h1 > OK</ h1 > ;
40+ } ;
3741 container = document . createElement ( 'div' ) ;
3842 document . body . appendChild ( container ) ;
3943 windowOnError = jest . fn ( ) ;
@@ -125,6 +129,20 @@ describe('ReactDOMConsoleErrorReporting', () => {
125129 ] ,
126130 ] ) ;
127131 }
132+
133+ // Check next render doesn't throw.
134+ windowOnError . mockReset ( ) ;
135+ console . error . calls . reset ( ) ;
136+ act ( ( ) => {
137+ ReactDOM . render ( < NoError /> , container ) ;
138+ } ) ;
139+ expect ( container . textContent ) . toBe ( 'OK' ) ;
140+ expect ( windowOnError . mock . calls ) . toEqual ( [ ] ) ;
141+ if ( __DEV__ ) {
142+ expect ( console . error . calls . all ( ) . map ( c => c . args ) ) . toEqual ( [
143+ [ expect . stringContaining ( 'ReactDOM.render is no longer supported' ) ] ,
144+ ] ) ;
145+ }
128146 } ) ;
129147
130148 it ( 'logs render errors without an error boundary' , ( ) => {
@@ -178,6 +196,20 @@ describe('ReactDOMConsoleErrorReporting', () => {
178196 ] ,
179197 ] ) ;
180198 }
199+
200+ // Check next render doesn't throw.
201+ windowOnError . mockReset ( ) ;
202+ console . error . calls . reset ( ) ;
203+ act ( ( ) => {
204+ ReactDOM . render ( < NoError /> , container ) ;
205+ } ) ;
206+ expect ( container . textContent ) . toBe ( 'OK' ) ;
207+ expect ( windowOnError . mock . calls ) . toEqual ( [ ] ) ;
208+ if ( __DEV__ ) {
209+ expect ( console . error . calls . all ( ) . map ( c => c . args ) ) . toEqual ( [
210+ [ expect . stringContaining ( 'ReactDOM.render is no longer supported' ) ] ,
211+ ] ) ;
212+ }
181213 } ) ;
182214
183215 it ( 'logs render errors with an error boundary' , ( ) => {
@@ -234,6 +266,20 @@ describe('ReactDOMConsoleErrorReporting', () => {
234266 ] ,
235267 ] ) ;
236268 }
269+
270+ // Check next render doesn't throw.
271+ windowOnError . mockReset ( ) ;
272+ console . error . calls . reset ( ) ;
273+ act ( ( ) => {
274+ ReactDOM . render ( < NoError /> , container ) ;
275+ } ) ;
276+ expect ( container . textContent ) . toBe ( 'OK' ) ;
277+ expect ( windowOnError . mock . calls ) . toEqual ( [ ] ) ;
278+ if ( __DEV__ ) {
279+ expect ( console . error . calls . all ( ) . map ( c => c . args ) ) . toEqual ( [
280+ [ expect . stringContaining ( 'ReactDOM.render is no longer supported' ) ] ,
281+ ] ) ;
282+ }
237283 } ) ;
238284
239285 // TODO: this is broken due to https://github.com/facebook/react/issues/21712.
@@ -291,6 +337,20 @@ describe('ReactDOMConsoleErrorReporting', () => {
291337 ] ,
292338 ] ) ;
293339 }
340+
341+ // Check next render doesn't throw.
342+ windowOnError . mockReset ( ) ;
343+ console . error . calls . reset ( ) ;
344+ act ( ( ) => {
345+ ReactDOM . render ( < NoError /> , container ) ;
346+ } ) ;
347+ expect ( container . textContent ) . toBe ( 'OK' ) ;
348+ expect ( windowOnError . mock . calls ) . toEqual ( [ ] ) ;
349+ if ( __DEV__ ) {
350+ expect ( console . error . calls . all ( ) . map ( c => c . args ) ) . toEqual ( [
351+ [ expect . stringContaining ( 'ReactDOM.render is no longer supported' ) ] ,
352+ ] ) ;
353+ }
294354 } ) ;
295355
296356 // TODO: this is broken due to https://github.com/facebook/react/issues/21712.
@@ -351,6 +411,20 @@ describe('ReactDOMConsoleErrorReporting', () => {
351411 ] ,
352412 ] ) ;
353413 }
414+
415+ // Check next render doesn't throw.
416+ windowOnError . mockReset ( ) ;
417+ console . error . calls . reset ( ) ;
418+ act ( ( ) => {
419+ ReactDOM . render ( < NoError /> , container ) ;
420+ } ) ;
421+ expect ( container . textContent ) . toBe ( 'OK' ) ;
422+ expect ( windowOnError . mock . calls ) . toEqual ( [ ] ) ;
423+ if ( __DEV__ ) {
424+ expect ( console . error . calls . all ( ) . map ( c => c . args ) ) . toEqual ( [
425+ [ expect . stringContaining ( 'ReactDOM.render is no longer supported' ) ] ,
426+ ] ) ;
427+ }
354428 } ) ;
355429
356430 // TODO: this is broken due to https://github.com/facebook/react/issues/21712.
@@ -408,6 +482,20 @@ describe('ReactDOMConsoleErrorReporting', () => {
408482 ] ,
409483 ] ) ;
410484 }
485+
486+ // Check next render doesn't throw.
487+ windowOnError . mockReset ( ) ;
488+ console . error . calls . reset ( ) ;
489+ act ( ( ) => {
490+ ReactDOM . render ( < NoError /> , container ) ;
491+ } ) ;
492+ expect ( container . textContent ) . toBe ( 'OK' ) ;
493+ expect ( windowOnError . mock . calls ) . toEqual ( [ ] ) ;
494+ if ( __DEV__ ) {
495+ expect ( console . error . calls . all ( ) . map ( c => c . args ) ) . toEqual ( [
496+ [ expect . stringContaining ( 'ReactDOM.render is no longer supported' ) ] ,
497+ ] ) ;
498+ }
411499 } ) ;
412500
413501 // TODO: this is broken due to https://github.com/facebook/react/issues/21712.
@@ -468,6 +556,20 @@ describe('ReactDOMConsoleErrorReporting', () => {
468556 ] ,
469557 ] ) ;
470558 }
559+
560+ // Check next render doesn't throw.
561+ windowOnError . mockReset ( ) ;
562+ console . error . calls . reset ( ) ;
563+ act ( ( ) => {
564+ ReactDOM . render ( < NoError /> , container ) ;
565+ } ) ;
566+ expect ( container . textContent ) . toBe ( 'OK' ) ;
567+ expect ( windowOnError . mock . calls ) . toEqual ( [ ] ) ;
568+ if ( __DEV__ ) {
569+ expect ( console . error . calls . all ( ) . map ( c => c . args ) ) . toEqual ( [
570+ [ expect . stringContaining ( 'ReactDOM.render is no longer supported' ) ] ,
571+ ] ) ;
572+ }
471573 } ) ;
472574 } ) ;
473575} ) ;
0 commit comments