diff --git a/dev-packages/browser-integration-tests/suites/integrations/httpContext/test.ts b/dev-packages/browser-integration-tests/suites/integrations/httpContext/test.ts
index db8a384510a4..e50a658b4c9a 100644
--- a/dev-packages/browser-integration-tests/suites/integrations/httpContext/test.ts
+++ b/dev-packages/browser-integration-tests/suites/integrations/httpContext/test.ts
@@ -25,6 +25,18 @@ sentryTest('httpContextIntegration captures user-agent and referrer', async ({ g
});
});
+sentryTest('httpContextIntegration filters sensitive query params in the URL', async ({ getLocalTestUrl, page }) => {
+ const url = await getLocalTestUrl({ testDir: __dirname });
+
+ const errorEventPromise = waitForErrorRequest(page);
+
+ await page.goto(`${url}?jwt=sensitive-jwt-value&page=1`);
+
+ const errorEvent = envelopeRequestParser(await errorEventPromise);
+
+ expect(errorEvent.request?.url).toBe(`${url}?jwt=[Filtered]&page=1`);
+});
+
sentryTest('httpContextIntegration captures url, user-agent, and referer', async ({ getLocalTestUrl, page }) => {
sentryTest.skip(shouldSkipTracingTest());
const url = await getLocalTestUrl({ testDir: __dirname });
diff --git a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/pageload-sensitive-query-params-static/init.js b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/pageload-sensitive-query-params-static/init.js
new file mode 100644
index 000000000000..bb6d4918d1bf
--- /dev/null
+++ b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/pageload-sensitive-query-params-static/init.js
@@ -0,0 +1,10 @@
+import * as Sentry from '@sentry/browser';
+
+window.Sentry = Sentry;
+
+Sentry.init({
+ traceLifecycle: 'static',
+ dsn: 'https://public@dsn.ingest.sentry.io/1337',
+ integrations: [Sentry.browserTracingIntegration()],
+ tracesSampleRate: 1,
+});
diff --git a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/pageload-sensitive-query-params-static/template.html b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/pageload-sensitive-query-params-static/template.html
new file mode 100644
index 000000000000..3d3b49a9951f
--- /dev/null
+++ b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/pageload-sensitive-query-params-static/template.html
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/pageload-sensitive-query-params-static/test.ts b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/pageload-sensitive-query-params-static/test.ts
new file mode 100644
index 000000000000..8bfc5a6df874
--- /dev/null
+++ b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/pageload-sensitive-query-params-static/test.ts
@@ -0,0 +1,32 @@
+import { BROWSER_REQUEST, PAGELOAD, RESOURCE_IMG } from '@sentry/conventions/op';
+import { expect } from '@playwright/test';
+import type { Event } from '@sentry/core';
+import { sentryTest } from '../../../../utils/fixtures';
+import { envelopeRequestParser, shouldSkipTracingTest, waitForTransactionRequest } from '../../../../utils/helpers';
+
+sentryTest(
+ 'filters sensitive query params in the pageload transaction URL and span descriptions',
+ async ({ getLocalTestUrl, page }) => {
+ sentryTest.skip(shouldSkipTracingTest());
+
+ await page.route('https://sentry-test-site.example/path/to/image.svg?*', route =>
+ route.fulfill({ body: '', contentType: 'image/svg+xml' }),
+ );
+
+ const url = await getLocalTestUrl({ testDir: __dirname });
+
+ const pageloadRequestPromise = waitForTransactionRequest(page, event => event.contexts?.trace?.op === PAGELOAD);
+ await page.goto(`${url}?jwt=sensitive-jwt-value&page=1`);
+ const eventData = envelopeRequestParser(await pageloadRequestPromise);
+
+ expect(eventData.request?.url).toBe(`${url}?jwt=[Filtered]&page=1`);
+ expect(eventData.spans?.find(({ op }) => op === BROWSER_REQUEST)?.description).toBe(`${url}?jwt=[Filtered]&page=1`);
+ expect(eventData.spans?.find(({ op }) => op === RESOURCE_IMG)?.description).toBe(
+ 'https://sentry-test-site.example/path/to/image.svg?token=[Filtered]&size=2',
+ );
+
+ const serializedEvent = JSON.stringify(eventData);
+ expect(serializedEvent).not.toContain('sensitive-jwt-value');
+ expect(serializedEvent).not.toContain('sensitive-token-value');
+ },
+);
diff --git a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-lcp-static/template.html b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-lcp-static/template.html
index b613a556aca4..164dbf51f486 100644
--- a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-lcp-static/template.html
+++ b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-lcp-static/template.html
@@ -5,6 +5,6 @@
-
+