diff --git a/dev-packages/browser-integration-tests/suites/tracing/request/fetch-standalone-span/init.js b/dev-packages/browser-integration-tests/suites/tracing/request/fetch-standalone-span/init.js deleted file mode 100644 index d4ad9bb47ce9..000000000000 --- a/dev-packages/browser-integration-tests/suites/tracing/request/fetch-standalone-span/init.js +++ /dev/null @@ -1,17 +0,0 @@ -import * as Sentry from '@sentry/browser'; - -window.Sentry = Sentry; - -Sentry.init({ - dsn: 'https://public@dsn.ingest.sentry.io/1337', - // disable auto span creation - integrations: [ - Sentry.browserTracingIntegration({ - instrumentPageLoad: false, - instrumentNavigation: false, - }), - ], - tracePropagationTargets: ['http://example.com'], - tracesSampleRate: 1, - autoSessionTracking: false, -}); diff --git a/dev-packages/browser-integration-tests/suites/tracing/request/fetch-standalone-span/subject.js b/dev-packages/browser-integration-tests/suites/tracing/request/fetch-standalone-span/subject.js deleted file mode 100644 index ab34b15730e4..000000000000 --- a/dev-packages/browser-integration-tests/suites/tracing/request/fetch-standalone-span/subject.js +++ /dev/null @@ -1 +0,0 @@ -fetch('http://example.com/0'); diff --git a/dev-packages/browser-integration-tests/suites/tracing/request/fetch-standalone-span/test.ts b/dev-packages/browser-integration-tests/suites/tracing/request/fetch-standalone-span/test.ts deleted file mode 100644 index ef59fbc810dd..000000000000 --- a/dev-packages/browser-integration-tests/suites/tracing/request/fetch-standalone-span/test.ts +++ /dev/null @@ -1,96 +0,0 @@ -import type { SpanEnvelope } from '@sentry/types'; -import { sentryTest } from '../../../../utils/fixtures'; -import { - getFirstSentryEnvelopeRequest, - properFullEnvelopeRequestParser, - shouldSkipTracingTest, -} from '../../../../utils/helpers'; - -import { expect } from '@playwright/test'; - -sentryTest( - "should create standalone span for fetch requests if there's no active span and should attach tracing headers", - async ({ getLocalTestUrl, page }) => { - if (shouldSkipTracingTest()) { - sentryTest.skip(); - } - - let sentryTraceHeader = ''; - let baggageHeader = ''; - - await page.route('http://example.com/**', route => { - sentryTraceHeader = route.request().headers()['sentry-trace']; - baggageHeader = route.request().headers()['baggage']; - return route.fulfill({ - status: 200, - contentType: 'application/json', - body: JSON.stringify({}), - }); - }); - - const url = await getLocalTestUrl({ testDir: __dirname }); - - const spanEnvelopePromise = getFirstSentryEnvelopeRequest( - page, - undefined, - properFullEnvelopeRequestParser, - ); - - await page.goto(url); - - const spanEnvelope = await spanEnvelopePromise; - - const spanEnvelopeHeaders = spanEnvelope[0]; - const spanEnvelopeItem = spanEnvelope[1][0][1]; - - const traceId = spanEnvelopeHeaders.trace!.trace_id; - const spanId = spanEnvelopeItem.span_id; - - expect(traceId).toMatch(/[a-f0-9]{32}/); - expect(spanId).toMatch(/[a-f0-9]{16}/); - - expect(spanEnvelopeHeaders).toEqual({ - sent_at: expect.any(String), - trace: { - environment: 'production', - public_key: 'public', - sample_rate: '1', - sampled: 'true', - trace_id: traceId, - transaction: 'GET http://example.com/0', - }, - }); - - expect(spanEnvelopeItem).toEqual({ - data: expect.objectContaining({ - 'http.method': 'GET', - 'http.response.status_code': 200, - 'http.response_content_length': expect.any(Number), - 'http.url': 'http://example.com/0', - 'sentry.op': 'http.client', - 'sentry.origin': 'auto.http.browser', - 'sentry.sample_rate': 1, - 'sentry.source': 'custom', - 'server.address': 'example.com', - type: 'fetch', - url: 'http://example.com/0', - }), - description: 'GET http://example.com/0', - op: 'http.client', - origin: 'auto.http.browser', - status: 'ok', - trace_id: traceId, - span_id: spanId, - segment_id: spanId, - is_segment: true, - start_timestamp: expect.any(Number), - timestamp: expect.any(Number), - }); - - // the standalone span was sampled, so we propagate the positive sampling decision - expect(sentryTraceHeader).toBe(`${traceId}-${spanId}-1`); - expect(baggageHeader).toBe( - `sentry-environment=production,sentry-public_key=public,sentry-trace_id=${traceId},sentry-sample_rate=1,sentry-transaction=GET%20http%3A%2F%2Fexample.com%2F0,sentry-sampled=true`, - ); - }, -); diff --git a/dev-packages/browser-integration-tests/suites/tracing/request/xhr-standalone-span/init.js b/dev-packages/browser-integration-tests/suites/tracing/request/xhr-standalone-span/init.js deleted file mode 100644 index d4ad9bb47ce9..000000000000 --- a/dev-packages/browser-integration-tests/suites/tracing/request/xhr-standalone-span/init.js +++ /dev/null @@ -1,17 +0,0 @@ -import * as Sentry from '@sentry/browser'; - -window.Sentry = Sentry; - -Sentry.init({ - dsn: 'https://public@dsn.ingest.sentry.io/1337', - // disable auto span creation - integrations: [ - Sentry.browserTracingIntegration({ - instrumentPageLoad: false, - instrumentNavigation: false, - }), - ], - tracePropagationTargets: ['http://example.com'], - tracesSampleRate: 1, - autoSessionTracking: false, -}); diff --git a/dev-packages/browser-integration-tests/suites/tracing/request/xhr-standalone-span/subject.js b/dev-packages/browser-integration-tests/suites/tracing/request/xhr-standalone-span/subject.js deleted file mode 100644 index a487cfac3676..000000000000 --- a/dev-packages/browser-integration-tests/suites/tracing/request/xhr-standalone-span/subject.js +++ /dev/null @@ -1,3 +0,0 @@ -const xhr_1 = new XMLHttpRequest(); -xhr_1.open('GET', 'http://example.com/0'); -xhr_1.send(); diff --git a/dev-packages/browser-integration-tests/suites/tracing/request/xhr-standalone-span/test.ts b/dev-packages/browser-integration-tests/suites/tracing/request/xhr-standalone-span/test.ts deleted file mode 100644 index 46c1c5d616a3..000000000000 --- a/dev-packages/browser-integration-tests/suites/tracing/request/xhr-standalone-span/test.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { expect } from '@playwright/test'; - -import type { SpanEnvelope } from '@sentry/types'; -import { sentryTest } from '../../../../utils/fixtures'; -import { - getFirstSentryEnvelopeRequest, - properFullEnvelopeRequestParser, - shouldSkipTracingTest, -} from '../../../../utils/helpers'; - -sentryTest( - "should create standalone span for XHR requests if there's no active span and should attach tracing headers", - async ({ getLocalTestUrl, page }) => { - if (shouldSkipTracingTest()) { - sentryTest.skip(); - } - - let sentryTraceHeader = ''; - let baggageHeader = ''; - - await page.route('http://example.com/**', route => { - sentryTraceHeader = route.request().headers()['sentry-trace']; - baggageHeader = route.request().headers()['baggage']; - return route.fulfill({ - status: 200, - contentType: 'application/json', - body: JSON.stringify({}), - }); - }); - - const url = await getLocalTestUrl({ testDir: __dirname }); - - const spanEnvelopePromise = getFirstSentryEnvelopeRequest( - page, - undefined, - properFullEnvelopeRequestParser, - ); - - await page.goto(url); - - const spanEnvelope = await spanEnvelopePromise; - - const spanEnvelopeHeaders = spanEnvelope[0]; - const spanEnvelopeItem = spanEnvelope[1][0][1]; - - const traceId = spanEnvelopeHeaders.trace!.trace_id; - const spanId = spanEnvelopeItem.span_id; - - expect(traceId).toMatch(/[a-f0-9]{32}/); - expect(spanId).toMatch(/[a-f0-9]{16}/); - - expect(spanEnvelopeHeaders).toEqual({ - sent_at: expect.any(String), - trace: { - environment: 'production', - public_key: 'public', - sample_rate: '1', - sampled: 'true', - trace_id: traceId, - transaction: 'GET http://example.com/0', - }, - }); - - expect(spanEnvelopeItem).toEqual({ - data: { - 'http.method': 'GET', - 'http.response.status_code': 200, - 'http.url': 'http://example.com/0', - 'sentry.op': 'http.client', - 'sentry.origin': 'auto.http.browser', - 'sentry.sample_rate': 1, - 'sentry.source': 'custom', - 'server.address': 'example.com', - type: 'xhr', - url: 'http://example.com/0', - }, - description: 'GET http://example.com/0', - op: 'http.client', - origin: 'auto.http.browser', - status: 'ok', - trace_id: traceId, - span_id: spanId, - segment_id: spanId, - is_segment: true, - start_timestamp: expect.any(Number), - timestamp: expect.any(Number), - }); - - // the standalone span was sampled, so we propagate the positive sampling decision - expect(sentryTraceHeader).toBe(`${traceId}-${spanId}-1`); - expect(baggageHeader).toBe( - `sentry-environment=production,sentry-public_key=public,sentry-trace_id=${traceId},sentry-sample_rate=1,sentry-transaction=GET%20http%3A%2F%2Fexample.com%2F0,sentry-sampled=true`, - ); - }, -); diff --git a/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/navigation/test.ts b/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/navigation/test.ts index a05f0da3d91d..461fdc052f5e 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/navigation/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/navigation/test.ts @@ -1,5 +1,5 @@ import { expect } from '@playwright/test'; -import type { Event, SpanEnvelope } from '@sentry/types'; +import type { Event } from '@sentry/types'; import { sentryTest } from '../../../../utils/fixtures'; import type { EventAndTraceHeader } from '../../../../utils/helpers'; import { shouldSkipFeedbackTest } from '../../../../utils/helpers'; @@ -7,7 +7,6 @@ import { eventAndTraceHeaderRequestParser, getFirstSentryEnvelopeRequest, getMultipleSentryEnvelopeRequests, - properFullEnvelopeRequestParser, shouldSkipTracingTest, } from '../../../../utils/helpers'; @@ -186,80 +185,6 @@ sentryTest('error during navigation has new navigation traceId', async ({ getLoc }); }); -sentryTest( - 'outgoing fetch request after navigation has navigation traceId in headers and standalone span', - async ({ getLocalTestUrl, page }) => { - if (shouldSkipTracingTest()) { - sentryTest.skip(); - } - - const url = await getLocalTestUrl({ testDir: __dirname }); - - await page.route('http://example.com/**', route => { - return route.fulfill({ - status: 200, - contentType: 'application/json', - body: JSON.stringify({}), - }); - }); - - // ensure pageload transaction is finished - await getFirstSentryEnvelopeRequest(page, url); - - const [navigationEvent, navigationTraceHeader] = await getFirstSentryEnvelopeRequest( - page, - `${url}#foo`, - eventAndTraceHeaderRequestParser, - ); - - const navigationTraceContext = navigationEvent.contexts?.trace; - - expect(navigationEvent.type).toEqual('transaction'); - const navigationTraceId = navigationTraceContext?.trace_id; - - expect(navigationTraceContext).toMatchObject({ - op: 'navigation', - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), - }); - expect(navigationTraceContext).not.toHaveProperty('parent_span_id'); - - expect(navigationTraceHeader).toEqual({ - environment: 'production', - public_key: 'public', - sample_rate: '1', - sampled: 'true', - trace_id: navigationTraceId, - }); - - const spanEnvelopePromise = getFirstSentryEnvelopeRequest( - page, - undefined, - properFullEnvelopeRequestParser, - ); - const requestPromise = page.waitForRequest('http://example.com/*'); - await page.locator('#fetchBtn').click(); - const [request, spanEnvelope] = await Promise.all([requestPromise, spanEnvelopePromise]); - const headers = request.headers(); - - const spanEnvelopeTraceHeader = spanEnvelope[0].trace; - const spanEnvelopeItem = spanEnvelope[1][0][1]; - - expect(spanEnvelopeTraceHeader).toEqual(navigationTraceHeader); - - expect(spanEnvelopeItem).toMatchObject({ - trace_id: navigationTraceContext?.trace_id, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), - }); - - // sampling decision and DSC are continued from navigation span, even after it ended - expect(headers['sentry-trace']).toEqual(`${navigationTraceId}-${spanEnvelopeItem.span_id}-1`); - expect(headers['baggage']).toEqual( - `sentry-environment=production,sentry-public_key=public,sentry-trace_id=${navigationTraceId},sentry-sample_rate=1,sentry-sampled=true`, - ); - }, -); - sentryTest( 'outgoing fetch request during navigation has navigation traceId in headers', async ({ getLocalTestUrl, page }) => { @@ -322,80 +247,6 @@ sentryTest( }, ); -sentryTest( - 'outgoing XHR request after navigation has navigation traceId in headers and in span envelope', - async ({ getLocalTestUrl, page }) => { - if (shouldSkipTracingTest()) { - sentryTest.skip(); - } - - const url = await getLocalTestUrl({ testDir: __dirname }); - - await page.route('http://example.com/**', route => { - return route.fulfill({ - status: 200, - contentType: 'application/json', - body: JSON.stringify({}), - }); - }); - - // ensure navigation transaction is finished - await getFirstSentryEnvelopeRequest(page, url); - - const [navigationEvent, navigationTraceHeader] = await getFirstSentryEnvelopeRequest( - page, - `${url}#foo`, - eventAndTraceHeaderRequestParser, - ); - - const navigationTraceContext = navigationEvent.contexts?.trace; - expect(navigationEvent.type).toEqual('transaction'); - - const navigationTraceId = navigationTraceContext?.trace_id; - - expect(navigationTraceContext).toMatchObject({ - op: 'navigation', - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), - }); - expect(navigationTraceContext).not.toHaveProperty('parent_span_id'); - - expect(navigationTraceHeader).toEqual({ - environment: 'production', - public_key: 'public', - sample_rate: '1', - sampled: 'true', - trace_id: navigationTraceContext?.trace_id, - }); - - const xhrPromise = page.waitForRequest('http://example.com/*'); - const spanEnvelopePromise = getFirstSentryEnvelopeRequest( - page, - undefined, - properFullEnvelopeRequestParser, - ); - await page.locator('#xhrBtn').click(); - const [request, spanEnvelope] = await Promise.all([xhrPromise, spanEnvelopePromise]); - const headers = request.headers(); - - const spanEnvelopeTraceHeader = spanEnvelope[0].trace; - const spanEnvelopeItem = spanEnvelope[1][0][1]; - - expect(spanEnvelopeTraceHeader).toEqual(navigationTraceHeader); - - expect(spanEnvelopeItem).toMatchObject({ - trace_id: navigationTraceContext?.trace_id, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), - }); - - // sampling decision and DSC are continued from navigation span, even after it ended - expect(headers['sentry-trace']).toMatch(new RegExp(`^${navigationTraceId}-[0-9a-f]{16}-1$`)); - expect(headers['baggage']).toEqual( - `sentry-environment=production,sentry-public_key=public,sentry-trace_id=${navigationTraceId},sentry-sample_rate=1,sentry-sampled=true`, - ); - }, -); - sentryTest( 'outgoing XHR request during navigation has navigation traceId in headers', async ({ getLocalTestUrl, page }) => { diff --git a/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/pageload-meta/test.ts b/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/pageload-meta/test.ts index 78582a8369c1..cfc0fcf8855d 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/pageload-meta/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/pageload-meta/test.ts @@ -1,5 +1,5 @@ import { expect } from '@playwright/test'; -import type { Event, SpanEnvelope } from '@sentry/types'; +import type { Event } from '@sentry/types'; import { sentryTest } from '../../../../utils/fixtures'; import type { EventAndTraceHeader } from '../../../../utils/helpers'; import { shouldSkipFeedbackTest } from '../../../../utils/helpers'; @@ -7,7 +7,6 @@ import { eventAndTraceHeaderRequestParser, getFirstSentryEnvelopeRequest, getMultipleSentryEnvelopeRequests, - properFullEnvelopeRequestParser, shouldSkipTracingTest, } from '../../../../utils/helpers'; @@ -192,73 +191,6 @@ sentryTest('error during tag pageload has pageload traceId', async ({ get }); }); -sentryTest( - 'outgoing fetch request after tag pageload has pageload traceId in headers and span envelope', - async ({ getLocalTestUrl, page }) => { - if (shouldSkipTracingTest()) { - sentryTest.skip(); - } - - const url = await getLocalTestUrl({ testDir: __dirname }); - - await page.route('http://example.com/**', route => { - return route.fulfill({ - status: 200, - contentType: 'application/json', - body: JSON.stringify({}), - }); - }); - - const [pageloadEvent, pageloadTraceHeader] = await getFirstSentryEnvelopeRequest( - page, - url, - eventAndTraceHeaderRequestParser, - ); - expect(pageloadEvent.type).toEqual('transaction'); - expect(pageloadEvent?.contexts?.trace).toMatchObject({ - op: 'pageload', - trace_id: META_TAG_TRACE_ID, - parent_span_id: META_TAG_PARENT_SPAN_ID, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), - }); - - expect(pageloadTraceHeader).toEqual({ - environment: 'prod', - release: '1.0.0', - sample_rate: '0.2', - sampled: 'true', - transaction: 'my-transaction', - public_key: 'public', - trace_id: META_TAG_TRACE_ID, - }); - - const requestPromise = page.waitForRequest('http://example.com/*'); - const spanEnvelopePromise = getFirstSentryEnvelopeRequest( - page, - undefined, - properFullEnvelopeRequestParser, - ); - await page.locator('#fetchBtn').click(); - const [request, spanEnvelope] = await Promise.all([requestPromise, spanEnvelopePromise]); - const headers = request.headers(); - - const spanEnvelopeTraceHeader = spanEnvelope[0].trace; - const spanEnvelopeItem = spanEnvelope[1][0][1]; - - expect(spanEnvelopeTraceHeader).toEqual(pageloadTraceHeader); - - expect(spanEnvelopeItem).toMatchObject({ - parent_span_id: META_TAG_PARENT_SPAN_ID, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), - trace_id: META_TAG_TRACE_ID, - }); - - // sampling decision is propagated from meta tag's sentry-trace sampled flag - expect(headers['sentry-trace']).toMatch(new RegExp(`^${META_TAG_TRACE_ID}-[0-9a-f]{16}-1$`)); - expect(headers['baggage']).toBe(META_TAG_BAGGAGE); - }, -); - sentryTest( 'outgoing fetch request during tag pageload has pageload traceId in headers', async ({ getLocalTestUrl, page }) => { @@ -312,72 +244,6 @@ sentryTest( }, ); -sentryTest( - 'outgoing XHR request after tag pageload has pageload traceId in headers', - async ({ getLocalTestUrl, page }) => { - if (shouldSkipTracingTest()) { - sentryTest.skip(); - } - - await page.route('http://example.com/**', route => { - return route.fulfill({ - status: 200, - contentType: 'application/json', - body: JSON.stringify({}), - }); - }); - - const url = await getLocalTestUrl({ testDir: __dirname }); - - const [pageloadEvent, pageloadTraceHeader] = await getFirstSentryEnvelopeRequest( - page, - url, - eventAndTraceHeaderRequestParser, - ); - expect(pageloadEvent.type).toEqual('transaction'); - expect(pageloadEvent?.contexts?.trace).toMatchObject({ - op: 'pageload', - trace_id: META_TAG_TRACE_ID, - parent_span_id: META_TAG_PARENT_SPAN_ID, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), - }); - expect(pageloadTraceHeader).toEqual({ - environment: 'prod', - release: '1.0.0', - sample_rate: '0.2', - sampled: 'true', - transaction: 'my-transaction', - public_key: 'public', - trace_id: META_TAG_TRACE_ID, - }); - - const requestPromise = page.waitForRequest('http://example.com/*'); - const spanEnvelopePromise = getFirstSentryEnvelopeRequest( - page, - undefined, - properFullEnvelopeRequestParser, - ); - await page.locator('#xhrBtn').click(); - const [request, spanEnvelope] = await Promise.all([requestPromise, spanEnvelopePromise]); - const headers = request.headers(); - - const spanEnvelopeTraceHeader = spanEnvelope[0].trace; - const spanEnvelopeItem = spanEnvelope[1][0][1]; - - expect(spanEnvelopeTraceHeader).toEqual(pageloadTraceHeader); - - expect(spanEnvelopeItem).toMatchObject({ - parent_span_id: META_TAG_PARENT_SPAN_ID, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), - trace_id: META_TAG_TRACE_ID, - }); - - // sampling decision is propagated from meta tag's sentry-trace sampled flag - expect(headers['sentry-trace']).toMatch(new RegExp(`^${META_TAG_TRACE_ID}-[0-9a-f]{16}-1$`)); - expect(headers['baggage']).toBe(META_TAG_BAGGAGE); - }, -); - sentryTest( 'outgoing XHR request during tag pageload has pageload traceId in headers', async ({ getLocalTestUrl, page }) => { diff --git a/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/pageload/test.ts b/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/pageload/test.ts index 3b6a007c54fb..38665b37c5c3 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/pageload/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/pageload/test.ts @@ -1,5 +1,5 @@ import { expect } from '@playwright/test'; -import type { Event, SpanEnvelope } from '@sentry/types'; +import type { Event } from '@sentry/types'; import { sentryTest } from '../../../../utils/fixtures'; import type { EventAndTraceHeader } from '../../../../utils/helpers'; import { shouldSkipFeedbackTest } from '../../../../utils/helpers'; @@ -7,7 +7,6 @@ import { eventAndTraceHeaderRequestParser, getFirstSentryEnvelopeRequest, getMultipleSentryEnvelopeRequests, - properFullEnvelopeRequestParser, shouldSkipTracingTest, } from '../../../../utils/helpers'; @@ -183,75 +182,6 @@ sentryTest('error during pageload has pageload traceId', async ({ getLocalTestUr }); }); -sentryTest( - 'outgoing fetch request after pageload has pageload traceId in headers and span envelope', - async ({ getLocalTestUrl, page }) => { - if (shouldSkipTracingTest()) { - sentryTest.skip(); - } - - const url = await getLocalTestUrl({ testDir: __dirname }); - - await page.route('http://example.com/**', route => { - return route.fulfill({ - status: 200, - contentType: 'application/json', - body: JSON.stringify({}), - }); - }); - - const [pageloadEvent, pageloadTraceHeader] = await getFirstSentryEnvelopeRequest( - page, - url, - eventAndTraceHeaderRequestParser, - ); - const pageloadTraceContext = pageloadEvent.contexts?.trace; - const pageloadTraceId = pageloadTraceContext?.trace_id; - - expect(pageloadEvent.type).toEqual('transaction'); - expect(pageloadTraceContext).toMatchObject({ - op: 'pageload', - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), - }); - expect(pageloadTraceContext).not.toHaveProperty('parent_span_id'); - - expect(pageloadTraceHeader).toEqual({ - environment: 'production', - public_key: 'public', - sample_rate: '1', - sampled: 'true', - trace_id: pageloadTraceId, - }); - - const requestPromise = page.waitForRequest('http://example.com/*'); - const spanEnvelopePromise = getFirstSentryEnvelopeRequest( - page, - undefined, - properFullEnvelopeRequestParser, - ); - await page.locator('#fetchBtn').click(); - const [request, spanEnvelope] = await Promise.all([requestPromise, spanEnvelopePromise]); - const headers = request.headers(); - - const spanEnvelopeTraceHeader = spanEnvelope[0].trace; - const spanEnvelopeItem = spanEnvelope[1][0][1]; - - expect(spanEnvelopeTraceHeader).toEqual(pageloadTraceHeader); - - expect(spanEnvelopeItem).toMatchObject({ - trace_id: pageloadTraceId, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), - }); - - // sampling decision and DSC are continued from the pageload span even after it ended - expect(headers['sentry-trace']).toMatch(new RegExp(`^${pageloadTraceId}-[0-9a-f]{16}-1$`)); - expect(headers['baggage']).toEqual( - `sentry-environment=production,sentry-public_key=public,sentry-trace_id=${pageloadTraceId},sentry-sample_rate=1,sentry-sampled=true`, - ); - }, -); - sentryTest( 'outgoing fetch request during pageload has pageload traceId in headers', async ({ getLocalTestUrl, page }) => { @@ -308,75 +238,6 @@ sentryTest( }, ); -sentryTest( - 'outgoing XHR request after pageload has pageload traceId in headers and span envelope', - async ({ getLocalTestUrl, page }) => { - if (shouldSkipTracingTest()) { - sentryTest.skip(); - } - - const url = await getLocalTestUrl({ testDir: __dirname }); - - await page.route('http://example.com/**', route => { - return route.fulfill({ - status: 200, - contentType: 'application/json', - body: JSON.stringify({}), - }); - }); - - const [pageloadEvent, pageloadTraceHeader] = await getFirstSentryEnvelopeRequest( - page, - url, - eventAndTraceHeaderRequestParser, - ); - const pageloadTraceContext = pageloadEvent.contexts?.trace; - const pageloadTraceId = pageloadTraceContext?.trace_id; - - expect(pageloadEvent.type).toEqual('transaction'); - expect(pageloadTraceContext).toMatchObject({ - op: 'pageload', - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), - }); - expect(pageloadTraceContext).not.toHaveProperty('parent_span_id'); - - expect(pageloadTraceHeader).toEqual({ - environment: 'production', - public_key: 'public', - sample_rate: '1', - sampled: 'true', - trace_id: pageloadTraceId, - }); - - const requestPromise = page.waitForRequest('http://example.com/*'); - const spanEnvelopePromise = getFirstSentryEnvelopeRequest( - page, - undefined, - properFullEnvelopeRequestParser, - ); - await page.locator('#xhrBtn').click(); - const [request, spanEnvelope] = await Promise.all([requestPromise, spanEnvelopePromise]); - const headers = request.headers(); - - const spanEnvelopeTraceHeader = spanEnvelope[0].trace; - const spanEnvelopeItem = spanEnvelope[1][0][1]; - - expect(spanEnvelopeTraceHeader).toEqual(pageloadTraceHeader); - - expect(spanEnvelopeItem).toMatchObject({ - trace_id: pageloadTraceId, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), - }); - - // sampling decision and DSC are continued from the pageload span even after it ended - expect(headers['sentry-trace']).toMatch(new RegExp(`^${pageloadTraceId}-[0-9a-f]{16}-1$`)); - expect(headers['baggage']).toEqual( - `sentry-environment=production,sentry-public_key=public,sentry-trace_id=${pageloadTraceId},sentry-sample_rate=1,sentry-sampled=true`, - ); - }, -); - sentryTest( 'outgoing XHR request during pageload has pageload traceId in headers', async ({ getLocalTestUrl, page }) => { diff --git a/packages/browser/src/tracing/request.ts b/packages/browser/src/tracing/request.ts index 909acb647f17..673cff9e5474 100644 --- a/packages/browser/src/tracing/request.ts +++ b/packages/browser/src/tracing/request.ts @@ -7,7 +7,6 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SentryNonRecordingSpan, - getActiveSpan, getClient, getCurrentScope, getDynamicSamplingContextFromClient, @@ -322,8 +321,6 @@ export function xhrCallback( return undefined; } - const hasParent = !!getActiveSpan(); - const fullUrl = getFullURL(sentryXhrData.url); const host = fullUrl ? parseUrl(fullUrl).host : undefined; @@ -339,9 +336,6 @@ export function xhrCallback( [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.browser', [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'http.client', }, - experimental: { - standalone: !hasParent, - }, }) : new SentryNonRecordingSpan(); diff --git a/packages/core/src/fetch.ts b/packages/core/src/fetch.ts index 5766c7d1d7bd..9a8ff09f1f50 100644 --- a/packages/core/src/fetch.ts +++ b/packages/core/src/fetch.ts @@ -17,7 +17,7 @@ import { } from './tracing'; import { SentryNonRecordingSpan } from './tracing/sentryNonRecordingSpan'; import { hasTracingEnabled } from './utils/hasTracingEnabled'; -import { getActiveSpan, spanToTraceHeader } from './utils/spanUtils'; +import { spanToTraceHeader } from './utils/spanUtils'; type PolymorphicRequestHeaders = | Record @@ -67,8 +67,6 @@ export function instrumentFetchRequest( const { method, url } = handlerData.fetchData; - const hasParent = !!getActiveSpan(); - const fullUrl = getFullURL(url); const host = fullUrl ? parseUrl(fullUrl).host : undefined; @@ -84,9 +82,6 @@ export function instrumentFetchRequest( [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanOrigin, [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'http.client', }, - experimental: { - standalone: !hasParent, - }, }) : new SentryNonRecordingSpan();