diff --git a/packages/cli-kit/src/public/node/error-handler.test.ts b/packages/cli-kit/src/public/node/error-handler.test.ts index c17d7f0472..8f101ab55d 100644 --- a/packages/cli-kit/src/public/node/error-handler.test.ts +++ b/packages/cli-kit/src/public/node/error-handler.test.ts @@ -174,6 +174,15 @@ describe('skips sending errors to Bugsnag', () => { expect(onNotify).not.toHaveBeenCalled() expect(mockOutput.debug()).toMatch('Skipping Bugsnag report') }) + + test('when error is expected', async () => { + const mockOutput = mockAndCaptureOutput() + const res = await sendErrorToBugsnag(new error.AbortError('In test'), 'expected_error') + expect(res.reported).toEqual(false) + expect(res.unhandled).toBeUndefined() + expect(onNotify).not.toHaveBeenCalled() + expect(mockOutput.debug()).toMatch('Skipping Bugsnag report for expected error') + }) }) describe('sends errors to Bugsnag', () => { @@ -200,13 +209,6 @@ describe('sends errors to Bugsnag', () => { expect(onNotify).toHaveBeenCalledWith(res.error) }) - test('processes AbortErrors as handled', async () => { - const res = await sendErrorToBugsnag(new error.AbortError('In test'), 'expected_error') - expect(res.reported).toEqual(true) - expect(res.unhandled).toEqual(false) - expect(onNotify).toHaveBeenCalledWith(res.error) - }) - test.each([null, undefined, {}, {message: 'nope'}])('deals with strange things to throw %s', async (throwable) => { const res = await sendErrorToBugsnag(throwable, 'unexpected_error') expect(res.reported).toEqual(false) diff --git a/packages/cli-kit/src/public/node/error-handler.ts b/packages/cli-kit/src/public/node/error-handler.ts index 9b764be5c7..5735d2b823 100644 --- a/packages/cli-kit/src/public/node/error-handler.ts +++ b/packages/cli-kit/src/public/node/error-handler.ts @@ -76,6 +76,11 @@ export async function sendErrorToBugsnag( return {reported: false, error, unhandled: undefined} } + if (exitMode === 'expected_error') { + outputDebug(`Skipping Bugsnag report for expected error`) + return {reported: false, error, unhandled: undefined} + } + // If the error was unexpected, we flag it as "unhandled" in Bugsnag. This is a helpful distinction. const unhandled = exitMode === 'unexpected_error'