1
1
import { expect } from '@playwright/test' ;
2
- import { SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE , type Event } from '@sentry/core' ;
2
+ import { SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE } from '@sentry/core' ;
3
3
4
4
import { sentryTest } from '../../../../../utils/fixtures' ;
5
- import {
6
- envelopeRequestParser ,
7
- getFirstSentryEnvelopeRequest ,
8
- shouldSkipTracingTest ,
9
- waitForTransactionRequest ,
10
- } from '../../../../../utils/helpers' ;
5
+ import { envelopeRequestParser , shouldSkipTracingTest , waitForTransactionRequest } from '../../../../../utils/helpers' ;
11
6
12
7
sentryTest ( "navigation spans link back to previous trace's root span" , async ( { getLocalTestUrl, page } ) => {
13
8
if ( shouldSkipTracingTest ( ) ) {
@@ -16,24 +11,34 @@ sentryTest("navigation spans link back to previous trace's root span", async ({
16
11
17
12
const url = await getLocalTestUrl ( { testDir : __dirname } ) ;
18
13
19
- const pageloadRequest = await getFirstSentryEnvelopeRequest < Event > ( page , url ) ;
20
- const navigationRequest = await getFirstSentryEnvelopeRequest < Event > ( page , `${ url } #foo` ) ;
21
- const navigation2Request = await getFirstSentryEnvelopeRequest < Event > ( page , `${ url } #bar` ) ;
14
+ const pageloadTraceContext = await sentryTest . step ( 'Initial pageload' , async ( ) => {
15
+ const pageloadRequestPromise = waitForTransactionRequest ( page , evt => evt . contexts ?. trace ?. op === 'pageload' ) ;
16
+ await page . goto ( url ) ;
17
+ const pageloadRequest = envelopeRequestParser ( await pageloadRequestPromise ) ;
18
+ return pageloadRequest . contexts ?. trace ;
19
+ } ) ;
22
20
23
- const pageloadTraceContext = pageloadRequest . contexts ?. trace ;
24
- const navigationTraceContext = navigationRequest . contexts ?. trace ;
25
- const navigation2TraceContext = navigation2Request . contexts ?. trace ;
21
+ const navigation1TraceContext = await sentryTest . step ( 'First navigation' , async ( ) => {
22
+ const navigation1RequestPromise = waitForTransactionRequest ( page , evt => evt . contexts ?. trace ?. op === 'navigation' ) ;
23
+ await page . goto ( `${ url } #foo` ) ;
24
+ const navigation1Request = envelopeRequestParser ( await navigation1RequestPromise ) ;
25
+ return navigation1Request . contexts ?. trace ;
26
+ } ) ;
27
+
28
+ const navigation2TraceContext = await sentryTest . step ( 'Second navigation' , async ( ) => {
29
+ const navigation2RequestPromise = waitForTransactionRequest ( page , evt => evt . contexts ?. trace ?. op === 'navigation' ) ;
30
+ await page . goto ( `${ url } #bar` ) ;
31
+ const navigation2Request = envelopeRequestParser ( await navigation2RequestPromise ) ;
32
+ return navigation2Request . contexts ?. trace ;
33
+ } ) ;
26
34
27
35
const pageloadTraceId = pageloadTraceContext ?. trace_id ;
28
- const navigationTraceId = navigationTraceContext ?. trace_id ;
36
+ const navigation1TraceId = navigation1TraceContext ?. trace_id ;
29
37
const navigation2TraceId = navigation2TraceContext ?. trace_id ;
30
38
31
- expect ( pageloadTraceContext ?. op ) . toBe ( 'pageload' ) ;
32
- expect ( navigationTraceContext ?. op ) . toBe ( 'navigation' ) ;
33
- expect ( navigation2TraceContext ?. op ) . toBe ( 'navigation' ) ;
34
-
35
39
expect ( pageloadTraceContext ?. links ) . toBeUndefined ( ) ;
36
- expect ( navigationTraceContext ?. links ) . toEqual ( [
40
+
41
+ expect ( navigation1TraceContext ?. links ) . toEqual ( [
37
42
{
38
43
trace_id : pageloadTraceId ,
39
44
span_id : pageloadTraceContext ?. span_id ,
@@ -46,17 +51,17 @@ sentryTest("navigation spans link back to previous trace's root span", async ({
46
51
47
52
expect ( navigation2TraceContext ?. links ) . toEqual ( [
48
53
{
49
- trace_id : navigationTraceId ,
50
- span_id : navigationTraceContext ?. span_id ,
54
+ trace_id : navigation1TraceId ,
55
+ span_id : navigation1TraceContext ?. span_id ,
51
56
sampled : true ,
52
57
attributes : {
53
58
[ SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE ] : 'previous_trace' ,
54
59
} ,
55
60
} ,
56
61
] ) ;
57
62
58
- expect ( pageloadTraceId ) . not . toEqual ( navigationTraceId ) ;
59
- expect ( navigationTraceId ) . not . toEqual ( navigation2TraceId ) ;
63
+ expect ( pageloadTraceId ) . not . toEqual ( navigation1TraceId ) ;
64
+ expect ( navigation1TraceId ) . not . toEqual ( navigation2TraceId ) ;
60
65
expect ( pageloadTraceId ) . not . toEqual ( navigation2TraceId ) ;
61
66
} ) ;
62
67
@@ -67,14 +72,21 @@ sentryTest("doesn't link between hard page reloads by default", async ({ getLoca
67
72
68
73
const url = await getLocalTestUrl ( { testDir : __dirname } ) ;
69
74
70
- const pageload1Event = await getFirstSentryEnvelopeRequest < Event > ( page , url ) ;
75
+ await sentryTest . step ( 'First pageload' , async ( ) => {
76
+ const pageloadRequestPromise = waitForTransactionRequest ( page , evt => evt . contexts ?. trace ?. op === 'pageload' ) ;
77
+ await page . goto ( url ) ;
78
+ const pageload1Event = envelopeRequestParser ( await pageloadRequestPromise ) ;
79
+
80
+ expect ( pageload1Event . contexts ?. trace ) . toBeDefined ( ) ;
81
+ expect ( pageload1Event . contexts ?. trace ?. links ) . toBeUndefined ( ) ;
82
+ } ) ;
71
83
72
- const pageload2RequestPromise = waitForTransactionRequest ( page , evt => evt . contexts ?. trace ?. op === 'pageload' ) ;
73
- await page . reload ( ) ;
74
- const pageload2Event = envelopeRequestParser ( await pageload2RequestPromise ) ;
84
+ await sentryTest . step ( 'Second pageload' , async ( ) => {
85
+ const pageload2RequestPromise = waitForTransactionRequest ( page , evt => evt . contexts ?. trace ?. op === 'pageload' ) ;
86
+ await page . reload ( ) ;
87
+ const pageload2Event = envelopeRequestParser ( await pageload2RequestPromise ) ;
75
88
76
- expect ( pageload1Event . contexts ?. trace ) . toBeDefined ( ) ;
77
- expect ( pageload2Event . contexts ?. trace ) . toBeDefined ( ) ;
78
- expect ( pageload1Event . contexts ?. trace ?. links ) . toBeUndefined ( ) ;
79
- expect ( pageload2Event . contexts ?. trace ?. links ) . toBeUndefined ( ) ;
89
+ expect ( pageload2Event . contexts ?. trace ) . toBeDefined ( ) ;
90
+ expect ( pageload2Event . contexts ?. trace ?. links ) . toBeUndefined ( ) ;
91
+ } ) ;
80
92
} ) ;
0 commit comments