From 5d9181d8b2325e5016a1698554246001b3fb5756 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Thu, 26 Sep 2024 14:18:54 +0200 Subject: [PATCH 1/2] feat: stop global event handling for paused replays --- .../replay-internal/src/coreHandlers/handleGlobalEvent.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/replay-internal/src/coreHandlers/handleGlobalEvent.ts b/packages/replay-internal/src/coreHandlers/handleGlobalEvent.ts index a13f4d24827e..d0ea607e1c06 100644 --- a/packages/replay-internal/src/coreHandlers/handleGlobalEvent.ts +++ b/packages/replay-internal/src/coreHandlers/handleGlobalEvent.ts @@ -14,8 +14,8 @@ import { shouldSampleForBufferEvent } from './util/shouldSampleForBufferEvent'; export function handleGlobalEventListener(replay: ReplayContainer): (event: Event, hint: EventHint) => Event | null { return Object.assign( (event: Event, hint: EventHint) => { - // Do nothing if replay has been disabled - if (!replay.isEnabled()) { + // Do nothing if replay has been disabled or paused + if (!replay.isEnabled() || replay.isPaused()) { return event; } From ba81db9a713d1e313001a612d58c55bbb9195f87 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Thu, 26 Sep 2024 15:57:27 +0200 Subject: [PATCH 2/2] add test --- .../coreHandlers/handleGlobalEvent.test.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/packages/replay-internal/test/integration/coreHandlers/handleGlobalEvent.test.ts b/packages/replay-internal/test/integration/coreHandlers/handleGlobalEvent.test.ts index 2c41dbfbfd62..9e888568d04d 100644 --- a/packages/replay-internal/test/integration/coreHandlers/handleGlobalEvent.test.ts +++ b/packages/replay-internal/test/integration/coreHandlers/handleGlobalEvent.test.ts @@ -397,4 +397,23 @@ describe('Integration | coreHandlers | handleGlobalEvent', () => { expect(handleGlobalEventListener(replay)(errorEvent, {})).toEqual(errorEvent); }); + + it('does not add replayId if replay is paused', async () => { + const transaction = Transaction(); + const error = Error(); + + replay['_isPaused'] = true; + + expect(handleGlobalEventListener(replay)(transaction, {})).toEqual( + expect.not.objectContaining({ + // no tags at all here by default + tags: expect.anything(), + }), + ); + expect(handleGlobalEventListener(replay)(error, {})).toEqual( + expect.objectContaining({ + tags: expect.not.objectContaining({ replayId: expect.anything() }), + }), + ); + }); });