@@ -37,8 +37,16 @@ type SnapshotNode = {
37
37
* @param segmentId the segment_id of the replay event
38
38
* @returns
39
39
*/
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 => {
42
50
const req = res . request ( ) ;
43
51
44
52
const postData = req . postData ( ) ;
@@ -53,6 +61,13 @@ export function waitForReplayRequest(page: Page, segmentId?: number): Promise<Re
53
61
return false ;
54
62
}
55
63
64
+ const currentRequestNum = replayRequestCounter ;
65
+ replayRequestCounter ++ ;
66
+
67
+ if ( requestNum !== undefined ) {
68
+ return currentRequestNum === requestNum ;
69
+ }
70
+
56
71
if ( segmentId !== undefined ) {
57
72
return event . segment_id === segmentId ;
58
73
}
@@ -62,6 +77,8 @@ export function waitForReplayRequest(page: Page, segmentId?: number): Promise<Re
62
77
return false ;
63
78
}
64
79
} ) ;
80
+
81
+ return response ;
65
82
}
66
83
67
84
export function isReplayEvent ( event : Event ) : event is ReplayEvent {
0 commit comments