Skip to content

Commit 852d464

Browse files
committed
remove flakey browser test and move test to integration test
1 parent 682005d commit 852d464

File tree

2 files changed

+11
-72
lines changed

2 files changed

+11
-72
lines changed

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

Lines changed: 0 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -269,75 +269,3 @@ sentryTest(
269269
expect(secondSession.session?.segmentId).toBe(0);
270270
},
271271
);
272-
273-
sentryTest(
274-
'marks session as dirty immediately when error is sampled in buffer mode',
275-
async ({ getLocalTestUrl, page, browserName }) => {
276-
if (shouldSkipReplayTest() || browserName === 'webkit') {
277-
sentryTest.skip();
278-
}
279-
280-
await page.route('https://dsn.ingest.sentry.io/**/*', route => {
281-
return route.fulfill({
282-
status: 200,
283-
contentType: 'application/json',
284-
body: JSON.stringify({ id: 'test-id' }),
285-
});
286-
});
287-
288-
const replayRequestPromise = waitForReplayRequest(page, 0);
289-
290-
const url = await getLocalTestUrl({ testDir: __dirname, skipDsnRouteHandler: true });
291-
await page.goto(url);
292-
293-
// Wait for replay to initialize
294-
await new Promise(resolve => setTimeout(resolve, 100));
295-
296-
// Verify initial state - buffer mode, not sampled
297-
const initialSession = await getReplaySnapshot(page);
298-
expect(initialSession.recordingMode).toBe('buffer');
299-
expect(initialSession.session?.sampled).toBe('buffer');
300-
expect(initialSession.session?.segmentId).toBe(0);
301-
302-
// Trigger error which should immediately mark session as sampled
303-
const reqErrorPromise = waitForErrorRequest(page);
304-
await page.locator('#error1').click();
305-
306-
// await this later otherwise we have a timing issue w/ this and `getReplaySnapshot`
307-
const sessionDataOnErrorPromise = page.evaluate(() => {
308-
const sessionKey = 'sentryReplaySession';
309-
const data = sessionStorage.getItem(sessionKey);
310-
return data ? JSON.parse(data) : null;
311-
});
312-
313-
const duringErrorProcessing = await getReplaySnapshot(page);
314-
expect(duringErrorProcessing.session?.sampled).toBe('buffer');
315-
expect(duringErrorProcessing.session?.dirty).toBe(true);
316-
expect(duringErrorProcessing.recordingMode).toBe('buffer'); // Still in buffer recording mode
317-
318-
const sessionDataOnError = await sessionDataOnErrorPromise;
319-
expect(sessionDataOnError).toBeDefined();
320-
expect(sessionDataOnError.sampled).toBe('buffer');
321-
expect(sessionDataOnError.dirty).toBe(true);
322-
323-
await reqErrorPromise;
324-
325-
// Verify the session was persisted to sessionStorage (if sticky sessions enabled)
326-
const sessionData = await page.evaluate(() => {
327-
const sessionKey = 'sentryReplaySession';
328-
const data = sessionStorage.getItem(sessionKey);
329-
return data ? JSON.parse(data) : null;
330-
});
331-
332-
expect(sessionData).toBeDefined();
333-
expect(sessionData.sampled).toBe('buffer');
334-
expect(sessionData.dirty).toBe(false);
335-
336-
// Need to wait for replay request before checking `recordingMode` and `dirty`,
337-
// since they update after replay gets flushed
338-
await replayRequestPromise;
339-
const afterReplay = await getReplaySnapshot(page);
340-
expect(afterReplay.recordingMode).toBe('session');
341-
expect(afterReplay.session?.dirty).toBe(false);
342-
},
343-
);

packages/replay-internal/test/integration/errorSampleRate.test.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,21 @@ describe('Integration | errorSampleRate', () => {
8080

8181
captureException(new Error('testing'));
8282

83+
// session gets immediately marked as dirty since error will
84+
// be linked to current session (replay) id. there's a possibility
85+
// that replay never gets flushed so we must mark as dirty so we
86+
// know to refresh session in the future.
87+
expect(replay.recordingMode).toBe('buffer');
88+
expect(replay.session?.dirty).toBe(true);
89+
8390
await vi.advanceTimersToNextTimerAsync();
8491
// need 2nd tick to wait for `saveSession` to complete in `handleGlobalEvents
8592
await vi.advanceTimersToNextTimerAsync();
8693

94+
// dirty gets reset after replay is flushed
95+
expect(replay.recordingMode).toBe('session');
96+
expect(replay.session?.dirty).toBe(false);
97+
8798
expect(replay).toHaveLastSentReplay({
8899
recordingPayloadHeader: { segment_id: 0 },
89100
replayEventPayload: expect.objectContaining({

0 commit comments

Comments
 (0)