Skip to content

Commit 3fa6104

Browse files
committed
[Flight] Add test expectation for error digest in prod
1 parent 9e1d958 commit 3fa6104

File tree

1 file changed

+25
-5
lines changed

1 file changed

+25
-5
lines changed

packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMBrowser-test.js

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -875,7 +875,11 @@ describe('ReactFlightDOMBrowser', () => {
875875
async callServer(ref, args) {
876876
const fn = requireServerRef(ref);
877877
return ReactServerDOMReader.createFromReadableStream(
878-
ReactServerDOMWriter.renderToReadableStream(fn.apply(null, args)),
878+
ReactServerDOMWriter.renderToReadableStream(
879+
fn.apply(null, args),
880+
null,
881+
{onError: error => 'test-error-digest'},
882+
),
879883
);
880884
},
881885
});
@@ -890,9 +894,25 @@ describe('ReactFlightDOMBrowser', () => {
890894
root.render(<App />);
891895
});
892896

893-
const expectedError = new Error('Error for test');
894-
spyOnDevAndProd(console, 'error').mockImplementation(() => {});
895-
await expect(actionProxy('test')).rejects.toThrow(expectedError);
896-
expect(console.error.mock.calls).toEqual([[expectedError]]);
897+
if (__DEV__) {
898+
const expectedError = new Error('Error for test');
899+
await expect(actionProxy('test')).rejects.toThrow(expectedError);
900+
} else {
901+
let thrownError;
902+
903+
try {
904+
await actionProxy('test');
905+
} catch (error) {
906+
thrownError = error;
907+
}
908+
909+
expect(thrownError).toEqual(
910+
new Error(
911+
'An error occurred in the Server Components render. The specific message is omitted in production builds to avoid leaking sensitive details. A digest property is included on this error instance which may provide additional details about the nature of the error.',
912+
),
913+
);
914+
915+
expect(thrownError.digest).toBe('test-error-digest');
916+
}
897917
});
898918
});

0 commit comments

Comments
 (0)