@samitouri / QOS-React / commits / e684ca66ab

refactor[react-devtools/tests]: use registered marks instead of cleared in tests (#29929)

## Summary This is the pre-requisite for https://github.com/facebook/react/pull/29231. Current implementation of profiling hooks is only using `performance.mark` and then makes `performance.clearMarks` call right after it to free the memory. We've been relying on this assumption in the tests that every mark is cleared by the time we check something. https://github.com/facebook/react/pull/29231 adds `performance.measure` calls and the `start` mark is not cleared until the corresponding `stop` one is registered, and then they are cleared together. ## How did you test this change? To test against React from source: ``` yarn test --build --project=devtools -r=experimental --ci ``` To test against React 18: ``` ./scripts/circleci/download_devtools_regression_build.js 18.0 --replaceBuild node ./scripts/jest/jest-cli.js --build --project devtools --release-channel=experimental --reactVersion 18.0 --ci ```

Ruslan Lesiutin committed Jun 19, 2024 at 15:45 UTC e684ca66abf785548b05f2185579cd12b50b2910
2 files changed +101 -99
packages/react-devtools-shared/src/__tests__/TimelineProfiler-test.js
+65 -63
@@ -36,16 +36,16 @@ describe('Timeline profiler', () => {
36 });
37
38 describe('User Timing API', () => {
39 - let clearedMarks;
39 + let currentlyNotClearedMarks;
40 + let registeredMarks;
41 let featureDetectionMarkName = null;
41 - let marks;
42 let setPerformanceMock;
43
44 function createUserTimingPolyfill() {
45 featureDetectionMarkName = null;
46
47 - clearedMarks = [];
48 - marks = [];
47 + currentlyNotClearedMarks = [];
48 + registeredMarks = [];
49
50 // Remove file-system specific bits or version-specific bits of information from the module range marks.
51 function filterMarkData(markName) {
@@ -66,8 +66,9 @@ describe('Timeline profiler', () => {
66 clearMarks(markName) {
67 markName = filterMarkData(markName);
68
69 - clearedMarks.push(markName);
70 - marks = marks.filter(mark => mark !== markName);
69 + currentlyNotClearedMarks = currentlyNotClearedMarks.filter(
70 + mark => mark !== markName,
71 + );
72 },
73 mark(markName, markOptions) {
74 markName = filterMarkData(markName);
@@ -76,7 +77,8 @@ describe('Timeline profiler', () => {
77 featureDetectionMarkName = markName;
78 }
79
79 - marks.push(markName);
80 + registeredMarks.push(markName);
81 + currentlyNotClearedMarks.push(markName);
82
83 if (markOptions != null) {
84 // This is triggers the feature detection.
@@ -86,8 +88,8 @@ describe('Timeline profiler', () => {
88 };
89 }
90
89 - function clearPendingMarks() {
90 - clearedMarks.splice(0);
91 + function eraseRegisteredMarks() {
92 + registeredMarks.splice(0);
93 }
94
95 function dispatchAndSetCurrentEvent(element, event) {
@@ -107,7 +109,7 @@ describe('Timeline profiler', () => {
109
110 afterEach(() => {
111 // Verify all logged marks also get cleared.
110 - expect(marks).toHaveLength(0);
112 + expect(currentlyNotClearedMarks).toHaveLength(0);
113
114 setPerformanceMock(null);
115 });
@@ -120,7 +122,7 @@ describe('Timeline profiler', () => {
122 it('should mark sync render without suspends or state updates', () => {
123 legacyRender(<div />);
124
123 - expect(clearedMarks).toMatchInlineSnapshot(`
125 + expect(registeredMarks).toMatchInlineSnapshot(`
126 [
127 "--schedule-render-1",
128 "--render-start-1",
@@ -154,7 +156,7 @@ describe('Timeline profiler', () => {
156 </React.Suspense>,
157 );
158
157 - expect(clearedMarks).toMatchInlineSnapshot(`
159 + expect(registeredMarks).toMatchInlineSnapshot(`
160 [
161 "--schedule-render-2",
162 "--render-start-2",
@@ -174,10 +176,10 @@ describe('Timeline profiler', () => {
176 ]
177 `);
178
177 - clearPendingMarks();
179 + eraseRegisteredMarks();
180
181 await fakeSuspensePromise;
180 - expect(clearedMarks).toMatchInlineSnapshot(`
182 + expect(registeredMarks).toMatchInlineSnapshot(`
183 [
184 "--suspense-resolved-0-Example",
185 ]
@@ -200,7 +202,7 @@ describe('Timeline profiler', () => {
202 </React.Suspense>,
203 );
204
203 - expect(clearedMarks).toMatchInlineSnapshot(`
205 + expect(registeredMarks).toMatchInlineSnapshot(`
206 [
207 "--schedule-render-2",
208 "--render-start-2",
@@ -220,10 +222,10 @@ describe('Timeline profiler', () => {
222 ]
223 `);
224
223 - clearPendingMarks();
225 + eraseRegisteredMarks();
226
227 await expect(fakeSuspensePromise).rejects.toThrow();
226 - expect(clearedMarks).toContain(`--suspense-rejected-0-Example`);
228 + expect(registeredMarks).toContain(`--suspense-rejected-0-Example`);
229 });
230
231 // @reactVersion <= 18.2
@@ -254,7 +256,7 @@ describe('Timeline profiler', () => {
256 </ErrorBoundary>,
257 );
258
257 - expect(clearedMarks).toMatchInlineSnapshot(`
259 + expect(registeredMarks).toMatchInlineSnapshot(`
260 [
261 "--schedule-render-1",
262 "--render-start-1",
@@ -310,17 +312,17 @@ describe('Timeline profiler', () => {
312 it('should mark concurrent render without suspends or state updates', async () => {
313 modernRender(<div />);
314
313 - expect(clearedMarks).toMatchInlineSnapshot(`
315 + expect(registeredMarks).toMatchInlineSnapshot(`
316 [
317 "--schedule-render-32",
318 ]
319 `);
320
319 - clearPendingMarks();
321 + eraseRegisteredMarks();
322
323 await waitForPaint([]);
324
323 - expect(clearedMarks).toMatchInlineSnapshot(`
325 + expect(registeredMarks).toMatchInlineSnapshot(`
326 [
327 "--render-start-32",
328 "--render-stop",
@@ -356,7 +358,7 @@ describe('Timeline profiler', () => {
358
359 await waitFor(['Foo']);
360
359 - expect(clearedMarks).toMatchInlineSnapshot(`
361 + expect(registeredMarks).toMatchInlineSnapshot(`
362 [
363 "--schedule-render-128",
364 "--render-start-128",
@@ -383,17 +385,17 @@ describe('Timeline profiler', () => {
385 </React.Suspense>,
386 );
387
386 - expect(clearedMarks).toMatchInlineSnapshot(`
388 + expect(registeredMarks).toMatchInlineSnapshot(`
389 [
390 "--schedule-render-32",
391 ]
392 `);
393
392 - clearPendingMarks();
394 + eraseRegisteredMarks();
395
396 await waitForPaint([]);
397
396 - expect(clearedMarks).toMatchInlineSnapshot(`
398 + expect(registeredMarks).toMatchInlineSnapshot(`
399 [
400 "--render-start-32",
401 "--component-render-start-Example",
@@ -414,10 +416,10 @@ describe('Timeline profiler', () => {
416 ]
417 `);
418
417 - clearPendingMarks();
419 + eraseRegisteredMarks();
420
421 await resolveFakePromise();
420 - expect(clearedMarks).toMatchInlineSnapshot(`
422 + expect(registeredMarks).toMatchInlineSnapshot(`
423 [
424 "--suspense-resolved-0-Example",
425 ]
@@ -440,17 +442,17 @@ describe('Timeline profiler', () => {
442 </React.Suspense>,
443 );
444
443 - expect(clearedMarks).toMatchInlineSnapshot(`
445 + expect(registeredMarks).toMatchInlineSnapshot(`
446 [
447 "--schedule-render-32",
448 ]
449 `);
450
449 - clearPendingMarks();
451 + eraseRegisteredMarks();
452
453 await waitForPaint([]);
454
453 - expect(clearedMarks).toMatchInlineSnapshot(`
455 + expect(registeredMarks).toMatchInlineSnapshot(`
456 [
457 "--render-start-32",
458 "--component-render-start-Example",
@@ -471,13 +473,13 @@ describe('Timeline profiler', () => {
473 ]
474 `);
475
474 - clearPendingMarks();
476 + eraseRegisteredMarks();
477
478 await expect(() => {
479 rejectFakePromise(new Error('error'));
480 return fakeSuspensePromise;
481 }).rejects.toThrow();
480 - expect(clearedMarks).toMatchInlineSnapshot(`
482 + expect(registeredMarks).toMatchInlineSnapshot(`
483 [
484 "--suspense-rejected-0-Example",
485 ]
@@ -497,17 +499,17 @@ describe('Timeline profiler', () => {
499
500 modernRender(<Example />);
501
500 - expect(clearedMarks).toMatchInlineSnapshot(`
502 + expect(registeredMarks).toMatchInlineSnapshot(`
503 [
504 "--schedule-render-32",
505 ]
506 `);
507
506 - clearPendingMarks();
508 + eraseRegisteredMarks();
509
510 await waitForPaint([]);
511
510 - expect(clearedMarks).toMatchInlineSnapshot(`
512 + expect(registeredMarks).toMatchInlineSnapshot(`
513 [
514 "--render-start-32",
515 "--component-render-start-Example",
@@ -554,17 +556,17 @@ describe('Timeline profiler', () => {
556
557 modernRender(<Example />);
558
557 - expect(clearedMarks).toMatchInlineSnapshot(`
559 + expect(registeredMarks).toMatchInlineSnapshot(`
560 [
561 "--schedule-render-32",
562 ]
563 `);
564
563 - clearPendingMarks();
565 + eraseRegisteredMarks();
566
567 await waitForPaint([]);
568
567 - expect(clearedMarks).toMatchInlineSnapshot(`
569 + expect(registeredMarks).toMatchInlineSnapshot(`
570 [
571 "--render-start-32",
572 "--component-render-start-Example",
@@ -612,13 +614,13 @@ describe('Timeline profiler', () => {
614
615 modernRender(<Example />);
616
615 - expect(clearedMarks).toMatchInlineSnapshot(`
617 + expect(registeredMarks).toMatchInlineSnapshot(`
618 [
619 "--schedule-render-32",
620 ]
621 `);
622
621 - clearPendingMarks();
623 + eraseRegisteredMarks();
624
625 let errorMessage;
626 jest.spyOn(console, 'error').mockImplementation(message => {
@@ -632,7 +634,7 @@ describe('Timeline profiler', () => {
634 'Cannot update during an existing state transition',
635 );
636
635 - expect(clearedMarks).toMatchInlineSnapshot(`
637 + expect(registeredMarks).toMatchInlineSnapshot(`
638 [
639 "--render-start-32",
640 "--component-render-start-Example",
@@ -668,13 +670,13 @@ describe('Timeline profiler', () => {
670
671 modernRender(<Example />);
672
671 - expect(clearedMarks).toMatchInlineSnapshot(`
673 + expect(registeredMarks).toMatchInlineSnapshot(`
674 [
675 "--schedule-render-32",
676 ]
677 `);
678
677 - clearPendingMarks();
679 + eraseRegisteredMarks();
680
681 let errorMessage;
682 jest.spyOn(console, 'error').mockImplementation(message => {
@@ -688,7 +690,7 @@ describe('Timeline profiler', () => {
690 'Cannot update during an existing state transition',
691 );
692
691 - expect(clearedMarks).toMatchInlineSnapshot(`
693 + expect(registeredMarks).toMatchInlineSnapshot(`
694 [
695 "--render-start-32",
696 "--component-render-start-Example",
@@ -721,17 +723,17 @@ describe('Timeline profiler', () => {
723
724 modernRender(<Example />);
725
724 - expect(clearedMarks).toMatchInlineSnapshot(`
726 + expect(registeredMarks).toMatchInlineSnapshot(`
727 [
728 "--schedule-render-32",
729 ]
730 `);
731
730 - clearPendingMarks();
732 + eraseRegisteredMarks();
733
734 await waitForPaint([]);
735
734 - expect(clearedMarks).toMatchInlineSnapshot(`
736 + expect(registeredMarks).toMatchInlineSnapshot(`
737 [
738 "--render-start-32",
739 "--component-render-start-Example",
@@ -781,7 +783,7 @@ describe('Timeline profiler', () => {
783
784 await waitForAll([]);
785
784 - expect(clearedMarks).toMatchInlineSnapshot(`
786 + expect(registeredMarks).toMatchInlineSnapshot(`
787 [
788 "--schedule-render-32",
789 "--render-start-32",
@@ -834,7 +836,7 @@ describe('Timeline profiler', () => {
836
837 await waitForAll([]);
838
837 - expect(clearedMarks).toMatchInlineSnapshot(`
839 + expect(registeredMarks).toMatchInlineSnapshot(`
840 [
841 "--schedule-render-32",
842 "--render-start-32",
@@ -884,17 +886,17 @@ describe('Timeline profiler', () => {
886 </ErrorBoundary>,
887 );
888
887 - expect(clearedMarks).toMatchInlineSnapshot(`
889 + expect(registeredMarks).toMatchInlineSnapshot(`
890 [
891 "--schedule-render-32",
892 ]
893 `);
894
893 - clearPendingMarks();
895 + eraseRegisteredMarks();
896
897 await waitForPaint([]);
898
897 - expect(clearedMarks).toMatchInlineSnapshot(`
899 + expect(registeredMarks).toMatchInlineSnapshot(`
900 [
901 "--render-start-32",
902 "--component-render-start-ErrorBoundary",
@@ -983,7 +985,7 @@ describe('Timeline profiler', () => {
985
986 await waitForPaint(['layout 1 mount', 'layout 2 mount']);
987
986 - expect(clearedMarks).toMatchInlineSnapshot(`
988 + expect(registeredMarks).toMatchInlineSnapshot(`
989 [
990 "--schedule-render-32",
991 "--render-start-32",
@@ -1008,7 +1010,7 @@ describe('Timeline profiler', () => {
1010 ]
1011 `);
1012
1011 - clearPendingMarks();
1013 + eraseRegisteredMarks();
1014
1015 await waitForAll([
1016 'passive 1 mount',
@@ -1016,7 +1018,7 @@ describe('Timeline profiler', () => {
1018 'passive 3 mount',
1019 ]);
1020
1019 - expect(clearedMarks).toMatchInlineSnapshot(`
1021 + expect(registeredMarks).toMatchInlineSnapshot(`
1022 [
1023 "--passive-effects-start-32",
1024 "--component-passive-effect-mount-start-ComponentWithEffects",
@@ -1029,7 +1031,7 @@ describe('Timeline profiler', () => {
1031 ]
1032 `);
1033
1032 - clearPendingMarks();
1034 + eraseRegisteredMarks();
1035
1036 await waitForAll([]);
1037
@@ -1043,7 +1045,7 @@ describe('Timeline profiler', () => {
1045 'passive 3 unmount',
1046 ]);
1047
1046 - expect(clearedMarks).toMatchInlineSnapshot(`
1048 + expect(registeredMarks).toMatchInlineSnapshot(`
1049 [
1050 "--schedule-render-2",
1051 "--render-start-2",
@@ -1085,7 +1087,7 @@ describe('Timeline profiler', () => {
1087 it('regression test SyncLane', () => {
1088 legacyRender(<div />);
1089
1088 - expect(clearedMarks).toMatchInlineSnapshot(`
1090 + expect(registeredMarks).toMatchInlineSnapshot(`
1091 [
1092 "--schedule-render-1",
1093 "--render-start-1",
@@ -1116,7 +1118,7 @@ describe('Timeline profiler', () => {
1118
1119 it('regression test DefaultLane', () => {
1120 modernRender(<div />);
1119 - expect(clearedMarks).toMatchInlineSnapshot(`
1121 + expect(registeredMarks).toMatchInlineSnapshot(`
1122 [
1123 "--schedule-render-32",
1124 ]
@@ -1137,14 +1139,14 @@ describe('Timeline profiler', () => {
1139 modernRender(<App />);
1140 await waitForAll([]);
1141
1140 - clearedMarks.splice(0);
1142 + eraseRegisteredMarks();
1143
1144 targetRef.current.click();
1145
1146 // Wait a frame, for React to process the "click" update.
1147 await Promise.resolve();
1148
1147 - expect(clearedMarks).toMatchInlineSnapshot(`
1149 + expect(registeredMarks).toMatchInlineSnapshot(`
1150 [
1151 "--schedule-state-update-2-App",
1152 "--render-start-2",
@@ -1178,7 +1180,7 @@ describe('Timeline profiler', () => {
1180 modernRender(<App />);
1181 await waitForAll([]);
1182
1181 - clearedMarks.splice(0);
1183 + eraseRegisteredMarks();
1184
1185 const event = document.createEvent('MouseEvents');
1186 event.initEvent('mouseover', true, true);
@@ -1186,7 +1188,7 @@ describe('Timeline profiler', () => {
1188
1189 await waitForAll([]);
1190
1189 - expect(clearedMarks).toMatchInlineSnapshot(`
1191 + expect(registeredMarks).toMatchInlineSnapshot(`
1192 [
1193 "--schedule-state-update-8-App",
1194 "--render-start-8",
packages/react-devtools-shared/src/__tests__/preprocessData-test.js
+36 -36
@@ -26,16 +26,16 @@ describe('Timeline profiler', () => {
26 let waitFor;
27
28 describe('User Timing API', () => {
29 - let clearedMarks;
29 + let currentlyNotClearedMarks;
30 + let registeredMarks;
31 let featureDetectionMarkName = null;
31 - let marks;
32 let setPerformanceMock;
33
34 function createUserTimingPolyfill() {
35 featureDetectionMarkName = null;
36
37 - clearedMarks = [];
38 - marks = [];
37 + currentlyNotClearedMarks = [];
38 + registeredMarks = [];
39
40 // Remove file-system specific bits or version-specific bits of information from the module range marks.
41 function filterMarkData(markName) {
@@ -56,8 +56,9 @@ describe('Timeline profiler', () => {
56 clearMarks(markName) {
57 markName = filterMarkData(markName);
58
59 - clearedMarks.push(markName);
60 - marks = marks.filter(mark => mark !== markName);
59 + currentlyNotClearedMarks = currentlyNotClearedMarks.filter(
60 + mark => mark !== markName,
61 + );
62 },
63 mark(markName, markOptions) {
64 markName = filterMarkData(markName);
@@ -66,7 +67,8 @@ describe('Timeline profiler', () => {
67 featureDetectionMarkName = markName;
68 }
69
69 - marks.push(markName);
70 + registeredMarks.push(markName);
71 + currentlyNotClearedMarks.push(markName);
72
73 if (markOptions != null) {
74 // This is triggers the feature detection.
@@ -76,8 +78,8 @@ describe('Timeline profiler', () => {
78 };
79 }
80
79 - function clearPendingMarks() {
80 - clearedMarks.splice(0);
81 + function eraseRegisteredMarks() {
82 + registeredMarks.splice(0);
83 }
84
85 beforeEach(() => {
@@ -114,8 +116,9 @@ describe('Timeline profiler', () => {
116
117 afterEach(() => {
118 // Verify all logged marks also get cleared.
117 - expect(marks).toHaveLength(0);
119 + expect(currentlyNotClearedMarks).toHaveLength(0);
120
121 + eraseRegisteredMarks();
122 setPerformanceMock(null);
123 });
124
@@ -635,7 +638,7 @@ describe('Timeline profiler', () => {
638
639 const data = await preprocessData([
640 ...createBoilerplateEntries(),
638 - ...createUserTimingData(clearedMarks),
641 + ...createUserTimingData(registeredMarks),
642 ]);
643 expect(data).toMatchInlineSnapshot(`
644 {
@@ -832,7 +835,7 @@ describe('Timeline profiler', () => {
835
836 const data = await preprocessData([
837 ...createBoilerplateEntries(),
835 - ...createUserTimingData(clearedMarks),
838 + ...createUserTimingData(registeredMarks),
839 ]);
840 expect(data).toMatchInlineSnapshot(`
841 {
@@ -1152,7 +1155,7 @@ describe('Timeline profiler', () => {
1155 it('should error if events and measures are incomplete', async () => {
1156 legacyRender(<div />);
1157
1155 - const invalidMarks = clearedMarks.filter(
1158 + const invalidMarks = registeredMarks.filter(
1159 mark => !mark.includes('render-stop'),
1160 );
1161 const invalidUserTimingData = createUserTimingData(invalidMarks);
@@ -1170,7 +1173,7 @@ describe('Timeline profiler', () => {
1173 it('should error if work is completed without being started', async () => {
1174 legacyRender(<div />);
1175
1173 - const invalidMarks = clearedMarks.filter(
1176 + const invalidMarks = registeredMarks.filter(
1177 mark => !mark.includes('render-start'),
1178 );
1179 const invalidUserTimingData = createUserTimingData(invalidMarks);
@@ -1265,7 +1268,7 @@ describe('Timeline profiler', () => {
1268 ),
1269 );
1270
1268 - testMarks.push(...createUserTimingData(clearedMarks));
1271 + testMarks.push(...createUserTimingData(registeredMarks));
1272
1273 let data;
1274 await utils.actAsync(async () => {
@@ -1290,11 +1293,10 @@ describe('Timeline profiler', () => {
1293 createNativeEventEntry('click', 5),
1294 ];
1295
1293 - clearPendingMarks();
1294 -
1296 + eraseRegisteredMarks();
1297 legacyRender(<App />);
1298
1297 - testMarks.push(...createUserTimingData(clearedMarks));
1299 + testMarks.push(...createUserTimingData(registeredMarks));
1300
1301 const data = await preprocessData(testMarks);
1302 const event = data.nativeEvents.find(({type}) => type === 'click');
@@ -1316,11 +1318,10 @@ describe('Timeline profiler', () => {
1318
1319 startTime += 2000;
1320
1319 - clearPendingMarks();
1320 -
1321 + eraseRegisteredMarks();
1322 legacyRender(<App />);
1323
1323 - testMarks.push(...createUserTimingData(clearedMarks));
1324 + testMarks.push(...createUserTimingData(registeredMarks));
1325
1326 const data = await preprocessData(testMarks);
1327 const event = data.nativeEvents.find(({type}) => type === 'click');
@@ -1340,11 +1341,10 @@ describe('Timeline profiler', () => {
1341 createNativeEventEntry('click', 25000),
1342 ];
1343
1343 - clearPendingMarks();
1344 -
1344 + eraseRegisteredMarks();
1345 legacyRender(<App />);
1346
1347 - clearedMarks.forEach(markName => {
1347 + registeredMarks.forEach(markName => {
1348 if (markName === '--render-stop') {
1349 // Fake a long running render
1350 startTime += 20000;
@@ -1401,8 +1401,8 @@ describe('Timeline profiler', () => {
1401
1402 await waitFor(['A:1']);
1403
1404 - testMarks.push(...createUserTimingData(clearedMarks));
1405 - clearPendingMarks();
1404 + testMarks.push(...createUserTimingData(registeredMarks));
1405 + eraseRegisteredMarks();
1406
1407 // Advance the clock some more to make the pending React update seem long.
1408 startTime += 20000;
@@ -1421,7 +1421,7 @@ describe('Timeline profiler', () => {
1421
1422 assertLog(['A:2', 'B:2']);
1423
1424 - testMarks.push(...createUserTimingData(clearedMarks));
1424 + testMarks.push(...createUserTimingData(registeredMarks));
1425
1426 const data = await preprocessData(testMarks);
1427 const event = data.nativeEvents.find(({type}) => type === 'click');
@@ -1452,7 +1452,7 @@ describe('Timeline profiler', () => {
1452
1453 const data = await preprocessData([
1454 ...createBoilerplateEntries(),
1455 - ...createUserTimingData(clearedMarks),
1455 + ...createUserTimingData(registeredMarks),
1456 ]);
1457
1458 const event = data.schedulingEvents.find(
@@ -1488,7 +1488,7 @@ describe('Timeline profiler', () => {
1488
1489 const data = await preprocessData([
1490 ...createBoilerplateEntries(),
1491 - ...createUserTimingData(clearedMarks),
1491 + ...createUserTimingData(registeredMarks),
1492 ]);
1493
1494 const event = data.schedulingEvents.find(
@@ -1524,7 +1524,7 @@ describe('Timeline profiler', () => {
1524 assertLog(['Component mount', 'Component update']);
1525
1526 const testMarks = [];
1527 - clearedMarks.forEach(markName => {
1527 + registeredMarks.forEach(markName => {
1528 if (markName === '--component-render-start-Component') {
1529 // Fake a long running render
1530 startTime += 20000;
@@ -1585,7 +1585,7 @@ describe('Timeline profiler', () => {
1585 assertLog(['Component mount', 'Component update']);
1586
1587 const testMarks = [];
1588 - clearedMarks.forEach(markName => {
1588 + registeredMarks.forEach(markName => {
1589 if (markName === '--component-render-start-Component') {
1590 // Fake a long running render
1591 startTime += 20000;
@@ -1657,7 +1657,7 @@ describe('Timeline profiler', () => {
1657 ]);
1658
1659 const testMarks = [];
1660 - clearedMarks.forEach(markName => {
1660 + registeredMarks.forEach(markName => {
1661 if (markName === '--component-render-start-Component') {
1662 // Fake a long running render
1663 startTime += 20000;
@@ -1727,7 +1727,7 @@ describe('Timeline profiler', () => {
1727 ]);
1728
1729 const testMarks = [];
1730 - clearedMarks.forEach(markName => {
1730 + registeredMarks.forEach(markName => {
1731 if (markName === '--component-render-start-Component') {
1732 // Fake a long running render
1733 startTime += 20000;
@@ -1792,7 +1792,7 @@ describe('Timeline profiler', () => {
1792 ),
1793 );
1794
1795 - testMarks.push(...createUserTimingData(clearedMarks));
1795 + testMarks.push(...createUserTimingData(registeredMarks));
1796
1797 const data = await preprocessData(testMarks);
1798 expect(data.thrownErrors).toHaveLength(2);
@@ -1851,7 +1851,7 @@ describe('Timeline profiler', () => {
1851 ),
1852 );
1853
1854 - testMarks.push(...createUserTimingData(clearedMarks));
1854 + testMarks.push(...createUserTimingData(registeredMarks));
1855
1856 let data;
1857 await utils.actAsync(async () => {
@@ -1911,7 +1911,7 @@ describe('Timeline profiler', () => {
1911 ),
1912 );
1913
1914 - testMarks.push(...createUserTimingData(clearedMarks));
1914 + testMarks.push(...createUserTimingData(registeredMarks));
1915
1916 let data;
1917 await utils.actAsync(async () => {