Skip to content

Commit ad8ce23

Browse files
authored
ref(replay): Always send replay_start_timestamp (#7773)
This should be sent with each segment now.
1 parent f4e92ca commit ad8ce23

File tree

13 files changed

+13
-30
lines changed

13 files changed

+13
-30
lines changed

packages/browser-integration-tests/suites/replay/captureReplay/test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ sentryTest('should capture replays (@sentry/browser export)', async ({ getLocalT
7575
trace_ids: [],
7676
urls: [],
7777
replay_id: expect.stringMatching(/\w{32}/),
78+
replay_start_timestamp: expect.any(Number),
7879
segment_id: 1,
7980
replay_type: 'session',
8081
event_id: expect.stringMatching(/\w{32}/),

packages/browser-integration-tests/suites/replay/captureReplayFromReplayPackage/test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ sentryTest('should capture replays (@sentry/replay export)', async ({ getLocalTe
7575
trace_ids: [],
7676
urls: [],
7777
replay_id: expect.stringMatching(/\w{32}/),
78+
replay_start_timestamp: expect.any(Number),
7879
segment_id: 1,
7980
replay_type: 'session',
8081
event_id: expect.stringMatching(/\w{32}/),

packages/browser-integration-tests/suites/replay/customEvents/test.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,7 @@ sentryTest(
5252
const replayEvent1 = getReplayEvent(await reqPromise1);
5353
const { performanceSpans: performanceSpans1 } = getCustomRecordingEvents(await reqPromise1);
5454

55-
expect(replayEvent1).toEqual(
56-
getExpectedReplayEvent({ segment_id: 1, urls: [], replay_start_timestamp: undefined }),
57-
);
55+
expect(replayEvent1).toEqual(getExpectedReplayEvent({ segment_id: 1, urls: [] }));
5856

5957
// We can't guarantee the order of the performance spans, or in which of the two segments they are sent
6058
// So to avoid flakes, we collect them all and check that they are all there

packages/browser-integration-tests/suites/replay/errors/errorMode/test.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@ sentryTest(
119119
getExpectedReplayEvent({
120120
contexts: { replay: { error_sample_rate: 1, session_sample_rate: 0 } },
121121
replay_type: 'error', // although we're in session mode, we still send 'error' as replay_type
122-
replay_start_timestamp: undefined,
123122
segment_id: 1,
124123
urls: [],
125124
}),
@@ -135,7 +134,6 @@ sentryTest(
135134
getExpectedReplayEvent({
136135
contexts: { replay: { error_sample_rate: 1, session_sample_rate: 0 } },
137136
replay_type: 'error',
138-
replay_start_timestamp: undefined,
139137
segment_id: 2,
140138
urls: [],
141139
}),

packages/browser-integration-tests/suites/replay/errors/errorsInSession/test.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ sentryTest(
5555

5656
expect(event1).toEqual(
5757
getExpectedReplayEvent({
58-
replay_start_timestamp: undefined,
5958
segment_id: 1,
6059
error_ids: [errorEventId],
6160
urls: [],
@@ -117,7 +116,6 @@ sentryTest(
117116

118117
expect(event1).toEqual(
119118
getExpectedReplayEvent({
120-
replay_start_timestamp: undefined,
121119
segment_id: 1,
122120
error_ids: [], // <-- no error id
123121
urls: [],

packages/browser-integration-tests/suites/replay/flushing/test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ sentryTest('replay events are flushed after max flush delay was reached', async
4040

4141
// this must eventually lead to a flush after the max delay was reached
4242
const replayEvent1 = getReplayEvent(await reqPromise1);
43-
expect(replayEvent1).toEqual(getExpectedReplayEvent({ replay_start_timestamp: undefined, segment_id: 1, urls: [] }));
43+
expect(replayEvent1).toEqual(getExpectedReplayEvent({ segment_id: 1, urls: [] }));
4444

4545
// trigger mouse click every 100ms, it should still flush after the max delay even if clicks are ongoing
4646
for (let i = 0; i < 700; i++) {
@@ -54,5 +54,5 @@ sentryTest('replay events are flushed after max flush delay was reached', async
5454
}
5555

5656
const replayEvent2 = getReplayEvent(await reqPromise2);
57-
expect(replayEvent2).toEqual(getExpectedReplayEvent({ replay_start_timestamp: undefined, segment_id: 2, urls: [] }));
57+
expect(replayEvent2).toEqual(getExpectedReplayEvent({ segment_id: 2, urls: [] }));
5858
});

packages/browser-integration-tests/suites/replay/multiple-pages/test.ts

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,7 @@ sentryTest(
7171
const replayEvent1 = getReplayEvent(req1);
7272
const recording1 = getReplayRecordingContent(req1);
7373

74-
expect(replayEvent1).toEqual(
75-
getExpectedReplayEvent({ segment_id: 1, urls: [], replay_start_timestamp: undefined }),
76-
);
74+
expect(replayEvent1).toEqual(getExpectedReplayEvent({ segment_id: 1, urls: [] }));
7775
expect(recording1.fullSnapshots.length).toEqual(0);
7876
expect(normalize(recording1.incrementalSnapshots)).toMatchSnapshot('seg-1-snap-incremental');
7977

@@ -105,7 +103,7 @@ sentryTest(
105103
const replayEvent2 = getReplayEvent(req2);
106104
const recording2 = getReplayRecordingContent(req2);
107105

108-
expect(replayEvent2).toEqual(getExpectedReplayEvent({ segment_id: 2, replay_start_timestamp: undefined }));
106+
expect(replayEvent2).toEqual(getExpectedReplayEvent({ segment_id: 2 }));
109107
expect(normalize(recording2.fullSnapshots)).toMatchSnapshot('seg-2-snap-full');
110108
expect(recording2.incrementalSnapshots.length).toEqual(0);
111109

@@ -115,9 +113,7 @@ sentryTest(
115113
const replayEvent3 = getReplayEvent(req3);
116114
const recording3 = getReplayRecordingContent(req3);
117115

118-
expect(replayEvent3).toEqual(
119-
getExpectedReplayEvent({ segment_id: 3, urls: [], replay_start_timestamp: undefined }),
120-
);
116+
expect(replayEvent3).toEqual(getExpectedReplayEvent({ segment_id: 3, urls: [] }));
121117
expect(recording3.fullSnapshots.length).toEqual(0);
122118
expect(normalize(recording3.incrementalSnapshots)).toMatchSnapshot('seg-3-snap-incremental');
123119

@@ -150,7 +146,6 @@ sentryTest(
150146
expect(replayEvent4).toEqual(
151147
getExpectedReplayEvent({
152148
segment_id: 4,
153-
replay_start_timestamp: undefined,
154149
// @ts-ignore this is fine
155150
urls: [expect.stringContaining('page-0.html')],
156151
request: {
@@ -176,7 +171,6 @@ sentryTest(
176171
getExpectedReplayEvent({
177172
segment_id: 5,
178173
urls: [],
179-
replay_start_timestamp: undefined,
180174
request: {
181175
// @ts-ignore this is fine
182176
url: expect.stringContaining('page-0.html'),
@@ -223,7 +217,7 @@ sentryTest(
223217
getExpectedReplayEvent({
224218
segment_id: 6,
225219
urls: ['/spa'],
226-
replay_start_timestamp: undefined,
220+
227221
request: {
228222
// @ts-ignore this is fine
229223
url: expect.stringContaining('page-0.html'),
@@ -247,7 +241,7 @@ sentryTest(
247241
getExpectedReplayEvent({
248242
segment_id: 7,
249243
urls: [],
250-
replay_start_timestamp: undefined,
244+
251245
request: {
252246
// @ts-ignore this is fine
253247
url: expect.stringContaining('page-0.html'),
@@ -294,7 +288,6 @@ sentryTest(
294288
expect(replayEvent8).toEqual(
295289
getExpectedReplayEvent({
296290
segment_id: 8,
297-
replay_start_timestamp: undefined,
298291
}),
299292
);
300293
expect(normalize(recording8.fullSnapshots)).toMatchSnapshot('seg-8-snap-full');
@@ -310,7 +303,6 @@ sentryTest(
310303
getExpectedReplayEvent({
311304
segment_id: 9,
312305
urls: [],
313-
replay_start_timestamp: undefined,
314306
}),
315307
);
316308
expect(recording9.fullSnapshots.length).toEqual(0);

packages/browser-integration-tests/suites/replay/sessionExpiry/test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ sentryTest('handles an expired session', async ({ getLocalTestPath, page }) => {
5050
const req1 = await reqPromise1;
5151

5252
const replayEvent1 = getReplayEvent(req1);
53-
expect(replayEvent1).toEqual(getExpectedReplayEvent({ replay_start_timestamp: undefined, segment_id: 1, urls: [] }));
53+
expect(replayEvent1).toEqual(getExpectedReplayEvent({ segment_id: 1, urls: [] }));
5454

5555
const replay = await getReplaySnapshot(page);
5656
const oldSessionId = replay.session?.id;

packages/browser-integration-tests/suites/replay/sessionMaxAge/test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ sentryTest('handles session that exceeds max age', async ({ getLocalTestPath, pa
6464
const req1 = await reqPromise1;
6565
const replayEvent1 = getReplayEvent(req1);
6666

67-
expect(replayEvent1).toEqual(getExpectedReplayEvent({ replay_start_timestamp: undefined, segment_id: 1, urls: [] }));
67+
expect(replayEvent1).toEqual(getExpectedReplayEvent({ segment_id: 1, urls: [] }));
6868

6969
const replay1 = await getReplaySnapshot(page);
7070
const oldSessionId = replay1.session?.id;

packages/replay/src/replay.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -748,7 +748,6 @@ export class ReplayContainer implements ReplayContainerInterface {
748748
replayId,
749749
recordingData,
750750
segmentId,
751-
includeReplayStartTimestamp: segmentId === 0,
752751
eventContext,
753752
session: this.session,
754753
options: this.getOptions(),

packages/replay/src/types.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ export interface SendReplayData {
1818
recordingData: ReplayRecordingData;
1919
replayId: string;
2020
segmentId: number;
21-
includeReplayStartTimestamp: boolean;
2221
eventContext: PopEventContext;
2322
timestamp: number;
2423
session: Session;

packages/replay/src/util/sendReplayRequest.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ export async function sendReplayRequest({
1515
recordingData,
1616
replayId,
1717
segmentId: segment_id,
18-
includeReplayStartTimestamp,
1918
eventContext,
2019
timestamp,
2120
session,
@@ -42,7 +41,7 @@ export async function sendReplayRequest({
4241

4342
const baseEvent: ReplayEvent = {
4443
type: REPLAY_EVENT_NAME,
45-
...(includeReplayStartTimestamp ? { replay_start_timestamp: initialTimestamp / 1000 } : {}),
44+
replay_start_timestamp: initialTimestamp / 1000,
4645
timestamp: timestamp / 1000,
4746
error_ids: errorIds,
4847
trace_ids: traceIds,

packages/replay/test/integration/flush.test.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,6 @@ describe('Integration | flush', () => {
179179
expect(mockSendReplay).toHaveBeenLastCalledWith({
180180
recordingData: expect.any(String),
181181
replayId: expect.any(String),
182-
includeReplayStartTimestamp: true,
183182
segmentId: 0,
184183
eventContext: expect.anything(),
185184
session: expect.any(Object),
@@ -229,7 +228,6 @@ describe('Integration | flush', () => {
229228
expect(mockSendReplay).toHaveBeenLastCalledWith({
230229
recordingData: expect.any(String),
231230
replayId: expect.any(String),
232-
includeReplayStartTimestamp: false,
233231
segmentId: 1,
234232
eventContext: expect.anything(),
235233
session: expect.any(Object),

0 commit comments

Comments
 (0)