Skip to content

Commit 27933b5

Browse files
authored
Merge branch 'develop' into feat/growthbook-integration
2 parents 6d0c950 + a524022 commit 27933b5

File tree

68 files changed

+2023
-1474
lines changed

Some content is hidden

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

68 files changed

+2023
-1474
lines changed

.github/ISSUE_TEMPLATE/bug.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ body:
5151
- '@sentry/nestjs'
5252
- '@sentry/nextjs'
5353
- '@sentry/nuxt'
54-
- '@sentry/pino-transport'
5554
- '@sentry/react'
5655
- '@sentry/react-router'
5756
- '@sentry/remix'

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
- "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott
66

7+
Work in this release was contributed by @stefanvanderwolf. Thank you for your contribution!
8+
79
## 10.17.0
810

911
### Important Changes
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
fetchButton.addEventListener('click', () => {
2+
// W3C spec example: property values can contain = signs
3+
// See: https://www.w3.org/TR/baggage/#example
4+
fetch('http://sentry-test-site.example/fetch-test', {
5+
headers: {
6+
baggage: 'key1=value1;property1;property2,key2=value2,key3=value3; propertyKey=propertyValue',
7+
},
8+
});
9+
});
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<!doctype html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6+
<title>Fetch Baggage Property Values Test</title>
7+
</head>
8+
<body>
9+
<button id="fetchButton">Make Fetch Request</button>
10+
</body>
11+
</html>
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { expect } from '@playwright/test';
2+
import { TRACEPARENT_REGEXP } from '@sentry/core';
3+
import { sentryTest } from '../../../../utils/fixtures';
4+
import { shouldSkipTracingTest } from '../../../../utils/helpers';
5+
6+
sentryTest(
7+
'preserves baggage property values with equal signs in fetch requests',
8+
async ({ getLocalTestUrl, page }) => {
9+
if (shouldSkipTracingTest()) {
10+
sentryTest.skip();
11+
}
12+
13+
const url = await getLocalTestUrl({ testDir: __dirname });
14+
15+
const requestPromise = page.waitForRequest('http://sentry-test-site.example/fetch-test');
16+
17+
await page.goto(url);
18+
await page.click('#fetchButton');
19+
20+
const request = await requestPromise;
21+
22+
const requestHeaders = request.headers();
23+
24+
expect(requestHeaders).toMatchObject({
25+
'sentry-trace': expect.stringMatching(TRACEPARENT_REGEXP),
26+
});
27+
28+
const baggageHeader = requestHeaders.baggage;
29+
expect(baggageHeader).toBeDefined();
30+
31+
const baggageItems = baggageHeader.split(',').map(item => decodeURIComponent(item.trim()));
32+
33+
// Verify property values with = signs are preserved
34+
expect(baggageItems).toContainEqual(expect.stringContaining('key1=value1;property1;property2'));
35+
expect(baggageItems).toContainEqual(expect.stringContaining('key2=value2'));
36+
expect(baggageItems).toContainEqual(expect.stringContaining('key3=value3; propertyKey=propertyValue'));
37+
38+
// Verify Sentry baggage is also present
39+
expect(baggageHeader).toMatch(/sentry-/);
40+
},
41+
);
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
const xhr = new XMLHttpRequest();
2+
3+
xhr.open('GET', 'http://sentry-test-site.example/1');
4+
// W3C spec example: property values can contain = signs
5+
// See: https://www.w3.org/TR/baggage/#example
6+
xhr.setRequestHeader('baggage', 'key1=value1;property1;property2,key2=value2,key3=value3; propertyKey=propertyValue');
7+
8+
xhr.send();
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { expect } from '@playwright/test';
2+
import { TRACEPARENT_REGEXP } from '@sentry/core';
3+
import { sentryTest } from '../../../../utils/fixtures';
4+
import { shouldSkipTracingTest } from '../../../../utils/helpers';
5+
6+
sentryTest('preserves baggage property values with equal signs in XHR requests', async ({ getLocalTestUrl, page }) => {
7+
if (shouldSkipTracingTest()) {
8+
sentryTest.skip();
9+
}
10+
11+
const url = await getLocalTestUrl({ testDir: __dirname });
12+
13+
const requestPromise = page.waitForRequest('http://sentry-test-site.example/1');
14+
15+
await page.goto(url);
16+
17+
const request = await requestPromise;
18+
19+
const requestHeaders = request.headers();
20+
21+
expect(requestHeaders).toMatchObject({
22+
'sentry-trace': expect.stringMatching(TRACEPARENT_REGEXP),
23+
});
24+
25+
const baggageHeader = requestHeaders.baggage;
26+
expect(baggageHeader).toBeDefined();
27+
const baggageItems = baggageHeader.split(',').map(item => decodeURIComponent(item.trim()));
28+
29+
// Verify property values with = signs are preserved
30+
expect(baggageItems).toContainEqual(expect.stringContaining('key1=value1;property1;property2'));
31+
expect(baggageItems).toContainEqual(expect.stringContaining('key2=value2'));
32+
expect(baggageItems).toContainEqual(expect.stringContaining('key3=value3; propertyKey=propertyValue'));
33+
34+
// Verify Sentry baggage is also present
35+
expect(baggageHeader).toMatch(/sentry-/);
36+
});
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { NextResponse } from 'next/server';
2+
3+
export const runtime = 'edge';
4+
export const dynamic = 'force-dynamic';
5+
6+
export async function GET() {
7+
return NextResponse.json({ message: 'Hello Edge Route Handler' });
8+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { NextResponse } from 'next/server';
2+
3+
export const dynamic = 'force-dynamic';
4+
5+
export async function GET() {
6+
return NextResponse.json({ message: 'Hello Node Route Handler' });
7+
}

dev-packages/e2e-tests/test-applications/nextjs-15/tests/pageload-tracing.test.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,6 @@ test('App router transactions should be attached to the pageload request span',
2424
});
2525

2626
test('extracts HTTP request headers as span attributes', async ({ baseURL }) => {
27-
test.skip(
28-
process.env.TEST_ENV === 'prod-turbopack' || process.env.TEST_ENV === 'dev-turbopack',
29-
'Incoming fetch request headers are not added as span attributes when Turbopack is enabled (addHeadersAsAttributes)',
30-
);
31-
3227
const serverTransactionPromise = waitForTransaction('nextjs-15', async transactionEvent => {
3328
return transactionEvent?.transaction === 'GET /pageload-tracing';
3429
});

0 commit comments

Comments
 (0)