1- import type { Event , Span as SpanType } from '@sentry/types' ;
1+ import type { Event , Span } from '@sentry/types' ;
22import {
33 SEMANTIC_ATTRIBUTE_SENTRY_OP ,
44 addTracingExtensions ,
77 getGlobalScope ,
88 getIsolationScope ,
99 setCurrentClient ,
10+ spanIsSampled ,
1011 spanToJSON ,
1112 withScope ,
1213} from '../../../src' ;
@@ -18,6 +19,7 @@ import {
1819 startSpan ,
1920 startSpanManual ,
2021} from '../../../src/tracing' ;
22+ import { getSpanTree } from '../../../src/tracing/utils' ;
2123import { TestClient , getDefaultTestClientOptions } from '../../mocks/client' ;
2224
2325beforeAll ( ( ) => {
@@ -92,9 +94,9 @@ describe('startSpan', () => {
9294 } ) ;
9395
9496 it ( 'creates a transaction' , async ( ) => {
95- let ref : any = undefined ;
97+ let _span : Span | undefined = undefined ;
9698 client . on ( 'finishTransaction' , transaction => {
97- ref = transaction ;
99+ _span = transaction ;
98100 } ) ;
99101 try {
100102 await startSpan ( { name : 'GET users/[id]' } , ( ) => {
@@ -103,16 +105,16 @@ describe('startSpan', () => {
103105 } catch ( e ) {
104106 //
105107 }
106- expect ( ref ) . toBeDefined ( ) ;
108+ expect ( _span ) . toBeDefined ( ) ;
107109
108- expect ( spanToJSON ( ref ) . description ) . toEqual ( 'GET users/[id]' ) ;
109- expect ( ref . status ) . toEqual ( isError ? 'internal_error' : undefined ) ;
110+ expect ( spanToJSON ( _span ! ) . description ) . toEqual ( 'GET users/[id]' ) ;
111+ expect ( spanToJSON ( _span ! ) . status ) . toEqual ( isError ? 'internal_error' : undefined ) ;
110112 } ) ;
111113
112114 it ( 'allows traceparent information to be overriden' , async ( ) => {
113- let ref : any = undefined ;
115+ let _span : Span | undefined = undefined ;
114116 client . on ( 'finishTransaction' , transaction => {
115- ref = transaction ;
117+ _span = transaction ;
116118 } ) ;
117119 try {
118120 await startSpan (
@@ -129,17 +131,17 @@ describe('startSpan', () => {
129131 } catch ( e ) {
130132 //
131133 }
132- expect ( ref ) . toBeDefined ( ) ;
134+ expect ( _span ) . toBeDefined ( ) ;
133135
134- expect ( ref . sampled ) . toEqual ( true ) ;
135- expect ( ref . traceId ) . toEqual ( '12345678901234567890123456789012' ) ;
136- expect ( ref . parentSpanId ) . toEqual ( '1234567890123456' ) ;
136+ expect ( spanIsSampled ( _span ! ) ) . toEqual ( true ) ;
137+ expect ( spanToJSON ( _span ! ) . trace_id ) . toEqual ( '12345678901234567890123456789012' ) ;
138+ expect ( spanToJSON ( _span ! ) . parent_span_id ) . toEqual ( '1234567890123456' ) ;
137139 } ) ;
138140
139141 it ( 'allows for transaction to be mutated' , async ( ) => {
140- let ref : any = undefined ;
142+ let _span : Span | undefined = undefined ;
141143 client . on ( 'finishTransaction' , transaction => {
142- ref = transaction ;
144+ _span = transaction ;
143145 } ) ;
144146 try {
145147 await startSpan ( { name : 'GET users/[id]' } , span => {
@@ -152,13 +154,13 @@ describe('startSpan', () => {
152154 //
153155 }
154156
155- expect ( spanToJSON ( ref ) . op ) . toEqual ( 'http.server' ) ;
157+ expect ( spanToJSON ( _span ! ) . op ) . toEqual ( 'http.server' ) ;
156158 } ) ;
157159
158160 it ( 'creates a span with correct description' , async ( ) => {
159- let ref : any = undefined ;
161+ let _span : Span | undefined = undefined ;
160162 client . on ( 'finishTransaction' , transaction => {
161- ref = transaction ;
163+ _span = transaction ;
162164 } ) ;
163165 try {
164166 await startSpan ( { name : 'GET users/[id]' , parentSampled : true } , ( ) => {
@@ -170,16 +172,19 @@ describe('startSpan', () => {
170172 //
171173 }
172174
173- expect ( ref . spanRecorder . spans ) . toHaveLength ( 2 ) ;
174- expect ( spanToJSON ( ref . spanRecorder . spans [ 1 ] ) . description ) . toEqual ( 'SELECT * from users' ) ;
175- expect ( ref . spanRecorder . spans [ 1 ] . parentSpanId ) . toEqual ( ref . spanId ) ;
176- expect ( ref . spanRecorder . spans [ 1 ] . status ) . toEqual ( isError ? 'internal_error' : undefined ) ;
175+ expect ( _span ) . toBeDefined ( ) ;
176+ const spans = getSpanTree ( _span ! ) ;
177+
178+ expect ( spans ) . toHaveLength ( 2 ) ;
179+ expect ( spanToJSON ( spans [ 1 ] ) . description ) . toEqual ( 'SELECT * from users' ) ;
180+ expect ( spanToJSON ( spans [ 1 ] ) . parent_span_id ) . toEqual ( _span ! . spanContext ( ) . spanId ) ;
181+ expect ( spanToJSON ( spans [ 1 ] ) . status ) . toEqual ( isError ? 'internal_error' : undefined ) ;
177182 } ) ;
178183
179184 it ( 'allows for span to be mutated' , async ( ) => {
180- let ref : any = undefined ;
185+ let _span : Span | undefined = undefined ;
181186 client . on ( 'finishTransaction' , transaction => {
182- ref = transaction ;
187+ _span = transaction ;
183188 } ) ;
184189 try {
185190 await startSpan ( { name : 'GET users/[id]' , parentSampled : true } , ( ) => {
@@ -194,8 +199,11 @@ describe('startSpan', () => {
194199 //
195200 }
196201
197- expect ( ref . spanRecorder . spans ) . toHaveLength ( 2 ) ;
198- expect ( spanToJSON ( ref . spanRecorder . spans [ 1 ] ) . op ) . toEqual ( 'db.query' ) ;
202+ expect ( _span ) . toBeDefined ( ) ;
203+ const spans = getSpanTree ( _span ! ) ;
204+
205+ expect ( spans ) . toHaveLength ( 2 ) ;
206+ expect ( spanToJSON ( spans [ 1 ] ) . op ) . toEqual ( 'db.query' ) ;
199207 } ) ;
200208
201209 it . each ( [
@@ -204,9 +212,9 @@ describe('startSpan', () => {
204212 // attribute should take precedence over top level origin
205213 { origin : 'manual' , attributes : { 'sentry.origin' : 'auto.http.browser' } } ,
206214 ] ) ( 'correctly sets the span origin' , async ( ) => {
207- let ref : any = undefined ;
215+ let _span : Span | undefined = undefined ;
208216 client . on ( 'finishTransaction' , transaction => {
209- ref = transaction ;
217+ _span = transaction ;
210218 } ) ;
211219 try {
212220 await startSpan ( { name : 'GET users/[id]' , origin : 'auto.http.browser' } , ( ) => {
@@ -216,7 +224,8 @@ describe('startSpan', () => {
216224 //
217225 }
218226
219- const jsonSpan = spanToJSON ( ref ) ;
227+ expect ( _span ) . toBeDefined ( ) ;
228+ const jsonSpan = spanToJSON ( _span ! ) ;
220229 expect ( jsonSpan ) . toEqual ( {
221230 data : {
222231 'sentry.origin' : 'auto.http.browser' ,
@@ -944,7 +953,7 @@ describe('startInactiveSpan', () => {
944953 setCurrentClient ( client ) ;
945954 client . init ( ) ;
946955
947- let span : SpanType | undefined ;
956+ let span : Span | undefined ;
948957
949958 withScope ( scope => {
950959 scope . setTag ( 'scope' , 1 ) ;
0 commit comments