@@ -37,8 +37,16 @@ type SnapshotNode = {
3737 * @param segmentId the segment_id of the replay event
3838 * @returns
3939 */
40- export function waitForReplayRequest ( page : Page , segmentId ?: number ) : Promise < Response > {
41- return page . waitForResponse ( res => {
40+ export async function waitForReplayRequest (
41+ page : Page ,
42+ segmentIdOrOptions ?: number | { segmentId ?: number ; requestNum ?: number } ,
43+ ) : Promise < Response > {
44+ let replayRequestCounter = 0 ;
45+
46+ const segmentId = typeof segmentIdOrOptions === 'number' ? segmentIdOrOptions : segmentIdOrOptions ?. segmentId ;
47+ const requestNum = typeof segmentIdOrOptions === 'number' ? undefined : segmentIdOrOptions ?. requestNum ;
48+
49+ const response = await page . waitForResponse ( res => {
4250 const req = res . request ( ) ;
4351
4452 const postData = req . postData ( ) ;
@@ -53,6 +61,13 @@ export function waitForReplayRequest(page: Page, segmentId?: number): Promise<Re
5361 return false ;
5462 }
5563
64+ const currentRequestNum = replayRequestCounter ;
65+ replayRequestCounter ++ ;
66+
67+ if ( requestNum !== undefined ) {
68+ return currentRequestNum === requestNum ;
69+ }
70+
5671 if ( segmentId !== undefined ) {
5772 return event . segment_id === segmentId ;
5873 }
@@ -62,6 +77,8 @@ export function waitForReplayRequest(page: Page, segmentId?: number): Promise<Re
6277 return false ;
6378 }
6479 } ) ;
80+
81+ return response ;
6582}
6683
6784export function isReplayEvent ( event : Event ) : event is ReplayEvent {
0 commit comments