From 2cd89279b14e34bc23530b9d7a0447b38c46756a Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Wed, 15 Mar 2023 15:47:15 +0000 Subject: [PATCH 1/3] Export `BrowserTracing` from `@sentry/browser` --- .../suites/tracing/browsertracing/init.js | 3 +-- packages/browser/package.json | 1 + packages/browser/src/index.ts | 4 ++++ packages/tracing-internal/src/browser/browsertracing.ts | 4 +++- rollup/bundleHelpers.js | 6 ++++++ 5 files changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/browser-integration-tests/suites/tracing/browsertracing/init.js b/packages/browser-integration-tests/suites/tracing/browsertracing/init.js index ce4e0c4ad7f7..14e743361fd7 100644 --- a/packages/browser-integration-tests/suites/tracing/browsertracing/init.js +++ b/packages/browser-integration-tests/suites/tracing/browsertracing/init.js @@ -1,10 +1,9 @@ import * as Sentry from '@sentry/browser'; -import { Integrations } from '@sentry/tracing'; window.Sentry = Sentry; Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', - integrations: [new Integrations.BrowserTracing()], + integrations: [new Sentry.BrowserTracing()], tracesSampleRate: 1, }); diff --git a/packages/browser/package.json b/packages/browser/package.json index fb2a3ccd2a54..a4d9d54bb414 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -20,6 +20,7 @@ "@sentry/replay": "7.43.0", "@sentry/types": "7.43.0", "@sentry/utils": "7.43.0", + "@sentry-internal/tracing": "7.43.0", "tslib": "^1.9.3" }, "devDependencies": { diff --git a/packages/browser/src/index.ts b/packages/browser/src/index.ts index 5714a6f680d6..44f3e11dcfa4 100644 --- a/packages/browser/src/index.ts +++ b/packages/browser/src/index.ts @@ -29,6 +29,10 @@ export { INTEGRATIONS as Integrations }; export { Replay } from '@sentry/replay'; // __ROLLUP_EXCLUDE_REPLAY_FROM_BUNDLES_END__ +// __ROLLUP_EXCLUDE_BROWSER_TRACING_FROM_BUNDLES_BEGIN__ +export { BrowserTracing } from '@sentry-internal/tracing'; +// __ROLLUP_EXCLUDE_BROWSER_TRACING_FROM_BUNDLES_END__ + // __ROLLUP_EXCLUDE_OFFLINE_FROM_BUNDLES_BEGIN__ export { makeBrowserOfflineTransport } from './transports/offline'; // __ROLLUP_EXCLUDE_OFFLINE_FROM_BUNDLES_END__ diff --git a/packages/tracing-internal/src/browser/browsertracing.ts b/packages/tracing-internal/src/browser/browsertracing.ts index 3575c0a20e91..99ce53dd022b 100644 --- a/packages/tracing-internal/src/browser/browsertracing.ts +++ b/packages/tracing-internal/src/browser/browsertracing.ts @@ -1,6 +1,6 @@ /* eslint-disable max-lines */ import type { Hub, IdleTransaction } from '@sentry/core'; -import { extractTraceparentData, startIdleTransaction, TRACING_DEFAULTS } from '@sentry/core'; +import { addTracingExtensions, extractTraceparentData, startIdleTransaction, TRACING_DEFAULTS } from '@sentry/core'; import type { EventProcessor, Integration, Transaction, TransactionContext, TransactionSource } from '@sentry/types'; import { baggageHeaderToDynamicSamplingContext, getDomElement, logger } from '@sentry/utils'; @@ -172,6 +172,8 @@ export class BrowserTracing implements Integration { private _collectWebVitals: () => void; public constructor(_options?: Partial) { + addTracingExtensions(); + this.options = { ...DEFAULT_BROWSER_TRACING_OPTIONS, ..._options, diff --git a/rollup/bundleHelpers.js b/rollup/bundleHelpers.js index e81069990fa4..6266717aec0b 100644 --- a/rollup/bundleHelpers.js +++ b/rollup/bundleHelpers.js @@ -35,6 +35,7 @@ export function makeBaseBundleConfig(options) { includeReplay, includeOffline, includeBrowserProfiling, + includeBrowserTracing, } = options; const nodeResolvePlugin = makeNodeResolvePlugin(); @@ -47,6 +48,7 @@ export function makeBaseBundleConfig(options) { const excludeReplayShimPlugin = makeExcludeBlockPlugin('REPLAY_SHIM'); const excludeOfflineTransport = makeExcludeBlockPlugin('OFFLINE'); const excludeBrowserProfiling = makeExcludeBlockPlugin('BROWSER_PROFILING'); + const excludeBrowserTracing = makeExcludeBlockPlugin('BROWSER_TRACING'); const replayShimPlugin = makeReplayShimPlugin(); // The `commonjs` plugin is the `esModuleInterop` of the bundling world. When used with `transformMixedEsModules`, it @@ -82,6 +84,10 @@ export function makeBaseBundleConfig(options) { standAloneBundleConfig.plugins.push(excludeBrowserProfiling); } + if (!includeBrowserTracing) { + standAloneBundleConfig.plugins.push(excludeBrowserTracing); + } + // used by `@sentry/integrations` and `@sentry/wasm` (bundles which need to be combined with a stand-alone SDK bundle) const addOnBundleConfig = { // These output settings are designed to mimic an IIFE. We don't use Rollup's `iife` format because we don't want to From 21d47516a31ca17e56ff4b2894229d25c813e217 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Wed, 15 Mar 2023 20:27:24 +0000 Subject: [PATCH 2/3] More tests use new export --- .../suites/tracing/envelope-header-transaction-name/init.js | 3 +-- .../suites/tracing/envelope-header/init.js | 3 +-- .../browser-integration-tests/suites/tracing/metrics/init.js | 3 +-- .../browser-integration-tests/suites/tracing/request/init.js | 3 +-- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/packages/browser-integration-tests/suites/tracing/envelope-header-transaction-name/init.js b/packages/browser-integration-tests/suites/tracing/envelope-header-transaction-name/init.js index efb7b577f75b..e424d95edb79 100644 --- a/packages/browser-integration-tests/suites/tracing/envelope-header-transaction-name/init.js +++ b/packages/browser-integration-tests/suites/tracing/envelope-header-transaction-name/init.js @@ -1,11 +1,10 @@ import * as Sentry from '@sentry/browser'; -import { Integrations } from '@sentry/tracing'; window.Sentry = Sentry; Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', - integrations: [new Integrations.BrowserTracing({ tracingOrigins: [/.*/] })], + integrations: [new Sentry.BrowserTracing({ tracingOrigins: [/.*/] })], environment: 'production', tracesSampleRate: 1, debug: true, diff --git a/packages/browser-integration-tests/suites/tracing/envelope-header/init.js b/packages/browser-integration-tests/suites/tracing/envelope-header/init.js index fbce5a16116a..fe1e3f718d76 100644 --- a/packages/browser-integration-tests/suites/tracing/envelope-header/init.js +++ b/packages/browser-integration-tests/suites/tracing/envelope-header/init.js @@ -1,11 +1,10 @@ import * as Sentry from '@sentry/browser'; -import { Integrations } from '@sentry/tracing'; window.Sentry = Sentry; Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', - integrations: [new Integrations.BrowserTracing({ tracingOrigins: [/.*/] })], + integrations: [new Sentry.BrowserTracing({ tracingOrigins: [/.*/] })], environment: 'production', tracesSampleRate: 1, debug: true, diff --git a/packages/browser-integration-tests/suites/tracing/metrics/init.js b/packages/browser-integration-tests/suites/tracing/metrics/init.js index 037e2dc88517..155966847b1c 100644 --- a/packages/browser-integration-tests/suites/tracing/metrics/init.js +++ b/packages/browser-integration-tests/suites/tracing/metrics/init.js @@ -1,12 +1,11 @@ import * as Sentry from '@sentry/browser'; -import { Integrations } from '@sentry/tracing'; window.Sentry = Sentry; Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', integrations: [ - new Integrations.BrowserTracing({ + new Sentry.BrowserTracing({ idleTimeout: 9000, }), ], diff --git a/packages/browser-integration-tests/suites/tracing/request/init.js b/packages/browser-integration-tests/suites/tracing/request/init.js index 505fab06b330..c43686bbc598 100644 --- a/packages/browser-integration-tests/suites/tracing/request/init.js +++ b/packages/browser-integration-tests/suites/tracing/request/init.js @@ -1,10 +1,9 @@ import * as Sentry from '@sentry/browser'; -import { Integrations } from '@sentry/tracing'; window.Sentry = Sentry; Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', - integrations: [new Integrations.BrowserTracing({ tracingOrigins: ['http://example.com'] })], + integrations: [new Sentry.BrowserTracing({ tracingOrigins: ['http://example.com'] })], tracesSampleRate: 1, }); From fba3a122aabea591e469bf119a5dd3922e963b20 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Thu, 16 Mar 2023 10:45:27 +0000 Subject: [PATCH 3/3] Dont use new export for integration tests as it doesn't work with bundles --- .../suites/tracing/browsertracing/init.js | 3 ++- .../suites/tracing/envelope-header-transaction-name/init.js | 3 ++- .../suites/tracing/envelope-header/init.js | 3 ++- .../browser-integration-tests/suites/tracing/metrics/init.js | 3 ++- .../browser-integration-tests/suites/tracing/request/init.js | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/browser-integration-tests/suites/tracing/browsertracing/init.js b/packages/browser-integration-tests/suites/tracing/browsertracing/init.js index 14e743361fd7..ce4e0c4ad7f7 100644 --- a/packages/browser-integration-tests/suites/tracing/browsertracing/init.js +++ b/packages/browser-integration-tests/suites/tracing/browsertracing/init.js @@ -1,9 +1,10 @@ import * as Sentry from '@sentry/browser'; +import { Integrations } from '@sentry/tracing'; window.Sentry = Sentry; Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', - integrations: [new Sentry.BrowserTracing()], + integrations: [new Integrations.BrowserTracing()], tracesSampleRate: 1, }); diff --git a/packages/browser-integration-tests/suites/tracing/envelope-header-transaction-name/init.js b/packages/browser-integration-tests/suites/tracing/envelope-header-transaction-name/init.js index e424d95edb79..efb7b577f75b 100644 --- a/packages/browser-integration-tests/suites/tracing/envelope-header-transaction-name/init.js +++ b/packages/browser-integration-tests/suites/tracing/envelope-header-transaction-name/init.js @@ -1,10 +1,11 @@ import * as Sentry from '@sentry/browser'; +import { Integrations } from '@sentry/tracing'; window.Sentry = Sentry; Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', - integrations: [new Sentry.BrowserTracing({ tracingOrigins: [/.*/] })], + integrations: [new Integrations.BrowserTracing({ tracingOrigins: [/.*/] })], environment: 'production', tracesSampleRate: 1, debug: true, diff --git a/packages/browser-integration-tests/suites/tracing/envelope-header/init.js b/packages/browser-integration-tests/suites/tracing/envelope-header/init.js index fe1e3f718d76..fbce5a16116a 100644 --- a/packages/browser-integration-tests/suites/tracing/envelope-header/init.js +++ b/packages/browser-integration-tests/suites/tracing/envelope-header/init.js @@ -1,10 +1,11 @@ import * as Sentry from '@sentry/browser'; +import { Integrations } from '@sentry/tracing'; window.Sentry = Sentry; Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', - integrations: [new Sentry.BrowserTracing({ tracingOrigins: [/.*/] })], + integrations: [new Integrations.BrowserTracing({ tracingOrigins: [/.*/] })], environment: 'production', tracesSampleRate: 1, debug: true, diff --git a/packages/browser-integration-tests/suites/tracing/metrics/init.js b/packages/browser-integration-tests/suites/tracing/metrics/init.js index 155966847b1c..037e2dc88517 100644 --- a/packages/browser-integration-tests/suites/tracing/metrics/init.js +++ b/packages/browser-integration-tests/suites/tracing/metrics/init.js @@ -1,11 +1,12 @@ import * as Sentry from '@sentry/browser'; +import { Integrations } from '@sentry/tracing'; window.Sentry = Sentry; Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', integrations: [ - new Sentry.BrowserTracing({ + new Integrations.BrowserTracing({ idleTimeout: 9000, }), ], diff --git a/packages/browser-integration-tests/suites/tracing/request/init.js b/packages/browser-integration-tests/suites/tracing/request/init.js index c43686bbc598..505fab06b330 100644 --- a/packages/browser-integration-tests/suites/tracing/request/init.js +++ b/packages/browser-integration-tests/suites/tracing/request/init.js @@ -1,9 +1,10 @@ import * as Sentry from '@sentry/browser'; +import { Integrations } from '@sentry/tracing'; window.Sentry = Sentry; Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', - integrations: [new Sentry.BrowserTracing({ tracingOrigins: ['http://example.com'] })], + integrations: [new Integrations.BrowserTracing({ tracingOrigins: ['http://example.com'] })], tracesSampleRate: 1, });