From cb38f8b3f3fe7a3cd9d65b82b68fd4ead56683e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kh=C3=A1nh=20Ho=C3=A0ng?= <6380436+hckhanh@users.noreply.github.com> Date: Mon, 20 Mar 2023 09:18:01 +0700 Subject: [PATCH] feat(browser): add interactionClassName for tracing interaction --- packages/tracing-internal/src/browser/browsertracing.ts | 3 ++- packages/tracing-internal/src/browser/metrics/index.ts | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/tracing-internal/src/browser/browsertracing.ts b/packages/tracing-internal/src/browser/browsertracing.ts index 99ce53dd022b..18f2bf8795b4 100644 --- a/packages/tracing-internal/src/browser/browsertracing.ts +++ b/packages/tracing-internal/src/browser/browsertracing.ts @@ -105,6 +105,7 @@ export interface BrowserTracingOptions extends RequestInstrumentationOptions { _experiments: Partial<{ enableLongTask: boolean; enableInteractions: boolean; + interactionClassName: string; onStartRouteTransaction: (t: Transaction | undefined, ctx: TransactionContext, getCurrentHub: () => Hub) => void; }>; @@ -199,7 +200,7 @@ export class BrowserTracing implements Integration { startTrackingLongTasks(); } if (this.options._experiments.enableInteractions) { - startTrackingInteractions(); + startTrackingInteractions(this.options._experiments.interactionClassName); } } diff --git a/packages/tracing-internal/src/browser/metrics/index.ts b/packages/tracing-internal/src/browser/metrics/index.ts index 788f21aafaa4..4198255526f2 100644 --- a/packages/tracing-internal/src/browser/metrics/index.ts +++ b/packages/tracing-internal/src/browser/metrics/index.ts @@ -87,11 +87,14 @@ export function startTrackingLongTasks(): void { /** * Start tracking interaction events. */ -export function startTrackingInteractions(): void { +export function startTrackingInteractions(interactionClassName: string | undefined): void { const entryHandler = (entries: PerformanceEventTiming[]): void => { for (const entry of entries) { const transaction = getActiveTransaction() as IdleTransaction | undefined; - if (!transaction) { + if ( + !transaction || + !(interactionClassName && entry.target?.parentElement?.classList.contains(interactionClassName)) + ) { return; }