Skip to content

Commit efe5a9c

Browse files
author
Brian Vaughn
committed
Added DebugTracing tests for CPU bound suspense
1 parent 83199cb commit efe5a9c

1 file changed

Lines changed: 85 additions & 0 deletions

File tree

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

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)