@@ -631,25 +631,74 @@ describe('integration', function () {
631631 } ,
632632 function ( ) {
633633 var Raven = iframe . contentWindow . Raven ,
634- breadcrumbs = Raven . _breadcrumbs ;
634+ breadcrumbs = Raven . _breadcrumbs ,
635+ breadcrumbUrl = '/test/integration/example.json' ;
636+
637+ if ( 'fetch' in window ) {
638+ assert . equal ( breadcrumbs . length , 1 ) ;
639+
640+ assert . equal ( breadcrumbs [ 0 ] . type , 'http' ) ;
641+ assert . equal ( breadcrumbs [ 0 ] . category , 'fetch' ) ;
642+ assert . equal ( breadcrumbs [ 0 ] . data . method , 'GET' ) ;
643+ assert . equal ( breadcrumbs [ 0 ] . data . url , breadcrumbUrl ) ;
644+ } else {
645+ // otherwise we use a fetch polyfill based on xhr
646+ assert . equal ( breadcrumbs . length , 2 ) ;
647+
648+ assert . equal ( breadcrumbs [ 0 ] . type , 'http' ) ;
649+ assert . equal ( breadcrumbs [ 0 ] . category , 'fetch' ) ;
650+ assert . equal ( breadcrumbs [ 0 ] . data . method , 'GET' ) ;
651+ assert . equal ( breadcrumbs [ 0 ] . data . url , breadcrumbUrl ) ;
652+
653+ assert . equal ( breadcrumbs [ 1 ] . type , 'http' ) ;
654+ assert . equal ( breadcrumbs [ 1 ] . category , 'xhr' ) ;
655+ assert . equal ( breadcrumbs [ 1 ] . data . method , 'GET' ) ;
656+ assert . equal ( breadcrumbs [ 1 ] . data . url , breadcrumbUrl ) ;
657+ }
658+ }
659+ ) ;
660+ } ) ;
661+
662+ it ( 'should record a fetch request with Request obj instead of URL string' , function ( done ) {
663+ var iframe = this . iframe ;
664+
665+ iframeExecute ( iframe , done ,
666+ function ( ) {
667+ // some browsers trigger onpopstate for load / reset breadcrumb state
668+ Raven . _breadcrumbs = [ ] ;
669+
670+ fetch ( new Request ( '/test/integration/example.json' ) ) . then ( function ( ) {
671+ setTimeout ( done ) ;
672+ } , function ( ) {
673+ setTimeout ( done ) ;
674+ } ) ;
675+ } ,
676+ function ( ) {
677+ var Raven = iframe . contentWindow . Raven ,
678+ breadcrumbs = Raven . _breadcrumbs ,
679+ breadcrumbUrl = '/test/integration/example.json' ;
635680
636681 if ( 'fetch' in window ) {
637682 assert . equal ( breadcrumbs . length , 1 ) ;
638683
639684 assert . equal ( breadcrumbs [ 0 ] . type , 'http' ) ;
640685 assert . equal ( breadcrumbs [ 0 ] . category , 'fetch' ) ;
641686 assert . equal ( breadcrumbs [ 0 ] . data . method , 'GET' ) ;
687+ // Request constructor normalizes the url
688+ assert . ok ( breadcrumbs [ 0 ] . data . url . indexOf ( breadcrumbUrl ) !== - 1 ) ;
642689 } else {
643690 // otherwise we use a fetch polyfill based on xhr
644691 assert . equal ( breadcrumbs . length , 2 ) ;
645692
646693 assert . equal ( breadcrumbs [ 0 ] . type , 'http' ) ;
647694 assert . equal ( breadcrumbs [ 0 ] . category , 'fetch' ) ;
648695 assert . equal ( breadcrumbs [ 0 ] . data . method , 'GET' ) ;
696+ assert . ok ( breadcrumbs [ 0 ] . data . url . indexOf ( breadcrumbUrl ) !== - 1 ) ;
649697
650698 assert . equal ( breadcrumbs [ 1 ] . type , 'http' ) ;
651699 assert . equal ( breadcrumbs [ 1 ] . category , 'xhr' ) ;
652700 assert . equal ( breadcrumbs [ 1 ] . data . method , 'GET' ) ;
701+ assert . ok ( breadcrumbs [ 1 ] . data . url . indexOf ( breadcrumbUrl ) !== - 1 ) ;
653702 }
654703 }
655704 ) ;
0 commit comments