@@ -9,8 +9,8 @@ import { TextEncoder } from 'util';
9
9
10
10
import { BASE_TIMESTAMP } from '../..' ;
11
11
import {
12
+ beforeAddNetworkBreadcrumb ,
12
13
getBodySize ,
13
- handleNetworkBreadcrumb ,
14
14
parseContentSizeHeader ,
15
15
} from '../../../src/coreHandlers/handleNetworkBreadcrumbs' ;
16
16
import type { EventBufferArray } from '../../../src/eventBuffer/EventBufferArray' ;
@@ -78,7 +78,7 @@ describe('Unit | coreHandlers | handleNetworkBreadcrumbs', () => {
78
78
} ) ;
79
79
} ) ;
80
80
81
- describe ( 'handleNetworkBreadcrumb ()' , ( ) => {
81
+ describe ( 'beforeAddNetworkBreadcrumb ()' , ( ) => {
82
82
let options : {
83
83
replay : ReplayContainer ;
84
84
textEncoder : TextEncoderInternal ;
@@ -98,7 +98,7 @@ describe('Unit | coreHandlers | handleNetworkBreadcrumbs', () => {
98
98
it ( 'ignores breadcrumb without data' , ( ) => {
99
99
const breadcrumb : Breadcrumb = { } ;
100
100
const hint : BreadcrumbHint = { } ;
101
- handleNetworkBreadcrumb ( options , breadcrumb , hint ) ;
101
+ beforeAddNetworkBreadcrumb ( options , breadcrumb , hint ) ;
102
102
103
103
expect ( breadcrumb ) . toEqual ( { } ) ;
104
104
expect ( ( options . replay . eventBuffer as EventBufferArray ) . events ) . toEqual ( [ ] ) ;
@@ -110,7 +110,7 @@ describe('Unit | coreHandlers | handleNetworkBreadcrumbs', () => {
110
110
data : { } ,
111
111
} ;
112
112
const hint : BreadcrumbHint = { } ;
113
- handleNetworkBreadcrumb ( options , breadcrumb , hint ) ;
113
+ beforeAddNetworkBreadcrumb ( options , breadcrumb , hint ) ;
114
114
115
115
expect ( breadcrumb ) . toEqual ( {
116
116
category : 'foo' ,
@@ -138,7 +138,7 @@ describe('Unit | coreHandlers | handleNetworkBreadcrumbs', () => {
138
138
startTimestamp : BASE_TIMESTAMP + 1000 ,
139
139
endTimestamp : BASE_TIMESTAMP + 2000 ,
140
140
} ;
141
- handleNetworkBreadcrumb ( options , breadcrumb , hint ) ;
141
+ beforeAddNetworkBreadcrumb ( options , breadcrumb , hint ) ;
142
142
143
143
expect ( breadcrumb ) . toEqual ( {
144
144
category : 'xhr' ,
@@ -192,7 +192,7 @@ describe('Unit | coreHandlers | handleNetworkBreadcrumbs', () => {
192
192
startTimestamp : BASE_TIMESTAMP + 1000 ,
193
193
endTimestamp : BASE_TIMESTAMP + 2000 ,
194
194
} ;
195
- handleNetworkBreadcrumb ( options , breadcrumb , hint ) ;
195
+ beforeAddNetworkBreadcrumb ( options , breadcrumb , hint ) ;
196
196
197
197
expect ( breadcrumb ) . toEqual ( {
198
198
category : 'xhr' ,
@@ -246,7 +246,7 @@ describe('Unit | coreHandlers | handleNetworkBreadcrumbs', () => {
246
246
startTimestamp : BASE_TIMESTAMP + 1000 ,
247
247
endTimestamp : BASE_TIMESTAMP + 2000 ,
248
248
} ;
249
- handleNetworkBreadcrumb ( options , breadcrumb , hint ) ;
249
+ beforeAddNetworkBreadcrumb ( options , breadcrumb , hint ) ;
250
250
251
251
expect ( breadcrumb ) . toEqual ( {
252
252
category : 'fetch' ,
@@ -260,6 +260,7 @@ describe('Unit | coreHandlers | handleNetworkBreadcrumbs', () => {
260
260
} ) ;
261
261
262
262
jest . runAllTimers ( ) ;
263
+ await Promise . resolve ( ) ;
263
264
264
265
expect ( ( options . replay . eventBuffer as EventBufferArray ) . events ) . toEqual ( [
265
266
{
@@ -305,7 +306,7 @@ describe('Unit | coreHandlers | handleNetworkBreadcrumbs', () => {
305
306
startTimestamp : BASE_TIMESTAMP + 1000 ,
306
307
endTimestamp : BASE_TIMESTAMP + 2000 ,
307
308
} ;
308
- handleNetworkBreadcrumb ( options , breadcrumb , hint ) ;
309
+ beforeAddNetworkBreadcrumb ( options , breadcrumb , hint ) ;
309
310
310
311
expect ( breadcrumb ) . toEqual ( {
311
312
category : 'fetch' ,
@@ -316,6 +317,7 @@ describe('Unit | coreHandlers | handleNetworkBreadcrumbs', () => {
316
317
} ) ;
317
318
318
319
jest . runAllTimers ( ) ;
320
+ await Promise . resolve ( ) ;
319
321
320
322
expect ( ( options . replay . eventBuffer as EventBufferArray ) . events ) . toEqual ( [
321
323
{
@@ -336,5 +338,63 @@ describe('Unit | coreHandlers | handleNetworkBreadcrumbs', () => {
336
338
} ,
337
339
] ) ;
338
340
} ) ;
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
+ } ) ;
339
399
} ) ;
340
400
} ) ;
0 commit comments