@@ -15,64 +15,27 @@ afterEach(() => {
1515 setPerformanceMetricsEnabled ( false ) ;
1616} ) ;
1717
18- function getTestRendererMarks ( ) : PerformanceMark [ ] {
19- return performance
20- . getEntriesByType ( "mark" )
21- . filter ( ( m ) => true || m . name . startsWith ( "test-renderer/" ) ) as PerformanceMark [ ] ;
18+ function getPerfMarks ( ) : PerformanceMark [ ] {
19+ return performance . getEntriesByType ( "mark" ) as PerformanceMark [ ] ;
2220}
2321
24- function getTestRendererMeasures ( ) : PerformanceMeasure [ ] {
25- return performance
26- . getEntriesByType ( "measure" )
27- . filter ( ( m ) => true || m . name . startsWith ( "test-renderer/" ) ) as PerformanceMeasure [ ] ;
22+ function getPerfMeasures ( ) : PerformanceMeasure [ ] {
23+ return performance . getEntriesByType ( "measure" ) as PerformanceMeasure [ ] ;
2824}
2925
3026describe ( "performance metrics" , ( ) => {
3127 test ( "does not log marks when disabled" , async ( ) => {
3228 const root = createRoot ( ) ;
3329 await renderWithAct ( root , < div /> ) ;
34-
35- expect ( getTestRendererMarks ( ) ) . toMatchInlineSnapshot ( `
36- [
37- {
38- "detail": null,
39- "duration": 0,
40- "entryType": "mark",
41- "name": "ACT:start",
42- "startTime": 3922.953585,
43- },
44- {
45- "detail": null,
46- "duration": 0,
47- "entryType": "mark",
48- "name": "ACT:sync start",
49- "startTime": 3922.974903,
50- },
51- {
52- "detail": null,
53- "duration": 0,
54- "entryType": "mark",
55- "name": "ACT:sync end",
56- "startTime": 3923.014747,
57- },
58- {
59- "detail": null,
60- "duration": 0,
61- "entryType": "mark",
62- "name": "ACT:async end",
63- "startTime": 3923.41037,
64- },
65- ]
66- ` ) ;
67- expect ( getTestRendererMeasures ( ) ) . toMatchInlineSnapshot ( `[]` ) ;
30+ expect ( getPerfMeasures ( ) . filter ( ( m ) => m . name . startsWith ( "test-renderer/" ) ) ) . toEqual ( [ ] ) ;
6831 } ) ;
6932
7033 test ( "logs marks and measures for render" , async ( ) => {
7134 setPerformanceMetricsEnabled ( true ) ;
7235 const root = createRoot ( ) ;
7336 await renderWithAct ( root , < div > Hello!</ div > ) ;
7437
75- const marks = getTestRendererMarks ( ) ;
38+ const marks = getPerfMarks ( ) ;
7639 expect ( marks . some ( ( m ) => m . name === "test-renderer/createRoot:start" ) ) . toBe ( true ) ;
7740 expect ( marks . some ( ( m ) => m . name === "test-renderer/createRoot:end" ) ) . toBe ( true ) ;
7841 expect ( marks . some ( ( m ) => m . name === "test-renderer/render:start" ) ) . toBe ( true ) ;
@@ -81,47 +44,8 @@ describe("performance metrics", () => {
8144 expect ( marks . some ( ( m ) => m . name === "test-renderer/react/commit:end" ) ) . toBe ( true ) ;
8245 expect ( marks . some ( ( m ) => m . name === "test-renderer/reconciler/createInstance" ) ) . toBe ( true ) ;
8346 expect ( marks . some ( ( m ) => m . name === "test-renderer/reconciler/createTextInstance" ) ) . toBe ( true ) ;
84- expect ( marks . some ( ( m ) => m . name === "test-renderer/reconciler/prepareForCommit" ) ) . toBe ( true ) ;
85- expect ( marks . some ( ( m ) => m . name === "test-renderer/reconciler/resetAfterCommit" ) ) . toBe ( true ) ;
86-
87- expect ( formatPerfEntries ( marks ) ) . toMatchInlineSnapshot ( `
88- "0.00ms: test-renderer/createRoot:start
89- 0.07ms: test-renderer/createRoot:end
90- 0.33ms: ACT:start
91- 0.34ms: ACT:sync start
92- 0.34ms: test-renderer/render:start
93- 0.36ms: test-renderer/reconciler/resolveUpdatePriority (priority=32)
94- 0.44ms: test-renderer/reconciler/scheduleMicrotask (id=2)
95- 0.46ms: test-renderer/render:end
96- 0.48ms: ACT:sync end
97- 0.50ms: test-renderer/reconciler/scheduled microtask:start (id=2)
98- 0.52ms: test-renderer/reconciler/scheduled microtask:end (id=2)
99- 0.55ms: test-renderer/reconciler/getRootHostContext
100- 0.57ms: test-renderer/reconciler/getChildHostContext (type="div")
101- 0.59ms: test-renderer/reconciler/shouldSetTextContent (type="div")
102- 0.61ms: test-renderer/reconciler/createTextInstance (text="Hello!")
103- 0.63ms: test-renderer/reconciler/createInstance (type="div")
104- 0.64ms: test-renderer/reconciler/appendInitialChild (parentType="div", childType="text: \\"Hello!\\"")
105- 0.67ms: test-renderer/reconciler/finalizeInitialChildren (type="div")
106- 0.67ms: test-renderer/reconciler/maySuspendCommit (type="div")
107- 0.69ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=2)
108- 0.70ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=2)
109- 0.71ms: test-renderer/reconciler/prepareForCommit
110- 0.71ms: test-renderer/react/commit:start
111- 0.71ms: test-renderer/reconciler/clearContainer
112- 0.72ms: test-renderer/reconciler/appendChildToContainer (childType="div")
113- 0.73ms: test-renderer/react/commit:end
114- 0.74ms: test-renderer/reconciler/resetAfterCommit
115- 0.74ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=2)
116- 0.76ms: test-renderer/reconciler/scheduleMicrotask (id=3)
117- 0.76ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=0)
118- 0.78ms: test-renderer/reconciler/scheduled microtask:start (id=3)
119- 0.79ms: test-renderer/reconciler/scheduled microtask:end (id=3)
120- 0.85ms: ACT:async end
121- "
122- ` ) ;
12347
124- const measures = getTestRendererMeasures ( ) ;
48+ const measures = getPerfMeasures ( ) ;
12549 expect ( measures . some ( ( m ) => m . name === "test-renderer/createRoot" ) ) . toBe ( true ) ;
12650 expect ( measures . some ( ( m ) => m . name === "test-renderer/render" ) ) . toBe ( true ) ;
12751 expect ( measures . some ( ( m ) => m . name === "test-renderer/react/commit" ) ) . toBe ( true ) ;
@@ -130,38 +54,13 @@ describe("performance metrics", () => {
13054 performance . clearMeasures ( ) ;
13155
13256 await renderWithAct ( root , < div > Hello World!</ div > ) ;
133- const marks2 = getTestRendererMarks ( ) ;
134- expect ( formatPerfEntries ( marks2 ) ) . toMatchInlineSnapshot ( `
135- "0.00ms: ACT:start
136- 0.01ms: ACT:sync start
137- 0.02ms: test-renderer/render:start
138- 0.03ms: test-renderer/reconciler/resolveUpdatePriority (priority=32)
139- 0.05ms: test-renderer/reconciler/scheduleMicrotask (id=4)
140- 0.06ms: test-renderer/render:end
141- 0.08ms: ACT:sync end
142- 0.09ms: test-renderer/reconciler/scheduled microtask:start (id=4)
143- 0.10ms: test-renderer/reconciler/scheduled microtask:end (id=4)
144- 0.13ms: test-renderer/reconciler/getRootHostContext
145- 0.17ms: test-renderer/reconciler/getChildHostContext (type="div")
146- 0.19ms: test-renderer/reconciler/shouldSetTextContent (type="div")
147- 0.19ms: test-renderer/reconciler/shouldSetTextContent (type="div")
148- 0.27ms: test-renderer/reconciler/maySuspendCommit (type="div")
149- 0.28ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=2)
150- 0.29ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=2)
151- 0.30ms: test-renderer/reconciler/prepareForCommit
152- 0.30ms: test-renderer/react/commit:start
153- 0.34ms: test-renderer/reconciler/commitTextUpdate (oldText="Hello!", newText="Hello World!")
154- 0.40ms: test-renderer/reconciler/commitUpdate (type="div")
155- 0.41ms: test-renderer/react/commit:end
156- 0.43ms: test-renderer/reconciler/resetAfterCommit
157- 0.43ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=2)
158- 0.44ms: test-renderer/reconciler/scheduleMicrotask (id=5)
159- 0.45ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=0)
160- 0.47ms: test-renderer/reconciler/scheduled microtask:start (id=5)
161- 0.47ms: test-renderer/reconciler/scheduled microtask:end (id=5)
162- 0.58ms: ACT:async end
163- "
164- ` ) ;
57+ const marks2 = getPerfMarks ( ) ;
58+ expect ( marks2 . some ( ( m ) => m . name === "test-renderer/render:start" ) ) . toBe ( true ) ;
59+ expect ( marks2 . some ( ( m ) => m . name === "test-renderer/render:end" ) ) . toBe ( true ) ;
60+ expect ( marks2 . some ( ( m ) => m . name === "test-renderer/react/commit:start" ) ) . toBe ( true ) ;
61+ expect ( marks2 . some ( ( m ) => m . name === "test-renderer/react/commit:end" ) ) . toBe ( true ) ;
62+ expect ( marks2 . some ( ( m ) => m . name === "test-renderer/reconciler/commitTextUpdate" ) ) . toBe ( true ) ;
63+ expect ( marks2 . some ( ( m ) => m . name === "test-renderer/reconciler/commitUpdate" ) ) . toBe ( true ) ;
16564 } ) ;
16665
16766 function TestComponent ( ) {
@@ -184,57 +83,67 @@ describe("performance metrics", () => {
18483 setPerformanceMetricsEnabled ( true ) ;
18584
18685 await act ( ( ) => {
187- // @ts -expect-error - Unsafe call of a(n) `error` type typed value.
188- // @eslint -disable-next-line @typescript-eslint/no-unsafe-call
189- root . container . children [ 0 ] ?. props . onClick ( ) ;
86+ const child = root . container . children [ 0 ] ;
87+ if ( typeof child !== "string" ) {
88+ const onClick = child . props . onClick as ( ) => void ;
89+ onClick ( ) ;
90+ }
19091 } ) ;
19192
192- const marks = getTestRendererMarks ( ) ;
193- expect ( formatPerfEntries ( marks ) ) . toMatchInlineSnapshot ( `
194- "0.00ms: ACT:start
195- 0.01ms: ACT:sync start
196- 0.03ms: ACT:sync end
197- 0.39ms: ACT:async end
198- 0.53ms: test-renderer/reconciler/resolveUpdatePriority (priority=32)
199- 0.65ms: test-renderer/reconciler/scheduleMicrotask (id=8)
200- 0.71ms: test-renderer/reconciler/scheduled microtask:start (id=8)
201- 0.72ms: test-renderer/reconciler/scheduled microtask:end (id=8)
202- 0.85ms: test-renderer/reconciler/getRootHostContext
203- 1.10ms: test-renderer/reconciler/getChildHostContext (type="div")
204- 1.12ms: test-renderer/reconciler/shouldSetTextContent (type="div")
205- 1.12ms: test-renderer/reconciler/shouldSetTextContent (type="div")
206- 1.30ms: test-renderer/reconciler/maySuspendCommit (type="div")
207- 1.32ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=2)
208- 1.33ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=2)
209- 1.34ms: test-renderer/reconciler/prepareForCommit
210- 1.34ms: test-renderer/react/commit:start
211- 1.35ms: test-renderer/reconciler/commitTextUpdate (oldText="0", newText="1")
212- 1.36ms: test-renderer/reconciler/commitUpdate (type="div")
213- 1.37ms: test-renderer/react/commit:end
214- 1.38ms: test-renderer/reconciler/resetAfterCommit
215- 1.40ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=2)
216- 1.41ms: test-renderer/reconciler/scheduleMicrotask (id=9)
217- 1.42ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=0)
218- 1.44ms: test-renderer/reconciler/scheduled microtask:start (id=9)
219- 1.45ms: test-renderer/reconciler/scheduled microtask:end (id=9)
220- "
221- ` ) ;
93+ const marks = getPerfMarks ( ) ;
94+ expect ( marks . some ( ( m ) => m . name === "test-renderer/render:start" ) ) . toBe ( false ) ;
95+ expect ( marks . some ( ( m ) => m . name === "test-renderer/render:end" ) ) . toBe ( false ) ;
96+ expect ( marks . some ( ( m ) => m . name === "test-renderer/react/commit:start" ) ) . toBe ( true ) ;
97+ expect ( marks . some ( ( m ) => m . name === "test-renderer/react/commit:end" ) ) . toBe ( true ) ;
98+ expect ( marks . some ( ( m ) => m . name === "test-renderer/reconciler/commitTextUpdate" ) ) . toBe ( true ) ;
99+ expect ( marks . some ( ( m ) => m . name === "test-renderer/reconciler/commitUpdate" ) ) . toBe ( true ) ;
222100 } ) ;
223101
224102 test ( "logs marks and measures for unmount" , async ( ) => {
225103 const root = createRoot ( ) ;
226104 await renderWithAct ( root , < div /> ) ;
227105
228106 setPerformanceMetricsEnabled ( true ) ;
107+ performance . clearMarks ( ) ;
108+ performance . clearMeasures ( ) ;
229109 await unmountWithAct ( root ) ;
230110
231- const marks = getTestRendererMarks ( ) ;
111+ const marks = getPerfMarks ( ) ;
232112 expect ( marks . some ( ( m ) => m . name === "test-renderer/unmount:start" ) ) . toBe ( true ) ;
233113 expect ( marks . some ( ( m ) => m . name === "test-renderer/unmount:end" ) ) . toBe ( true ) ;
234114 expect ( marks . some ( ( m ) => m . name === "test-renderer/react/commit:start" ) ) . toBe ( true ) ;
235115 expect ( marks . some ( ( m ) => m . name === "test-renderer/react/commit:end" ) ) . toBe ( true ) ;
116+ expect ( formatPerfEntries ( marks ) ) . toMatchInlineSnapshot ( `
117+ "0.00ms: ACT:start
118+ 0.01ms: ACT:sync start
119+ 0.06ms: test-renderer/unmount:start
120+ 0.08ms: test-renderer/reconciler/resolveUpdatePriority (priority=32)
121+ 0.11ms: test-renderer/reconciler/scheduleMicrotask (id=12)
122+ 0.12ms: test-renderer/unmount:end
123+ 0.15ms: test-renderer/reconciler/scheduled microtask:start (id=12)
124+ 0.16ms: test-renderer/reconciler/scheduled microtask:end (id=12)
125+ 0.17ms: ACT:sync end
126+ 0.19ms: test-renderer/reconciler/getRootHostContext
127+ 0.24ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=2)
128+ 0.29ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=2)
129+ 0.30ms: test-renderer/reconciler/prepareForCommit
130+ 0.30ms: test-renderer/react/commit:start
131+ 0.51ms: test-renderer/reconciler/removeChildFromContainer (childType="div")
132+ 0.54ms: test-renderer/react/commit:end
133+ 0.56ms: test-renderer/reconciler/resetAfterCommit
134+ 0.56ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=2)
135+ 0.57ms: test-renderer/reconciler/scheduleMicrotask (id=13)
136+ 0.58ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=0)
137+ 0.60ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=32)
138+ 0.76ms: test-renderer/reconciler/detachDeletedInstance
139+ 0.88ms: test-renderer/reconciler/setCurrentUpdatePriority (priority=0)
140+ 0.91ms: test-renderer/reconciler/scheduled microtask:start (id=13)
141+ 0.91ms: test-renderer/reconciler/scheduled microtask:end (id=13)
142+ 0.95ms: ACT:async end
143+ "
144+ ` ) ;
236145
237- const measures = getTestRendererMeasures ( ) ;
146+ const measures = getPerfMeasures ( ) ;
238147 expect ( measures . some ( ( m ) => m . name === "test-renderer/unmount" ) ) . toBe ( true ) ;
239148 expect ( measures . some ( ( m ) => m . name === "test-renderer/react/commit" ) ) . toBe ( true ) ;
240149 } ) ;
0 commit comments