Skip to content

Commit 35c7481

Browse files
author
Brian Vaughn
committed
Add failing test for filtered Suspense node
1 parent 3e91010 commit 35c7481

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed

packages/react-devtools-shared/src/__tests__/__snapshots__/storeComponentFilters-test.js.snap

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,19 @@ exports[`Store component filters should ignore invalid ElementTypeRoot filter: 2
8484
<div>
8585
`;
8686
87+
exports[`Store component filters should not break when Suspense nodes are filtered from the tree: 1: suspended 1`] = `
88+
[root]
89+
▾ <Wrapper>
90+
▾ <Loading>
91+
<div>
92+
`;
93+
94+
exports[`Store component filters should not break when Suspense nodes are filtered from the tree: 2: resolved 1`] = `
95+
[root]
96+
▾ <Wrapper>
97+
<Component>
98+
`;
99+
87100
exports[`Store component filters should support filtering by element type: 1: mount 1`] = `
88101
[root]
89102
▾ <Root>

packages/react-devtools-shared/src/__tests__/storeComponentFilters-test.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,4 +227,34 @@ describe('Store component filters', () => {
227227
]),
228228
);
229229
});
230+
231+
it('should not break when Suspense nodes are filtered from the tree', () => {
232+
const promise = new Promise(() => {});
233+
234+
const Loading = () => <div>Loading...</div>;
235+
236+
const Component = ({shouldSuspend}) => {
237+
if (shouldSuspend) {
238+
throw promise;
239+
}
240+
return null;
241+
};
242+
243+
const Wrapper = ({shouldSuspend}) => (
244+
<React.Suspense fallback={<Loading />}>
245+
<Component shouldSuspend={shouldSuspend} />
246+
</React.Suspense>
247+
);
248+
249+
store.componentFilters = [
250+
utils.createElementTypeFilter(Types.ElementTypeSuspense),
251+
];
252+
253+
const container = document.createElement('div');
254+
act(() => ReactDOM.render(<Wrapper shouldSuspend={true} />, container));
255+
expect(store).toMatchSnapshot('1: suspended');
256+
257+
act(() => ReactDOM.render(<Wrapper shouldSuspend={false} />, container));
258+
expect(store).toMatchSnapshot('2: resolved');
259+
});
230260
});

0 commit comments

Comments
 (0)