6
6
spanIsSampled ,
7
7
spanToJSON ,
8
8
} from '@sentry/core' ;
9
- import { NodeClient , setCurrentClient } from '@sentry/node-experimental ' ;
10
- import * as SentryNode from '@sentry/node-experimental ' ;
11
- import type { Span } from '@sentry/types' ;
9
+ import { NodeClient , setCurrentClient } from '@sentry/node' ;
10
+ import * as SentryNode from '@sentry/node' ;
11
+ import type { EventEnvelopeHeaders , Span } from '@sentry/types' ;
12
12
import type { Handle } from '@sveltejs/kit' ;
13
13
import { redirect } from '@sveltejs/kit' ;
14
14
import { vi } from 'vitest' ;
@@ -43,6 +43,7 @@ function mockEvent(override: Record<string, unknown> = {}): Parameters<Handle>[0
43
43
isDataRequest : false ,
44
44
45
45
...override ,
46
+ isSubRequest : false ,
46
47
} ;
47
48
48
49
return event ;
@@ -103,7 +104,7 @@ beforeEach(() => {
103
104
mockCaptureException . mockClear ( ) ;
104
105
} ) ;
105
106
106
- describe ( 'handleSentry ' , ( ) => {
107
+ describe ( 'sentryHandle ' , ( ) => {
107
108
describe . each ( [
108
109
// isSync, isError, expectedResponse
109
110
[ Type . Sync , true , undefined ] ,
@@ -117,6 +118,7 @@ describe('handleSentry', () => {
117
118
response = await sentryHandle ( ) ( { event : mockEvent ( ) , resolve : resolve ( type , isError ) } ) ;
118
119
} catch ( e ) {
119
120
expect ( e ) . toBeInstanceOf ( Error ) ;
121
+ // @ts -expect-error - this is fine
120
122
expect ( e . message ) . toEqual ( type ) ;
121
123
}
122
124
@@ -197,7 +199,7 @@ describe('handleSentry', () => {
197
199
) ;
198
200
} ) ;
199
201
200
- it ( ' creates a transaction from sentry-trace header' , async ( ) => {
202
+ it ( " creates a transaction from sentry-trace header but doesn't populate a new DSC" , async ( ) => {
201
203
const event = mockEvent ( {
202
204
request : {
203
205
headers : {
@@ -219,6 +221,11 @@ describe('handleSentry', () => {
219
221
}
220
222
} ) ;
221
223
224
+ let envelopeHeaders : EventEnvelopeHeaders | undefined = undefined ;
225
+ client . on ( 'beforeEnvelope' , env => {
226
+ envelopeHeaders = env [ 0 ] as EventEnvelopeHeaders ;
227
+ } ) ;
228
+
222
229
try {
223
230
await sentryHandle ( ) ( { event, resolve : resolve ( type , isError ) } ) ;
224
231
} catch ( e ) {
@@ -229,6 +236,7 @@ describe('handleSentry', () => {
229
236
expect ( _span ! . spanContext ( ) . traceId ) . toEqual ( '1234567890abcdef1234567890abcdef' ) ;
230
237
expect ( spanToJSON ( _span ! ) . parent_span_id ) . toEqual ( '1234567890abcdef' ) ;
231
238
expect ( spanIsSampled ( _span ! ) ) . toEqual ( true ) ;
239
+ expect ( envelopeHeaders ! . trace ) . toEqual ( { } ) ;
232
240
} ) ;
233
241
234
242
it ( 'creates a transaction with dynamic sampling context from baggage header' , async ( ) => {
@@ -261,14 +269,19 @@ describe('handleSentry', () => {
261
269
}
262
270
} ) ;
263
271
272
+ let envelopeHeaders : EventEnvelopeHeaders | undefined = undefined ;
273
+ client . on ( 'beforeEnvelope' , env => {
274
+ envelopeHeaders = env [ 0 ] as EventEnvelopeHeaders ;
275
+ } ) ;
276
+
264
277
try {
265
278
await sentryHandle ( ) ( { event, resolve : resolve ( type , isError ) } ) ;
266
279
} catch ( e ) {
267
280
//
268
281
}
269
282
270
283
expect ( _span ! ) . toBeDefined ( ) ;
271
- expect ( _span . metadata . dynamicSamplingContext ) . toEqual ( {
284
+ expect ( envelopeHeaders ! . trace ) . toEqual ( {
272
285
environment : 'production' ,
273
286
release : '1.0.0' ,
274
287
public_key : 'dogsarebadatkeepingsecrets' ,
@@ -312,6 +325,7 @@ describe('handleSentry', () => {
312
325
await sentryHandle ( ) ( { event, resolve : mockResolve } ) ;
313
326
} catch ( e ) {
314
327
expect ( e ) . toBeInstanceOf ( Error ) ;
328
+ // @ts -expect-error - this is fine
315
329
expect ( e . message ) . toEqual ( type ) ;
316
330
}
317
331
0 commit comments