From cab74fa9a0ed5748bc358d87844998f64a226c0a Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 13 Dec 2022 14:16:31 +0100 Subject: [PATCH 1/4] ref(replay): Send SDK's name in replay event --- packages/replay/src/constants.ts | 5 ----- packages/replay/src/util/createReplayEnvelope.ts | 5 ++--- packages/replay/src/util/getReplayEvent.ts | 9 ++++++--- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/packages/replay/src/constants.ts b/packages/replay/src/constants.ts index 46b3d04bbd45..47da014c0e78 100644 --- a/packages/replay/src/constants.ts +++ b/packages/replay/src/constants.ts @@ -25,8 +25,3 @@ export const MAX_SESSION_LIFE = 1_800_000; // 30 minutes */ export const DEFAULT_SESSION_SAMPLE_RATE = 0.1; export const DEFAULT_ERROR_SAMPLE_RATE = 1.0; - -export const REPLAY_SDK_INFO = { - name: 'sentry.javascript.integration.replay', - version: __SENTRY_REPLAY_VERSION__, -}; diff --git a/packages/replay/src/util/createReplayEnvelope.ts b/packages/replay/src/util/createReplayEnvelope.ts index 91cb35044211..88c32cbc90da 100644 --- a/packages/replay/src/util/createReplayEnvelope.ts +++ b/packages/replay/src/util/createReplayEnvelope.ts @@ -1,18 +1,17 @@ import { Envelope, Event } from '@sentry/types'; import { createEnvelope } from '@sentry/utils'; -import { REPLAY_SDK_INFO } from '../constants'; - export function createReplayEnvelope( replayId: string, replayEvent: Event, payloadWithSequence: string | Uint8Array, ): Envelope { + const { name, version } = replayEvent.sdk || {}; return createEnvelope( { event_id: replayId, sent_at: new Date().toISOString(), - sdk: REPLAY_SDK_INFO, + sdk: { name, version }, }, [ // @ts-ignore New types diff --git a/packages/replay/src/util/getReplayEvent.ts b/packages/replay/src/util/getReplayEvent.ts index dcca25c6eeae..73d5e350d6d6 100644 --- a/packages/replay/src/util/getReplayEvent.ts +++ b/packages/replay/src/util/getReplayEvent.ts @@ -1,8 +1,6 @@ import { Scope } from '@sentry/core'; import { Client, Event } from '@sentry/types'; -import { REPLAY_SDK_INFO } from '../constants'; - export async function getReplayEvent({ client, scope, @@ -18,9 +16,14 @@ export async function getReplayEvent({ // @ts-ignore private api const preparedEvent: Event = await client._prepareEvent(event, { event_id }, scope); + // extract the SDK name because `client._prepareEvent` doesn't add it to the event + const metadata = client.getOptions() && client.getOptions()._metadata; + const { name } = (metadata && metadata.sdk) || {}; + preparedEvent.sdk = { ...preparedEvent.sdk, - ...REPLAY_SDK_INFO, + version: __SENTRY_REPLAY_VERSION__, + name, }; return preparedEvent; From 76be0ce56827623f4202e202ca874d318a47bf9e Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 13 Dec 2022 14:39:43 +0100 Subject: [PATCH 2/4] adjust test --- packages/replay/src/replay.ts | 5 ++--- packages/replay/test/unit/util/getReplayEvent.test.ts | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/replay/src/replay.ts b/packages/replay/src/replay.ts index 9feba644a45a..5a2e7f285f57 100644 --- a/packages/replay/src/replay.ts +++ b/packages/replay/src/replay.ts @@ -939,7 +939,6 @@ export class ReplayContainer implements ReplayContainerInterface { }; const replayEvent = await getReplayEvent({ scope, client, replayId, event: baseEvent }); - replayEvent.tags = { ...replayEvent.tags, sessionSampleRate: this._options.sessionSampleRate, @@ -971,8 +970,8 @@ export class ReplayContainer implements ReplayContainerInterface { "BrowserTracing", "Replay" ], - "name": "sentry.javascript.integration.replay", - "version": "7.24.2" + "name": "sentry.javascript.browser", + "version": "7.25.0" }, "sdkProcessingMetadata": {}, "tags": { diff --git a/packages/replay/test/unit/util/getReplayEvent.test.ts b/packages/replay/test/unit/util/getReplayEvent.test.ts index a8b8129c0af8..fadddae05d3b 100644 --- a/packages/replay/test/unit/util/getReplayEvent.test.ts +++ b/packages/replay/test/unit/util/getReplayEvent.test.ts @@ -50,7 +50,7 @@ describe('getReplayEvent', () => { event_id: 'replay-ID', environment: 'production', sdk: { - name: 'sentry.javascript.integration.replay', + name: 'sentry.javascript.browser', version: 'version:Test', }, sdkProcessingMetadata: {}, From 4c09f4aba3554d4d095e444ab51f505b5c7d52f4 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 13 Dec 2022 14:39:54 +0100 Subject: [PATCH 3/4] add new envelope creation test --- .../unit/util/createReplayEnvelope.test.ts | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 packages/replay/test/unit/util/createReplayEnvelope.test.ts diff --git a/packages/replay/test/unit/util/createReplayEnvelope.test.ts b/packages/replay/test/unit/util/createReplayEnvelope.test.ts new file mode 100644 index 000000000000..7e32a82bb710 --- /dev/null +++ b/packages/replay/test/unit/util/createReplayEnvelope.test.ts @@ -0,0 +1,61 @@ +import { Event } from '@sentry/types'; +import { createReplayEnvelope } from '../../../src/util/createReplayEnvelope'; + +describe('createReplayEnvelope', () => { + it('creates an envelope for a given Replay event', () => { + const replayId = '1234'; + const replayEvent = { + type: 'replay_event', + timestamp: 1670837008.634, + error_ids: ['errorId'], + trace_ids: ['traceId'], + urls: ['https://example.com'], + replay_id: 'eventId', + segment_id: 3, + platform: 'javascript', + event_id: 'eventId', + environment: 'production', + sdk: { + integrations: ['BrowserTracing', 'Replay'], + name: 'sentry.javascript.browser', + version: '7.25.0', + }, + tags: { + sessionSampleRate: 1, + errorSampleRate: 0, + replayType: 'error', + }, + }; + const payloadWithSequence = 'payload'; + + const envelope = createReplayEnvelope(replayId, replayEvent as Event, payloadWithSequence); + + expect(envelope).toEqual([ + { + event_id: '1234', + sdk: { name: 'sentry.javascript.browser', version: '7.25.0' }, + sent_at: '2022-12-13T13:29:36.439Z', + }, + [ + [ + { type: 'replay_event' }, + { + environment: 'production', + error_ids: ['errorId'], + event_id: 'eventId', + platform: 'javascript', + replay_id: 'eventId', + sdk: { integrations: ['BrowserTracing', 'Replay'], name: 'sentry.javascript.browser', version: '7.25.0' }, + segment_id: 3, + tags: { errorSampleRate: 0, replayType: 'error', sessionSampleRate: 1 }, + timestamp: 1670837008.634, + trace_ids: ['traceId'], + type: 'replay_event', + urls: ['https://example.com'], + }, + ], + [{ length: 7, type: 'replay_recording' }, 'payload'], + ], + ]); + }); +}); From 73d63b37f8eb097f1b66ccdee00a9a0747df4fff Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 13 Dec 2022 15:01:48 +0100 Subject: [PATCH 4/4] fix test and lint error --- packages/replay/test/unit/util/createReplayEnvelope.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/replay/test/unit/util/createReplayEnvelope.test.ts b/packages/replay/test/unit/util/createReplayEnvelope.test.ts index 7e32a82bb710..a3564f0c34da 100644 --- a/packages/replay/test/unit/util/createReplayEnvelope.test.ts +++ b/packages/replay/test/unit/util/createReplayEnvelope.test.ts @@ -1,4 +1,5 @@ import { Event } from '@sentry/types'; + import { createReplayEnvelope } from '../../../src/util/createReplayEnvelope'; describe('createReplayEnvelope', () => { @@ -34,7 +35,7 @@ describe('createReplayEnvelope', () => { { event_id: '1234', sdk: { name: 'sentry.javascript.browser', version: '7.25.0' }, - sent_at: '2022-12-13T13:29:36.439Z', + sent_at: expect.any(String), }, [ [