From c5ce80a1e8945e187ed48ab1e062685dbbbb34cc Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Mon, 28 Oct 2024 13:18:22 +0100 Subject: [PATCH 1/3] fix(core): Ensure standalone spans are not sent if SDK is disabled --- packages/core/src/tracing/sentrySpan.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/packages/core/src/tracing/sentrySpan.ts b/packages/core/src/tracing/sentrySpan.ts index 7e1083142314..54f59386ff17 100644 --- a/packages/core/src/tracing/sentrySpan.ts +++ b/packages/core/src/tracing/sentrySpan.ts @@ -429,10 +429,7 @@ function sendSpanEnvelope(envelope: SpanEnvelope): void { return; } - const transport = client.getTransport(); - if (transport) { - transport.send(envelope).then(null, reason => { - DEBUG_BUILD && logger.error('Error while sending span:', reason); - }); - } + // sendEnvelope should not throw + // eslint-disable-next-line @typescript-eslint/no-floating-promises + client.sendEnvelope(envelope); } From e31ccc69ab9947bd95e89db7b514bb1ea98ce946 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Mon, 28 Oct 2024 13:25:24 +0100 Subject: [PATCH 2/3] slightly change error message wording in sendEnvelope --- packages/core/src/baseclient.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/baseclient.ts b/packages/core/src/baseclient.ts index c7a26f45ab70..6071f644c37c 100644 --- a/packages/core/src/baseclient.ts +++ b/packages/core/src/baseclient.ts @@ -565,7 +565,7 @@ export abstract class BaseClient implements Client { if (this._isEnabled() && this._transport) { return this._transport.send(envelope).then(null, reason => { - DEBUG_BUILD && logger.error('Error while sending event:', reason); + DEBUG_BUILD && logger.error('Error while sending envelope:', reason); return reason; }); } From 8970f4247e2b42e7f7ca64d1dedbf091b2d2a799 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Mon, 28 Oct 2024 13:47:04 +0100 Subject: [PATCH 3/3] add integration test --- .../startSpan/standalone-sdk-disabled/init.js | 18 +++++++++++++++ .../standalone-sdk-disabled/subject.js | 3 +++ .../startSpan/standalone-sdk-disabled/test.ts | 22 +++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 dev-packages/browser-integration-tests/suites/public-api/startSpan/standalone-sdk-disabled/init.js create mode 100644 dev-packages/browser-integration-tests/suites/public-api/startSpan/standalone-sdk-disabled/subject.js create mode 100644 dev-packages/browser-integration-tests/suites/public-api/startSpan/standalone-sdk-disabled/test.ts diff --git a/dev-packages/browser-integration-tests/suites/public-api/startSpan/standalone-sdk-disabled/init.js b/dev-packages/browser-integration-tests/suites/public-api/startSpan/standalone-sdk-disabled/init.js new file mode 100644 index 000000000000..b1e11c77c2c0 --- /dev/null +++ b/dev-packages/browser-integration-tests/suites/public-api/startSpan/standalone-sdk-disabled/init.js @@ -0,0 +1,18 @@ +import * as Sentry from '@sentry/browser'; + +window.Sentry = Sentry; + +window.fetchCallCount = 0; +window.spanEnded = false; + +const originalWindowFetch = window.fetch; +window.fetch = (...args) => { + window.fetchCallCount++; + return originalWindowFetch(...args); +}; + +Sentry.init({ + dsn: 'https://public@dsn.ingest.sentry.io/1337', + tracesSampleRate: 1.0, + enabled: false, +}); diff --git a/dev-packages/browser-integration-tests/suites/public-api/startSpan/standalone-sdk-disabled/subject.js b/dev-packages/browser-integration-tests/suites/public-api/startSpan/standalone-sdk-disabled/subject.js new file mode 100644 index 000000000000..07d058f2db97 --- /dev/null +++ b/dev-packages/browser-integration-tests/suites/public-api/startSpan/standalone-sdk-disabled/subject.js @@ -0,0 +1,3 @@ +Sentry.startSpan({ name: 'standalone_segment_span', experimental: { standalone: true } }, () => {}); + +window.spanEnded = true; diff --git a/dev-packages/browser-integration-tests/suites/public-api/startSpan/standalone-sdk-disabled/test.ts b/dev-packages/browser-integration-tests/suites/public-api/startSpan/standalone-sdk-disabled/test.ts new file mode 100644 index 000000000000..c8d05c056b20 --- /dev/null +++ b/dev-packages/browser-integration-tests/suites/public-api/startSpan/standalone-sdk-disabled/test.ts @@ -0,0 +1,22 @@ +import { expect } from '@playwright/test'; + +import { sentryTest } from '../../../../utils/fixtures'; +import { shouldSkipTracingTest } from '../../../../utils/helpers'; + +sentryTest("doesn't send a standalone span envelope if SDK is disabled", async ({ getLocalTestPath, page }) => { + if (shouldSkipTracingTest()) { + sentryTest.skip(); + } + + const url = await getLocalTestPath({ testDir: __dirname }); + await page.goto(url); + + // @ts-expect-error this exists in the test init/subject + await page.waitForFunction(() => !!window.spanEnded); + await page.waitForTimeout(2000); + + // @ts-expect-error this exists in the test init + const fetchCallCount = await page.evaluate(() => window.fetchCallCount); + // We expect no fetch calls because the SDK is disabled + expect(fetchCallCount).toBe(0); +});