Skip to content

Commit d9f8022

Browse files
committed
update tests
1 parent 60e298a commit d9f8022

File tree

1 file changed

+28
-20
lines changed
  • dev-packages/browser-integration-tests/suites/replay/bufferStalledRequests

1 file changed

+28
-20
lines changed

dev-packages/browser-integration-tests/suites/replay/bufferStalledRequests/test.ts

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
} from '../../../utils/replayHelpers';
1010

1111
sentryTest(
12-
'buffer mode turns into session mode after interrupting error event ingest, and resumes session on reload',
12+
'buffer mode remains after interrupting error event ingest',
1313
async ({ getLocalTestUrl, page, browserName }) => {
1414
if (shouldSkipReplayTest() || browserName === 'webkit') {
1515
sentryTest.skip();
@@ -63,32 +63,34 @@ sentryTest(
6363
// Wait for replay to initialize
6464
await waitForReplayRunning(page);
6565

66-
// Trigger first error - this should change session sampled to "session"
6766
waitForErrorRequest(page);
6867
await page.locator('#error1').click();
68+
69+
// This resolves, but the route doesn't get fulfilled as we want the reload to "interrupt" this flow
6970
await firstReplayEventPromise;
7071
expect(errorCount).toBe(1);
7172
expect(replayCount).toBe(0);
7273
expect(replayIds).toHaveLength(1);
7374

74-
// Get the first session info
7575
const firstSession = await getReplaySnapshot(page);
7676
const firstSessionId = firstSession.session?.id;
7777
expect(firstSessionId).toBeDefined();
78-
expect(firstSession.session?.sampled).toBe('session'); // Should be marked as 'session'
79-
expect(firstSession.recordingMode).toBe('buffer'); // But still in buffer mode
78+
expect(firstSession.session?.sampled).toBe('buffer');
79+
expect(firstSession.session?.dirty).toBe(true);
80+
expect(firstSession.recordingMode).toBe('buffer');
8081

8182
await page.reload();
8283
const secondSession = await getReplaySnapshot(page);
83-
expect(secondSession.session?.sampled).toBe('session');
84-
expect(secondSession.recordingMode).toBe('session'); // this turns to "session" because of `sampled` value being "session"
84+
expect(secondSession.session?.sampled).toBe('buffer');
85+
expect(secondSession.session?.dirty).toBe(true);
86+
expect(secondSession.recordingMode).toBe('buffer');
8587
expect(secondSession.session?.id).toBe(firstSessionId);
8688
expect(secondSession.session?.segmentId).toBe(0);
8789
},
8890
);
8991

90-
sentryTest(
91-
'buffer mode turns into session mode after interrupting replay flush, and resumes session on reload',
92+
sentryTest.only(
93+
'buffer mode remains after interrupting replay flush',
9294
async ({ getLocalTestUrl, page, browserName }) => {
9395
if (shouldSkipReplayTest() || browserName === 'webkit') {
9496
sentryTest.skip();
@@ -141,7 +143,6 @@ sentryTest(
141143
// Wait for replay to initialize
142144
await waitForReplayRunning(page);
143145

144-
// Trigger first error - this should change session sampled to "session"
145146
await page.locator('#error1').click();
146147
await firstReplayEventPromise;
147148
expect(errorCount).toBe(1);
@@ -152,15 +153,20 @@ sentryTest(
152153
const firstSession = await getReplaySnapshot(page);
153154
const firstSessionId = firstSession.session?.id;
154155
expect(firstSessionId).toBeDefined();
155-
expect(firstSession.session?.sampled).toBe('session'); // Should be marked as 'session'
156+
expect(firstSession.session?.sampled).toBe('buffer');
157+
expect(firstSession.session?.dirty).toBe(true);
156158
expect(firstSession.recordingMode).toBe('buffer'); // But still in buffer mode
157159

158160
await page.reload();
161+
await waitForReplayRunning(page);
159162
const secondSession = await getReplaySnapshot(page);
160-
expect(secondSession.session?.sampled).toBe('session');
161-
expect(secondSession.recordingMode).toBe('session'); // this turns to "session" because of `sampled` value being "session"
163+
expect(secondSession.session?.sampled).toBe('buffer');
164+
expect(secondSession.session?.dirty).toBe(true);
162165
expect(secondSession.session?.id).toBe(firstSessionId);
163166
expect(secondSession.session?.segmentId).toBe(1);
167+
// Because a flush attempt was made and not allowed to complete, segmentId increased from 0,
168+
// so we resume in session mode
169+
expect(secondSession.recordingMode).toBe('session');
164170
},
165171
);
166172

@@ -229,7 +235,8 @@ sentryTest(
229235
const firstSession = await getReplaySnapshot(page);
230236
const firstSessionId = firstSession.session?.id;
231237
expect(firstSessionId).toBeDefined();
232-
expect(firstSession.session?.sampled).toBe('session'); // Should be marked as 'session'
238+
expect(firstSession.session?.sampled).toBe('buffer');
239+
expect(firstSession.session?.dirty).toBe(true);
233240
expect(firstSession.recordingMode).toBe('buffer'); // But still in buffer mode
234241

235242
// Now expire the session by manipulating session storage
@@ -266,7 +273,7 @@ sentryTest(
266273
);
267274

268275
sentryTest(
269-
'[buffer-mode] marks session as sampled immediately when error is sampled',
276+
'marks session as dirty immediately when error is sampled in buffer mode',
270277
async ({ getLocalTestUrl, page, browserName }) => {
271278
if (shouldSkipReplayTest() || browserName === 'webkit') {
272279
sentryTest.skip();
@@ -296,18 +303,18 @@ sentryTest(
296303
const reqErrorPromise = waitForErrorRequest(page);
297304
await page.locator('#error1').click();
298305

299-
// Check session state BEFORE waiting for error to be sent
300-
// The session should already be marked as 'session' synchronously
301306
const duringErrorProcessing = await getReplaySnapshot(page);
302-
expect(duringErrorProcessing.session?.sampled).toBe('session');
307+
expect(duringErrorProcessing.session?.sampled).toBe('buffer');
308+
expect(duringErrorProcessing.session?.dirty).toBe(true);
303309
expect(duringErrorProcessing.recordingMode).toBe('buffer'); // Still in buffer recording mode
304310

305311
await reqErrorPromise;
306312

307313
// After error is sent, verify state is still correct
308314
const afterError = await getReplaySnapshot(page);
309-
expect(afterError.session?.sampled).toBe('session');
315+
expect(afterError.session?.sampled).toBe('buffer');
310316
expect(afterError.recordingMode).toBe('session');
317+
expect(afterError.session?.dirty).toBe(false);
311318

312319
// Verify the session was persisted to sessionStorage (if sticky sessions enabled)
313320
const sessionData = await page.evaluate(() => {
@@ -317,6 +324,7 @@ sentryTest(
317324
});
318325

319326
expect(sessionData).toBeDefined();
320-
expect(sessionData.sampled).toBe('session');
327+
expect(sessionData.sampled).toBe('buffer');
328+
expect(sessionData.dirty).toBe(false);
321329
},
322330
);

0 commit comments

Comments
 (0)