From fa427de05220d41b27a747311ee84f87c49e8096 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 31 Jul 2025 11:34:14 +0200 Subject: [PATCH 1/2] ref(replay-internal): Add mechanism to error caught by `replayIntegration` in debug mode --- packages/replay-internal/src/util/logger.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/replay-internal/src/util/logger.ts b/packages/replay-internal/src/util/logger.ts index 89ded3c69468..0ac464437eee 100644 --- a/packages/replay-internal/src/util/logger.ts +++ b/packages/replay-internal/src/util/logger.ts @@ -74,7 +74,12 @@ function makeReplayDebugLogger(): ReplayDebugLogger { coreDebug.error(PREFIX, error); if (_capture) { - captureException(error); + captureException(error, { + mechanism: { + handled: false, + type: 'replay', + }, + }); } else if (_trace) { // No need for a breadcrumb if `_capture` is enabled since it should be // captured as an exception From c53225b0bed2d3156ab8042127d643ad4f503f3b Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 12 Sep 2025 10:26:58 +0200 Subject: [PATCH 2/2] adjust tests --- packages/replay-internal/src/util/logger.ts | 4 ++-- .../test/integration/sendReplayEvent.test.ts | 7 ++++++- .../replay-internal/test/unit/util/logger.test.ts | 14 ++++++++++++-- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/packages/replay-internal/src/util/logger.ts b/packages/replay-internal/src/util/logger.ts index 0ac464437eee..dfdd44b18472 100644 --- a/packages/replay-internal/src/util/logger.ts +++ b/packages/replay-internal/src/util/logger.ts @@ -76,8 +76,8 @@ function makeReplayDebugLogger(): ReplayDebugLogger { if (_capture) { captureException(error, { mechanism: { - handled: false, - type: 'replay', + handled: true, + type: 'auto.function.replay.debug', }, }); } else if (_trace) { diff --git a/packages/replay-internal/test/integration/sendReplayEvent.test.ts b/packages/replay-internal/test/integration/sendReplayEvent.test.ts index 3b6c9b5764e1..1e870a8f577b 100644 --- a/packages/replay-internal/test/integration/sendReplayEvent.test.ts +++ b/packages/replay-internal/test/integration/sendReplayEvent.test.ts @@ -399,7 +399,12 @@ describe('Integration | sendReplayEvent', () => { expect(spyHandleException).toHaveBeenCalledTimes(5); const expectedError = new Error('Unable to send Replay - max retries exceeded'); (expectedError as any).cause = new Error('Something bad happened'); - expect(spyHandleException).toHaveBeenLastCalledWith(expectedError); + expect(spyHandleException).toHaveBeenLastCalledWith(expectedError, { + mechanism: { + handled: true, + type: 'auto.function.replay.debug', + }, + }); const spyHandleExceptionCall = spyHandleException.mock.calls; expect(spyHandleExceptionCall[spyHandleExceptionCall.length - 1][0]?.cause.message).toEqual( diff --git a/packages/replay-internal/test/unit/util/logger.test.ts b/packages/replay-internal/test/unit/util/logger.test.ts index a52512dabed8..a3fc85099525 100644 --- a/packages/replay-internal/test/unit/util/logger.test.ts +++ b/packages/replay-internal/test/unit/util/logger.test.ts @@ -52,7 +52,12 @@ describe('logger', () => { const err = new Error('An error'); debug.exception(err, 'a message'); if (captureExceptions) { - expect(mockCaptureException).toHaveBeenCalledWith(err); + expect(mockCaptureException).toHaveBeenCalledWith(err, { + mechanism: { + handled: true, + type: 'auto.function.replay.debug', + }, + }); } expect(mockLogError).toHaveBeenCalledWith('[Replay] ', 'a message'); expect(mockLogError).toHaveBeenLastCalledWith('[Replay] ', err); @@ -75,7 +80,12 @@ describe('logger', () => { const err = new Error('An error'); debug.exception(err); if (captureExceptions) { - expect(mockCaptureException).toHaveBeenCalledWith(err); + expect(mockCaptureException).toHaveBeenCalledWith(err, { + mechanism: { + handled: true, + type: 'auto.function.replay.debug', + }, + }); expect(mockAddBreadcrumb).not.toHaveBeenCalled(); } expect(mockLogError).toHaveBeenCalledTimes(1);