11
11
12
12
describe ( 'DebugTracing' , ( ) => {
13
13
let React ;
14
- let ReactTestRenderer ;
14
+ let ReactNoop ;
15
15
let waitForPaint ;
16
16
let waitForAll ;
17
+ let act ;
17
18
18
19
let logs ;
19
20
@@ -27,10 +28,11 @@ describe('DebugTracing', () => {
27
28
jest . resetModules ( ) ;
28
29
29
30
React = require ( 'react' ) ;
30
- ReactTestRenderer = require ( 'react-test -renderer' ) ;
31
+ ReactNoop = require ( 'react-noop -renderer' ) ;
31
32
const InternalTestUtils = require ( 'internal-test-utils' ) ;
32
33
waitForPaint = InternalTestUtils . waitForPaint ;
33
34
waitForAll = InternalTestUtils . waitForAll ;
35
+ act = InternalTestUtils . act ;
34
36
35
37
logs = [ ] ;
36
38
@@ -50,31 +52,32 @@ describe('DebugTracing', () => {
50
52
} ) ;
51
53
52
54
// @gate enableDebugTracing
53
- it ( 'should not log anything for sync render without suspends or state updates' , ( ) => {
54
- ReactTestRenderer . create (
55
- < React . unstable_DebugTracingMode >
56
- < div />
57
- </ React . unstable_DebugTracingMode > ,
58
- ) ;
55
+ it ( 'should not log anything for sync render without suspends or state updates' , async ( ) => {
56
+ await act ( ( ) => {
57
+ ReactNoop . render (
58
+ < React . unstable_DebugTracingMode >
59
+ < div />
60
+ </ React . unstable_DebugTracingMode > ,
61
+ ) ;
62
+ } ) ;
59
63
60
64
expect ( logs ) . toEqual ( [ ] ) ;
61
65
} ) ;
62
66
63
- // @gate experimental && build === 'development' && enableDebugTracing
64
- it ( 'should not log anything for concurrent render without suspends or state updates' , ( ) => {
65
- ReactTestRenderer . act ( ( ) =>
66
- ReactTestRenderer . create (
67
+ // @gate experimental && enableDebugTracing
68
+ it ( 'should not log anything for concurrent render without suspends or state updates' , async ( ) => {
69
+ await act ( ( ) =>
70
+ ReactNoop . render (
67
71
< React . unstable_DebugTracingMode >
68
72
< div />
69
73
</ React . unstable_DebugTracingMode > ,
70
- { isConcurrent : true } ,
71
74
) ,
72
75
) ;
73
76
expect ( logs ) . toEqual ( [ ] ) ;
74
77
} ) ;
75
78
76
79
// @gate experimental && build === 'development' && enableDebugTracing
77
- it ( 'should log sync render with suspense' , async ( ) => {
80
+ it ( 'should log sync render with suspense, legacy ' , async ( ) => {
78
81
let resolveFakeSuspensePromise ;
79
82
let didResolve = false ;
80
83
const fakeSuspensePromise = new Promise ( resolve => {
@@ -91,14 +94,12 @@ describe('DebugTracing', () => {
91
94
return null ;
92
95
}
93
96
94
- ReactTestRenderer . act ( ( ) =>
95
- ReactTestRenderer . create (
96
- < React . unstable_DebugTracingMode >
97
- < React . Suspense fallback = { null } >
98
- < Example />
99
- </ React . Suspense >
100
- </ React . unstable_DebugTracingMode > ,
101
- ) ,
97
+ ReactNoop . renderLegacySyncRoot (
98
+ < React . unstable_DebugTracingMode >
99
+ < React . Suspense fallback = { null } >
100
+ < Example />
101
+ </ React . Suspense >
102
+ </ React . unstable_DebugTracingMode > ,
102
103
) ;
103
104
104
105
expect ( logs ) . toEqual ( [
@@ -116,7 +117,7 @@ describe('DebugTracing', () => {
116
117
} ) ;
117
118
118
119
// @gate experimental && build === 'development' && enableDebugTracing && enableCPUSuspense
119
- it ( 'should log sync render with CPU suspense' , async ( ) => {
120
+ it ( 'should log sync render with CPU suspense, legacy ' , async ( ) => {
120
121
function Example ( ) {
121
122
console . log ( '<Example/>' ) ;
122
123
return null ;
@@ -127,7 +128,7 @@ describe('DebugTracing', () => {
127
128
return children ;
128
129
}
129
130
130
- ReactTestRenderer . create (
131
+ ReactNoop . renderLegacySyncRoot (
131
132
< React . unstable_DebugTracingMode >
132
133
< Wrapper >
133
134
< React . Suspense fallback = { null } unstable_expectedLoadTime = { 1 } >
@@ -172,14 +173,13 @@ describe('DebugTracing', () => {
172
173
return null ;
173
174
}
174
175
175
- ReactTestRenderer . act ( ( ) =>
176
- ReactTestRenderer . create (
176
+ await act ( ( ) =>
177
+ ReactNoop . render (
177
178
< React . unstable_DebugTracingMode >
178
179
< React . Suspense fallback = { null } >
179
180
< Example />
180
181
</ React . Suspense >
181
182
</ React . unstable_DebugTracingMode > ,
182
- { isConcurrent : true } ,
183
183
) ,
184
184
) ;
185
185
@@ -191,12 +191,12 @@ describe('DebugTracing', () => {
191
191
192
192
logs . splice ( 0 ) ;
193
193
194
- await ReactTestRenderer . act ( async ( ) => await resolveFakeSuspensePromise ( ) ) ;
194
+ await act ( async ( ) => await resolveFakeSuspensePromise ( ) ) ;
195
195
expect ( logs ) . toEqual ( [ 'log: ⚛️ Example resolved' ] ) ;
196
196
} ) ;
197
197
198
198
// @gate experimental && build === 'development' && enableDebugTracing && enableCPUSuspense
199
- it ( 'should log concurrent render with CPU suspense' , ( ) => {
199
+ it ( 'should log concurrent render with CPU suspense' , async ( ) => {
200
200
function Example ( ) {
201
201
console . log ( '<Example/>' ) ;
202
202
return null ;
@@ -207,16 +207,15 @@ describe('DebugTracing', () => {
207
207
return children ;
208
208
}
209
209
210
- ReactTestRenderer . act ( ( ) =>
211
- ReactTestRenderer . create (
210
+ await act ( ( ) =>
211
+ ReactNoop . render (
212
212
< React . unstable_DebugTracingMode >
213
213
< Wrapper >
214
214
< React . Suspense fallback = { null } unstable_expectedLoadTime = { 1 } >
215
215
< Example />
216
216
</ React . Suspense >
217
217
</ Wrapper >
218
218
</ React . unstable_DebugTracingMode > ,
219
- { isConcurrent : true } ,
220
219
) ,
221
220
) ;
222
221
@@ -231,7 +230,7 @@ describe('DebugTracing', () => {
231
230
} ) ;
232
231
233
232
// @gate experimental && build === 'development' && enableDebugTracing
234
- it ( 'should log cascading class component updates' , ( ) => {
233
+ it ( 'should log cascading class component updates' , async ( ) => {
235
234
class Example extends React . Component {
236
235
state = { didMount : false } ;
237
236
componentDidMount ( ) {
@@ -242,12 +241,11 @@ describe('DebugTracing', () => {
242
241
}
243
242
}
244
243
245
- ReactTestRenderer . act ( ( ) =>
246
- ReactTestRenderer . create (
244
+ await act ( ( ) =>
245
+ ReactNoop . render (
247
246
< React . unstable_DebugTracingMode >
248
247
< Example />
249
248
</ React . unstable_DebugTracingMode > ,
250
- { isConcurrent : true } ,
251
249
) ,
252
250
) ;
253
251
@@ -261,7 +259,7 @@ describe('DebugTracing', () => {
261
259
} ) ;
262
260
263
261
// @gate experimental && build === 'development' && enableDebugTracing
264
- it ( 'should log render phase state updates for class component' , ( ) => {
262
+ it ( 'should log render phase state updates for class component' , async ( ) => {
265
263
class Example extends React . Component {
266
264
state = { didRender : false } ;
267
265
render ( ) {
@@ -272,16 +270,17 @@ describe('DebugTracing', () => {
272
270
}
273
271
}
274
272
275
- expect ( ( ) => {
276
- ReactTestRenderer . act ( ( ) =>
277
- ReactTestRenderer . create (
273
+ await expect ( async ( ) => {
274
+ await act ( ( ) => {
275
+ ReactNoop . render (
278
276
< React . unstable_DebugTracingMode >
279
277
< Example />
280
278
</ React . unstable_DebugTracingMode > ,
281
- { isConcurrent : true } ,
282
- ) ,
283
- ) ;
284
- } ) . toErrorDev ( 'Cannot update during an existing state transition' ) ;
279
+ ) ;
280
+ } ) ;
281
+ } ) . toErrorDev (
282
+ 'Warning: Cannot update during an existing state transition (such as within `render`). Render methods should be a pure function of props and state.' ,
283
+ ) ;
285
284
286
285
expect ( logs ) . toEqual ( [
287
286
`group: ⚛️ render (${ DEFAULT_LANE_STRING } )` ,
@@ -291,7 +290,7 @@ describe('DebugTracing', () => {
291
290
} ) ;
292
291
293
292
// @gate experimental && build === 'development' && enableDebugTracing
294
- it ( 'should log cascading layout updates' , ( ) => {
293
+ it ( 'should log cascading layout updates' , async ( ) => {
295
294
function Example ( ) {
296
295
const [ didMount , setDidMount ] = React . useState ( false ) ;
297
296
React . useLayoutEffect ( ( ) => {
@@ -300,12 +299,11 @@ describe('DebugTracing', () => {
300
299
return didMount ;
301
300
}
302
301
303
- ReactTestRenderer . act ( ( ) =>
304
- ReactTestRenderer . create (
302
+ await act ( ( ) =>
303
+ ReactNoop . render (
305
304
< React . unstable_DebugTracingMode >
306
305
< Example />
307
306
</ React . unstable_DebugTracingMode > ,
308
- { isConcurrent : true } ,
309
307
) ,
310
308
) ;
311
309
@@ -319,7 +317,7 @@ describe('DebugTracing', () => {
319
317
} ) ;
320
318
321
319
// @gate experimental && build === 'development' && enableDebugTracing
322
- it ( 'should log cascading passive updates' , ( ) => {
320
+ it ( 'should log cascading passive updates' , async ( ) => {
323
321
function Example ( ) {
324
322
const [ didMount , setDidMount ] = React . useState ( false ) ;
325
323
React . useEffect ( ( ) => {
@@ -328,12 +326,11 @@ describe('DebugTracing', () => {
328
326
return didMount ;
329
327
}
330
328
331
- ReactTestRenderer . act ( ( ) => {
332
- ReactTestRenderer . create (
329
+ await act ( ( ) => {
330
+ ReactNoop . render (
333
331
< React . unstable_DebugTracingMode >
334
332
< Example />
335
333
</ React . unstable_DebugTracingMode > ,
336
- { isConcurrent : true } ,
337
334
) ;
338
335
} ) ;
339
336
expect ( logs ) . toEqual ( [
@@ -344,7 +341,7 @@ describe('DebugTracing', () => {
344
341
} ) ;
345
342
346
343
// @gate experimental && build === 'development' && enableDebugTracing
347
- it ( 'should log render phase updates' , ( ) => {
344
+ it ( 'should log render phase updates' , async ( ) => {
348
345
function Example ( ) {
349
346
const [ didRender , setDidRender ] = React . useState ( false ) ;
350
347
if ( ! didRender ) {
@@ -353,12 +350,11 @@ describe('DebugTracing', () => {
353
350
return didRender ;
354
351
}
355
352
356
- ReactTestRenderer . act ( ( ) => {
357
- ReactTestRenderer . create (
353
+ await act ( ( ) => {
354
+ ReactNoop . render (
358
355
< React . unstable_DebugTracingMode >
359
356
< Example />
360
357
</ React . unstable_DebugTracingMode > ,
361
- { isConcurrent : true } ,
362
358
) ;
363
359
} ) ;
364
360
@@ -370,18 +366,17 @@ describe('DebugTracing', () => {
370
366
} ) ;
371
367
372
368
// @gate experimental && build === 'development' && enableDebugTracing
373
- it ( 'should log when user code logs' , ( ) => {
369
+ it ( 'should log when user code logs' , async ( ) => {
374
370
function Example ( ) {
375
371
console . log ( 'Hello from user code' ) ;
376
372
return null ;
377
373
}
378
374
379
- ReactTestRenderer . act ( ( ) =>
380
- ReactTestRenderer . create (
375
+ await act ( ( ) =>
376
+ ReactNoop . render (
381
377
< React . unstable_DebugTracingMode >
382
378
< Example />
383
379
</ React . unstable_DebugTracingMode > ,
384
- { isConcurrent : true } ,
385
380
) ,
386
381
) ;
387
382
@@ -392,8 +387,8 @@ describe('DebugTracing', () => {
392
387
] ) ;
393
388
} ) ;
394
389
395
- // @gate experimental && build === 'development' && enableDebugTracing
396
- it ( 'should not log anything outside of a unstable_DebugTracingMode subtree' , ( ) => {
390
+ // @gate experimental && enableDebugTracing
391
+ it ( 'should not log anything outside of a unstable_DebugTracingMode subtree' , async ( ) => {
397
392
function ExampleThatCascades ( ) {
398
393
const [ didMount , setDidMount ] = React . useState ( false ) ;
399
394
React . useLayoutEffect ( ( ) => {
@@ -412,8 +407,8 @@ describe('DebugTracing', () => {
412
407
return null ;
413
408
}
414
409
415
- ReactTestRenderer . act ( ( ) =>
416
- ReactTestRenderer . create (
410
+ await act ( ( ) =>
411
+ ReactNoop . render (
417
412
< React . Fragment >
418
413
< ExampleThatCascades />
419
414
< React . Suspense fallback = { null } >
0 commit comments