Skip to content

Commit 144b7db

Browse files
authored
Merge branch 'develop' into timfish/feat/pino-integration
2 parents 850c19d + e1c4367 commit 144b7db

File tree

73 files changed

+1944
-306
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+1944
-306
lines changed

.size-limit.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ module.exports = [
135135
path: 'packages/vue/build/esm/index.js',
136136
import: createImport('init', 'browserTracingIntegration'),
137137
gzip: true,
138-
limit: '42 KB',
138+
limit: '43 KB',
139139
},
140140
// Svelte SDK (ESM)
141141
{

dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/http-timings/test.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import type { Event } from '@sentry/core';
33
import { sentryTest } from '../../../../utils/fixtures';
44
import { getMultipleSentryEnvelopeRequests, shouldSkipTracingTest } from '../../../../utils/helpers';
55

6-
sentryTest('should create fetch spans with http timing @firefox', async ({ browserName, getLocalTestUrl, page }) => {
6+
sentryTest('creates fetch spans with http timing', async ({ browserName, getLocalTestUrl, page }) => {
77
const supportedBrowsers = ['chromium', 'firefox'];
88

99
if (shouldSkipTracingTest() || !supportedBrowsers.includes(browserName)) {
@@ -40,6 +40,8 @@ sentryTest('should create fetch spans with http timing @firefox', async ({ brows
4040
trace_id: tracingEvent.contexts?.trace?.trace_id,
4141
data: expect.objectContaining({
4242
'http.request.redirect_start': expect.any(Number),
43+
'http.request.redirect_end': expect.any(Number),
44+
'http.request.worker_start': expect.any(Number),
4345
'http.request.fetch_start': expect.any(Number),
4446
'http.request.domain_lookup_start': expect.any(Number),
4547
'http.request.domain_lookup_end': expect.any(Number),
@@ -49,6 +51,7 @@ sentryTest('should create fetch spans with http timing @firefox', async ({ brows
4951
'http.request.request_start': expect.any(Number),
5052
'http.request.response_start': expect.any(Number),
5153
'http.request.response_end': expect.any(Number),
54+
'http.request.time_to_first_byte': expect.any(Number),
5255
'network.protocol.version': expect.any(String),
5356
}),
5457
}),

dev-packages/browser-integration-tests/suites/tracing/metrics/pageload-resource-spans/test.ts

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { type Event, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORI
44
import { sentryTest } from '../../../../utils/fixtures';
55
import { getFirstSentryEnvelopeRequest, shouldSkipTracingTest } from '../../../../utils/helpers';
66

7-
sentryTest('should add resource spans to pageload transaction', async ({ getLocalTestUrl, page, browserName }) => {
7+
sentryTest('adds resource spans to pageload transaction', async ({ getLocalTestUrl, page, browserName }) => {
88
if (shouldSkipTracingTest()) {
99
sentryTest.skip();
1010
}
@@ -74,6 +74,19 @@ sentryTest('should add resource spans to pageload transaction', async ({ getLoca
7474
'http.decoded_response_content_length': expect.any(Number),
7575
'http.response_content_length': expect.any(Number),
7676
'http.response_transfer_size': expect.any(Number),
77+
'http.request.connect_start': expect.any(Number),
78+
'http.request.connection_end': expect.any(Number),
79+
'http.request.domain_lookup_end': expect.any(Number),
80+
'http.request.domain_lookup_start': expect.any(Number),
81+
'http.request.fetch_start': expect.any(Number),
82+
'http.request.redirect_end': expect.any(Number),
83+
'http.request.redirect_start': expect.any(Number),
84+
'http.request.request_start': expect.any(Number),
85+
'http.request.secure_connection_start': expect.any(Number),
86+
'http.request.worker_start': expect.any(Number),
87+
'http.request.response_end': expect.any(Number),
88+
'http.request.response_start': expect.any(Number),
89+
'http.request.time_to_first_byte': expect.any(Number),
7790
'network.protocol.name': '',
7891
'network.protocol.version': 'unknown',
7992
[SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'resource.img',
@@ -82,6 +95,7 @@ sentryTest('should add resource spans to pageload transaction', async ({ getLoca
8295
'url.same_origin': false,
8396
'url.scheme': 'https',
8497
...(!isWebkitRun && {
98+
'http.response.status_code': expect.any(Number),
8599
'resource.render_blocking_status': 'non-blocking',
86100
'http.response_delivery_type': '',
87101
}),
@@ -96,11 +110,30 @@ sentryTest('should add resource spans to pageload transaction', async ({ getLoca
96110
trace_id: traceId,
97111
});
98112

113+
// range check: TTFB must be >0 (at least in this case) and it's reasonable to
114+
// assume <10 seconds. This also tests that we're reporting TTFB in seconds.
115+
const imgSpanTtfb = imgSpan?.data['http.request.time_to_first_byte'];
116+
expect(imgSpanTtfb).toBeGreaterThan(0);
117+
expect(imgSpanTtfb).toBeLessThan(10);
118+
99119
expect(linkSpan).toEqual({
100120
data: {
101121
'http.decoded_response_content_length': expect.any(Number),
102122
'http.response_content_length': expect.any(Number),
103123
'http.response_transfer_size': expect.any(Number),
124+
'http.request.connect_start': expect.any(Number),
125+
'http.request.connection_end': expect.any(Number),
126+
'http.request.domain_lookup_end': expect.any(Number),
127+
'http.request.domain_lookup_start': expect.any(Number),
128+
'http.request.fetch_start': expect.any(Number),
129+
'http.request.redirect_end': expect.any(Number),
130+
'http.request.redirect_start': expect.any(Number),
131+
'http.request.request_start': expect.any(Number),
132+
'http.request.secure_connection_start': expect.any(Number),
133+
'http.request.worker_start': expect.any(Number),
134+
'http.request.response_end': expect.any(Number),
135+
'http.request.response_start': expect.any(Number),
136+
'http.request.time_to_first_byte': expect.any(Number),
104137
'network.protocol.name': '',
105138
'network.protocol.version': 'unknown',
106139
[SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'resource.link',
@@ -109,6 +142,7 @@ sentryTest('should add resource spans to pageload transaction', async ({ getLoca
109142
'url.same_origin': false,
110143
'url.scheme': 'https',
111144
...(!isWebkitRun && {
145+
'http.response.status_code': expect.any(Number),
112146
'resource.render_blocking_status': 'non-blocking',
113147
'http.response_delivery_type': '',
114148
}),
@@ -128,6 +162,19 @@ sentryTest('should add resource spans to pageload transaction', async ({ getLoca
128162
'http.decoded_response_content_length': expect.any(Number),
129163
'http.response_content_length': expect.any(Number),
130164
'http.response_transfer_size': expect.any(Number),
165+
'http.request.connection_end': expect.any(Number),
166+
'http.request.connect_start': 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),
131178
'network.protocol.name': '',
132179
'network.protocol.version': 'unknown',
133180
'sentry.op': 'resource.script',
@@ -136,6 +183,7 @@ sentryTest('should add resource spans to pageload transaction', async ({ getLoca
136183
'url.same_origin': false,
137184
'url.scheme': 'https',
138185
...(!isWebkitRun && {
186+
'http.response.status_code': expect.any(Number),
139187
'resource.render_blocking_status': 'non-blocking',
140188
'http.response_delivery_type': '',
141189
}),

dev-packages/e2e-tests/test-applications/angular-17/tests/errors.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ test('sends an error', async ({ page }) => {
1919
type: 'Error',
2020
value: 'Error thrown from Angular 17 E2E test app',
2121
mechanism: {
22-
type: 'angular',
22+
type: 'auto.function.angular.error_handler',
2323
handled: false,
2424
},
2525
},
@@ -54,7 +54,7 @@ test('assigns the correct transaction value after a navigation', async ({ page }
5454
type: 'Error',
5555
value: 'Error thrown from user page',
5656
mechanism: {
57-
type: 'angular',
57+
type: 'auto.function.angular.error_handler',
5858
handled: false,
5959
},
6060
},

dev-packages/e2e-tests/test-applications/angular-18/tests/errors.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ test('sends an error', async ({ page }) => {
1919
type: 'Error',
2020
value: 'Error thrown from Angular 18 E2E test app',
2121
mechanism: {
22-
type: 'angular',
22+
type: 'auto.function.angular.error_handler',
2323
handled: false,
2424
},
2525
},
@@ -54,7 +54,7 @@ test('assigns the correct transaction value after a navigation', async ({ page }
5454
type: 'Error',
5555
value: 'Error thrown from user page',
5656
mechanism: {
57-
type: 'angular',
57+
type: 'auto.function.angular.error_handler',
5858
handled: false,
5959
},
6060
},

dev-packages/e2e-tests/test-applications/angular-19/tests/errors.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ test('sends an error', async ({ page }) => {
1919
type: 'Error',
2020
value: 'Error thrown from Angular 18 E2E test app',
2121
mechanism: {
22-
type: 'angular',
22+
type: 'auto.function.angular.error_handler',
2323
handled: false,
2424
},
2525
},
@@ -54,7 +54,7 @@ test('assigns the correct transaction value after a navigation', async ({ page }
5454
type: 'Error',
5555
value: 'Error thrown from user page',
5656
mechanism: {
57-
type: 'angular',
57+
type: 'auto.function.angular.error_handler',
5858
handled: false,
5959
},
6060
},

dev-packages/e2e-tests/test-applications/angular-20/tests/errors.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ test('sends an error', async ({ page }) => {
1919
type: 'Error',
2020
value: 'Error thrown from Angular 20 E2E test app',
2121
mechanism: {
22-
type: 'angular',
22+
type: 'auto.function.angular.error_handler',
2323
handled: false,
2424
},
2525
},
@@ -54,7 +54,7 @@ test('assigns the correct transaction value after a navigation', async ({ page }
5454
type: 'Error',
5555
value: 'Error thrown from user page',
5656
mechanism: {
57-
type: 'angular',
57+
type: 'auto.function.angular.error_handler',
5858
handled: false,
5959
},
6060
},

dev-packages/e2e-tests/test-applications/nextjs-13/tests/client/click-error.test.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,18 @@ test('should send error for faulty click handlers', async ({ page }) => {
1313

1414
expect(errorEvent).toBeDefined();
1515

16-
const frames = errorEvent?.exception?.values?.[0]?.stacktrace?.frames;
16+
const exception = errorEvent?.exception?.values?.[0];
17+
18+
expect(exception?.mechanism).toEqual({
19+
type: 'auto.browser.browserapierrors.addEventListener',
20+
handled: false,
21+
data: {
22+
handler: expect.any(String), // the handler name varies in CI and locally
23+
target: 'EventTarget',
24+
},
25+
});
1726

27+
const frames = exception?.stacktrace?.frames;
1828
await test.step('error should have a non-url-encoded top frame in route with parameter', () => {
1929
if (process.env.TEST_ENV === 'development') {
2030
// In dev mode we want to check local source mapping

dev-packages/e2e-tests/test-applications/nextjs-13/tests/server/getServerSideProps.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ test('Should report an error event for errors thrown in getServerSideProps', asy
2323
exception: {
2424
values: [
2525
{
26-
mechanism: { handled: false, type: 'generic' },
26+
mechanism: { handled: false, type: 'auto.function.nextjs.wrapped' },
2727
type: 'Error',
2828
value: 'getServerSideProps Error',
2929
stacktrace: {
@@ -110,7 +110,7 @@ test('Should report an error event for errors thrown in getServerSideProps in pa
110110
exception: {
111111
values: [
112112
{
113-
mechanism: { handled: false, type: 'generic' },
113+
mechanism: { handled: false, type: 'auto.function.nextjs.wrapped' },
114114
type: 'Error',
115115
value: 'custom page extension error',
116116
stacktrace: {

dev-packages/e2e-tests/test-applications/nextjs-13/tests/server/pages-router-api-endpoints.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ test('Should report an error event for errors thrown in pages router api routes'
3030
function: 'withSentry',
3131
},
3232
handled: false,
33-
type: 'instrument',
33+
type: 'auto.http.nextjs.api_handler',
3434
},
3535
stacktrace: { frames: expect.arrayContaining([]) },
3636
type: 'Error',

0 commit comments

Comments
 (0)