@@ -7,104 +7,107 @@ import {
7
7
shouldSkipTracingTest ,
8
8
} from '../../../../utils/helpers' ;
9
9
10
- sentryTest ( 'should create a new trace if `startNewTrace` is called' , async ( { getLocalTestUrl, page } ) => {
11
- if ( shouldSkipTracingTest ( ) ) {
12
- sentryTest . skip ( ) ;
13
- }
14
-
15
- const url = await getLocalTestUrl ( { testDir : __dirname } ) ;
16
-
17
- await page . route ( 'http://example.com/**' , route => {
18
- return route . fulfill ( {
19
- status : 200 ,
20
- contentType : 'application/json' ,
21
- body : JSON . stringify ( { } ) ,
10
+ sentryTest (
11
+ 'creates a new trace if `startNewTrace` is called and leaves old trace valid outside the callback' ,
12
+ async ( { getLocalTestUrl, page } ) => {
13
+ if ( shouldSkipTracingTest ( ) ) {
14
+ sentryTest . skip ( ) ;
15
+ }
16
+
17
+ const url = await getLocalTestUrl ( { testDir : __dirname } ) ;
18
+
19
+ await page . route ( 'http://example.com/**' , route => {
20
+ return route . fulfill ( {
21
+ status : 200 ,
22
+ contentType : 'application/json' ,
23
+ body : JSON . stringify ( { } ) ,
24
+ } ) ;
22
25
} ) ;
23
- } ) ;
24
-
25
- const [ pageloadEvent , pageloadTraceHeaders ] = await getFirstSentryEnvelopeRequest < EventAndTraceHeader > (
26
- page ,
27
- url ,
28
- eventAndTraceHeaderRequestParser ,
29
- ) ;
30
-
31
- const pageloadTraceContext = pageloadEvent . contexts ?. trace ;
32
-
33
- expect ( pageloadEvent . type ) . toEqual ( 'transaction' ) ;
34
-
35
- expect ( pageloadTraceContext ) . toMatchObject ( {
36
- op : 'pageload' ,
37
- trace_id : expect . stringMatching ( / ^ [ 0 - 9 a - f ] { 32 } $ / ) ,
38
- span_id : expect . stringMatching ( / ^ [ 0 - 9 a - f ] { 16 } $ / ) ,
39
- } ) ;
40
- expect ( pageloadTraceContext ) . not . toHaveProperty ( 'parent_span_id' ) ;
41
-
42
- expect ( pageloadTraceHeaders ) . toEqual ( {
43
- environment : 'production ' ,
44
- public_key : 'public ' ,
45
- sample_rate : '1 ' ,
46
- sampled : 'true' ,
47
- trace_id : pageloadTraceContext ?. trace_id ,
48
- } ) ;
49
-
50
- const newTraceTransactionPromise = getFirstSentryEnvelopeRequest < EventAndTraceHeader > (
51
- page ,
52
- undefined ,
53
- eventAndTraceHeaderRequestParser ,
54
- ) ;
55
-
56
- await page . locator ( '#newTrace' ) . click ( ) ;
57
-
58
- const [ newTraceTransactionEvent , newTraceTransactionTraceHeaders ] = await newTraceTransactionPromise ;
59
-
60
- expect ( newTraceTransactionEvent . type ) . toEqual ( 'transaction ' ) ;
61
- expect ( newTraceTransactionEvent . transaction ) . toEqual ( 'new-trace' ) ;
62
-
63
- const newTraceTransactionTraceContext = newTraceTransactionEvent . contexts ?. trace ;
64
- expect ( newTraceTransactionTraceContext ) . toMatchObject ( {
65
- op : 'ui.interaction.click' ,
66
- trace_id : expect . stringMatching ( / ^ [ 0 - 9 a - f ] { 32 } $ / ) ,
67
- span_id : expect . stringMatching ( / ^ [ 0 - 9 a - f ] { 16 } $ / ) ,
68
- } ) ;
69
-
70
- expect ( newTraceTransactionTraceHeaders ) . toEqual ( {
71
- environment : 'production ' ,
72
- public_key : 'public ' ,
73
- sample_rate : '1 ' ,
74
- sampled : 'true' ,
75
- trace_id : newTraceTransactionTraceContext ?. trace_id ,
76
- transaction : 'new-trace' ,
77
- } ) ;
78
-
79
- const oldTraceTransactionPromise = getFirstSentryEnvelopeRequest < EventAndTraceHeader > (
80
- page ,
81
- undefined ,
82
- eventAndTraceHeaderRequestParser ,
83
- ) ;
84
- await page . locator ( '#oldTrace' ) . click ( ) ;
85
-
86
- const [ oldTraceTransactionEvent , oldTraceTransactionTraceHeaders ] = await oldTraceTransactionPromise ;
87
-
88
- expect ( oldTraceTransactionEvent . type ) . toEqual ( 'transaction ' ) ;
89
- expect ( oldTraceTransactionEvent . transaction ) . toEqual ( 'old-trace' ) ;
90
-
91
- const oldTraceTransactionEventTraceContext = oldTraceTransactionEvent . contexts ?. trace ;
92
- expect ( oldTraceTransactionEventTraceContext ) . toMatchObject ( {
93
- op : 'ui.interaction.click' ,
94
- trace_id : expect . stringMatching ( / ^ [ 0 - 9 a - f ] { 32 } $ / ) ,
95
- span_id : expect . stringMatching ( / ^ [ 0 - 9 a - f ] { 16 } $ / ) ,
96
- } ) ;
97
-
98
- expect ( oldTraceTransactionTraceHeaders ) . toEqual ( {
99
- environment : 'production ' ,
100
- public_key : 'public ' ,
101
- sample_rate : '1 ' ,
102
- sampled : 'true' ,
103
- trace_id : oldTraceTransactionTraceHeaders ?. trace_id ,
104
- // transaction: 'old-trace', <-- this is not in the DSC because the DSC is continued from the pageload transaction
105
- // which does not have a `transaction` field because its source is URL.
106
- } ) ;
107
-
108
- expect ( oldTraceTransactionEventTraceContext ?. trace_id ) . toEqual ( pageloadTraceContext ?. trace_id ) ;
109
- expect ( newTraceTransactionTraceContext ?. trace_id ) . not . toEqual ( pageloadTraceContext ?. trace_id ) ;
110
- } ) ;
26
+
27
+ const [ pageloadEvent , pageloadTraceHeaders ] = await getFirstSentryEnvelopeRequest < EventAndTraceHeader > (
28
+ page ,
29
+ url ,
30
+ eventAndTraceHeaderRequestParser ,
31
+ ) ;
32
+
33
+ const pageloadTraceContext = pageloadEvent . contexts ?. trace ;
34
+
35
+ expect ( pageloadEvent . type ) . toEqual ( 'transaction' ) ;
36
+
37
+ expect ( pageloadTraceContext ) . toMatchObject ( {
38
+ op : 'pageload' ,
39
+ trace_id : expect . stringMatching ( / ^ [ 0 - 9 a - f ] { 32 } $ / ) ,
40
+ span_id : expect . stringMatching ( / ^ [ 0 - 9 a - f ] { 16 } $ / ) ,
41
+ } ) ;
42
+ expect ( pageloadTraceContext ) . not . toHaveProperty ( 'parent_span_id' ) ;
43
+
44
+ expect ( pageloadTraceHeaders ) . toEqual ( {
45
+ environment : 'production' ,
46
+ public_key : 'public ' ,
47
+ sample_rate : '1 ' ,
48
+ sampled : 'true ' ,
49
+ trace_id : pageloadTraceContext ?. trace_id ,
50
+ } ) ;
51
+
52
+ const newTraceTransactionPromise = getFirstSentryEnvelopeRequest < EventAndTraceHeader > (
53
+ page ,
54
+ undefined ,
55
+ eventAndTraceHeaderRequestParser ,
56
+ ) ;
57
+
58
+ await page . locator ( '#newTrace' ) . click ( ) ;
59
+
60
+ const [ newTraceTransactionEvent , newTraceTransactionTraceHeaders ] = await newTraceTransactionPromise ;
61
+
62
+ expect ( newTraceTransactionEvent . type ) . toEqual ( 'transaction' ) ;
63
+ expect ( newTraceTransactionEvent . transaction ) . toEqual ( 'new-trace ' ) ;
64
+
65
+ const newTraceTransactionTraceContext = newTraceTransactionEvent . contexts ?. trace ;
66
+ expect ( newTraceTransactionTraceContext ) . toMatchObject ( {
67
+ op : 'ui.interaction.click' ,
68
+ trace_id : expect . stringMatching ( / ^ [ 0 - 9 a - f ] { 32 } $ / ) ,
69
+ span_id : expect . stringMatching ( / ^ [ 0 - 9 a - f ] { 16 } $ / ) ,
70
+ } ) ;
71
+
72
+ expect ( newTraceTransactionTraceHeaders ) . toEqual ( {
73
+ environment : 'production' ,
74
+ public_key : 'public ' ,
75
+ sample_rate : '1 ' ,
76
+ sampled : 'true ' ,
77
+ trace_id : newTraceTransactionTraceContext ?. trace_id ,
78
+ transaction : 'new-trace' ,
79
+ } ) ;
80
+
81
+ const oldTraceTransactionPromise = getFirstSentryEnvelopeRequest < EventAndTraceHeader > (
82
+ page ,
83
+ undefined ,
84
+ eventAndTraceHeaderRequestParser ,
85
+ ) ;
86
+ await page . locator ( '#oldTrace' ) . click ( ) ;
87
+
88
+ const [ oldTraceTransactionEvent , oldTraceTransactionTraceHeaders ] = await oldTraceTransactionPromise ;
89
+
90
+ expect ( oldTraceTransactionEvent . type ) . toEqual ( 'transaction' ) ;
91
+ expect ( oldTraceTransactionEvent . transaction ) . toEqual ( 'old-trace ' ) ;
92
+
93
+ const oldTraceTransactionEventTraceContext = oldTraceTransactionEvent . contexts ?. trace ;
94
+ expect ( oldTraceTransactionEventTraceContext ) . toMatchObject ( {
95
+ op : 'ui.interaction.click' ,
96
+ trace_id : expect . stringMatching ( / ^ [ 0 - 9 a - f ] { 32 } $ / ) ,
97
+ span_id : expect . stringMatching ( / ^ [ 0 - 9 a - f ] { 16 } $ / ) ,
98
+ } ) ;
99
+
100
+ expect ( oldTraceTransactionTraceHeaders ) . toEqual ( {
101
+ environment : 'production' ,
102
+ public_key : 'public ' ,
103
+ sample_rate : '1 ' ,
104
+ sampled : 'true ' ,
105
+ trace_id : oldTraceTransactionTraceHeaders ?. trace_id ,
106
+ // transaction: 'old-trace', <-- this is not in the DSC because the DSC is continued from the pageload transaction
107
+ // which does not have a `transaction` field because its source is URL.
108
+ } ) ;
109
+
110
+ expect ( oldTraceTransactionEventTraceContext ?. trace_id ) . toEqual ( pageloadTraceContext ?. trace_id ) ;
111
+ expect ( newTraceTransactionTraceContext ?. trace_id ) . not . toEqual ( pageloadTraceContext ?. trace_id ) ;
112
+ } ,
113
+ ) ;
0 commit comments