diff --git a/packages/integration-tests/suites/replay/captureReplay/test.ts b/packages/integration-tests/suites/replay/captureReplay/test.ts index 3bb54fe4647a..e1319c3d0d6b 100644 --- a/packages/integration-tests/suites/replay/captureReplay/test.ts +++ b/packages/integration-tests/suites/replay/captureReplay/test.ts @@ -67,7 +67,7 @@ sentryTest('should capture replays', async ({ getLocalTestPath, page }) => { }, }, platform: 'javascript', - tags: { sessionSampleRate: 1, errorSampleRate: 0 }, + contexts: { replay: { session_sample_rate: 1, error_sample_rate: 0 } }, }); expect(replayEvent1).toBeDefined(); @@ -105,6 +105,6 @@ sentryTest('should capture replays', async ({ getLocalTestPath, page }) => { }, }, platform: 'javascript', - tags: { sessionSampleRate: 1, errorSampleRate: 0 }, + contexts: { replay: { session_sample_rate: 1, error_sample_rate: 0 } }, }); }); diff --git a/packages/integration-tests/suites/replay/captureReplayViaBrowser/test.ts b/packages/integration-tests/suites/replay/captureReplayViaBrowser/test.ts index 374d845acecd..f670ac28dfef 100644 --- a/packages/integration-tests/suites/replay/captureReplayViaBrowser/test.ts +++ b/packages/integration-tests/suites/replay/captureReplayViaBrowser/test.ts @@ -68,7 +68,7 @@ sentryTest('should capture replays (@sentry/browser export)', async ({ getLocalT }, }, platform: 'javascript', - tags: { sessionSampleRate: 1, errorSampleRate: 0 }, + contexts: { replay: { session_sample_rate: 1, error_sample_rate: 0 } }, }); expect(replayEvent1).toBeDefined(); @@ -106,6 +106,6 @@ sentryTest('should capture replays (@sentry/browser export)', async ({ getLocalT }, }, platform: 'javascript', - tags: { sessionSampleRate: 1, errorSampleRate: 0 }, + contexts: { replay: { session_sample_rate: 1, error_sample_rate: 0 } }, }); }); diff --git a/packages/replay/src/util/sendReplayRequest.ts b/packages/replay/src/util/sendReplayRequest.ts index 3c797a5bab2f..c98bc211d0b8 100644 --- a/packages/replay/src/util/sendReplayRequest.ts +++ b/packages/replay/src/util/sendReplayRequest.ts @@ -63,10 +63,13 @@ export async function sendReplayRequest({ return; } - replayEvent.tags = { - ...replayEvent.tags, - sessionSampleRate: options.sessionSampleRate, - errorSampleRate: options.errorSampleRate, + replayEvent.contexts = { + ...replayEvent.contexts, + replay: { + ...(replayEvent.contexts && replayEvent.contexts.replay), + session_sample_rate: options.sessionSampleRate, + error_sample_rate: options.errorSampleRate, + }, }; /* @@ -98,10 +101,12 @@ export async function sendReplayRequest({ "version": "7.25.0" }, "sdkProcessingMetadata": {}, - "tags": { - "sessionSampleRate": 1, - "errorSampleRate": 0, - } + "contexts": { + "replay": { + "session_sample_rate": 1, + "error_sample_rate": 0, + }, + }, } */ diff --git a/packages/replay/test/integration/errorSampleRate.test.ts b/packages/replay/test/integration/errorSampleRate.test.ts index 2b52e6c7d96c..31505ef1f334 100644 --- a/packages/replay/test/integration/errorSampleRate.test.ts +++ b/packages/replay/test/integration/errorSampleRate.test.ts @@ -63,10 +63,12 @@ describe('Integration | errorSampleRate', () => { recordingPayloadHeader: { segment_id: 0 }, replayEventPayload: expect.objectContaining({ replay_type: 'error', - tags: expect.objectContaining({ - errorSampleRate: 1, - sessionSampleRate: 0, - }), + contexts: { + replay: { + error_sample_rate: 1, + session_sample_rate: 0, + }, + }, }), recordingData: JSON.stringify([ { data: { isCheckout: true }, timestamp: BASE_TIMESTAMP, type: 2 }, @@ -93,10 +95,12 @@ describe('Integration | errorSampleRate', () => { recordingPayloadHeader: { segment_id: 1 }, replayEventPayload: expect.objectContaining({ replay_type: 'error', - tags: expect.objectContaining({ - errorSampleRate: 1, - sessionSampleRate: 0, - }), + contexts: { + replay: { + error_sample_rate: 1, + session_sample_rate: 0, + }, + }, }), recordingData: JSON.stringify([{ data: { isCheckout: true }, timestamp: BASE_TIMESTAMP + 5020, type: 2 }]), }); diff --git a/packages/replay/test/integration/events.test.ts b/packages/replay/test/integration/events.test.ts index 5168426dfd79..af71eab9b8da 100644 --- a/packages/replay/test/integration/events.test.ts +++ b/packages/replay/test/integration/events.test.ts @@ -130,11 +130,13 @@ describe('Integration | events', () => { expect(replay).toHaveLastSentReplay({ replayEventPayload: expect.objectContaining({ replay_start_timestamp: (BASE_TIMESTAMP - 10000) / 1000, + contexts: { + replay: { + error_sample_rate: 0, + session_sample_rate: 1, + }, + }, urls: ['http://localhost/'], // this doesn't truly test if we are capturing the right URL as we don't change URLs, but good enough - tags: expect.objectContaining({ - errorSampleRate: 0, - sessionSampleRate: 1, - }), }), }); }); diff --git a/packages/replay/test/unit/util/createReplayEnvelope.test.ts b/packages/replay/test/unit/util/createReplayEnvelope.test.ts index d0245d0d2f5f..e62c2f410d6a 100644 --- a/packages/replay/test/unit/util/createReplayEnvelope.test.ts +++ b/packages/replay/test/unit/util/createReplayEnvelope.test.ts @@ -24,10 +24,13 @@ describe('Unit | util | createReplayEnvelope', () => { version: '7.25.0', }, replay_type: 'error', - tags: { - sessionSampleRate: 1, - errorSampleRate: 0, + contexts: { + replay: { + error_sample_rate: 0, + session_sample_rate: 1, + }, }, + tags: {}, }; const payloadWithSequence = 'payload'; @@ -54,6 +57,12 @@ describe('Unit | util | createReplayEnvelope', () => { [ { type: 'replay_event' }, { + contexts: { + replay: { + error_sample_rate: 0, + session_sample_rate: 1, + }, + }, environment: 'production', error_ids: ['errorId'], event_id: REPLAY_ID, @@ -62,7 +71,7 @@ describe('Unit | util | createReplayEnvelope', () => { replay_type: 'error', sdk: { integrations: ['BrowserTracing', 'Replay'], name: 'sentry.javascript.unknown', version: '7.25.0' }, segment_id: 3, - tags: { errorSampleRate: 0, sessionSampleRate: 1 }, + tags: {}, timestamp: 1670837008.634, trace_ids: ['traceId'], type: 'replay_event', @@ -88,6 +97,12 @@ describe('Unit | util | createReplayEnvelope', () => { [ { type: 'replay_event' }, { + contexts: { + replay: { + error_sample_rate: 0, + session_sample_rate: 1, + }, + }, environment: 'production', error_ids: ['errorId'], event_id: REPLAY_ID, @@ -96,7 +111,7 @@ describe('Unit | util | createReplayEnvelope', () => { sdk: { integrations: ['BrowserTracing', 'Replay'], name: 'sentry.javascript.unknown', version: '7.25.0' }, segment_id: 3, replay_type: 'error', - tags: { errorSampleRate: 0, sessionSampleRate: 1 }, + tags: {}, timestamp: 1670837008.634, trace_ids: ['traceId'], type: 'replay_event', diff --git a/packages/replay/test/unit/util/prepareReplayEvent.test.ts b/packages/replay/test/unit/util/prepareReplayEvent.test.ts index 0a278334de68..b0f121e1256a 100644 --- a/packages/replay/test/unit/util/prepareReplayEvent.test.ts +++ b/packages/replay/test/unit/util/prepareReplayEvent.test.ts @@ -48,6 +48,12 @@ describe('Unit | util | prepareReplayEvent', () => { replay_id: replayId, replay_type: 'session', segment_id: 3, + contexts: { + replay: { + error_sample_rate: 1.0, + session_sample_rate: 0.1, + }, + }, }; const replayEvent = await prepareReplayEvent({ scope, client, replayId, event }); @@ -66,6 +72,12 @@ describe('Unit | util | prepareReplayEvent', () => { platform: 'javascript', event_id: 'replay-ID', environment: 'production', + contexts: { + replay: { + error_sample_rate: 1.0, + session_sample_rate: 0.1, + }, + }, sdk: { name: 'sentry.javascript.testSdk', version: '1.0.0',