Skip to content

Commit ca99ae9

Browse files
authored
Replace some flushExpired callsites (#20975)
1 parent 1fafac0 commit ca99ae9

File tree

5 files changed

+38
-34
lines changed

5 files changed

+38
-34
lines changed

packages/react-reconciler/src/__tests__/ReactSuspense-test.internal.js

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ describe('ReactSuspense', () => {
370370

371371
await LazyClass;
372372

373-
expect(Scheduler).toFlushExpired(['Hi', 'Did mount: Hi']);
373+
expect(Scheduler).toFlushUntilNextPaint(['Hi', 'Did mount: Hi']);
374374
expect(root).toMatchRenderedOutput('Hi');
375375
});
376376

@@ -729,7 +729,7 @@ describe('ReactSuspense', () => {
729729
jest.advanceTimersByTime(100);
730730

731731
expect(Scheduler).toHaveYielded(['Promise resolved [B:1]']);
732-
expect(Scheduler).toFlushExpired([
732+
expect(Scheduler).toFlushUntilNextPaint([
733733
'B:1',
734734
'Unmount [Loading...]',
735735
// Should be a mount, not an update
@@ -748,7 +748,7 @@ describe('ReactSuspense', () => {
748748
jest.advanceTimersByTime(100);
749749

750750
expect(Scheduler).toHaveYielded(['Promise resolved [B:2]']);
751-
expect(Scheduler).toFlushExpired([
751+
expect(Scheduler).toFlushUntilNextPaint([
752752
'B:2',
753753
'Unmount [Loading...]',
754754
'Update [B:2]',
@@ -786,7 +786,7 @@ describe('ReactSuspense', () => {
786786
jest.advanceTimersByTime(1000);
787787

788788
expect(Scheduler).toHaveYielded(['Promise resolved [A]']);
789-
expect(Scheduler).toFlushExpired(['A']);
789+
expect(Scheduler).toFlushUntilNextPaint(['A']);
790790
expect(root).toMatchRenderedOutput('Stateful: 1A');
791791

792792
root.update(<App text="B" />);
@@ -804,7 +804,7 @@ describe('ReactSuspense', () => {
804804
jest.advanceTimersByTime(1000);
805805

806806
expect(Scheduler).toHaveYielded(['Promise resolved [B]']);
807-
expect(Scheduler).toFlushExpired(['B']);
807+
expect(Scheduler).toFlushUntilNextPaint(['B']);
808808
expect(root).toMatchRenderedOutput('Stateful: 2B');
809809
});
810810

@@ -846,7 +846,7 @@ describe('ReactSuspense', () => {
846846
jest.advanceTimersByTime(1000);
847847

848848
expect(Scheduler).toHaveYielded(['Promise resolved [A]']);
849-
expect(Scheduler).toFlushExpired(['A']);
849+
expect(Scheduler).toFlushUntilNextPaint(['A']);
850850
expect(root).toMatchRenderedOutput('Stateful: 1A');
851851

852852
root.update(<App text="B" />);
@@ -871,7 +871,7 @@ describe('ReactSuspense', () => {
871871
jest.advanceTimersByTime(1000);
872872

873873
expect(Scheduler).toHaveYielded(['Promise resolved [B]']);
874-
expect(Scheduler).toFlushExpired(['B']);
874+
expect(Scheduler).toFlushUntilNextPaint(['B']);
875875
expect(root).toMatchRenderedOutput('Stateful: 2B');
876876
});
877877

@@ -951,7 +951,7 @@ describe('ReactSuspense', () => {
951951
jest.advanceTimersByTime(500);
952952

953953
expect(Scheduler).toHaveYielded(['Promise resolved [A]']);
954-
expect(Scheduler).toFlushExpired(['A', 'Did commit: A']);
954+
expect(Scheduler).toFlushUntilNextPaint(['A', 'Did commit: A']);
955955
});
956956

957957
it('retries when an update is scheduled on a timed out tree', () => {
@@ -1038,7 +1038,7 @@ describe('ReactSuspense', () => {
10381038
jest.advanceTimersByTime(1000);
10391039

10401040
expect(Scheduler).toHaveYielded(['Promise resolved [Child 1]']);
1041-
expect(Scheduler).toFlushExpired([
1041+
expect(Scheduler).toFlushUntilNextPaint([
10421042
'Child 1',
10431043
'Suspend! [Child 2]',
10441044
'Suspend! [Child 3]',
@@ -1047,12 +1047,15 @@ describe('ReactSuspense', () => {
10471047
jest.advanceTimersByTime(1000);
10481048

10491049
expect(Scheduler).toHaveYielded(['Promise resolved [Child 2]']);
1050-
expect(Scheduler).toFlushExpired(['Child 2', 'Suspend! [Child 3]']);
1050+
expect(Scheduler).toFlushUntilNextPaint([
1051+
'Child 2',
1052+
'Suspend! [Child 3]',
1053+
]);
10511054

10521055
jest.advanceTimersByTime(1000);
10531056

10541057
expect(Scheduler).toHaveYielded(['Promise resolved [Child 3]']);
1055-
expect(Scheduler).toFlushExpired(['Child 3']);
1058+
expect(Scheduler).toFlushUntilNextPaint(['Child 3']);
10561059
expect(root).toMatchRenderedOutput(
10571060
['Child 1', 'Child 2', 'Child 3'].join(''),
10581061
);
@@ -1113,7 +1116,7 @@ describe('ReactSuspense', () => {
11131116
jest.advanceTimersByTime(1000);
11141117

11151118
expect(Scheduler).toHaveYielded(['Promise resolved [Tab: 0]']);
1116-
expect(Scheduler).toFlushExpired(['Tab: 0']);
1119+
expect(Scheduler).toFlushUntilNextPaint(['Tab: 0']);
11171120
expect(root).toMatchRenderedOutput('Tab: 0 + sibling');
11181121

11191122
act(() => setTab(1));
@@ -1126,7 +1129,7 @@ describe('ReactSuspense', () => {
11261129
jest.advanceTimersByTime(1000);
11271130

11281131
expect(Scheduler).toHaveYielded(['Promise resolved [Tab: 1]']);
1129-
expect(Scheduler).toFlushExpired(['Tab: 1']);
1132+
expect(Scheduler).toFlushUntilNextPaint(['Tab: 1']);
11301133
expect(root).toMatchRenderedOutput('Tab: 1 + sibling');
11311134

11321135
act(() => setTab(2));
@@ -1139,7 +1142,7 @@ describe('ReactSuspense', () => {
11391142
jest.advanceTimersByTime(1000);
11401143

11411144
expect(Scheduler).toHaveYielded(['Promise resolved [Tab: 2]']);
1142-
expect(Scheduler).toFlushExpired(['Tab: 2']);
1145+
expect(Scheduler).toFlushUntilNextPaint(['Tab: 2']);
11431146
expect(root).toMatchRenderedOutput('Tab: 2 + sibling');
11441147
});
11451148

@@ -1177,7 +1180,7 @@ describe('ReactSuspense', () => {
11771180
jest.advanceTimersByTime(1000);
11781181

11791182
expect(Scheduler).toHaveYielded(['Promise resolved [A:0]']);
1180-
expect(Scheduler).toFlushExpired(['A:0']);
1183+
expect(Scheduler).toFlushUntilNextPaint(['A:0']);
11811184
expect(root).toMatchRenderedOutput('A:0');
11821185

11831186
act(() => setStep(1));
@@ -1215,7 +1218,7 @@ describe('ReactSuspense', () => {
12151218
jest.advanceTimersByTime(1000);
12161219

12171220
expect(Scheduler).toHaveYielded(['Promise resolved [A]']);
1218-
expect(Scheduler).toFlushExpired([
1221+
expect(Scheduler).toFlushUntilNextPaint([
12191222
'A',
12201223
// The promises for B and C have now been thrown twice
12211224
'Suspend! [B]',
@@ -1226,7 +1229,7 @@ describe('ReactSuspense', () => {
12261229
jest.advanceTimersByTime(1000);
12271230

12281231
expect(Scheduler).toHaveYielded(['Promise resolved [B]']);
1229-
expect(Scheduler).toFlushExpired([
1232+
expect(Scheduler).toFlushUntilNextPaint([
12301233
// Even though the promise for B was thrown twice, we should only
12311234
// re-render once.
12321235
'B',
@@ -1238,7 +1241,7 @@ describe('ReactSuspense', () => {
12381241
jest.advanceTimersByTime(1000);
12391242

12401243
expect(Scheduler).toHaveYielded(['Promise resolved [C]']);
1241-
expect(Scheduler).toFlushExpired([
1244+
expect(Scheduler).toFlushUntilNextPaint([
12421245
// Even though the promise for C was thrown three times, we should only
12431246
// re-render once.
12441247
'C',
@@ -1280,7 +1283,7 @@ describe('ReactSuspense', () => {
12801283
jest.advanceTimersByTime(1000);
12811284

12821285
expect(Scheduler).toHaveYielded(['Promise resolved [A]']);
1283-
expect(Scheduler).toFlushExpired([
1286+
expect(Scheduler).toFlushUntilNextPaint([
12841287
'A',
12851288
// The promises for B and C have now been thrown twice
12861289
'Suspend! [B]',
@@ -1291,7 +1294,7 @@ describe('ReactSuspense', () => {
12911294
jest.advanceTimersByTime(1000);
12921295

12931296
expect(Scheduler).toHaveYielded(['Promise resolved [B]']);
1294-
expect(Scheduler).toFlushExpired([
1297+
expect(Scheduler).toFlushUntilNextPaint([
12951298
// Even though the promise for B was thrown twice, we should only
12961299
// re-render once.
12971300
'B',
@@ -1393,15 +1396,15 @@ describe('ReactSuspense', () => {
13931396
jest.advanceTimersByTime(1000);
13941397

13951398
expect(Scheduler).toHaveYielded(['Promise resolved [default]']);
1396-
expect(Scheduler).toFlushExpired(['default']);
1399+
expect(Scheduler).toFlushUntilNextPaint(['default']);
13971400
expect(root).toMatchRenderedOutput('default');
13981401

13991402
act(() => setValue('new value'));
14001403
expect(Scheduler).toHaveYielded(['Suspend! [new value]', 'Loading...']);
14011404
jest.advanceTimersByTime(1000);
14021405

14031406
expect(Scheduler).toHaveYielded(['Promise resolved [new value]']);
1404-
expect(Scheduler).toFlushExpired(['new value']);
1407+
expect(Scheduler).toFlushUntilNextPaint(['new value']);
14051408
expect(root).toMatchRenderedOutput('new value');
14061409
});
14071410

@@ -1450,15 +1453,15 @@ describe('ReactSuspense', () => {
14501453
jest.advanceTimersByTime(1000);
14511454

14521455
expect(Scheduler).toHaveYielded(['Promise resolved [default]']);
1453-
expect(Scheduler).toFlushExpired(['default']);
1456+
expect(Scheduler).toFlushUntilNextPaint(['default']);
14541457
expect(root).toMatchRenderedOutput('default');
14551458

14561459
act(() => setValue('new value'));
14571460
expect(Scheduler).toHaveYielded(['Suspend! [new value]', 'Loading...']);
14581461
jest.advanceTimersByTime(1000);
14591462

14601463
expect(Scheduler).toHaveYielded(['Promise resolved [new value]']);
1461-
expect(Scheduler).toFlushExpired(['new value']);
1464+
expect(Scheduler).toFlushUntilNextPaint(['new value']);
14621465
expect(root).toMatchRenderedOutput('new value');
14631466
});
14641467

@@ -1506,15 +1509,15 @@ describe('ReactSuspense', () => {
15061509
jest.advanceTimersByTime(1000);
15071510

15081511
expect(Scheduler).toHaveYielded(['Promise resolved [default]']);
1509-
expect(Scheduler).toFlushExpired(['default']);
1512+
expect(Scheduler).toFlushUntilNextPaint(['default']);
15101513
expect(root).toMatchRenderedOutput('default');
15111514

15121515
act(() => setValue('new value'));
15131516
expect(Scheduler).toHaveYielded(['Suspend! [new value]', 'Loading...']);
15141517
jest.advanceTimersByTime(1000);
15151518

15161519
expect(Scheduler).toHaveYielded(['Promise resolved [new value]']);
1517-
expect(Scheduler).toFlushExpired(['new value']);
1520+
expect(Scheduler).toFlushUntilNextPaint(['new value']);
15181521
expect(root).toMatchRenderedOutput('new value');
15191522
});
15201523

@@ -1558,15 +1561,15 @@ describe('ReactSuspense', () => {
15581561
jest.advanceTimersByTime(1000);
15591562

15601563
expect(Scheduler).toHaveYielded(['Promise resolved [default]']);
1561-
expect(Scheduler).toFlushExpired(['default']);
1564+
expect(Scheduler).toFlushUntilNextPaint(['default']);
15621565
expect(root).toMatchRenderedOutput('default');
15631566

15641567
act(() => setValue('new value'));
15651568
expect(Scheduler).toHaveYielded(['Suspend! [new value]', 'Loading...']);
15661569
jest.advanceTimersByTime(1000);
15671570

15681571
expect(Scheduler).toHaveYielded(['Promise resolved [new value]']);
1569-
expect(Scheduler).toFlushExpired(['new value']);
1572+
expect(Scheduler).toFlushUntilNextPaint(['new value']);
15701573
expect(root).toMatchRenderedOutput('new value');
15711574
});
15721575
});

packages/react/src/__tests__/ReactProfiler-test.internal.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4306,7 +4306,7 @@ describe('Profiler', () => {
43064306
await resourcePromise;
43074307

43084308
expect(Scheduler).toHaveYielded(['Promise resolved [loaded]']);
4309-
expect(Scheduler).toFlushExpired([
4309+
expect(Scheduler).toFlushUntilNextPaint([
43104310
'onPostCommit',
43114311
'AsyncText [loaded]',
43124312
]);
@@ -4370,7 +4370,7 @@ describe('Profiler', () => {
43704370
await resourcePromise;
43714371

43724372
expect(Scheduler).toHaveYielded(['Promise resolved [loaded]']);
4373-
expect(Scheduler).toFlushExpired(['onPostCommit', 'render']);
4373+
expect(Scheduler).toFlushUntilNextPaint(['onPostCommit', 'render']);
43744374

43754375
expect(onInteractionScheduledWorkCompleted).not.toHaveBeenCalled();
43764376

@@ -4575,7 +4575,7 @@ describe('Profiler', () => {
45754575
await originalPromise;
45764576

45774577
expect(Scheduler).toHaveYielded(['Promise resolved [loaded]']);
4578-
expect(Scheduler).toFlushExpired(['AsyncText [loaded]']);
4578+
expect(Scheduler).toFlushUntilNextPaint(['AsyncText [loaded]']);
45794579
expect(renderer.toJSON()).toEqual(['loaded', 'updated']);
45804580
expect(Scheduler).toFlushAndYield(['onPostCommit']);
45814581

packages/react/src/__tests__/ReactProfilerDevToolsIntegration-test.internal.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ describe('ReactProfiler DevTools integration', () => {
198198
root.update(<Text text="B" />);
199199

200200
// Update B should not instantly expire.
201-
expect(Scheduler).toFlushExpired([]);
201+
expect(Scheduler).toFlushAndYieldThrough([]);
202202

203203
expect(Scheduler).toFlushAndYield(['B']);
204204
expect(root).toMatchRenderedOutput('B');

packages/scheduler/src/__tests__/SchedulerMock-test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,14 +117,14 @@ describe('Scheduler', () => {
117117

118118
// Advance by just a bit more to expire the user blocking callbacks
119119
Scheduler.unstable_advanceTime(1);
120-
expect(Scheduler).toFlushExpired([
120+
expect(Scheduler).toFlushAndYieldThrough([
121121
'B (did timeout: true)',
122122
'C (did timeout: true)',
123123
]);
124124

125125
// Expire A
126126
Scheduler.unstable_advanceTime(4600);
127-
expect(Scheduler).toFlushExpired(['A (did timeout: true)']);
127+
expect(Scheduler).toFlushAndYieldThrough(['A (did timeout: true)']);
128128

129129
// Flush the rest without expiring
130130
expect(Scheduler).toFlushAndYield([

packages/scheduler/src/forks/SchedulerMock.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,7 @@ function cancelHostTimeout(): void {
414414

415415
function shouldYieldToHost(): boolean {
416416
if (
417+
(expectedNumberOfYields === 0 && yieldedValues === null) ||
417418
(expectedNumberOfYields !== -1 &&
418419
yieldedValues !== null &&
419420
yieldedValues.length >= expectedNumberOfYields) ||

0 commit comments

Comments
 (0)