227
);
228
229
// Times are logged until a render is committed.
230
- expect(renderer).toFlushThrough(['first']);
230
+ expect(renderer).toFlushAndYieldThrough(['first']);
231
expect(callback).toHaveBeenCalledTimes(0);
232
- expect(renderer).toFlushAll(['last']);
232
+ expect(renderer).toFlushAndYield(['last']);
233
expect(callback).toHaveBeenCalledTimes(1);
234
});
235
579
</React.unstable_Profiler>,
580
{unstable_isConcurrent: true},
581
);
582
- expect(renderer).toFlushThrough(['Yield:2']);
582
+ expect(renderer).toFlushAndYieldThrough(['Yield:2']);
583
expect(callback).toHaveBeenCalledTimes(0);
584
585
// Resume render for remaining children.
586
- expect(renderer).toFlushAll(['Yield:3']);
586
+ expect(renderer).toFlushAndYield(['Yield:3']);
587
588
// Verify that logged times include both durations above.
589
expect(callback).toHaveBeenCalledTimes(1);
617
</React.unstable_Profiler>,
618
{unstable_isConcurrent: true},
619
);
620
- expect(renderer).toFlushThrough(['Yield:5']);
620
+ expect(renderer).toFlushAndYieldThrough(['Yield:5']);
621
expect(callback).toHaveBeenCalledTimes(0);
622
623
// Simulate time moving forward while frame is paused.
625
626
// Flush the remaninig work,
627
// Which should take an additional 10ms of simulated time.
628
- expect(renderer).toFlushAll(['Yield:10', 'Yield:17']);
628
+ expect(renderer).toFlushAndYield(['Yield:10', 'Yield:17']);
629
expect(callback).toHaveBeenCalledTimes(2);
630
631
const [innerCall, outerCall] = callback.mock.calls;
664
</React.unstable_Profiler>,
665
{unstable_isConcurrent: true},
666
);
667
- expect(renderer).toFlushThrough(['Yield:10']);
667
+ expect(renderer).toFlushAndYieldThrough(['Yield:10']);
668
expect(callback).toHaveBeenCalledTimes(0);
669
670
// Simulate time moving forward while frame is paused.
679
</React.unstable_Profiler>,
680
);
681
});
682
- expect(ReactTestRenderer).toClearYields(['Yield:5']);
682
+ expect(ReactTestRenderer).toHaveYielded(['Yield:5']);
683
684
// The initial work was thrown away in this case,
685
// So the actual and base times should only include the final rendered tree times.
693
callback.mockReset();
694
695
// Verify no more unexpected callbacks from low priority work
696
- expect(renderer).toFlushAll([]);
696
+ expect(renderer).toFlushWithoutYielding();
697
expect(callback).toHaveBeenCalledTimes(0);
698
});
699
718
719
// Render everything initially.
720
// This should take 21 seconds of actual and base time.
721
- expect(renderer).toFlushAll(['Yield:6', 'Yield:15']);
721
+ expect(renderer).toFlushAndYield(['Yield:6', 'Yield:15']);
722
expect(callback).toHaveBeenCalledTimes(1);
723
let call = callback.mock.calls[0];
724
expect(call[2]).toBe(21); // actual time
739
<Yield renderTime={9} />
740
</React.unstable_Profiler>,
741
);
742
- expect(renderer).toFlushThrough(['Yield:3']);
742
+ expect(renderer).toFlushAndYieldThrough(['Yield:3']);
743
expect(callback).toHaveBeenCalledTimes(0);
744
745
// Simulate time moving forward while frame is paused.
746
advanceTimeBy(100); // 59 -> 159
747
748
// Render another 5ms of simulated time.
749
- expect(renderer).toFlushThrough(['Yield:5']);
749
+ expect(renderer).toFlushAndYieldThrough(['Yield:5']);
750
expect(callback).toHaveBeenCalledTimes(0);
751
752
// Simulate time moving forward while frame is paused.
761
</React.unstable_Profiler>,
762
);
763
});
764
- expect(ReactTestRenderer).toClearYields(['Yield:11']);
764
+ expect(ReactTestRenderer).toHaveYielded(['Yield:11']);
765
766
// The actual time should include only the most recent render,
767
// Because this lets us avoid a lot of commit phase reset complexity.
774
expect(call[5]).toBe(275); // commit time
775
776
// Verify no more unexpected callbacks from low priority work
777
- expect(renderer).toFlushAll([]);
777
+ expect(renderer).toFlushAndYield([]);
778
expect(callback).toHaveBeenCalledTimes(1);
779
});
780
825
// Render everything initially.
826
// This simulates a total of 14ms of actual render time.
827
// The base render time is also 14ms for the initial render.
828
- expect(renderer).toFlushAll([
828
+ expect(renderer).toFlushAndYield([
829
'FirstComponent:1',
830
'Yield:4',
831
'SecondComponent:2',
845
// Render a partially update, but don't finish.
846
// This partial render will take 10ms of actual render time.
847
first.setState({renderTime: 10});
848
- expect(renderer).toFlushThrough(['FirstComponent:10']);
848
+ expect(renderer).toFlushAndYieldThrough(['FirstComponent:10']);
849
expect(callback).toHaveBeenCalledTimes(0);
850
851
// Simulate time moving forward while frame is paused.
854
// Interrupt with higher priority work.
855
// This simulates a total of 37ms of actual render time.
856
renderer.unstable_flushSync(() => second.setState({renderTime: 30}));
857
- expect(ReactTestRenderer).toClearYields([
857
+ expect(ReactTestRenderer).toHaveYielded([
858
'SecondComponent:30',
859
'Yield:7',
860
]);
881
// The tree contains 42ms of base render time at this point,
882
// Reflecting the most recent (longer) render durations.
883
// TODO: This actual time should decrease by 10ms once the scheduler supports resuming.
884
- expect(renderer).toFlushAll(['FirstComponent:10', 'Yield:4']);
884
+ expect(renderer).toFlushAndYield(['FirstComponent:10', 'Yield:4']);
885
expect(callback).toHaveBeenCalledTimes(1);
886
call = callback.mock.calls[0];
887
expect(call[2]).toBe(14); // actual time
1305
renderer = ReactTestRenderer.create(<Component>succeed</Component>, {
1306
unstable_isConcurrent: true,
1307
});
1308
- expect(renderer).toFlushAll(['Component:succeed']);
1308
+ expect(renderer).toFlushAndYield(['Component:succeed']);
1309
const tree = renderer.toTree();
1310
expect(tree.type).toBe(Component);
1311
expect(tree.props.children).toBe('succeed');
1327
1328
// Errors that happen inside of a subscriber should throw,
1329
throwInOnWorkStarted = true;
1330
- expect(() => {
1331
- expect(renderer).toFlushAll(['Component:text']);
1332
- }).toThrow('Expected error onWorkStarted');
1330
+ expect(renderer).toFlushAndThrow('Expected error onWorkStarted');
1331
+ expect(ReactTestRenderer).toHaveYielded(['Component:text']);
1332
throwInOnWorkStarted = false;
1333
expect(onWorkStarted).toHaveBeenCalled();
1334
1335
// But the React work should have still been processed.
1337
- expect(renderer).toFlushAll([]);
1336
+ expect(renderer).toFlushAndYield([]);
1337
const tree = renderer.toTree();
1338
expect(tree.type).toBe(Component);
1339
expect(tree.props.children).toBe('text');
1564
]);
1565
expect(onWorkScheduled.mock.calls[0][1] > 0).toBe(true);
1566
1568
- expect(renderer).toFlushThrough(['first']);
1567
+ expect(renderer).toFlushAndYieldThrough(['first']);
1568
expect(onRender).not.toHaveBeenCalled();
1569
1570
expect(onInteractionTraced).toHaveBeenCalledTimes(2);
1749
interactionLowPri,
1750
]);
1751
1753
- expect(renderer).toFlushThrough(['FirstComponent']);
1752
+ expect(renderer).toFlushAndYieldThrough(['FirstComponent']);
1753
expect(onRender).not.toHaveBeenCalled();
1754
1755
expect(onInteractionTraced).toHaveBeenCalledTimes(1);
1793
},
1794
);
1795
});
1797
- expect(ReactTestRenderer).toClearYields(['SecondComponent']);
1796
+ expect(ReactTestRenderer).toHaveYielded(['SecondComponent']);
1797
1798
expect(onInteractionTraced).toHaveBeenCalledTimes(2);
1799
expect(onInteractionScheduledWorkCompleted).toHaveBeenCalledTimes(1);
2420
advanceTimeBy(1500);
2421
await awaitableAdvanceTimers(1500);
2422
2424
- expect(renderer).toFlushAll(['Suspend [loaded]', 'Text [loading]']);
2423
+ expect(renderer).toFlushAndYield([
2424
+ 'Suspend [loaded]',
2425
+ 'Text [loading]',
2426
+ ]);
2427
expect(onInteractionScheduledWorkCompleted).not.toHaveBeenCalled();
2428
2429
advanceTimeBy(2500);
2430
await awaitableAdvanceTimers(2500);
2431
2430
- expect(renderer).toFlushAll(['AsyncText [loaded]']);
2432
+ expect(ReactTestRenderer).toHaveYielded(['Promise resolved [loaded]']);
2433
+ expect(renderer).toFlushAndYield(['AsyncText [loaded]']);
2434
expect(onInteractionScheduledWorkCompleted).toHaveBeenCalledTimes(1);
2435
expect(
2436
onInteractionScheduledWorkCompleted,
2593
);
2594
},
2595
);
2593
- expect(renderer).toFlushAll([
2596
+ expect(renderer).toFlushAndYield([
2597
'Suspend [loaded]',
2598
'Text [loading]',
2599
'Text [initial]',
2647
advanceTimeBy(500);
2648
jest.advanceTimersByTime(500);
2649
await originalPromise;
2647
- expect(renderer).toFlushAll(['AsyncText [loaded]']);
2650
+ expect(ReactTestRenderer).toHaveYielded([
2651
+ 'Suspend [loaded]',
2652
+ 'Text [loading]',
2653
+ 'Text [updated]',
2654
+ 'Promise resolved [loaded]',
2655
+ ]);
2656
+ expect(renderer).toFlushAndYield(['AsyncText [loaded]']);
2657
expect(renderer.toJSON()).toEqual(['loaded', 'updated']);
2658
2659
expect(onRender).toHaveBeenCalledTimes(1);