11import { expect } from '@playwright/test' ;
22
33import { sentryTest } from '../../../../utils/fixtures' ;
4- import { envelopeRequestParser } from '../../../../utils/helpers' ;
4+ import { envelopeRequestParser , waitForErrorRequest } from '../../../../utils/helpers' ;
55import {
66 expectedClickBreadcrumb ,
77 expectedConsoleBreadcrumb ,
@@ -10,6 +10,7 @@ import {
1010import {
1111 getReplayEvent ,
1212 getReplayRecordingContent ,
13+ isReplayEvent ,
1314 shouldSkipReplayTest ,
1415 waitForReplayRequest ,
1516} from '../../../../utils/replayHelpers' ;
@@ -26,14 +27,18 @@ sentryTest(
2627 const reqPromise0 = waitForReplayRequest ( page , 0 ) ;
2728 const reqPromise1 = waitForReplayRequest ( page , 1 ) ;
2829 const reqPromise2 = waitForReplayRequest ( page , 2 ) ;
30+ const reqErrorPromise = waitForErrorRequest ( page ) ;
2931
3032 await page . route ( 'https://dsn.ingest.sentry.io/**/*' , route => {
3133 const event = envelopeRequestParser ( route . request ( ) ) ;
3234 // error events have no type field
3335 if ( event && ! event . type && event . event_id ) {
3436 errorEventId = event . event_id ;
3537 }
36- callsToSentry ++ ;
38+ // We only want to count errors & replays here
39+ if ( event && ( ! event . type || isReplayEvent ( event ) ) ) {
40+ callsToSentry ++ ;
41+ }
3742
3843 return route . fulfill ( {
3944 status : 200 ,
@@ -46,13 +51,16 @@ sentryTest(
4651
4752 await page . goto ( url ) ;
4853 await page . click ( '#go-background' ) ;
54+ await new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ;
55+
4956 expect ( callsToSentry ) . toEqual ( 0 ) ;
5057
5158 await page . click ( '#error' ) ;
5259 const req0 = await reqPromise0 ;
5360
5461 await page . click ( '#go-background' ) ;
5562 const req1 = await reqPromise1 ;
63+ await reqErrorPromise ;
5664
5765 expect ( callsToSentry ) . toEqual ( 3 ) ; // 1 error, 2 replay events
5866
@@ -69,11 +77,12 @@ sentryTest(
6977 const event2 = getReplayEvent ( req2 ) ;
7078 const content2 = getReplayRecordingContent ( req2 ) ;
7179
80+ expect ( callsToSentry ) . toBe ( 4 ) ; // 1 error, 3 replay events
81+
7282 expect ( event0 ) . toEqual (
7383 getExpectedReplayEvent ( {
7484 contexts : { replay : { error_sample_rate : 1 , session_sample_rate : 0 } } ,
75- // @ts -ignore this is fine
76- error_ids : [ errorEventId ] ,
85+ error_ids : [ errorEventId ! ] ,
7786 replay_type : 'error' ,
7887 } ) ,
7988 ) ;
@@ -97,7 +106,6 @@ sentryTest(
97106 expect ( event1 ) . toEqual (
98107 getExpectedReplayEvent ( {
99108 contexts : { replay : { error_sample_rate : 1 , session_sample_rate : 0 } } ,
100- // @ts -ignore this is fine
101109 replay_type : 'error' , // although we're in session mode, we still send 'error' as replay_type
102110 replay_start_timestamp : undefined ,
103111 segment_id : 1 ,
@@ -108,14 +116,12 @@ sentryTest(
108116 // Also the second snapshot should have a full snapshot, as we switched from error to session
109117 // mode which triggers another checkout
110118 expect ( content1 . fullSnapshots ) . toHaveLength ( 1 ) ;
111- expect ( content1 . incrementalSnapshots ) . toHaveLength ( 0 ) ;
112119
113120 // The next event should just be a normal replay event as we're now in session mode and
114121 // we continue recording everything
115122 expect ( event2 ) . toEqual (
116123 getExpectedReplayEvent ( {
117124 contexts : { replay : { error_sample_rate : 1 , session_sample_rate : 0 } } ,
118- // @ts -ignore this is fine
119125 replay_type : 'error' ,
120126 replay_start_timestamp : undefined ,
121127 segment_id : 2 ,
0 commit comments