@@ -7,7 +7,13 @@ import type { Transaction } from '../../../tracing/src';
77import { addExtensionMethods , Span , spanStatusfromHttpCode } from '../../../tracing/src' ;
88import { getDefaultBrowserClientOptions } from '../../../tracing/test/testutils' ;
99import type { FetchData , XHRData } from '../../src/browser/request' ;
10- import { fetchCallback , instrumentOutgoingRequests , shouldAttachHeaders , xhrCallback } from '../../src/browser/request' ;
10+ import {
11+ extractNetworkProtocol ,
12+ fetchCallback ,
13+ instrumentOutgoingRequests ,
14+ shouldAttachHeaders ,
15+ xhrCallback ,
16+ } from '../../src/browser/request' ;
1117import { TestClient } from '../utils/TestClient' ;
1218
1319beforeAll ( ( ) => {
@@ -388,6 +394,57 @@ describe('callbacks', () => {
388394 } ) ;
389395} ) ;
390396
397+ interface ProtocolInfo {
398+ name : string ;
399+ version : string ;
400+ }
401+
402+ describe ( 'HTTPTimings' , ( ) => {
403+ describe ( 'Extracting version from ALPN protocol' , ( ) => {
404+ const nextHopToNetworkVersion : Record < string , ProtocolInfo > = {
405+ 'http/0.9' : { name : 'http' , version : '0.9' } ,
406+ 'http/1.0' : { name : 'http' , version : '1.0' } ,
407+ 'http/1.1' : { name : 'http' , version : '1.1' } ,
408+ 'spdy/1' : { name : 'spdy' , version : '1' } ,
409+ 'spdy/2' : { name : 'spdy' , version : '2' } ,
410+ 'spdy/3' : { name : 'spdy' , version : '3' } ,
411+ 'stun.turn' : { name : 'stun.turn' , version : 'unknown' } ,
412+ 'stun.nat-discovery' : { name : 'stun.nat-discovery' , version : 'unknown' } ,
413+ h2 : { name : 'http' , version : '2' } ,
414+ h2c : { name : 'http' , version : '2c' } ,
415+ webrtc : { name : 'webrtc' , version : 'unknown' } ,
416+ 'c-webrtc' : { name : 'c-webrtc' , version : 'unknown' } ,
417+ ftp : { name : 'ftp' , version : 'unknown' } ,
418+ imap : { name : 'imap' , version : 'unknown' } ,
419+ pop3 : { name : 'pop' , version : '3' } ,
420+ managesieve : { name : 'managesieve' , version : 'unknown' } ,
421+ coap : { name : 'coap' , version : 'unknown' } ,
422+ 'xmpp-client' : { name : 'xmpp-client' , version : 'unknown' } ,
423+ 'xmpp-server' : { name : 'xmpp-server' , version : 'unknown' } ,
424+ 'acme-tls/1' : { name : 'acme-tls' , version : '1' } ,
425+ mqtt : { name : 'mqtt' , version : 'unknown' } ,
426+ dot : { name : 'dot' , version : 'unknown' } ,
427+ 'ntske/1' : { name : 'ntske' , version : '1' } ,
428+ sunrpc : { name : 'sunrpc' , version : 'unknown' } ,
429+ h3 : { name : 'http' , version : '3' } ,
430+ smb : { name : 'smb' , version : 'unknown' } ,
431+ irc : { name : 'irc' , version : 'unknown' } ,
432+ nntp : { name : 'nntp' , version : 'unknown' } ,
433+ nnsp : { name : 'nnsp' , version : 'unknown' } ,
434+ doq : { name : 'doq' , version : 'unknown' } ,
435+ 'sip/2' : { name : 'sip' , version : '2' } ,
436+ 'tds/8.0' : { name : 'tds' , version : '8.0' } ,
437+ dicom : { name : 'dicom' , version : 'unknown' } ,
438+ } ;
439+
440+ const protocols = Object . keys ( nextHopToNetworkVersion ) ;
441+ for ( const protocol of protocols ) {
442+ const expected : ProtocolInfo = nextHopToNetworkVersion [ protocol ] ;
443+ expect ( extractNetworkProtocol ( protocol ) ) . toMatchObject ( expected ) ;
444+ }
445+ } ) ;
446+ } ) ;
447+
391448describe ( 'shouldAttachHeaders' , ( ) => {
392449 describe ( 'should prefer `tracePropagationTargets` over defaults' , ( ) => {
393450 it ( 'should return `true` if the url matches the new tracePropagationTargets' , ( ) => {
0 commit comments