@@ -46,61 +46,45 @@ describe('ErrorBoundaryReconciliation', () => {
4646 fail ? < InvalidType /> : < span prop = "BrokenRender" /> ;
4747 } ) ;
4848
49- async function sharedTest ( ErrorBoundary , fallbackTagName , isConcurrent ) {
50- let renderer ;
49+ [ true , false ] . forEach ( isConcurrent => {
50+ async function sharedTest ( ErrorBoundary , fallbackTagName ) {
51+ let renderer ;
5152
52- await act ( ( ) => {
53- renderer = ReactTestRenderer . create (
54- < ErrorBoundary fallbackTagName = { fallbackTagName } >
55- < BrokenRender fail = { false } />
56- </ ErrorBoundary > ,
57- { unstable_isConcurrent : isConcurrent } ,
58- ) ;
59- } ) ;
60- expect ( renderer ) . toMatchRenderedOutput ( < span prop = "BrokenRender" /> ) ;
61-
62- await expect ( async ( ) => {
6353 await act ( ( ) => {
64- renderer . update (
54+ renderer = ReactTestRenderer . create (
6555 < ErrorBoundary fallbackTagName = { fallbackTagName } >
66- < BrokenRender fail = { true } />
56+ < BrokenRender fail = { false } />
6757 </ ErrorBoundary > ,
58+ { unstable_isConcurrent : isConcurrent } ,
6859 ) ;
6960 } ) ;
70- } ) . toErrorDev ( isConcurrent ? [ 'invalid' , 'invalid' ] : [ 'invalid' ] ) ;
71- const Fallback = fallbackTagName ;
72- expect ( renderer ) . toMatchRenderedOutput ( < Fallback prop = "ErrorBoundary" /> ) ;
73- }
61+ expect ( renderer ) . toMatchRenderedOutput ( < span prop = "BrokenRender" /> ) ;
7462
75- describe ( 'isConcurrent' , ( ) => {
76- it ( 'componentDidCatch can recover by rendering an element of the same type' , ( ) =>
77- sharedTest ( DidCatchErrorBoundary , 'span' , true ) ) ;
63+ await expect ( async ( ) => {
64+ await act ( ( ) => {
65+ renderer . update (
66+ < ErrorBoundary fallbackTagName = { fallbackTagName } >
67+ < BrokenRender fail = { true } />
68+ </ ErrorBoundary > ,
69+ ) ;
70+ } ) ;
71+ } ) . toErrorDev ( [ 'invalid' , 'invalid' ] ) ;
72+ const Fallback = fallbackTagName ;
73+ expect ( renderer ) . toMatchRenderedOutput ( < Fallback prop = "ErrorBoundary" /> ) ;
74+ }
7875
79- it ( 'componentDidCatch can recover by rendering an element of a different type' , ( ) =>
80- sharedTest ( DidCatchErrorBoundary , 'div' , true ) ) ;
76+ describe ( isConcurrent ? 'concurrent' : 'sync' , ( ) => {
77+ it ( 'componentDidCatch can recover by rendering an element of the same type' , ( ) =>
78+ sharedTest ( DidCatchErrorBoundary , 'span' ) ) ;
8179
82- it ( 'getDerivedStateFromError can recover by rendering an element of the same type' , ( ) =>
83- sharedTest ( GetDerivedErrorBoundary , 'span' , true ) ) ;
84-
85- it ( 'getDerivedStateFromError can recover by rendering an element of a different type' , ( ) =>
86- sharedTest ( GetDerivedErrorBoundary , 'div' , true ) ) ;
87- } ) ;
80+ it ( 'componentDidCatch can recover by rendering an element of a different type' , ( ) =>
81+ sharedTest ( DidCatchErrorBoundary , 'div' ) ) ;
8882
89- describe ( 'legacy' , ( ) => {
90- // @gate !disableLegacyMode
91- it ( 'componentDidCatch can recover by rendering an element of the same type' , ( ) =>
92- sharedTest ( DidCatchErrorBoundary , 'span' , false ) ) ;
83+ it ( 'getDerivedStateFromError can recover by rendering an element of the same type' , ( ) =>
84+ sharedTest ( GetDerivedErrorBoundary , 'span' ) ) ;
9385
94- // @gate !disableLegacyMode
95- it ( 'componentDidCatch can recover by rendering an element of a different type' , ( ) =>
96- sharedTest ( DidCatchErrorBoundary , 'div' , false ) ) ;
97-
98- // @gate !disableLegacyMode
99- it ( 'getDerivedStateFromError can recover by rendering an element of the same type' , ( ) =>
100- sharedTest ( GetDerivedErrorBoundary , 'span' , false ) ) ;
101-
102- // @gate !disableLegacyMode
103- it ( 'getDerivedStateFromError can recover by rendering an element of a different type' , ( ) =>
104- sharedTest ( GetDerivedErrorBoundary , 'div' , false ) ) ;
86+ it ( 'getDerivedStateFromError can recover by rendering an element of a different type' , ( ) =>
87+ sharedTest ( GetDerivedErrorBoundary , 'div' ) ) ;
88+ } ) ;
10589 } ) ;
10690} ) ;
0 commit comments