diff --git a/public/app/core/services/echo/backends/grafana-javascript-agent/GrafanaJavascriptAgentBackend.test.ts b/public/app/core/services/echo/backends/grafana-javascript-agent/GrafanaJavascriptAgentBackend.test.ts index ca7d940b2fc..5ee5b184736 100644 --- a/public/app/core/services/echo/backends/grafana-javascript-agent/GrafanaJavascriptAgentBackend.test.ts +++ b/public/app/core/services/echo/backends/grafana-javascript-agent/GrafanaJavascriptAgentBackend.test.ts @@ -5,7 +5,11 @@ import * as faroWebSdkModule from '@grafana/faro-web-sdk'; import { BrowserConfig, FetchTransport } from '@grafana/faro-web-sdk'; import { EchoSrvTransport } from './EchoSrvTransport'; -import { GrafanaJavascriptAgentBackend, GrafanaJavascriptAgentBackendOptions } from './GrafanaJavascriptAgentBackend'; +import { + GrafanaJavascriptAgentBackend, + GrafanaJavascriptAgentBackendOptions, + TRACKING_URLS, +} from './GrafanaJavascriptAgentBackend'; describe('GrafanaJavascriptAgentEchoBackend', () => { let mockedSetUser: jest.Mock; @@ -93,8 +97,7 @@ describe('GrafanaJavascriptAgentEchoBackend', () => { expect(initializeFaroMock.mock.calls[0][0].transports?.[0]).toBeInstanceOf(EchoSrvTransport); expect(initializeFaroMock.mock.calls[0][0].transports?.[0].getIgnoreUrls()).toEqual([ /.*\/log-grafana-javascript-agent.*/, - /.*.google-analytics.com*.*/, - /.*.googletagmanager.com*.*/, + /\.(google-analytics|googletagmanager)\.com/, /frontend-metrics/, /\/collect(?:\/[\w]*)?$/, ]); @@ -116,6 +119,17 @@ describe('GrafanaJavascriptAgentEchoBackend', () => { }); }); + test('will ensure the performance of TRACKING_URLS', async () => { + // 10e6 is based on true events + const longString = Array.from({ length: 10e6 }, () => Math.random().toString(36)[2]).join(''); + const maxExecutionTime = 500; + + const start = performance.now(); + TRACKING_URLS.some((u) => u && longString.match(u) !== null); + const end = performance.now(); + expect(end - start).toBeLessThanOrEqual(maxExecutionTime); + }); + //@FIXME - make integration test work // it('integration test with EchoSrv and GrafanaJavascriptAgent', async () => { diff --git a/public/app/core/services/echo/backends/grafana-javascript-agent/GrafanaJavascriptAgentBackend.ts b/public/app/core/services/echo/backends/grafana-javascript-agent/GrafanaJavascriptAgentBackend.ts index 4ea54e38053..2aa81fb11fc 100644 --- a/public/app/core/services/echo/backends/grafana-javascript-agent/GrafanaJavascriptAgentBackend.ts +++ b/public/app/core/services/echo/backends/grafana-javascript-agent/GrafanaJavascriptAgentBackend.ts @@ -37,9 +37,8 @@ export interface GrafanaJavascriptAgentBackendOptions extends BrowserConfig { ignoreUrls: RegExp[]; } -const TRACKING_URLS = [ - /.*.google-analytics.com*.*/, - /.*.googletagmanager.com*.*/, +export const TRACKING_URLS = [ + /\.(google-analytics|googletagmanager)\.com/, /frontend-metrics/, /\/collect(?:\/[\w]*)?$/, ];