126
setPerformanceMock(null);
127
});
128
129
- // @reactVersion >=18.0
129
it('should mark sync render without suspends or state updates', () => {
130
renderHelper(<div />);
131
132
expect(clearedMarks).toMatchInlineSnapshot(`
133
Array [
135
- "--schedule-render-1",
136
- "--render-start-1",
134
+ "--schedule-render-2",
135
+ "--render-start-2",
136
"--render-stop",
138
- "--commit-start-1",
137
+ "--commit-start-2",
138
"--react-version-<filtered-version>",
139
"--profiler-version-1",
140
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
141
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
143
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
144
- "--layout-effects-start-1",
142
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
143
+ "--layout-effects-start-2",
144
"--layout-effects-stop",
145
"--commit-stop",
146
]
147
`);
148
});
149
151
- // @reactVersion >=18.0
150
it('should mark concurrent render without suspends or state updates', () => {
151
renderRootHelper(<div />);
152
153
expect(clearedMarks).toMatchInlineSnapshot(`
156
- Array [
157
- "--schedule-render-16",
158
- ]
159
- `);
154
+ Array [
155
+ "--schedule-render-32",
156
+ ]
157
+ `);
158
159
clearPendingMarks();
160
162
163
expect(clearedMarks).toMatchInlineSnapshot(`
164
Array [
167
- "--render-start-16",
165
+ "--render-start-32",
166
"--render-stop",
169
- "--commit-start-16",
167
+ "--commit-start-32",
168
"--react-version-<filtered-version>",
169
"--profiler-version-1",
170
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
171
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
174
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
175
- "--layout-effects-start-16",
172
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
173
+ "--layout-effects-start-32",
174
"--layout-effects-stop",
175
"--commit-stop",
176
]
177
`);
178
});
179
182
- // @reactVersion >=18.0
180
it('should mark render yields', async () => {
181
function Bar() {
182
Scheduler.unstable_yieldValue('Bar');
196
expect(Scheduler).toFlushAndYieldThrough(['Foo']);
197
198
expect(clearedMarks).toMatchInlineSnapshot(`
202
- Array [
203
- "--schedule-render-64",
204
- "--render-start-64",
205
- "--component-render-start-Foo",
206
- "--component-render-stop",
207
- "--render-yield",
208
- ]
209
- `);
199
+ Array [
200
+ "--schedule-render-128",
201
+ "--render-start-128",
202
+ "--component-render-start-Foo",
203
+ "--component-render-stop",
204
+ "--render-yield",
205
+ ]
206
+ `);
207
});
208
212
- // @reactVersion >=18.0
209
it('should mark sync render with suspense that resolves', async () => {
210
const fakeSuspensePromise = Promise.resolve(true);
211
function Example() {
220
221
expect(clearedMarks).toMatchInlineSnapshot(`
222
Array [
227
- "--schedule-render-1",
228
- "--render-start-1",
223
+ "--schedule-render-2",
224
+ "--render-start-2",
225
"--component-render-start-Example",
226
"--component-render-stop",
231
- "--suspense-suspend-0-Example-mount-1-",
227
+ "--suspense-suspend-0-Example-mount-2-",
228
"--render-stop",
233
- "--commit-start-1",
229
+ "--commit-start-2",
230
"--react-version-<filtered-version>",
231
"--profiler-version-1",
232
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
233
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
238
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
239
- "--layout-effects-start-1",
234
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
235
+ "--layout-effects-start-2",
236
"--layout-effects-stop",
237
"--commit-stop",
238
]
248
`);
249
});
250
255
- // @reactVersion >=18.0
251
it('should mark sync render with suspense that rejects', async () => {
252
const fakeSuspensePromise = Promise.reject(new Error('error'));
253
function Example() {
262
263
expect(clearedMarks).toMatchInlineSnapshot(`
264
Array [
270
- "--schedule-render-1",
271
- "--render-start-1",
265
+ "--schedule-render-2",
266
+ "--render-start-2",
267
"--component-render-start-Example",
268
"--component-render-stop",
274
- "--suspense-suspend-0-Example-mount-1-",
269
+ "--suspense-suspend-0-Example-mount-2-",
270
"--render-stop",
276
- "--commit-start-1",
271
+ "--commit-start-2",
272
"--react-version-<filtered-version>",
273
"--profiler-version-1",
274
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
275
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
281
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
282
- "--layout-effects-start-1",
276
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
277
+ "--layout-effects-start-2",
278
"--layout-effects-stop",
279
"--commit-stop",
280
]
286
expect(clearedMarks).toContain(`--suspense-rejected-0-Example`);
287
});
288
294
- // @reactVersion >=18.0
289
it('should mark concurrent render with suspense that resolves', async () => {
290
const fakeSuspensePromise = Promise.resolve(true);
291
function Example() {
299
);
300
301
expect(clearedMarks).toMatchInlineSnapshot(`
308
- Array [
309
- "--schedule-render-16",
310
- ]
311
- `);
302
+ Array [
303
+ "--schedule-render-32",
304
+ ]
305
+ `);
306
307
clearPendingMarks();
308
310
311
expect(clearedMarks).toMatchInlineSnapshot(`
312
Array [
319
- "--render-start-16",
313
+ "--render-start-32",
314
"--component-render-start-Example",
315
"--component-render-stop",
322
- "--suspense-suspend-0-Example-mount-16-",
316
+ "--suspense-suspend-0-Example-mount-32-",
317
"--render-stop",
324
- "--commit-start-16",
318
+ "--commit-start-32",
319
"--react-version-<filtered-version>",
320
"--profiler-version-1",
321
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
322
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
329
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
330
- "--layout-effects-start-16",
323
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
324
+ "--layout-effects-start-32",
325
"--layout-effects-stop",
326
"--commit-stop",
327
]
337
`);
338
});
339
346
- // @reactVersion >=18.0
340
it('should mark concurrent render with suspense that rejects', async () => {
341
const fakeSuspensePromise = Promise.reject(new Error('error'));
342
function Example() {
350
);
351
352
expect(clearedMarks).toMatchInlineSnapshot(`
360
- Array [
361
- "--schedule-render-16",
362
- ]
363
- `);
353
+ Array [
354
+ "--schedule-render-32",
355
+ ]
356
+ `);
357
358
clearPendingMarks();
359
361
362
expect(clearedMarks).toMatchInlineSnapshot(`
363
Array [
371
- "--render-start-16",
364
+ "--render-start-32",
365
"--component-render-start-Example",
366
"--component-render-stop",
374
- "--suspense-suspend-0-Example-mount-16-",
367
+ "--suspense-suspend-0-Example-mount-32-",
368
"--render-stop",
376
- "--commit-start-16",
369
+ "--commit-start-32",
370
"--react-version-<filtered-version>",
371
"--profiler-version-1",
372
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
373
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
381
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
382
- "--layout-effects-start-16",
374
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
375
+ "--layout-effects-start-32",
376
"--layout-effects-stop",
377
"--commit-stop",
378
]
388
`);
389
});
390
398
- // @reactVersion >=18.0
391
it('should mark cascading class component state updates', () => {
392
class Example extends React.Component {
393
state = {didMount: false};
402
renderRootHelper(<Example />);
403
404
expect(clearedMarks).toMatchInlineSnapshot(`
413
- Array [
414
- "--schedule-render-16",
415
- ]
416
- `);
405
+ Array [
406
+ "--schedule-render-32",
407
+ ]
408
+ `);
409
410
clearPendingMarks();
411
413
414
expect(clearedMarks).toMatchInlineSnapshot(`
415
Array [
424
- "--render-start-16",
416
+ "--render-start-32",
417
"--component-render-start-Example",
418
"--component-render-stop",
419
"--render-stop",
428
- "--commit-start-16",
420
+ "--commit-start-32",
421
"--react-version-<filtered-version>",
422
"--profiler-version-1",
423
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
424
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
433
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
434
- "--layout-effects-start-16",
435
- "--schedule-state-update-1-Example",
425
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
426
+ "--layout-effects-start-32",
427
+ "--schedule-state-update-2-Example",
428
"--layout-effects-stop",
437
- "--render-start-1",
429
+ "--render-start-2",
430
"--component-render-start-Example",
431
"--component-render-stop",
432
"--render-stop",
441
- "--commit-start-1",
433
+ "--commit-start-2",
434
"--react-version-<filtered-version>",
435
"--profiler-version-1",
436
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
437
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
446
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
438
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
439
"--commit-stop",
440
"--commit-stop",
441
]
442
`);
443
});
444
453
- // @reactVersion >=18.0
445
it('should mark cascading class component force updates', () => {
446
class Example extends React.Component {
447
componentDidMount() {
455
renderRootHelper(<Example />);
456
457
expect(clearedMarks).toMatchInlineSnapshot(`
467
- Array [
468
- "--schedule-render-16",
469
- ]
470
- `);
458
+ Array [
459
+ "--schedule-render-32",
460
+ ]
461
+ `);
462
463
clearPendingMarks();
464
466
467
expect(clearedMarks).toMatchInlineSnapshot(`
468
Array [
478
- "--render-start-16",
469
+ "--render-start-32",
470
"--component-render-start-Example",
471
"--component-render-stop",
472
"--render-stop",
482
- "--commit-start-16",
473
+ "--commit-start-32",
474
"--react-version-<filtered-version>",
475
"--profiler-version-1",
476
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
477
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
487
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
488
- "--layout-effects-start-16",
489
- "--schedule-forced-update-1-Example",
478
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
479
+ "--layout-effects-start-32",
480
+ "--schedule-forced-update-2-Example",
481
"--layout-effects-stop",
491
- "--render-start-1",
482
+ "--render-start-2",
483
"--component-render-start-Example",
484
"--component-render-stop",
485
"--render-stop",
495
- "--commit-start-1",
486
+ "--commit-start-2",
487
"--react-version-<filtered-version>",
488
"--profiler-version-1",
489
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
490
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
500
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
491
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
492
"--commit-stop",
493
"--commit-stop",
494
]
495
`);
496
});
497
507
- // @reactVersion >=18.0
498
it('should mark render phase state updates for class component', () => {
499
class Example extends React.Component {
500
state = {didRender: false};
509
renderRootHelper(<Example />);
510
511
expect(clearedMarks).toMatchInlineSnapshot(`
522
- Array [
523
- "--schedule-render-16",
524
- ]
525
- `);
512
+ Array [
513
+ "--schedule-render-32",
514
+ ]
515
+ `);
516
517
clearPendingMarks();
518
530
531
expect(clearedMarks).toMatchInlineSnapshot(`
532
Array [
543
- "--render-start-16",
533
+ "--render-start-32",
534
"--component-render-start-Example",
545
- "--schedule-state-update-16-Example",
535
+ "--schedule-state-update-32-Example",
536
"--component-render-stop",
537
"--render-stop",
548
- "--commit-start-16",
538
+ "--commit-start-32",
539
"--react-version-<filtered-version>",
540
"--profiler-version-1",
541
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
542
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
553
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
554
- "--layout-effects-start-16",
543
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
544
+ "--layout-effects-start-32",
545
"--layout-effects-stop",
546
"--commit-stop",
547
]
548
`);
549
});
550
561
- // @reactVersion >=18.0
551
it('should mark render phase force updates for class component', () => {
552
let forced = false;
553
class Example extends React.Component {
563
renderRootHelper(<Example />);
564
565
expect(clearedMarks).toMatchInlineSnapshot(`
577
- Array [
578
- "--schedule-render-16",
579
- ]
580
- `);
566
+ Array [
567
+ "--schedule-render-32",
568
+ ]
569
+ `);
570
571
clearPendingMarks();
572
584
585
expect(clearedMarks).toMatchInlineSnapshot(`
586
Array [
598
- "--render-start-16",
587
+ "--render-start-32",
588
"--component-render-start-Example",
600
- "--schedule-forced-update-16-Example",
589
+ "--schedule-forced-update-32-Example",
590
"--component-render-stop",
591
"--render-stop",
603
- "--commit-start-16",
592
+ "--commit-start-32",
593
"--react-version-<filtered-version>",
594
"--profiler-version-1",
595
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
596
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
608
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
609
- "--layout-effects-start-16",
597
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
598
+ "--layout-effects-start-32",
599
"--layout-effects-stop",
600
"--commit-stop",
601
]
602
`);
603
});
604
616
- // @reactVersion >=18.0
605
it('should mark cascading layout updates', () => {
606
function Example() {
607
const [didMount, setDidMount] = React.useState(false);
614
renderRootHelper(<Example />);
615
616
expect(clearedMarks).toMatchInlineSnapshot(`
629
- Array [
630
- "--schedule-render-16",
631
- ]
632
- `);
617
+ Array [
618
+ "--schedule-render-32",
619
+ ]
620
+ `);
621
622
clearPendingMarks();
623
625
626
expect(clearedMarks).toMatchInlineSnapshot(`
627
Array [
640
- "--render-start-16",
628
+ "--render-start-32",
629
"--component-render-start-Example",
630
"--component-render-stop",
631
"--render-stop",
644
- "--commit-start-16",
632
+ "--commit-start-32",
633
"--react-version-<filtered-version>",
634
"--profiler-version-1",
635
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
636
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
649
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
650
- "--layout-effects-start-16",
637
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
638
+ "--layout-effects-start-32",
639
"--component-layout-effect-mount-start-Example",
652
- "--schedule-state-update-1-Example",
640
+ "--schedule-state-update-2-Example",
641
"--component-layout-effect-mount-stop",
642
"--layout-effects-stop",
655
- "--render-start-1",
643
+ "--render-start-2",
644
"--component-render-start-Example",
645
"--component-render-stop",
646
"--render-stop",
659
- "--commit-start-1",
647
+ "--commit-start-2",
648
"--react-version-<filtered-version>",
649
"--profiler-version-1",
650
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
651
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
664
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
652
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
653
"--commit-stop",
654
"--commit-stop",
655
]
656
`);
657
});
658
671
- // @reactVersion >=18.0
659
it('should mark cascading passive updates', () => {
660
function Example() {
661
const [didMount, setDidMount] = React.useState(false);
671
672
expect(clearedMarks).toMatchInlineSnapshot(`
673
Array [
687
- "--schedule-render-16",
688
- "--render-start-16",
674
+ "--schedule-render-32",
675
+ "--render-start-32",
676
"--component-render-start-Example",
677
"--component-render-stop",
678
"--render-stop",
692
- "--commit-start-16",
679
+ "--commit-start-32",
680
"--react-version-<filtered-version>",
681
"--profiler-version-1",
682
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
683
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
697
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
698
- "--layout-effects-start-16",
684
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
685
+ "--layout-effects-start-32",
686
"--layout-effects-stop",
687
"--commit-stop",
701
- "--passive-effects-start-16",
688
+ "--passive-effects-start-32",
689
"--component-passive-effect-mount-start-Example",
703
- "--schedule-state-update-16-Example",
690
+ "--schedule-state-update-32-Example",
691
"--component-passive-effect-mount-stop",
692
"--passive-effects-stop",
706
- "--render-start-16",
693
+ "--render-start-32",
694
"--component-render-start-Example",
695
"--component-render-stop",
696
"--render-stop",
710
- "--commit-start-16",
697
+ "--commit-start-32",
698
"--react-version-<filtered-version>",
699
"--profiler-version-1",
700
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
701
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
715
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
702
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
703
"--commit-stop",
704
]
705
`);
706
});
707
721
- // @reactVersion >=18.0
708
it('should mark render phase updates', () => {
709
function Example() {
710
const [didRender, setDidRender] = React.useState(false);
720
721
expect(clearedMarks).toMatchInlineSnapshot(`
722
Array [
737
- "--schedule-render-16",
738
- "--render-start-16",
723
+ "--schedule-render-32",
724
+ "--render-start-32",
725
"--component-render-start-Example",
740
- "--schedule-state-update-16-Example",
726
+ "--schedule-state-update-32-Example",
727
"--component-render-stop",
728
"--render-stop",
743
- "--commit-start-16",
729
+ "--commit-start-32",
730
"--react-version-<filtered-version>",
731
"--profiler-version-1",
732
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
733
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
748
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
749
- "--layout-effects-start-16",
734
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
735
+ "--layout-effects-start-32",
736
"--layout-effects-stop",
737
"--commit-stop",
738
]
739
`);
740
});
741
756
- // @reactVersion >=18.0
742
it('should mark sync render that throws', async () => {
743
spyOn(console, 'error');
744
767
768
expect(clearedMarks).toMatchInlineSnapshot(`
769
Array [
785
- "--schedule-render-1",
786
- "--render-start-1",
770
+ "--schedule-render-2",
771
+ "--render-start-2",
772
"--component-render-start-ErrorBoundary",
773
"--component-render-stop",
774
"--component-render-start-ExampleThatThrows",
776
"--component-render-stop",
777
"--error-ExampleThatThrows-mount-Expected error",
778
"--render-stop",
794
- "--commit-start-1",
779
+ "--commit-start-2",
780
"--react-version-<filtered-version>",
781
"--profiler-version-1",
782
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
783
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
799
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
800
- "--layout-effects-start-1",
801
- "--schedule-state-update-1-ErrorBoundary",
784
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
785
+ "--layout-effects-start-2",
786
+ "--schedule-state-update-2-ErrorBoundary",
787
"--layout-effects-stop",
788
"--commit-stop",
804
- "--render-start-1",
789
+ "--render-start-2",
790
"--component-render-start-ErrorBoundary",
791
"--component-render-stop",
792
"--render-stop",
808
- "--commit-start-1",
793
+ "--commit-start-2",
794
"--react-version-<filtered-version>",
795
"--profiler-version-1",
796
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
797
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
813
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
798
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
799
"--commit-stop",
800
]
801
`);
802
});
803
819
- // @reactVersion >=18.0
804
it('should mark concurrent render that throws', async () => {
805
spyOn(console, 'error');
806
829
);
830
831
expect(clearedMarks).toMatchInlineSnapshot(`
848
- Array [
849
- "--schedule-render-16",
850
- ]
851
- `);
832
+ Array [
833
+ "--schedule-render-32",
834
+ ]
835
+ `);
836
837
clearPendingMarks();
838
840
841
expect(clearedMarks).toMatchInlineSnapshot(`
842
Array [
859
- "--render-start-16",
843
+ "--render-start-32",
844
"--component-render-start-ErrorBoundary",
845
"--component-render-stop",
846
"--component-render-start-ExampleThatThrows",
848
"--component-render-stop",
849
"--error-ExampleThatThrows-mount-Expected error",
850
"--render-stop",
867
- "--render-start-16",
851
+ "--render-start-32",
852
"--component-render-start-ErrorBoundary",
853
"--component-render-stop",
854
"--component-render-start-ExampleThatThrows",
856
"--component-render-stop",
857
"--error-ExampleThatThrows-mount-Expected error",
858
"--render-stop",
875
- "--commit-start-16",
859
+ "--commit-start-32",
860
"--react-version-<filtered-version>",
861
"--profiler-version-1",
862
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
863
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
880
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
881
- "--layout-effects-start-16",
882
- "--schedule-state-update-1-ErrorBoundary",
864
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
865
+ "--layout-effects-start-32",
866
+ "--schedule-state-update-2-ErrorBoundary",
867
"--layout-effects-stop",
884
- "--render-start-1",
868
+ "--render-start-2",
869
"--component-render-start-ErrorBoundary",
870
"--component-render-stop",
871
"--render-stop",
888
- "--commit-start-1",
872
+ "--commit-start-2",
873
"--react-version-<filtered-version>",
874
"--profiler-version-1",
875
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
876
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
893
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
877
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
878
"--commit-stop",
879
"--commit-stop",
880
]
881
`);
882
});
883
900
- // @reactVersion >=18.0
884
it('should mark passive and layout effects', async () => {
885
function ComponentWithEffects() {
886
React.useLayoutEffect(() => {
930
931
expect(clearedMarks).toMatchInlineSnapshot(`
932
Array [
950
- "--schedule-render-16",
951
- "--render-start-16",
933
+ "--schedule-render-32",
934
+ "--render-start-32",
935
"--component-render-start-ComponentWithEffects",
936
"--component-render-stop",
937
"--render-stop",
955
- "--commit-start-16",
938
+ "--commit-start-32",
939
"--react-version-<filtered-version>",
940
"--profiler-version-1",
941
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
942
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
960
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
961
- "--layout-effects-start-16",
943
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
944
+ "--layout-effects-start-32",
945
"--component-layout-effect-mount-start-ComponentWithEffects",
946
"--component-layout-effect-mount-stop",
947
"--component-layout-effect-mount-start-ComponentWithEffects",
960
]);
961
962
expect(clearedMarks).toMatchInlineSnapshot(`
980
- Array [
981
- "--passive-effects-start-16",
982
- "--component-passive-effect-mount-start-ComponentWithEffects",
983
- "--component-passive-effect-mount-stop",
984
- "--component-passive-effect-mount-start-ComponentWithEffects",
985
- "--component-passive-effect-mount-stop",
986
- "--component-passive-effect-mount-start-ComponentWithEffects",
987
- "--component-passive-effect-mount-stop",
988
- "--passive-effects-stop",
989
- ]
990
- `);
963
+ Array [
964
+ "--passive-effects-start-32",
965
+ "--component-passive-effect-mount-start-ComponentWithEffects",
966
+ "--component-passive-effect-mount-stop",
967
+ "--component-passive-effect-mount-start-ComponentWithEffects",
968
+ "--component-passive-effect-mount-stop",
969
+ "--component-passive-effect-mount-start-ComponentWithEffects",
970
+ "--component-passive-effect-mount-stop",
971
+ "--passive-effects-stop",
972
+ ]
973
+ `);
974
975
clearPendingMarks();
976
988
989
expect(clearedMarks).toMatchInlineSnapshot(`
990
Array [
1008
- "--schedule-render-1",
1009
- "--render-start-1",
991
+ "--schedule-render-2",
992
+ "--render-start-2",
993
"--render-stop",
1011
- "--commit-start-1",
994
+ "--commit-start-2",
995
"--react-version-<filtered-version>",
996
"--profiler-version-1",
997
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
998
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
1016
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
999
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
1000
"--component-layout-effect-unmount-start-ComponentWithEffects",
1001
"--component-layout-effect-unmount-stop",
1002
"--component-layout-effect-unmount-start-ComponentWithEffects",
1003
"--component-layout-effect-unmount-stop",
1021
- "--layout-effects-start-1",
1004
+ "--layout-effects-start-2",
1005
"--layout-effects-stop",
1023
- "--passive-effects-start-1",
1006
+ "--passive-effects-start-2",
1007
"--component-passive-effect-unmount-start-ComponentWithEffects",
1008
"--component-passive-effect-unmount-stop",
1009
"--component-passive-effect-unmount-start-ComponentWithEffects",
1017
});
1018
1019
describe('lane labels', () => {
1037
- // @reactVersion >=18.0
1020
it('regression test SyncLane', () => {
1021
renderHelper(<div />);
1022
1023
expect(clearedMarks).toMatchInlineSnapshot(`
1024
Array [
1043
- "--schedule-render-1",
1044
- "--render-start-1",
1025
+ "--schedule-render-2",
1026
+ "--render-start-2",
1027
"--render-stop",
1046
- "--commit-start-1",
1028
+ "--commit-start-2",
1029
"--react-version-<filtered-version>",
1030
"--profiler-version-1",
1031
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
1032
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
1051
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
1052
- "--layout-effects-start-1",
1033
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
1034
+ "--layout-effects-start-2",
1035
"--layout-effects-stop",
1036
"--commit-stop",
1037
]
1038
`);
1039
});
1040
1059
- // @reactVersion >=18.0
1041
it('regression test DefaultLane', () => {
1042
renderRootHelper(<div />);
1043
expect(clearedMarks).toMatchInlineSnapshot(`
1063
- Array [
1064
- "--schedule-render-16",
1065
- ]
1066
- `);
1044
+ Array [
1045
+ "--schedule-render-32",
1046
+ ]
1047
+ `);
1048
});
1049
1069
- // @reactVersion >=18.0
1050
it('regression test InputDiscreteLane', async () => {
1051
const targetRef = React.createRef(null);
1052
1070
1071
expect(clearedMarks).toMatchInlineSnapshot(`
1072
Array [
1093
- "--schedule-state-update-1-App",
1094
- "--render-start-1",
1073
+ "--schedule-state-update-2-App",
1074
+ "--render-start-2",
1075
"--component-render-start-App",
1076
"--component-render-stop",
1077
"--render-stop",
1098
- "--commit-start-1",
1078
+ "--commit-start-2",
1079
"--react-version-<filtered-version>",
1080
"--profiler-version-1",
1081
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
1082
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
1103
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
1104
- "--layout-effects-start-1",
1083
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
1084
+ "--layout-effects-start-2",
1085
"--layout-effects-stop",
1086
"--commit-stop",
1087
]
1088
`);
1089
});
1090
1111
- // @reactVersion >=18.0
1091
it('regression test InputContinuousLane', async () => {
1092
const targetRef = React.createRef(null);
1093
1110
1111
expect(clearedMarks).toMatchInlineSnapshot(`
1112
Array [
1134
- "--schedule-state-update-4-App",
1135
- "--render-start-4",
1113
+ "--schedule-state-update-8-App",
1114
+ "--render-start-8",
1115
"--component-render-start-App",
1116
"--component-render-stop",
1117
"--render-stop",
1139
- "--commit-start-4",
1118
+ "--commit-start-8",
1119
"--react-version-<filtered-version>",
1120
"--profiler-version-1",
1121
"--react-internal-module-start- at filtered (<anonymous>:0:0)",
1122
"--react-internal-module-stop- at filtered (<anonymous>:1:1)",
1144
- "--react-lane-labels-Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
1145
- "--layout-effects-start-4",
1123
+ "--react-lane-labels-SyncHydrationLane,Sync,InputContinuousHydration,InputContinuous,DefaultHydration,Default,TransitionHydration,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Transition,Retry,Retry,Retry,Retry,SelectiveHydration,IdleHydration,Idle,Offscreen",
1124
+ "--layout-effects-start-8",
1125
"--layout-effects-stop",
1126
"--commit-stop",
1127
]
1184
utils.act(() => store.profilerStore.startProfiling());
1185
});
1186
1208
- // @reactVersion >=18.0
1187
it('should mark sync render without suspends or state updates', () => {
1188
renderHelper(<div />);
1189
1191
expect(timelineData.schedulingEvents).toMatchInlineSnapshot(`
1192
Array [
1193
Object {
1216
- "lanes": "0b0000000000000000000000000000001",
1194
+ "lanes": "0b0000000000000000000000000000010",
1195
"timestamp": 10,
1196
"type": "schedule-render",
1197
"warning": null,
1200
`);
1201
});
1202
1225
- // @reactVersion >=18.0
1203
it('should mark concurrent render without suspends or state updates', () => {
1204
utils.act(() => renderRootHelper(<div />));
1205
1207
expect(timelineData.schedulingEvents).toMatchInlineSnapshot(`
1208
Array [
1209
Object {
1233
- "lanes": "0b0000000000000000000000000010000",
1210
+ "lanes": "0b0000000000000000000000000100000",
1211
"timestamp": 10,
1212
"type": "schedule-render",
1213
"warning": null,
1216
`);
1217
});
1218
1242
- // @reactVersion >=18.0
1219
it('should mark concurrent render without suspends or state updates', () => {
1220
let updaterFn;
1221
1248
"componentName": "Example",
1249
"componentStack": "
1250
in Example (at **)",
1275
- "lanes": "0b0000000000000000000000000000100",
1251
+ "lanes": "0b0000000000000000000000000001000",
1252
"timestamp": 10,
1253
"type": "schedule-state-update",
1254
"warning": null,
1257
"componentName": "Example",
1258
"componentStack": "
1259
in Example (at **)",
1284
- "lanes": "0b0000000000000000000000001000000",
1260
+ "lanes": "0b0000000000000000000000010000000",
1261
"timestamp": 10,
1262
"type": "schedule-state-update",
1263
"warning": null,
1266
"componentName": "Example",
1267
"componentStack": "
1268
in Example (at **)",
1293
- "lanes": "0b0000000000000000000000001000000",
1269
+ "lanes": "0b0000000000000000000000010000000",
1270
"timestamp": 10,
1271
"type": "schedule-state-update",
1272
"warning": null,
1275
"componentName": "Example",
1276
"componentStack": "
1277
in Example (at **)",
1302
- "lanes": "0b0000000000000000000000000010000",
1278
+ "lanes": "0b0000000000000000000000000100000",
1279
"timestamp": 10,
1280
"type": "schedule-state-update",
1281
"warning": null,
1562
expect(timelineData.componentMeasures).toHaveLength(2);
1563
});
1564
1589
- // @reactVersion >=18.0
1565
it('should mark cascading class component state updates', () => {
1566
class Example extends React.Component {
1567
state = {didMount: false};
1604
expect(timelineData.schedulingEvents).toMatchInlineSnapshot(`
1605
Array [
1606
Object {
1632
- "lanes": "0b0000000000000000000000000010000",
1607
+ "lanes": "0b0000000000000000000000000100000",
1608
"timestamp": 10,
1609
"type": "schedule-render",
1610
"warning": null,
1613
"componentName": "Example",
1614
"componentStack": "
1615
in Example (at **)",
1641
- "lanes": "0b0000000000000000000000000000001",
1616
+ "lanes": "0b0000000000000000000000000000010",
1617
"timestamp": 20,
1618
"type": "schedule-state-update",
1619
"warning": null,
1622
`);
1623
});
1624
1650
- // @reactVersion >=18.0
1625
it('should mark cascading class component force updates', () => {
1626
let forced = false;
1627
class Example extends React.Component {
1663
expect(timelineData.schedulingEvents).toMatchInlineSnapshot(`
1664
Array [
1665
Object {
1692
- "lanes": "0b0000000000000000000000000010000",
1666
+ "lanes": "0b0000000000000000000000000100000",
1667
"timestamp": 10,
1668
"type": "schedule-render",
1669
"warning": null,
1670
},
1671
Object {
1672
"componentName": "Example",
1699
- "lanes": "0b0000000000000000000000000000001",
1673
+ "lanes": "0b0000000000000000000000000000010",
1674
"timestamp": 20,
1675
"type": "schedule-force-update",
1676
"warning": null,
1679
`);
1680
});
1681
1708
- // @reactVersion >=18.0
1682
it('should mark render phase state updates for class component', () => {
1683
class Example extends React.Component {
1684
state = {didRender: false};
1731
expect(timelineData.schedulingEvents).toMatchInlineSnapshot(`
1732
Array [
1733
Object {
1761
- "lanes": "0b0000000000000000000000000010000",
1734
+ "lanes": "0b0000000000000000000000000100000",
1735
"timestamp": 10,
1736
"type": "schedule-render",
1737
"warning": null,
1740
"componentName": "Example",
1741
"componentStack": "
1742
in Example (at **)",
1770
- "lanes": "0b0000000000000000000000000010000",
1743
+ "lanes": "0b0000000000000000000000000100000",
1744
"timestamp": 10,
1745
"type": "schedule-state-update",
1746
"warning": null,
1749
`);
1750
});
1751
1779
- // @reactVersion >=18.0
1752
it('should mark render phase force updates for class component', () => {
1753
let forced = false;
1754
class Example extends React.Component {
1800
expect(timelineData.schedulingEvents).toMatchInlineSnapshot(`
1801
Array [
1802
Object {
1831
- "lanes": "0b0000000000000000000000000010000",
1803
+ "lanes": "0b0000000000000000000000000100000",
1804
"timestamp": 10,
1805
"type": "schedule-render",
1806
"warning": null,
1807
},
1808
Object {
1809
"componentName": "Example",
1838
- "lanes": "0b0000000000000000000000000010000",
1810
+ "lanes": "0b0000000000000000000000000100000",
1811
"timestamp": 20,
1812
"type": "schedule-force-update",
1813
"warning": null,
1816
`);
1817
});
1818
1847
- // @reactVersion >=18.0
1819
it('should mark cascading layout updates', () => {
1820
function Example() {
1821
const [didMount, setDidMount] = React.useState(false);
1862
expect(timelineData.schedulingEvents).toMatchInlineSnapshot(`
1863
Array [
1864
Object {
1894
- "lanes": "0b0000000000000000000000000010000",
1865
+ "lanes": "0b0000000000000000000000000100000",
1866
"timestamp": 10,
1867
"type": "schedule-render",
1868
"warning": null,
1871
"componentName": "Example",
1872
"componentStack": "
1873
in Example (at **)",
1903
- "lanes": "0b0000000000000000000000000000001",
1874
+ "lanes": "0b0000000000000000000000000000010",
1875
"timestamp": 21,
1876
"type": "schedule-state-update",
1877
"warning": null,
1880
`);
1881
});
1882
1912
- // @reactVersion >=18.0
1883
it('should mark cascading passive updates', () => {
1884
function Example() {
1885
const [didMount, setDidMount] = React.useState(false);
1925
expect(timelineData.schedulingEvents).toMatchInlineSnapshot(`
1926
Array [
1927
Object {
1958
- "lanes": "0b0000000000000000000000000010000",
1928
+ "lanes": "0b0000000000000000000000000100000",
1929
"timestamp": 10,
1930
"type": "schedule-render",
1931
"warning": null,
1934
"componentName": "Example",
1935
"componentStack": "
1936
in Example (at **)",
1967
- "lanes": "0b0000000000000000000000000010000",
1937
+ "lanes": "0b0000000000000000000000000100000",
1938
"timestamp": 21,
1939
"type": "schedule-state-update",
1940
"warning": null,
1943
`);
1944
});
1945
1976
- // @reactVersion >=18.0
1946
it('should mark render phase updates', () => {
1947
function Example() {
1948
const [didRender, setDidRender] = React.useState(false);
1974
expect(timelineData.schedulingEvents).toMatchInlineSnapshot(`
1975
Array [
1976
Object {
2008
- "lanes": "0b0000000000000000000000000010000",
1977
+ "lanes": "0b0000000000000000000000000100000",
1978
"timestamp": 10,
1979
"type": "schedule-render",
1980
"warning": null,
1983
"componentName": "Example",
1984
"componentStack": "
1985
in Example (at **)",
2017
- "lanes": "0b0000000000000000000000000010000",
1986
+ "lanes": "0b0000000000000000000000000100000",
1987
"timestamp": 20,
1988
"type": "schedule-state-update",
1989
"warning": null,
1992
`);
1993
});
1994
2026
- // @reactVersion >=18.0
1995
it('should mark sync render that throws', async () => {
1996
spyOn(console, 'error');
1997
2058
expect(timelineData.schedulingEvents).toMatchInlineSnapshot(`
2059
Array [
2060
Object {
2093
- "lanes": "0b0000000000000000000000000000001",
2061
+ "lanes": "0b0000000000000000000000000000010",
2062
"timestamp": 10,
2063
"type": "schedule-render",
2064
"warning": null,
2067
"componentName": "ErrorBoundary",
2068
"componentStack": "
2069
in ErrorBoundary (at **)",
2102
- "lanes": "0b0000000000000000000000000000001",
2070
+ "lanes": "0b0000000000000000000000000000010",
2071
"timestamp": 20,
2072
"type": "schedule-state-update",
2073
"warning": null,
2087
`);
2088
});
2089
2122
- // @reactVersion >=18.0
2090
it('should mark concurrent render that throws', async () => {
2091
spyOn(console, 'error');
2092
2171
expect(timelineData.schedulingEvents).toMatchInlineSnapshot(`
2172
Array [
2173
Object {
2207
- "lanes": "0b0000000000000000000000000010000",
2174
+ "lanes": "0b0000000000000000000000000100000",
2175
"timestamp": 10,
2176
"type": "schedule-render",
2177
"warning": null,
2180
"componentName": "ErrorBoundary",
2181
"componentStack": "
2182
in ErrorBoundary (at **)",
2216
- "lanes": "0b0000000000000000000000000000001",
2183
+ "lanes": "0b0000000000000000000000000000010",
2184
"timestamp": 30,
2185
"type": "schedule-state-update",
2186
"warning": null,
2207
`);
2208
});
2209
2243
- // @reactVersion >=18.0
2210
it('should mark passive and layout effects', async () => {
2211
function ComponentWithEffects() {
2212
React.useLayoutEffect(() => {
2361
"batchUID": 1,
2362
"depth": 0,
2363
"duration": 0,
2398
- "lanes": "0b0000000000000000000000000010000",
2364
+ "lanes": "0b0000000000000000000000000100000",
2365
"timestamp": 10,
2366
"type": "render-idle",
2367
},
2369
"batchUID": 1,
2370
"depth": 0,
2371
"duration": 0,
2406
- "lanes": "0b0000000000000000000000000010000",
2372
+ "lanes": "0b0000000000000000000000000100000",
2373
"timestamp": 10,
2374
"type": "render",
2375
},
2377
"batchUID": 1,
2378
"depth": 0,
2379
"duration": 0,
2414
- "lanes": "0b0000000000000000000000000010000",
2380
+ "lanes": "0b0000000000000000000000000100000",
2381
"timestamp": 10,
2382
"type": "commit",
2383
},
2385
"batchUID": 1,
2386
"depth": 1,
2387
"duration": 0,
2422
- "lanes": "0b0000000000000000000000000010000",
2388
+ "lanes": "0b0000000000000000000000000100000",
2389
"timestamp": 10,
2390
"type": "layout-effects",
2391
},
2393
"batchUID": 1,
2394
"depth": 0,
2395
"duration": 0,
2430
- "lanes": "0b0000000000000000000000000010000",
2396
+ "lanes": "0b0000000000000000000000000100000",
2397
"timestamp": 10,
2398
"type": "passive-effects",
2399
},
2403
"batchUID": 2,
2404
"depth": 0,
2405
"duration": 0,
2440
- "lanes": "0b0000000000000000000000000000001",
2406
+ "lanes": "0b0000000000000000000000000000010",
2407
"timestamp": 10,
2408
"type": "render-idle",
2409
},
2411
"batchUID": 2,
2412
"depth": 0,
2413
"duration": 0,
2448
- "lanes": "0b0000000000000000000000000000001",
2414
+ "lanes": "0b0000000000000000000000000000010",
2415
"timestamp": 10,
2416
"type": "render",
2417
},
2419
"batchUID": 2,
2420
"depth": 0,
2421
"duration": 0,
2456
- "lanes": "0b0000000000000000000000000000001",
2422
+ "lanes": "0b0000000000000000000000000000010",
2423
"timestamp": 10,
2424
"type": "commit",
2425
},
2427
"batchUID": 2,
2428
"depth": 1,
2429
"duration": 0,
2464
- "lanes": "0b0000000000000000000000000000001",
2430
+ "lanes": "0b0000000000000000000000000000010",
2431
"timestamp": 10,
2432
"type": "layout-effects",
2433
},
2435
"batchUID": 2,
2436
"depth": 1,
2437
"duration": 0,
2472
- "lanes": "0b0000000000000000000000000000001",
2438
+ "lanes": "0b0000000000000000000000000000010",
2439
"timestamp": 10,
2440
"type": "passive-effects",
2441
},
2471
expect(timelineData.schedulingEvents).toMatchInlineSnapshot(`
2472
Array [
2473
Object {
2508
- "lanes": "0b0000000000000000000000000010000",
2474
+ "lanes": "0b0000000000000000000000000100000",
2475
"timestamp": 10,
2476
"type": "schedule-render",
2477
"warning": null,
2481
"componentStack": "
2482
in Child (at **)
2483
in CommponentWithChildren (at **)",
2518
- "lanes": "0b0000000000000000000000000010000",
2484
+ "lanes": "0b0000000000000000000000000100000",
2485
"timestamp": 10,
2486
"type": "schedule-state-update",
2487
"warning": null,