1- import { SENTRY_OP , SENTRY_ORIGIN } from '@sentry/conventions/attributes' ;
1+ import {
2+ HTTP_REQUEST_SAME_ORIGIN ,
3+ URL_FULL ,
4+ HTTP_RESPONSE_BODY_DECODED_SIZE ,
5+ HTTP_RESPONSE_BODY_SIZE ,
6+ HTTP_RESPONSE_SIZE ,
7+ HTTP_REQUEST_CONNECT_START ,
8+ HTTP_REQUEST_CONNECTION_END ,
9+ HTTP_REQUEST_DOMAIN_LOOKUP_END ,
10+ HTTP_REQUEST_DOMAIN_LOOKUP_START ,
11+ HTTP_REQUEST_FETCH_START ,
12+ HTTP_REQUEST_REDIRECT_END ,
13+ HTTP_REQUEST_REDIRECT_START ,
14+ HTTP_REQUEST_REQUEST_START ,
15+ HTTP_REQUEST_SECURE_CONNECTION_START ,
16+ HTTP_REQUEST_WORKER_START ,
17+ HTTP_REQUEST_RESPONSE_END ,
18+ HTTP_REQUEST_RESPONSE_START ,
19+ HTTP_REQUEST_TIME_TO_FIRST_BYTE ,
20+ NETWORK_PROTOCOL_NAME ,
21+ NETWORK_PROTOCOL_VERSION ,
22+ SERVER_ADDRESS ,
23+ URL_DOMAIN ,
24+ URL_SCHEME ,
25+ HTTP_RESPONSE_STATUS_CODE ,
26+ RESOURCE_RENDER_BLOCKING_STATUS ,
27+ SENTRY_OP ,
28+ SENTRY_ORIGIN ,
29+ } from '@sentry/conventions/attributes' ;
230import type { Route } from '@playwright/test' ;
331import { expect } from '@playwright/test' ;
432import { type Event } from '@sentry/core' ;
@@ -69,46 +97,46 @@ sentryTest('adds resource spans to pageload transaction', async ({ getLocalTestU
6997 // The init bundle script is served from the test origin: its description is origin-relative,
7098 // but `url.full` retains the full absolute URL (needed for span description inference).
7199 const sameOriginScriptSpan = scriptSpans ?. find ( ( { description } ) => description === '/init.bundle.js' ) ;
72- expect ( sameOriginScriptSpan ?. data ?. [ 'http.request.same_origin' ] ) . toBe ( true ) ;
73- expect ( sameOriginScriptSpan ?. data ?. [ 'url.full' ] ) . toMatch ( / ^ h t t p s ? : \/ \/ .+ \/ i n i t \. b u n d l e \. j s $ / ) ;
100+ expect ( sameOriginScriptSpan ?. data ?. [ HTTP_REQUEST_SAME_ORIGIN ] ) . toBe ( true ) ;
101+ expect ( sameOriginScriptSpan ?. data ?. [ URL_FULL ] ) . toMatch ( / ^ h t t p s ? : \/ \/ .+ \/ i n i t \. b u n d l e \. j s $ / ) ;
74102
75103 const customScriptSpan = scriptSpans ?. find (
76104 ( { description } ) => description === 'https://sentry-test-site.example/path/to/script.js' ,
77105 ) ;
78106
79107 expect ( imgSpan ) . toEqual ( {
80108 data : {
81- 'http.response.body.decoded_size' : expect . any ( Number ) ,
82- 'http.response.body.size' : expect . any ( Number ) ,
83- 'http.response.size' : expect . any ( Number ) ,
84- 'http.request.connect_start' : expect . any ( Number ) ,
85- 'http.request.connection_end' : expect . any ( Number ) ,
86- 'http.request.domain_lookup_end' : expect . any ( Number ) ,
87- 'http.request.domain_lookup_start' : expect . any ( Number ) ,
88- 'http.request.fetch_start' : expect . any ( Number ) ,
89- 'http.request.redirect_end' : expect . any ( Number ) ,
90- 'http.request.redirect_start' : expect . any ( Number ) ,
91- 'http.request.request_start' : expect . any ( Number ) ,
92- 'http.request.secure_connection_start' : expect . any ( Number ) ,
93- 'http.request.worker_start' : expect . any ( Number ) ,
94- 'http.request.response_end' : expect . any ( Number ) ,
95- 'http.request.response_start' : expect . any ( Number ) ,
96- 'http.request.time_to_first_byte' : expect . any ( Number ) ,
97- 'network.protocol.name' : '' ,
98- 'network.protocol.version' : 'unknown' ,
109+ [ HTTP_RESPONSE_BODY_DECODED_SIZE ] : expect . any ( Number ) ,
110+ [ HTTP_RESPONSE_BODY_SIZE ] : expect . any ( Number ) ,
111+ [ HTTP_RESPONSE_SIZE ] : expect . any ( Number ) ,
112+ [ HTTP_REQUEST_CONNECT_START ] : expect . any ( Number ) ,
113+ [ HTTP_REQUEST_CONNECTION_END ] : expect . any ( Number ) ,
114+ [ HTTP_REQUEST_DOMAIN_LOOKUP_END ] : expect . any ( Number ) ,
115+ [ HTTP_REQUEST_DOMAIN_LOOKUP_START ] : expect . any ( Number ) ,
116+ [ HTTP_REQUEST_FETCH_START ] : expect . any ( Number ) ,
117+ [ HTTP_REQUEST_REDIRECT_END ] : expect . any ( Number ) ,
118+ [ HTTP_REQUEST_REDIRECT_START ] : expect . any ( Number ) ,
119+ [ HTTP_REQUEST_REQUEST_START ] : expect . any ( Number ) ,
120+ [ HTTP_REQUEST_SECURE_CONNECTION_START ] : expect . any ( Number ) ,
121+ [ HTTP_REQUEST_WORKER_START ] : expect . any ( Number ) ,
122+ [ HTTP_REQUEST_RESPONSE_END ] : expect . any ( Number ) ,
123+ [ HTTP_REQUEST_RESPONSE_START ] : expect . any ( Number ) ,
124+ [ HTTP_REQUEST_TIME_TO_FIRST_BYTE ] : expect . any ( Number ) ,
125+ [ NETWORK_PROTOCOL_NAME ] : '' ,
126+ [ NETWORK_PROTOCOL_VERSION ] : 'unknown' ,
99127 [ SENTRY_OP ] : 'resource.img' ,
100128 [ SENTRY_ORIGIN ] : 'auto.resource.browser.metrics' ,
101- 'server.address' : 'sentry-test-site.example' ,
102- 'url.domain' : 'sentry-test-site.example' ,
103- 'http.request.same_origin' : false ,
104- 'url.scheme' : 'https' ,
105- 'url.full' : 'https://sentry-test-site.example/path/to/image.svg' ,
129+ [ SERVER_ADDRESS ] : 'sentry-test-site.example' ,
130+ [ URL_DOMAIN ] : 'sentry-test-site.example' ,
131+ [ HTTP_REQUEST_SAME_ORIGIN ] : false ,
132+ [ URL_SCHEME ] : 'https' ,
133+ [ URL_FULL ] : 'https://sentry-test-site.example/path/to/image.svg' ,
106134 // WebKit reports `deliveryType` as of Playwright 1.63's build, but still no response status
107135 // or render blocking status.
108136 'http.response_delivery_type' : '' ,
109137 ...( ! isWebkitRun && {
110- 'http.response.status_code' : expect . any ( Number ) ,
111- 'resource.render_blocking_status' : 'non-blocking' ,
138+ [ HTTP_RESPONSE_STATUS_CODE ] : expect . any ( Number ) ,
139+ [ RESOURCE_RENDER_BLOCKING_STATUS ] : 'non-blocking' ,
112140 } ) ,
113141 } ,
114142 description : 'https://sentry-test-site.example/path/to/image.svg' ,
@@ -125,43 +153,43 @@ sentryTest('adds resource spans to pageload transaction', async ({ getLocalTestU
125153 // range check: TTFB is reasonably <10 seconds, which is really a check that we report it in
126154 // seconds rather than milliseconds. WebKit resolves these intercepted routes without measurable
127155 // delay, so only the other engines are held to a non-zero value.
128- const imgSpanTtfb = imgSpan ?. data [ 'http.request.time_to_first_byte' ] ;
156+ const imgSpanTtfb = imgSpan ?. data [ HTTP_REQUEST_TIME_TO_FIRST_BYTE ] ;
129157 expect ( imgSpanTtfb ) . toBeGreaterThan ( isWebkitRun ? - 1 : 0 ) ;
130158 expect ( imgSpanTtfb ) . toBeLessThan ( 10 ) ;
131159
132160 expect ( linkSpan ) . toEqual ( {
133161 data : {
134- 'http.response.body.decoded_size' : expect . any ( Number ) ,
135- 'http.response.body.size' : expect . any ( Number ) ,
136- 'http.response.size' : expect . any ( Number ) ,
137- 'http.request.connect_start' : expect . any ( Number ) ,
138- 'http.request.connection_end' : expect . any ( Number ) ,
139- 'http.request.domain_lookup_end' : expect . any ( Number ) ,
140- 'http.request.domain_lookup_start' : expect . any ( Number ) ,
141- 'http.request.fetch_start' : expect . any ( Number ) ,
142- 'http.request.redirect_end' : expect . any ( Number ) ,
143- 'http.request.redirect_start' : expect . any ( Number ) ,
144- 'http.request.request_start' : expect . any ( Number ) ,
145- 'http.request.secure_connection_start' : expect . any ( Number ) ,
146- 'http.request.worker_start' : expect . any ( Number ) ,
147- 'http.request.response_end' : expect . any ( Number ) ,
148- 'http.request.response_start' : expect . any ( Number ) ,
149- 'http.request.time_to_first_byte' : expect . any ( Number ) ,
150- 'network.protocol.name' : '' ,
151- 'network.protocol.version' : 'unknown' ,
162+ [ HTTP_RESPONSE_BODY_DECODED_SIZE ] : expect . any ( Number ) ,
163+ [ HTTP_RESPONSE_BODY_SIZE ] : expect . any ( Number ) ,
164+ [ HTTP_RESPONSE_SIZE ] : expect . any ( Number ) ,
165+ [ HTTP_REQUEST_CONNECT_START ] : expect . any ( Number ) ,
166+ [ HTTP_REQUEST_CONNECTION_END ] : expect . any ( Number ) ,
167+ [ HTTP_REQUEST_DOMAIN_LOOKUP_END ] : expect . any ( Number ) ,
168+ [ HTTP_REQUEST_DOMAIN_LOOKUP_START ] : expect . any ( Number ) ,
169+ [ HTTP_REQUEST_FETCH_START ] : expect . any ( Number ) ,
170+ [ HTTP_REQUEST_REDIRECT_END ] : expect . any ( Number ) ,
171+ [ HTTP_REQUEST_REDIRECT_START ] : expect . any ( Number ) ,
172+ [ HTTP_REQUEST_REQUEST_START ] : expect . any ( Number ) ,
173+ [ HTTP_REQUEST_SECURE_CONNECTION_START ] : expect . any ( Number ) ,
174+ [ HTTP_REQUEST_WORKER_START ] : expect . any ( Number ) ,
175+ [ HTTP_REQUEST_RESPONSE_END ] : expect . any ( Number ) ,
176+ [ HTTP_REQUEST_RESPONSE_START ] : expect . any ( Number ) ,
177+ [ HTTP_REQUEST_TIME_TO_FIRST_BYTE ] : expect . any ( Number ) ,
178+ [ NETWORK_PROTOCOL_NAME ] : '' ,
179+ [ NETWORK_PROTOCOL_VERSION ] : 'unknown' ,
152180 [ SENTRY_OP ] : 'resource.link' ,
153181 [ SENTRY_ORIGIN ] : 'auto.resource.browser.metrics' ,
154- 'server.address' : 'sentry-test-site.example' ,
155- 'url.domain' : 'sentry-test-site.example' ,
156- 'http.request.same_origin' : false ,
157- 'url.scheme' : 'https' ,
158- 'url.full' : 'https://sentry-test-site.example/path/to/style.css' ,
182+ [ SERVER_ADDRESS ] : 'sentry-test-site.example' ,
183+ [ URL_DOMAIN ] : 'sentry-test-site.example' ,
184+ [ HTTP_REQUEST_SAME_ORIGIN ] : false ,
185+ [ URL_SCHEME ] : 'https' ,
186+ [ URL_FULL ] : 'https://sentry-test-site.example/path/to/style.css' ,
159187 // WebKit reports `deliveryType` as of Playwright 1.63's build, but still no response status
160188 // or render blocking status.
161189 'http.response_delivery_type' : '' ,
162190 ...( ! isWebkitRun && {
163- 'http.response.status_code' : expect . any ( Number ) ,
164- 'resource.render_blocking_status' : 'non-blocking' ,
191+ [ HTTP_RESPONSE_STATUS_CODE ] : expect . any ( Number ) ,
192+ [ RESOURCE_RENDER_BLOCKING_STATUS ] : 'non-blocking' ,
165193 } ) ,
166194 } ,
167195 description : 'https://sentry-test-site.example/path/to/style.css' ,
@@ -177,37 +205,37 @@ sentryTest('adds resource spans to pageload transaction', async ({ getLocalTestU
177205
178206 expect ( customScriptSpan ) . toEqual ( {
179207 data : {
180- 'http.response.body.decoded_size' : expect . any ( Number ) ,
181- 'http.response.body.size' : expect . any ( Number ) ,
182- 'http.response.size' : expect . any ( Number ) ,
183- 'http.request.connection_end' : expect . any ( Number ) ,
184- 'http.request.connect_start' : expect . any ( Number ) ,
185- 'http.request.domain_lookup_end' : expect . any ( Number ) ,
186- 'http.request.domain_lookup_start' : expect . any ( Number ) ,
187- 'http.request.fetch_start' : expect . any ( Number ) ,
188- 'http.request.redirect_end' : expect . any ( Number ) ,
189- 'http.request.redirect_start' : expect . any ( Number ) ,
190- 'http.request.request_start' : expect . any ( Number ) ,
191- 'http.request.secure_connection_start' : expect . any ( Number ) ,
192- 'http.request.worker_start' : expect . any ( Number ) ,
193- 'http.request.response_end' : expect . any ( Number ) ,
194- 'http.request.response_start' : expect . any ( Number ) ,
195- 'http.request.time_to_first_byte' : expect . any ( Number ) ,
196- 'network.protocol.name' : '' ,
197- 'network.protocol.version' : 'unknown' ,
198- 'sentry.op' : 'resource.script' ,
199- 'sentry.origin' : 'auto.resource.browser.metrics' ,
200- 'server.address' : 'sentry-test-site.example' ,
201- 'url.domain' : 'sentry-test-site.example' ,
202- 'http.request.same_origin' : false ,
203- 'url.scheme' : 'https' ,
204- 'url.full' : 'https://sentry-test-site.example/path/to/script.js' ,
208+ [ HTTP_RESPONSE_BODY_DECODED_SIZE ] : expect . any ( Number ) ,
209+ [ HTTP_RESPONSE_BODY_SIZE ] : expect . any ( Number ) ,
210+ [ HTTP_RESPONSE_SIZE ] : expect . any ( Number ) ,
211+ [ HTTP_REQUEST_CONNECTION_END ] : expect . any ( Number ) ,
212+ [ HTTP_REQUEST_CONNECT_START ] : expect . any ( Number ) ,
213+ [ HTTP_REQUEST_DOMAIN_LOOKUP_END ] : expect . any ( Number ) ,
214+ [ HTTP_REQUEST_DOMAIN_LOOKUP_START ] : expect . any ( Number ) ,
215+ [ HTTP_REQUEST_FETCH_START ] : expect . any ( Number ) ,
216+ [ HTTP_REQUEST_REDIRECT_END ] : expect . any ( Number ) ,
217+ [ HTTP_REQUEST_REDIRECT_START ] : expect . any ( Number ) ,
218+ [ HTTP_REQUEST_REQUEST_START ] : expect . any ( Number ) ,
219+ [ HTTP_REQUEST_SECURE_CONNECTION_START ] : expect . any ( Number ) ,
220+ [ HTTP_REQUEST_WORKER_START ] : expect . any ( Number ) ,
221+ [ HTTP_REQUEST_RESPONSE_END ] : expect . any ( Number ) ,
222+ [ HTTP_REQUEST_RESPONSE_START ] : expect . any ( Number ) ,
223+ [ HTTP_REQUEST_TIME_TO_FIRST_BYTE ] : expect . any ( Number ) ,
224+ [ NETWORK_PROTOCOL_NAME ] : '' ,
225+ [ NETWORK_PROTOCOL_VERSION ] : 'unknown' ,
226+ [ SENTRY_OP ] : 'resource.script' ,
227+ [ SENTRY_ORIGIN ] : 'auto.resource.browser.metrics' ,
228+ [ SERVER_ADDRESS ] : 'sentry-test-site.example' ,
229+ [ URL_DOMAIN ] : 'sentry-test-site.example' ,
230+ [ HTTP_REQUEST_SAME_ORIGIN ] : false ,
231+ [ URL_SCHEME ] : 'https' ,
232+ [ URL_FULL ] : 'https://sentry-test-site.example/path/to/script.js' ,
205233 // WebKit reports `deliveryType` as of Playwright 1.63's build, but still no response status
206234 // or render blocking status.
207235 'http.response_delivery_type' : '' ,
208236 ...( ! isWebkitRun && {
209- 'http.response.status_code' : expect . any ( Number ) ,
210- 'resource.render_blocking_status' : 'non-blocking' ,
237+ [ HTTP_RESPONSE_STATUS_CODE ] : expect . any ( Number ) ,
238+ [ RESOURCE_RENDER_BLOCKING_STATUS ] : 'non-blocking' ,
211239 } ) ,
212240 } ,
213241 description : 'https://sentry-test-site.example/path/to/script.js' ,
0 commit comments