@@ -9,8 +9,8 @@ import { TextEncoder } from 'util';
99
1010import { BASE_TIMESTAMP } from '../..' ;
1111import {
12+ beforeAddNetworkBreadcrumb ,
1213 getBodySize ,
13- handleNetworkBreadcrumb ,
1414 parseContentSizeHeader ,
1515} from '../../../src/coreHandlers/handleNetworkBreadcrumbs' ;
1616import type { EventBufferArray } from '../../../src/eventBuffer/EventBufferArray' ;
@@ -78,7 +78,7 @@ describe('Unit | coreHandlers | handleNetworkBreadcrumbs', () => {
7878 } ) ;
7979 } ) ;
8080
81- describe ( 'handleNetworkBreadcrumb ()' , ( ) => {
81+ describe ( 'beforeAddNetworkBreadcrumb ()' , ( ) => {
8282 let options : {
8383 replay : ReplayContainer ;
8484 textEncoder : TextEncoderInternal ;
@@ -98,7 +98,7 @@ describe('Unit | coreHandlers | handleNetworkBreadcrumbs', () => {
9898 it ( 'ignores breadcrumb without data' , ( ) => {
9999 const breadcrumb : Breadcrumb = { } ;
100100 const hint : BreadcrumbHint = { } ;
101- handleNetworkBreadcrumb ( options , breadcrumb , hint ) ;
101+ beforeAddNetworkBreadcrumb ( options , breadcrumb , hint ) ;
102102
103103 expect ( breadcrumb ) . toEqual ( { } ) ;
104104 expect ( ( options . replay . eventBuffer as EventBufferArray ) . events ) . toEqual ( [ ] ) ;
@@ -110,7 +110,7 @@ describe('Unit | coreHandlers | handleNetworkBreadcrumbs', () => {
110110 data : { } ,
111111 } ;
112112 const hint : BreadcrumbHint = { } ;
113- handleNetworkBreadcrumb ( options , breadcrumb , hint ) ;
113+ beforeAddNetworkBreadcrumb ( options , breadcrumb , hint ) ;
114114
115115 expect ( breadcrumb ) . toEqual ( {
116116 category : 'foo' ,
@@ -138,7 +138,7 @@ describe('Unit | coreHandlers | handleNetworkBreadcrumbs', () => {
138138 startTimestamp : BASE_TIMESTAMP + 1000 ,
139139 endTimestamp : BASE_TIMESTAMP + 2000 ,
140140 } ;
141- handleNetworkBreadcrumb ( options , breadcrumb , hint ) ;
141+ beforeAddNetworkBreadcrumb ( options , breadcrumb , hint ) ;
142142
143143 expect ( breadcrumb ) . toEqual ( {
144144 category : 'xhr' ,
@@ -192,7 +192,7 @@ describe('Unit | coreHandlers | handleNetworkBreadcrumbs', () => {
192192 startTimestamp : BASE_TIMESTAMP + 1000 ,
193193 endTimestamp : BASE_TIMESTAMP + 2000 ,
194194 } ;
195- handleNetworkBreadcrumb ( options , breadcrumb , hint ) ;
195+ beforeAddNetworkBreadcrumb ( options , breadcrumb , hint ) ;
196196
197197 expect ( breadcrumb ) . toEqual ( {
198198 category : 'xhr' ,
@@ -246,7 +246,7 @@ describe('Unit | coreHandlers | handleNetworkBreadcrumbs', () => {
246246 startTimestamp : BASE_TIMESTAMP + 1000 ,
247247 endTimestamp : BASE_TIMESTAMP + 2000 ,
248248 } ;
249- handleNetworkBreadcrumb ( options , breadcrumb , hint ) ;
249+ beforeAddNetworkBreadcrumb ( options , breadcrumb , hint ) ;
250250
251251 expect ( breadcrumb ) . toEqual ( {
252252 category : 'fetch' ,
@@ -260,6 +260,7 @@ describe('Unit | coreHandlers | handleNetworkBreadcrumbs', () => {
260260 } ) ;
261261
262262 jest . runAllTimers ( ) ;
263+ await Promise . resolve ( ) ;
263264
264265 expect ( ( options . replay . eventBuffer as EventBufferArray ) . events ) . toEqual ( [
265266 {
@@ -305,7 +306,7 @@ describe('Unit | coreHandlers | handleNetworkBreadcrumbs', () => {
305306 startTimestamp : BASE_TIMESTAMP + 1000 ,
306307 endTimestamp : BASE_TIMESTAMP + 2000 ,
307308 } ;
308- handleNetworkBreadcrumb ( options , breadcrumb , hint ) ;
309+ beforeAddNetworkBreadcrumb ( options , breadcrumb , hint ) ;
309310
310311 expect ( breadcrumb ) . toEqual ( {
311312 category : 'fetch' ,
@@ -316,6 +317,7 @@ describe('Unit | coreHandlers | handleNetworkBreadcrumbs', () => {
316317 } ) ;
317318
318319 jest . runAllTimers ( ) ;
320+ await Promise . resolve ( ) ;
319321
320322 expect ( ( options . replay . eventBuffer as EventBufferArray ) . events ) . toEqual ( [
321323 {
@@ -336,5 +338,63 @@ describe('Unit | coreHandlers | handleNetworkBreadcrumbs', () => {
336338 } ,
337339 ] ) ;
338340 } ) ;
341+
342+ it ( 'parses fetch response body if necessary' , async ( ) => {
343+ const breadcrumb : Breadcrumb = {
344+ category : 'fetch' ,
345+ data : {
346+ url : 'https://example.com' ,
347+ status_code : 200 ,
348+ } ,
349+ } ;
350+
351+ const mockResponse = {
352+ headers : {
353+ get : ( ) => '' ,
354+ } ,
355+ clone : ( ) => mockResponse ,
356+ text : ( ) => Promise . resolve ( 'test response' ) ,
357+ } as unknown as Response ;
358+
359+ const hint : FetchBreadcrumbHint = {
360+ input : [ ] ,
361+ response : mockResponse ,
362+ startTimestamp : BASE_TIMESTAMP + 1000 ,
363+ endTimestamp : BASE_TIMESTAMP + 2000 ,
364+ } ;
365+ beforeAddNetworkBreadcrumb ( options , breadcrumb , hint ) ;
366+
367+ expect ( breadcrumb ) . toEqual ( {
368+ category : 'fetch' ,
369+ data : {
370+ status_code : 200 ,
371+ url : 'https://example.com' ,
372+ } ,
373+ } ) ;
374+
375+ await Promise . resolve ( ) ;
376+ jest . runAllTimers ( ) ;
377+ await Promise . resolve ( ) ;
378+
379+ expect ( ( options . replay . eventBuffer as EventBufferArray ) . events ) . toEqual ( [
380+ {
381+ type : 5 ,
382+ timestamp : ( BASE_TIMESTAMP + 1000 ) / 1000 ,
383+ data : {
384+ tag : 'performanceSpan' ,
385+ payload : {
386+ data : {
387+ statusCode : 200 ,
388+ responseBodySize : 13 ,
389+ } ,
390+ description : 'https://example.com' ,
391+ endTimestamp : ( BASE_TIMESTAMP + 2000 ) / 1000 ,
392+ op : 'resource.fetch' ,
393+ startTimestamp : ( BASE_TIMESTAMP + 1000 ) / 1000 ,
394+ } ,
395+ } ,
396+ } ,
397+ ] ) ;
398+ } ) ;
339399 } ) ;
340400} ) ;
0 commit comments