1+ import { testBlobReplayRequest } from '../../../tools/testing-server/utils/expect-tests'
12import { srConfig , getSR } from '../util/helpers'
23
34describe ( 'Replay API' , ( ) => {
5+ let sessionReplaysCapture
6+ beforeEach ( async ( ) => {
7+ sessionReplaysCapture = await browser . testHandle . createNetworkCaptures ( 'bamServer' , { test : testBlobReplayRequest } )
8+ } )
49 afterEach ( async ( ) => {
510 await browser . destroyAgentSession ( )
611 } )
712
8- it ( 'recordReplay called before page load does not start a replay (no entitlements yet)' , async ( ) => {
13+ it ( 'recordReplay called before page load starts a replay' , async ( ) => {
14+ await browser . enableSessionReplay ( 0 , 0 )
15+ const [ sessionReplayHarvests ] = await Promise . all ( [
16+ sessionReplaysCapture . waitForResult ( { totalCount : 1 } ) ,
17+ browser . url ( await browser . testHandle . assetURL ( 'rrweb-api-record-before-load.html' , srConfig ( ) ) )
18+ . then ( ( ) => browser . waitForFeatureAggregate ( 'session_replay' ) )
19+ ] )
20+
21+ await browser . pause ( 1000 )
22+ await expect ( getSR ( ) ) . resolves . toMatchObject ( {
23+ initialized : true ,
24+ mode : 1
25+ } )
26+ expect ( sessionReplayHarvests . length ) . toBeGreaterThanOrEqual ( 1 )
27+ } )
28+
29+ it ( 'recordReplay called after page load starts a replay' , async ( ) => {
930 await browser . enableSessionReplay ( 0 , 0 )
10- await browser . url ( await browser . testHandle . assetURL ( 'rrweb-api-record-before-load.html' , srConfig ( ) ) )
31+
32+ browser . url ( await browser . testHandle . assetURL ( 'rrweb-api-record-no-call.html' , srConfig ( ) ) )
1133 . then ( ( ) => browser . waitForFeatureAggregate ( 'session_replay' ) )
1234
35+ await browser . pause ( 5000 )
36+
37+ await expect ( getSR ( ) ) . resolves . toMatchObject ( {
38+ initialized : true ,
39+ mode : 0
40+ } )
41+
42+ const [ sessionReplayHarvests ] = await Promise . all ( [
43+ sessionReplaysCapture . waitForResult ( { totalCount : 1 } ) ,
44+ browser . execute ( function ( ) {
45+ newrelic . recordReplay ( )
46+ } )
47+ ] )
48+
1349 await browser . pause ( 1000 )
1450 await expect ( getSR ( ) ) . resolves . toMatchObject ( {
1551 initialized : true ,
1652 mode : 1
1753 } )
54+ expect ( sessionReplayHarvests . length ) . toBeGreaterThanOrEqual ( 1 )
1855 } )
1956
2057 it ( 'pauseReplay called before page load stops the replay' , async ( ) => {
2158 await browser . enableSessionReplay ( 100 , 0 )
22- await browser . url ( await browser . testHandle . assetURL ( 'rrweb-api-pause-before-load.html' , srConfig ( ) ) )
23- . then ( ( ) => browser . waitForFeatureAggregate ( 'session_replay' ) )
59+ const [ sessionReplayHarvests ] = await Promise . all ( [
60+ sessionReplaysCapture . waitForResult ( { timeout : 10000 } ) ,
61+ browser . url ( await browser . testHandle . assetURL ( 'rrweb-api-pause-before-load.html' , srConfig ( ) ) )
62+ . then ( ( ) => browser . waitForFeatureAggregate ( 'session_replay' ) )
63+ ] )
2464
2565 await browser . pause ( 1000 ) // give time for the features to drain fully
2666 await expect ( getSR ( ) ) . resolves . toMatchObject ( {
@@ -29,11 +69,12 @@ describe('Replay API', () => {
2969 events : expect . any ( Array ) ,
3070 mode : 0
3171 } )
72+ expect ( sessionReplayHarvests ) . toHaveLength ( 0 )
3273 } )
3374
3475 it ( 'Paused replays can be restarted on next page load of same session' , async ( ) => {
3576 const url = await browser . testHandle . assetURL ( 'rrweb-instrumented.html' , srConfig ( ) )
36- await browser . url ( url ) . then ( ( ) => browser . waitForSessionReplayRecording ( ) )
77+ await browser . url ( url ) . then ( ( ) => browser . waitForAgentLoad ( ) )
3778 let replayState = await getSR ( )
3879 expect ( replayState . mode ) . toEqual ( 1 )
3980
@@ -52,5 +93,7 @@ describe('Replay API', () => {
5293 } ) . then ( ( ) => browser . pause ( 500 ) )
5394 replayState = await getSR ( ) // record should be able to restart replay on this same session on a hard page load
5495 expect ( replayState . mode ) . toEqual ( 1 )
96+ const sessionReplayHarvests = await sessionReplaysCapture . waitForResult ( { totalCount : 1 } )
97+ expect ( sessionReplayHarvests . length ) . toBeGreaterThanOrEqual ( 1 )
5598 } )
5699} )
0 commit comments