@@ -96,6 +96,45 @@ describe('DebugTracing', () => {
9696 expect ( logs ) . toEqual ( [ 'log: ⚛️ Example resolved' ] ) ;
9797 } ) ;
9898
99+ // @gate experimental && build === 'development' && enableDebugTracing
100+ it ( 'should log sync render with CPU suspense' , ( ) => {
101+ function Example ( ) {
102+ console . log ( '<Example/>' ) ;
103+ return null ;
104+ }
105+
106+ function Wrapper ( { children} ) {
107+ console . log ( '<Wrapper/>' ) ;
108+ return children ;
109+ }
110+
111+ ReactTestRenderer . create (
112+ < React . unstable_DebugTracingMode >
113+ < Wrapper >
114+ < React . Suspense fallback = { null } unstable_expectedLoadTime = { 1 } >
115+ < Example />
116+ </ React . Suspense >
117+ </ Wrapper >
118+ </ React . unstable_DebugTracingMode > ,
119+ ) ;
120+
121+ expect ( logs ) . toEqual ( [
122+ 'group: ⚛️ render (0b0000000000000000000000000000001)' ,
123+ 'log: <Wrapper/>' ,
124+ 'groupEnd: ⚛️ render (0b0000000000000000000000000000001)' ,
125+ ] ) ;
126+
127+ logs . splice ( 0 ) ;
128+
129+ expect ( Scheduler ) . toFlushUntilNextPaint ( [ ] ) ;
130+
131+ expect ( logs ) . toEqual ( [
132+ 'group: ⚛️ render (0b0000010000000000000000000000000)' ,
133+ 'log: <Example/>' ,
134+ 'groupEnd: ⚛️ render (0b0000010000000000000000000000000)' ,
135+ ] ) ;
136+ } ) ;
137+
99138 // @gate experimental && build === 'development' && enableDebugTracing
100139 it ( 'should log concurrent render with suspense' , async ( ) => {
101140 const fakeSuspensePromise = Promise . resolve ( true ) ;
@@ -130,6 +169,52 @@ describe('DebugTracing', () => {
130169 expect ( logs ) . toEqual ( [ 'log: ⚛️ Example resolved' ] ) ;
131170 } ) ;
132171
172+ // @gate experimental && build === 'development' && enableDebugTracing
173+ it ( 'should log concurrent render with CPU suspense' , ( ) => {
174+ function Example ( ) {
175+ console . log ( '<Example/>' ) ;
176+ return null ;
177+ }
178+
179+ function Wrapper ( { children} ) {
180+ console . log ( '<Wrapper/>' ) ;
181+ return children ;
182+ }
183+
184+ ReactTestRenderer . create (
185+ < React . unstable_DebugTracingMode >
186+ < Wrapper >
187+ < React . Suspense fallback = { null } unstable_expectedLoadTime = { 1 } >
188+ < Example />
189+ </ React . Suspense >
190+ </ Wrapper >
191+ </ React . unstable_DebugTracingMode > ,
192+ { unstable_isConcurrent : true } ,
193+ ) ;
194+
195+ expect ( logs ) . toEqual ( [ ] ) ;
196+
197+ logs . splice ( 0 ) ;
198+
199+ expect ( Scheduler ) . toFlushUntilNextPaint ( [ ] ) ;
200+
201+ expect ( logs ) . toEqual ( [
202+ 'group: ⚛️ render (0b0000000000000000000001000000000)' ,
203+ 'log: <Wrapper/>' ,
204+ 'groupEnd: ⚛️ render (0b0000000000000000000001000000000)' ,
205+ ] ) ;
206+
207+ logs . splice ( 0 ) ;
208+
209+ expect ( Scheduler ) . toFlushUntilNextPaint ( [ ] ) ;
210+
211+ expect ( logs ) . toEqual ( [
212+ 'group: ⚛️ render (0b0000010000000000000000000000000)' ,
213+ 'log: <Example/>' ,
214+ 'groupEnd: ⚛️ render (0b0000010000000000000000000000000)' ,
215+ ] ) ;
216+ } ) ;
217+
133218 // @gate experimental && build === 'development' && enableDebugTracing
134219 it ( 'should log cascading class component updates' , ( ) => {
135220 class Example extends React . Component {
0 commit comments