From c1ef133f942cc062cc0c24ec9be7073ac024682d Mon Sep 17 00:00:00 2001 From: s1gr1d <32902192+s1gr1d@users.noreply.github.com> Date: Fri, 31 Oct 2025 10:28:27 +0100 Subject: [PATCH 1/5] chore(eslint): Add eslint-plugin-regexp rule (dev-packages) --- .../browser-integration-tests/.eslintrc.js | 4 +- .../browser-integration-tests/package.json | 1 + .../manual-client/browser-context/test.ts | 2 +- .../test.ts | 8 +-- .../test.ts | 6 +- .../standalone-mixed-transaction/test.ts | 8 +-- .../public-api/startSpan/standalone/test.ts | 4 +- .../suites/replay/dsc/test.ts | 12 ++-- .../http-timings/test.ts | 2 +- .../consistent-sampling/meta-negative/test.ts | 2 +- .../meta-precedence/test.ts | 2 +- .../tracesSampler-precedence/test.ts | 4 +- .../linked-traces/negatively-sampled/test.ts | 6 +- .../twp-errors-meta/test.ts | 4 +- .../twp-errors/test.ts | 8 +-- .../tracing/dsc-txn-name-update/test.ts | 8 +-- .../envelope-header-transaction-name/test.ts | 2 +- .../suites/tracing/envelope-header/test.ts | 2 +- .../metrics/pageload-resource-spans/test.ts | 6 +- .../web-vitals-cls-standalone-spans/test.ts | 46 ++++++------- .../metrics/web-vitals-inp-late/test.ts | 4 +- .../web-vitals-inp-parametrized-late/test.ts | 4 +- .../web-vitals-inp-parametrized/test.ts | 6 +- .../tracing/metrics/web-vitals-inp/test.ts | 6 +- .../web-vitals-lcp-standalone-spans/test.ts | 14 ++-- .../tracing/request/fetch-immediate/test.ts | 2 +- .../fetch-propagateTraceparent/test.ts | 4 +- .../request/fetch-relative-url/test.ts | 8 +-- .../fetch-strip-query-and-fragment/test.ts | 8 +-- .../test.ts | 4 +- .../request/fetch-tracing-unsampled/test.ts | 6 +- .../test.ts | 4 +- .../fetch-tracing-without-performance/test.ts | 6 +- .../suites/tracing/request/fetch/test.ts | 8 +-- .../request/xhr-propagateTraceparent/test.ts | 4 +- .../tracing/request/xhr-relative-url/test.ts | 8 +-- .../xhr-strip-query-and-fragment/test.ts | 8 +-- .../request/xhr-tracing-unsampled/test.ts | 6 +- .../test.ts | 4 +- .../xhr-tracing-without-performance/test.ts | 6 +- .../suites/tracing/request/xhr/test.ts | 8 +-- .../tracing/setSpanActive/default/test.ts | 2 +- .../nested-parentAlwaysRoot/test.ts | 4 +- .../tracing/setSpanActive/nested/test.ts | 4 +- .../tracing/trace-lifetime/navigation/test.ts | 34 +++++----- .../trace-lifetime/pageload-meta/test.ts | 22 +++---- .../tracing/trace-lifetime/pageload/test.ts | 34 +++++----- .../trace-lifetime/startNewTrace/test.ts | 12 ++-- .../startNewTraceSampling/test.ts | 8 +-- .../test.ts | 8 +-- .../tracing-without-performance/test.ts | 16 ++--- .../utils/replayHelpers.ts | 7 +- .../bundle-analyzer-scenarios/package.json | 3 + .../clear-cache-gh-action/.eslintrc.cjs | 4 +- .../clear-cache-gh-action/package.json | 3 + .../cloudflare-integration-tests/.eslintrc.js | 4 +- .../cloudflare-integration-tests/expect.ts | 6 +- .../cloudflare-integration-tests/package.json | 1 + dev-packages/e2e-tests/.eslintrc.js | 4 +- dev-packages/e2e-tests/package.json | 1 + .../.eslintrc.cjs | 4 +- .../external-contributor-gh-action/index.mjs | 2 +- .../package.json | 3 + .../node-core-integration-tests/.eslintrc.js | 4 +- .../node-core-integration-tests/package.json | 1 + .../suites/anr/test.ts | 4 +- .../suites/cron/cron/test.ts | 16 ++--- .../suites/cron/node-cron/test.ts | 16 ++--- .../suites/cron/node-schedule/test.ts | 16 ++--- .../tracing/dsc-txn-name-update/test.ts | 16 ++--- .../error-active-span-unsampled/test.ts | 2 +- .../envelope-header/error-active-span/test.ts | 2 +- .../tracing/envelope-header/error/test.ts | 2 +- .../envelope-header/transaction-route/test.ts | 2 +- .../envelope-header/transaction-url/test.ts | 2 +- .../envelope-header/transaction/test.ts | 2 +- .../tracing/meta-tags-twp-errors/test.ts | 12 ++-- .../suites/tracing/meta-tags/test.ts | 4 +- .../fetch-no-tracing-no-spans/test.ts | 4 +- .../tracing/requests/fetch-no-tracing/test.ts | 4 +- .../fetch-sampled-no-active-span/test.ts | 4 +- .../tracing/requests/fetch-unsampled/test.ts | 4 +- .../requests/http-no-tracing-no-spans/test.ts | 4 +- .../tracing/requests/http-no-tracing/test.ts | 4 +- .../http-sampled-no-active-span/test.ts | 4 +- .../tracing/requests/http-sampled/test.ts | 4 +- .../tracing/requests/http-unsampled/test.ts | 4 +- .../tracing/sample-rand-propagation/test.ts | 8 +-- .../tracing/tracePropagationTargets/test.ts | 4 +- .../utils/runner.ts | 3 +- .../node-integration-tests/.eslintrc.js | 4 +- .../node-integration-tests/package.json | 1 + .../node-integration-tests/suites/anr/test.ts | 4 +- .../suites/cron/cron/test.ts | 16 ++--- .../suites/cron/node-cron/test.ts | 16 ++--- .../suites/cron/node-schedule/test.ts | 16 ++--- .../baggage-header-assign/test.ts | 8 +-- .../sentry-trace/baggage-header-out/test.ts | 2 +- .../test.ts | 6 +- .../suites/express/tracing/scenario.mjs | 2 +- .../suites/express/tracing/test.ts | 24 +++---- .../featureFlags/growthbook/onSpan/test.ts | 4 +- .../tracing/dsc-txn-name-update/test.ts | 16 ++--- .../error-active-span-unsampled/test.ts | 2 +- .../envelope-header/error-active-span/test.ts | 2 +- .../tracing/envelope-header/error/test.ts | 2 +- .../envelope-header/transaction-route/test.ts | 2 +- .../envelope-header/transaction-url/test.ts | 2 +- .../envelope-header/transaction/test.ts | 2 +- .../fetch-strip-query/test.ts | 2 +- .../http-strip-query/test.ts | 2 +- .../suites/tracing/httpIntegration/test.ts | 64 +++++++++---------- .../tracing/meta-tags-twp-errors/test.ts | 12 ++-- .../suites/tracing/meta-tags-twp/test.ts | 2 +- .../suites/tracing/meta-tags/test.ts | 6 +- .../fetch-no-tracing-no-spans/test.ts | 4 +- .../tracing/requests/fetch-no-tracing/test.ts | 4 +- .../fetch-sampled-no-active-span/test.ts | 4 +- .../tracing/requests/fetch-unsampled/test.ts | 4 +- .../requests/http-no-tracing-no-spans/test.ts | 4 +- .../tracing/requests/http-no-tracing/test.ts | 4 +- .../http-sampled-no-active-span/test.ts | 4 +- .../tracing/requests/http-sampled/test.ts | 4 +- .../tracing/requests/http-unsampled/test.ts | 4 +- .../tracing/sample-rand-propagation/test.ts | 12 ++-- .../tracing/tracePropagationTargets/test.ts | 4 +- .../node-integration-tests/utils/runner.ts | 2 +- .../node-overhead-gh-action/.eslintrc.cjs | 4 +- .../node-overhead-gh-action/package.json | 1 + dev-packages/rollup-utils/.eslintrc.cjs | 4 +- dev-packages/rollup-utils/package.json | 3 + .../size-limit-gh-action/.eslintrc.cjs | 4 +- dev-packages/test-utils/.eslintrc.js | 4 +- dev-packages/test-utils/package.json | 3 +- yarn.lock | 62 +++++++++++++++++- 135 files changed, 532 insertions(+), 429 deletions(-) diff --git a/dev-packages/browser-integration-tests/.eslintrc.js b/dev-packages/browser-integration-tests/.eslintrc.js index a19cfba8812a..8c07222e9a7c 100644 --- a/dev-packages/browser-integration-tests/.eslintrc.js +++ b/dev-packages/browser-integration-tests/.eslintrc.js @@ -3,7 +3,9 @@ module.exports = { browser: true, node: true, }, - extends: ['../../.eslintrc.js'], + // todo: remove regexp plugin from here once we add it to base.js eslint config for the whole project + extends: ['../../.eslintrc.js', 'plugin:regexp/recommended'], + plugins: ['regexp'], ignorePatterns: [ 'suites/**/subject.js', 'suites/**/dist/*', diff --git a/dev-packages/browser-integration-tests/package.json b/dev-packages/browser-integration-tests/package.json index 6de23391a0ba..efdd5b9fb647 100644 --- a/dev-packages/browser-integration-tests/package.json +++ b/dev-packages/browser-integration-tests/package.json @@ -54,6 +54,7 @@ "devDependencies": { "@types/glob": "8.0.0", "@types/node": "^18.19.1", + "eslint-plugin-regexp": "^1.15.0", "glob": "8.0.3" }, "volta": { diff --git a/dev-packages/browser-integration-tests/suites/manual-client/browser-context/test.ts b/dev-packages/browser-integration-tests/suites/manual-client/browser-context/test.ts index 4637fcc5555d..bb963a975049 100644 --- a/dev-packages/browser-integration-tests/suites/manual-client/browser-context/test.ts +++ b/dev-packages/browser-integration-tests/suites/manual-client/browser-context/test.ts @@ -46,7 +46,7 @@ sentryTest('allows to setup a client manually & capture exceptions', async ({ ge }, }, contexts: { - trace: { trace_id: expect.stringMatching(/[a-f0-9]{32}/), span_id: expect.stringMatching(/[a-f0-9]{16}/) }, + trace: { trace_id: expect.stringMatching(/[a-f\d]{32}/), span_id: expect.stringMatching(/[a-f\d]{16}/) }, }, }); }); diff --git a/dev-packages/browser-integration-tests/suites/profiling/traceLifecycleMode_multiple-chunks/test.ts b/dev-packages/browser-integration-tests/suites/profiling/traceLifecycleMode_multiple-chunks/test.ts index 702140b8823e..421cdfc1e645 100644 --- a/dev-packages/browser-integration-tests/suites/profiling/traceLifecycleMode_multiple-chunks/test.ts +++ b/dev-packages/browser-integration-tests/suites/profiling/traceLifecycleMode_multiple-chunks/test.ts @@ -58,9 +58,9 @@ sentryTest( // Required profile metadata (Sample Format V2) expect(typeof envelopeItemPayload1.profiler_id).toBe('string'); - expect(envelopeItemPayload1.profiler_id).toMatch(/^[a-f0-9]{32}$/); + expect(envelopeItemPayload1.profiler_id).toMatch(/^[a-f\d]{32}$/); expect(typeof envelopeItemPayload1.chunk_id).toBe('string'); - expect(envelopeItemPayload1.chunk_id).toMatch(/^[a-f0-9]{32}$/); + expect(envelopeItemPayload1.chunk_id).toMatch(/^[a-f\d]{32}$/); expect(envelopeItemPayload1.client_sdk).toBeDefined(); expect(typeof envelopeItemPayload1.client_sdk.name).toBe('string'); expect(typeof envelopeItemPayload1.client_sdk.version).toBe('string'); @@ -170,9 +170,9 @@ sentryTest( // Required profile metadata (Sample Format V2) // https://develop.sentry.dev/sdk/telemetry/profiles/sample-format-v2/ expect(typeof envelopeItemPayload2.profiler_id).toBe('string'); - expect(envelopeItemPayload2.profiler_id).toMatch(/^[a-f0-9]{32}$/); + expect(envelopeItemPayload2.profiler_id).toMatch(/^[a-f\d]{32}$/); expect(typeof envelopeItemPayload2.chunk_id).toBe('string'); - expect(envelopeItemPayload2.chunk_id).toMatch(/^[a-f0-9]{32}$/); + expect(envelopeItemPayload2.chunk_id).toMatch(/^[a-f\d]{32}$/); expect(envelopeItemPayload2.client_sdk).toBeDefined(); expect(typeof envelopeItemPayload2.client_sdk.name).toBe('string'); expect(typeof envelopeItemPayload2.client_sdk.version).toBe('string'); diff --git a/dev-packages/browser-integration-tests/suites/profiling/traceLifecycleMode_overlapping-spans/test.ts b/dev-packages/browser-integration-tests/suites/profiling/traceLifecycleMode_overlapping-spans/test.ts index 60744def96cd..161f74d64e83 100644 --- a/dev-packages/browser-integration-tests/suites/profiling/traceLifecycleMode_overlapping-spans/test.ts +++ b/dev-packages/browser-integration-tests/suites/profiling/traceLifecycleMode_overlapping-spans/test.ts @@ -60,9 +60,9 @@ sentryTest( // Required profile metadata (Sample Format V2) // https://develop.sentry.dev/sdk/telemetry/profiles/sample-format-v2/ expect(typeof envelopeItemPayload.profiler_id).toBe('string'); - expect(envelopeItemPayload.profiler_id).toMatch(/^[a-f0-9]{32}$/); + expect(envelopeItemPayload.profiler_id).toMatch(/^[a-f\d]{32}$/); expect(typeof envelopeItemPayload.chunk_id).toBe('string'); - expect(envelopeItemPayload.chunk_id).toMatch(/^[a-f0-9]{32}$/); + expect(envelopeItemPayload.chunk_id).toMatch(/^[a-f\d]{32}$/); expect(envelopeItemPayload.client_sdk).toBeDefined(); expect(typeof envelopeItemPayload.client_sdk.name).toBe('string'); expect(typeof envelopeItemPayload.client_sdk.version).toBe('string'); @@ -175,7 +175,7 @@ sentryTest('attaches thread data to child spans (trace mode)', async ({ page, ge const profilerId = rootSpan?.contexts?.profile?.profiler_id as string | undefined; expect(typeof profilerId).toBe('string'); - expect(profilerId).toMatch(/^[a-f0-9]{32}$/); + expect(profilerId).toMatch(/^[a-f\d]{32}$/); const spans = (rootSpan?.spans ?? []) as Array<{ data?: Record }>; expect(spans.length).toBeGreaterThan(0); diff --git a/dev-packages/browser-integration-tests/suites/public-api/startSpan/standalone-mixed-transaction/test.ts b/dev-packages/browser-integration-tests/suites/public-api/startSpan/standalone-mixed-transaction/test.ts index 8493f4e5fd97..c1e641204b81 100644 --- a/dev-packages/browser-integration-tests/suites/public-api/startSpan/standalone-mixed-transaction/test.ts +++ b/dev-packages/browser-integration-tests/suites/public-api/startSpan/standalone-mixed-transaction/test.ts @@ -34,8 +34,8 @@ sentryTest( const traceId = transactionEnvelopeHeader.trace!.trace_id!; const parentSpanId = transactionEnvelopeItem.contexts?.trace?.span_id; - expect(traceId).toMatch(/[a-f0-9]{32}/); - expect(parentSpanId).toMatch(/[a-f0-9]{16}/); + expect(traceId).toMatch(/[a-f\d]{32}/); + expect(parentSpanId).toMatch(/[a-f\d]{16}/); expect(spanEnvelopeHeader).toEqual({ sent_at: expect.any(String), @@ -76,7 +76,7 @@ sentryTest( segment_id: transactionEnvelopeItem.contexts?.trace?.span_id, parent_span_id: parentSpanId, origin: 'manual', - span_id: expect.stringMatching(/[a-f0-9]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: traceId, @@ -111,7 +111,7 @@ sentryTest( description: 'inner', origin: 'manual', parent_span_id: parentSpanId, - span_id: expect.stringMatching(/[a-f0-9]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: traceId, diff --git a/dev-packages/browser-integration-tests/suites/public-api/startSpan/standalone/test.ts b/dev-packages/browser-integration-tests/suites/public-api/startSpan/standalone/test.ts index aaafd99c91d5..289e907e09b3 100644 --- a/dev-packages/browser-integration-tests/suites/public-api/startSpan/standalone/test.ts +++ b/dev-packages/browser-integration-tests/suites/public-api/startSpan/standalone/test.ts @@ -48,10 +48,10 @@ sentryTest('sends a segment span envelope', async ({ getLocalTestUrl, page }) => }, description: 'standalone_segment_span', origin: 'manual', - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), is_segment: true, segment_id: spanJson.span_id, }); diff --git a/dev-packages/browser-integration-tests/suites/replay/dsc/test.ts b/dev-packages/browser-integration-tests/suites/replay/dsc/test.ts index ef0882e0206b..e63c45e42293 100644 --- a/dev-packages/browser-integration-tests/suites/replay/dsc/test.ts +++ b/dev-packages/browser-integration-tests/suites/replay/dsc/test.ts @@ -57,7 +57,7 @@ sentryTest( expect(envHeader.trace).toEqual({ environment: 'production', sample_rate: '1', - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), public_key: 'public', replay_id: replay.session?.id, sampled: 'true', @@ -105,7 +105,7 @@ sentryTest( expect(envHeader.trace).toEqual({ environment: 'production', sample_rate: '1', - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), public_key: 'public', sampled: 'true', sample_rand: expect.any(String), @@ -158,7 +158,7 @@ sentryTest( expect(envHeader.trace).toEqual({ environment: 'production', sample_rate: '1', - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), public_key: 'public', replay_id: replay.session?.id, sampled: 'true', @@ -201,7 +201,7 @@ sentryTest( expect(envHeader.trace).toEqual({ environment: 'production', sample_rate: '1', - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), public_key: 'public', sampled: 'true', sample_rand: expect.any(String), @@ -243,7 +243,7 @@ sentryTest('should add replay_id to error DSC while replay is active', async ({ expect(error1Header.trace).toBeDefined(); expect(error1Header.trace).toEqual({ environment: 'production', - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), public_key: 'public', replay_id: replay.session?.id, ...(hasTracing @@ -265,7 +265,7 @@ sentryTest('should add replay_id to error DSC while replay is active', async ({ expect(error2Header.trace).toBeDefined(); expect(error2Header.trace).toEqual({ environment: 'production', - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), public_key: 'public', ...(hasTracing ? { diff --git a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/http-timings/test.ts b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/http-timings/test.ts index 633be5f570b5..6894d7407349 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/http-timings/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/http-timings/test.ts @@ -34,7 +34,7 @@ sentryTest('creates fetch spans with http timing', async ({ browserName, getLoca expect(span).toMatchObject({ description: `GET http://sentry-test-site.example/${index}`, parent_span_id: tracingEvent.contexts?.trace?.span_id, - span_id: expect.stringMatching(/[a-f0-9]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: tracingEvent.contexts?.trace?.trace_id, diff --git a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/consistent-sampling/meta-negative/test.ts b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/consistent-sampling/meta-negative/test.ts index 6ec7985b9dad..c8faee2f5feb 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/consistent-sampling/meta-negative/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/consistent-sampling/meta-negative/test.ts @@ -60,7 +60,7 @@ sentryTest.describe('When `consistentTraceSampling` is `true` and page contains expect(extractTraceparentData(sentryTrace)).toEqual({ traceId: expect.not.stringContaining(metaTagTraceId), - parentSpanId: expect.stringMatching(/^[0-9a-f]{16}$/), + parentSpanId: expect.stringMatching(/^[\da-f]{16}$/), parentSampled: false, }); diff --git a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/consistent-sampling/meta-precedence/test.ts b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/consistent-sampling/meta-precedence/test.ts index ece2b1f85790..3dab9594ba7c 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/consistent-sampling/meta-precedence/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/consistent-sampling/meta-precedence/test.ts @@ -48,7 +48,7 @@ sentryTest.describe('When `consistentTraceSampling` is `true` and page contains expect(extractTraceparentData(sentryTrace)).toEqual({ traceId: expect.not.stringContaining(metaTagTraceIdIndex), - parentSpanId: expect.stringMatching(/^[0-9a-f]{16}$/), + parentSpanId: expect.stringMatching(/^[\da-f]{16}$/), parentSampled: false, }); diff --git a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/consistent-sampling/tracesSampler-precedence/test.ts b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/consistent-sampling/tracesSampler-precedence/test.ts index 9e896798be90..2bb196c898fd 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/consistent-sampling/tracesSampler-precedence/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/consistent-sampling/tracesSampler-precedence/test.ts @@ -104,8 +104,8 @@ sentryTest.describe('When `consistentTraceSampling` is `true`', () => { { attributes: { 'sentry.link.type': 'previous_trace' }, sampled: false, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), }, ]); diff --git a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/negatively-sampled/test.ts b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/negatively-sampled/test.ts index 7a8b69fdb364..b84aefb8887d 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/negatively-sampled/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/negatively-sampled/test.ts @@ -24,8 +24,8 @@ sentryTest('includes a span link to a previously negatively sampled span', async expect(navigationTraceContext?.op).toBe('navigation'); expect(navigationTraceContext?.links).toEqual([ { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), sampled: false, attributes: { [SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE]: 'previous_trace', @@ -34,7 +34,7 @@ sentryTest('includes a span link to a previously negatively sampled span', async ]); expect(navigationTraceContext?.data).toMatchObject({ - 'sentry.previous_trace': expect.stringMatching(/[a-f0-9]{32}-[a-f0-9]{16}-0/), + 'sentry.previous_trace': expect.stringMatching(/[a-f\d]{32}-[a-f\d]{16}-0/), }); expect(navigationTraceContext?.trace_id).not.toEqual(navigationTraceContext?.links![0].trace_id); diff --git a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/twp-errors-meta/test.ts b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/twp-errors-meta/test.ts index 5bed055dbc0a..ca716b2e2648 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/twp-errors-meta/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/twp-errors-meta/test.ts @@ -24,12 +24,12 @@ sentryTest('errors in TwP mode have same trace ID & span IDs', async ({ getLocal // Span ID is a virtual span, not the propagated one expect(spanId1).not.toEqual(spanId); - expect(spanId1).toMatch(/^[a-f0-9]{16}$/); + expect(spanId1).toMatch(/^[a-f\d]{16}$/); const contexts2 = event2.contexts; const { trace_id: traceId2, span_id: spanId2 } = contexts2?.trace || {}; expect(traceId2).toEqual(traceId); - expect(spanId2).toMatch(/^[a-f0-9]{16}$/); + expect(spanId2).toMatch(/^[a-f\d]{16}$/); expect(spanId2).toEqual(spanId1); }); diff --git a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/twp-errors/test.ts b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/twp-errors/test.ts index 3048de92b2f1..fa579509ba87 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/twp-errors/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/twp-errors/test.ts @@ -17,13 +17,13 @@ sentryTest('errors in TwP mode have same trace ID & span IDs', async ({ getLocal const contexts1 = event1.contexts; const { trace_id: traceId1, span_id: spanId1 } = contexts1?.trace || {}; - expect(traceId1).toMatch(/^[a-f0-9]{32}$/); - expect(spanId1).toMatch(/^[a-f0-9]{16}$/); + expect(traceId1).toMatch(/^[a-f\d]{32}$/); + expect(spanId1).toMatch(/^[a-f\d]{16}$/); const contexts2 = event2.contexts; const { trace_id: traceId2, span_id: spanId2 } = contexts2?.trace || {}; - expect(traceId2).toMatch(/^[a-f0-9]{32}$/); - expect(spanId2).toMatch(/^[a-f0-9]{16}$/); + expect(traceId2).toMatch(/^[a-f\d]{32}$/); + expect(spanId2).toMatch(/^[a-f\d]{16}$/); expect(traceId2).toEqual(traceId1); expect(spanId2).toEqual(spanId1); diff --git a/dev-packages/browser-integration-tests/suites/tracing/dsc-txn-name-update/test.ts b/dev-packages/browser-integration-tests/suites/tracing/dsc-txn-name-update/test.ts index 0136b1043617..7d33497a988b 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/dsc-txn-name-update/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/dsc-txn-name-update/test.ts @@ -48,7 +48,7 @@ sentryTest('updates the DSC when the txn name is updated and high-quality', asyn return (window as any).__traceId; }); - expect(traceId).toMatch(/^[0-9a-f]{32}$/); + expect(traceId).toMatch(/^[\da-f]{32}$/); // 2 const baggageItems = await makeRequestAndGetBaggageItems(page); @@ -56,7 +56,7 @@ sentryTest('updates the DSC when the txn name is updated and high-quality', asyn 'sentry-environment=production', 'sentry-public_key=public', 'sentry-release=1.1.1', - expect.stringMatching(/sentry-sample_rand=0\.[0-9]+/), + expect.stringMatching(/sentry-sample_rand=0\.\d+/), 'sentry-sample_rate=1', 'sentry-sampled=true', `sentry-trace_id=${traceId}`, @@ -83,7 +83,7 @@ sentryTest('updates the DSC when the txn name is updated and high-quality', asyn 'sentry-environment=production', 'sentry-public_key=public', 'sentry-release=1.1.1', - expect.stringMatching(/sentry-sample_rand=0\.[0-9]+/), + expect.stringMatching(/sentry-sample_rand=0\.\d+/), 'sentry-sample_rate=1', 'sentry-sampled=true', `sentry-trace_id=${traceId}`, @@ -112,7 +112,7 @@ sentryTest('updates the DSC when the txn name is updated and high-quality', asyn 'sentry-environment=production', 'sentry-public_key=public', 'sentry-release=1.1.1', - expect.stringMatching(/sentry-sample_rand=0\.[0-9]+/), + expect.stringMatching(/sentry-sample_rand=0\.\d+/), 'sentry-sample_rate=1', 'sentry-sampled=true', `sentry-trace_id=${traceId}`, diff --git a/dev-packages/browser-integration-tests/suites/tracing/envelope-header-transaction-name/test.ts b/dev-packages/browser-integration-tests/suites/tracing/envelope-header-transaction-name/test.ts index 88a268e69ea2..23043ebc770d 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/envelope-header-transaction-name/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/envelope-header-transaction-name/test.ts @@ -23,7 +23,7 @@ sentryTest( environment: 'production', sample_rate: '1', transaction: expect.stringContaining('/index.html'), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), public_key: 'public', sampled: 'true', sample_rand: expect.any(String), diff --git a/dev-packages/browser-integration-tests/suites/tracing/envelope-header/test.ts b/dev-packages/browser-integration-tests/suites/tracing/envelope-header/test.ts index 9274cd0bb8ba..7617b498efb2 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/envelope-header/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/envelope-header/test.ts @@ -26,7 +26,7 @@ sentryTest( expect(envHeader.trace).toEqual({ environment: 'production', sample_rate: '1', - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), public_key: 'public', sampled: 'true', sample_rand: expect.any(String), diff --git a/dev-packages/browser-integration-tests/suites/tracing/metrics/pageload-resource-spans/test.ts b/dev-packages/browser-integration-tests/suites/tracing/metrics/pageload-resource-spans/test.ts index f748c339ce14..91c8ec9ff216 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/metrics/pageload-resource-spans/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/metrics/pageload-resource-spans/test.ts @@ -104,7 +104,7 @@ sentryTest('adds resource spans to pageload transaction', async ({ getLocalTestU op: 'resource.img', origin: 'auto.resource.browser.metrics', parent_span_id: spanId, - span_id: expect.stringMatching(/^[a-f0-9]{16}$/), + span_id: expect.stringMatching(/^[a-f\d]{16}$/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: traceId, @@ -151,7 +151,7 @@ sentryTest('adds resource spans to pageload transaction', async ({ getLocalTestU op: 'resource.link', origin: 'auto.resource.browser.metrics', parent_span_id: spanId, - span_id: expect.stringMatching(/^[a-f0-9]{16}$/), + span_id: expect.stringMatching(/^[a-f\d]{16}$/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: traceId, @@ -192,7 +192,7 @@ sentryTest('adds resource spans to pageload transaction', async ({ getLocalTestU op: 'resource.script', origin: 'auto.resource.browser.metrics', parent_span_id: spanId, - span_id: expect.stringMatching(/^[a-f0-9]{16}$/), + span_id: expect.stringMatching(/^[a-f\d]{16}$/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: traceId, diff --git a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-cls-standalone-spans/test.ts b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-cls-standalone-spans/test.ts index 24c949c63afa..fd4b3b8fa06b 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-cls-standalone-spans/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-cls-standalone-spans/test.ts @@ -68,7 +68,7 @@ sentryTest('captures a "GOOD" CLS vital with its source as a standalone span', a 'sentry.report_event': 'pagehide', transaction: expect.stringContaining('index.html'), 'user_agent.original': expect.stringContaining('Chrome'), - 'sentry.pageload.span_id': expect.stringMatching(/[a-f0-9]{16}/), + 'sentry.pageload.span_id': expect.stringMatching(/[a-f\d]{16}/), 'cls.source.1': expect.stringContaining('body > div#content > p'), }, description: expect.stringContaining('body > div#content > p'), @@ -81,12 +81,12 @@ sentryTest('captures a "GOOD" CLS vital with its source as a standalone span', a }, op: 'ui.webvital.cls', origin: 'auto.http.browser.cls', - parent_span_id: expect.stringMatching(/[a-f0-9]{16}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), - segment_id: expect.stringMatching(/[a-f0-9]{16}/), + parent_span_id: expect.stringMatching(/[a-f\d]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + segment_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: spanEnvelopeItem.start_timestamp, - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), }); // Flakey value dependent on timings -> we check for a range @@ -138,7 +138,7 @@ sentryTest('captures a "MEH" CLS vital with its source as a standalone span', as 'sentry.report_event': 'pagehide', transaction: expect.stringContaining('index.html'), 'user_agent.original': expect.stringContaining('Chrome'), - 'sentry.pageload.span_id': expect.stringMatching(/[a-f0-9]{16}/), + 'sentry.pageload.span_id': expect.stringMatching(/[a-f\d]{16}/), 'cls.source.1': expect.stringContaining('body > div#content > p'), }, description: expect.stringContaining('body > div#content > p'), @@ -151,12 +151,12 @@ sentryTest('captures a "MEH" CLS vital with its source as a standalone span', as }, op: 'ui.webvital.cls', origin: 'auto.http.browser.cls', - parent_span_id: expect.stringMatching(/[a-f0-9]{16}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), - segment_id: expect.stringMatching(/[a-f0-9]{16}/), + parent_span_id: expect.stringMatching(/[a-f\d]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + segment_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: spanEnvelopeItem.start_timestamp, - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), }); // Flakey value dependent on timings -> we check for a range @@ -206,7 +206,7 @@ sentryTest('captures a "POOR" CLS vital with its source as a standalone span.', 'sentry.report_event': 'pagehide', transaction: expect.stringContaining('index.html'), 'user_agent.original': expect.stringContaining('Chrome'), - 'sentry.pageload.span_id': expect.stringMatching(/[a-f0-9]{16}/), + 'sentry.pageload.span_id': expect.stringMatching(/[a-f\d]{16}/), 'cls.source.1': expect.stringContaining('body > div#content > p'), }, description: expect.stringContaining('body > div#content > p'), @@ -219,12 +219,12 @@ sentryTest('captures a "POOR" CLS vital with its source as a standalone span.', }, op: 'ui.webvital.cls', origin: 'auto.http.browser.cls', - parent_span_id: expect.stringMatching(/[a-f0-9]{16}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), - segment_id: expect.stringMatching(/[a-f0-9]{16}/), + parent_span_id: expect.stringMatching(/[a-f\d]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + segment_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: spanEnvelopeItem.start_timestamp, - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), }); // Flakey value dependent on timings -> we check for a range @@ -275,7 +275,7 @@ sentryTest( 'sentry.report_event': 'pagehide', transaction: expect.stringContaining('index.html'), 'user_agent.original': expect.stringContaining('Chrome'), - 'sentry.pageload.span_id': expect.stringMatching(/[a-f0-9]{16}/), + 'sentry.pageload.span_id': expect.stringMatching(/[a-f\d]{16}/), }, description: 'Layout shift', exclusive_time: 0, @@ -287,12 +287,12 @@ sentryTest( }, op: 'ui.webvital.cls', origin: 'auto.http.browser.cls', - parent_span_id: expect.stringMatching(/[a-f0-9]{16}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), - segment_id: expect.stringMatching(/[a-f0-9]{16}/), + parent_span_id: expect.stringMatching(/[a-f\d]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + segment_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: spanEnvelopeItem.start_timestamp, - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), }); expect(spanEnvelopeHeaders).toEqual({ @@ -323,8 +323,8 @@ sentryTest( const pageloadSpanId = eventData.contexts?.trace?.span_id; const pageloadTraceId = eventData.contexts?.trace?.trace_id; - expect(pageloadSpanId).toMatch(/[a-f0-9]{16}/); - expect(pageloadTraceId).toMatch(/[a-f0-9]{32}/); + expect(pageloadSpanId).toMatch(/[a-f\d]{16}/); + expect(pageloadTraceId).toMatch(/[a-f\d]{32}/); const spanEnvelopePromise = getMultipleSentryEnvelopeRequests( page, @@ -371,7 +371,7 @@ sentryTest('sends CLS of the initial page when soft-navigating to a new page', a await page.goto(`${url}#soft-navigation`); const pageloadTraceId = pageloadEventData.contexts?.trace?.trace_id; - expect(pageloadTraceId).toMatch(/[a-f0-9]{32}/); + expect(pageloadTraceId).toMatch(/[a-f\d]{32}/); const spanEnvelope = (await spanEnvelopePromise)[0]; const spanEnvelopeItem = spanEnvelope[1][0][1]; diff --git a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-late/test.ts b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-late/test.ts index 942230b4594e..a882c06c1e11 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-late/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-late/test.ts @@ -43,7 +43,7 @@ sentryTest('should capture an INP click event span after pageload', async ({ bro const spanEnvelopeItem = spanEnvelope[1][0][1]; const traceId = spanEnvelopeHeaders.trace!.trace_id; - expect(traceId).toMatch(/[a-f0-9]{32}/); + expect(traceId).toMatch(/[a-f\d]{32}/); expect(spanEnvelopeHeaders).toEqual({ sent_at: expect.any(String), @@ -81,7 +81,7 @@ sentryTest('should capture an INP click event span after pageload', async ({ bro origin: 'auto.http.browser.inp', is_segment: true, segment_id: spanEnvelopeItem.span_id, - span_id: expect.stringMatching(/[a-f0-9]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: traceId, diff --git a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-parametrized-late/test.ts b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-parametrized-late/test.ts index 435ed8398668..d1dea39f0231 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-parametrized-late/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-parametrized-late/test.ts @@ -45,7 +45,7 @@ sentryTest( const spanEnvelopeItem = spanEnvelope[1][0][1]; const traceId = spanEnvelopeHeaders.trace!.trace_id; - expect(traceId).toMatch(/[a-f0-9]{32}/); + expect(traceId).toMatch(/[a-f\d]{32}/); expect(spanEnvelopeHeaders).toEqual({ sent_at: expect.any(String), @@ -84,7 +84,7 @@ sentryTest( origin: 'auto.http.browser.inp', is_segment: true, segment_id: spanEnvelopeItem.span_id, - span_id: expect.stringMatching(/[a-f0-9]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: traceId, diff --git a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-parametrized/test.ts b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-parametrized/test.ts index 9d83d2608893..a7d614147f83 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-parametrized/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-parametrized/test.ts @@ -43,7 +43,7 @@ sentryTest( const spanEnvelopeItem = spanEnvelope[1][0][1]; const traceId = spanEnvelopeHeaders.trace!.trace_id; - expect(traceId).toMatch(/[a-f0-9]{32}/); + expect(traceId).toMatch(/[a-f\d]{32}/); expect(spanEnvelopeHeaders).toEqual({ sent_at: expect.any(String), @@ -81,8 +81,8 @@ sentryTest( origin: 'auto.http.browser.inp', segment_id: expect.not.stringMatching(spanEnvelopeItem.span_id!), // parent is the pageload span - parent_span_id: expect.stringMatching(/[a-f0-9]{16}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + parent_span_id: expect.stringMatching(/[a-f\d]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: traceId, diff --git a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp/test.ts b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp/test.ts index bf85d0ad99af..ee92b13802ec 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp/test.ts @@ -42,7 +42,7 @@ sentryTest('should capture an INP click event span during pageload', async ({ br const spanEnvelopeItem = spanEnvelope[1][0][1]; const traceId = spanEnvelopeHeaders.trace!.trace_id; - expect(traceId).toMatch(/[a-f0-9]{32}/); + expect(traceId).toMatch(/[a-f\d]{32}/); expect(spanEnvelopeHeaders).toEqual({ sent_at: expect.any(String), @@ -80,8 +80,8 @@ sentryTest('should capture an INP click event span during pageload', async ({ br origin: 'auto.http.browser.inp', segment_id: expect.not.stringMatching(spanEnvelopeItem.span_id!), // Parent is the pageload span - parent_span_id: expect.stringMatching(/[a-f0-9]{16}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + parent_span_id: expect.stringMatching(/[a-f\d]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: traceId, diff --git a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-lcp-standalone-spans/test.ts b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-lcp-standalone-spans/test.ts index ad21a6240793..e2b8a3e66e44 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-lcp-standalone-spans/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-lcp-standalone-spans/test.ts @@ -57,7 +57,7 @@ sentryTest('captures LCP vital as a standalone span', async ({ getLocalTestUrl, const spanEnvelopeItem = spanEnvelope[1][0][1]; const pageloadTraceId = pageloadTransactionEvent.contexts?.trace?.trace_id; - expect(pageloadTraceId).toMatch(/[a-f0-9]{32}/); + expect(pageloadTraceId).toMatch(/[a-f\d]{32}/); expect(spanEnvelopeItem).toEqual({ data: { @@ -67,7 +67,7 @@ sentryTest('captures LCP vital as a standalone span', async ({ getLocalTestUrl, 'sentry.report_event': 'pagehide', transaction: expect.stringContaining('index.html'), 'user_agent.original': expect.stringContaining('Chrome'), - 'sentry.pageload.span_id': expect.stringMatching(/[a-f0-9]{16}/), + 'sentry.pageload.span_id': expect.stringMatching(/[a-f\d]{16}/), 'lcp.element': 'body > img', 'lcp.loadTime': expect.any(Number), 'lcp.renderTime': expect.any(Number), @@ -84,9 +84,9 @@ sentryTest('captures LCP vital as a standalone span', async ({ getLocalTestUrl, }, op: 'ui.webvital.lcp', origin: 'auto.http.browser.lcp', - parent_span_id: expect.stringMatching(/[a-f0-9]{16}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), - segment_id: expect.stringMatching(/[a-f0-9]{16}/), + parent_span_id: expect.stringMatching(/[a-f\d]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + segment_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: spanEnvelopeItem.start_timestamp, // LCP is a point-in-time metric trace_id: pageloadTraceId, @@ -126,8 +126,8 @@ sentryTest('LCP span is linked to pageload transaction', async ({ getLocalTestUr const pageloadSpanId = eventData.contexts?.trace?.span_id; const pageloadTraceId = eventData.contexts?.trace?.trace_id; - expect(pageloadSpanId).toMatch(/[a-f0-9]{16}/); - expect(pageloadTraceId).toMatch(/[a-f0-9]{32}/); + expect(pageloadSpanId).toMatch(/[a-f\d]{16}/); + expect(pageloadTraceId).toMatch(/[a-f\d]{32}/); const spanEnvelopePromise = getMultipleSentryEnvelopeRequests( page, diff --git a/dev-packages/browser-integration-tests/suites/tracing/request/fetch-immediate/test.ts b/dev-packages/browser-integration-tests/suites/tracing/request/fetch-immediate/test.ts index 7d11168acb1a..f73689554e91 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/request/fetch-immediate/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/request/fetch-immediate/test.ts @@ -25,7 +25,7 @@ sentryTest('should create spans for fetch requests called directly after init', expect(requestSpans![0]).toMatchObject({ description: 'GET http://sentry-test-site.example/0', parent_span_id: tracingEvent.contexts?.trace?.span_id, - span_id: expect.stringMatching(/[a-f0-9]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: tracingEvent.contexts?.trace?.trace_id, diff --git a/dev-packages/browser-integration-tests/suites/tracing/request/fetch-propagateTraceparent/test.ts b/dev-packages/browser-integration-tests/suites/tracing/request/fetch-propagateTraceparent/test.ts index d0aedc65bac8..a580e75415ce 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/request/fetch-propagateTraceparent/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/request/fetch-propagateTraceparent/test.ts @@ -27,8 +27,8 @@ sentryTest( const requestHeaders1 = request1.headers(); const traceparentData1 = extractTraceparentData(requestHeaders1['sentry-trace']); expect(traceparentData1).toMatchObject({ - traceId: expect.stringMatching(/^([a-f0-9]{32})$/), - parentSpanId: expect.stringMatching(/^([a-f0-9]{16})$/), + traceId: expect.stringMatching(/^([a-f\d]{32})$/), + parentSpanId: expect.stringMatching(/^([a-f\d]{16})$/), parentSampled: true, }); diff --git a/dev-packages/browser-integration-tests/suites/tracing/request/fetch-relative-url/test.ts b/dev-packages/browser-integration-tests/suites/tracing/request/fetch-relative-url/test.ts index b1883896100c..0473f01e5015 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/request/fetch-relative-url/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/request/fetch-relative-url/test.ts @@ -23,7 +23,7 @@ sentryTest('should create spans for fetch requests', async ({ getLocalTestUrl, p expect(span).toMatchObject({ description: `GET /test-req/${index}`, parent_span_id: tracingEvent.contexts?.trace?.span_id, - span_id: expect.stringMatching(/[a-f0-9]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: tracingEvent.contexts?.trace?.trace_id, @@ -57,14 +57,14 @@ sentryTest('should attach `sentry-trace` header to fetch requests', async ({ get const request1 = requests[0]; const requestHeaders1 = request1.headers(); expect(requestHeaders1).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-1$/), baggage: expect.any(String), }); const request2 = requests[1]; const requestHeaders2 = request2.headers(); expect(requestHeaders2).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-1$/), baggage: expect.any(String), 'x-test-header': 'existing-header', }); @@ -72,7 +72,7 @@ sentryTest('should attach `sentry-trace` header to fetch requests', async ({ get const request3 = requests[2]; const requestHeaders3 = request3.headers(); expect(requestHeaders3).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-1$/), baggage: expect.any(String), }); }); diff --git a/dev-packages/browser-integration-tests/suites/tracing/request/fetch-strip-query-and-fragment/test.ts b/dev-packages/browser-integration-tests/suites/tracing/request/fetch-strip-query-and-fragment/test.ts index a0fea6e6af29..0ac0731d3537 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/request/fetch-strip-query-and-fragment/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/request/fetch-strip-query-and-fragment/test.ts @@ -24,7 +24,7 @@ sentryTest('strips query params in fetch request spans', async ({ getLocalTestUr expect(requestSpan).toMatchObject({ description: 'GET http://sentry-test-site.example/0', parent_span_id: transactionEvent.contexts?.trace?.span_id, - span_id: expect.stringMatching(/[a-f0-9]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: transactionEvent.contexts?.trace?.trace_id, @@ -67,7 +67,7 @@ sentryTest('strips hash fragment in fetch request spans', async ({ getLocalTestU expect(requestSpan).toMatchObject({ description: 'GET http://sentry-test-site.example/1', parent_span_id: transactionEvent.contexts?.trace?.span_id, - span_id: expect.stringMatching(/[a-f0-9]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: transactionEvent.contexts?.trace?.trace_id, @@ -110,7 +110,7 @@ sentryTest('strips hash fragment and query params in fetch request spans', async expect(requestSpan).toMatchObject({ description: 'GET http://sentry-test-site.example/2', parent_span_id: transactionEvent.contexts?.trace?.span_id, - span_id: expect.stringMatching(/[a-f0-9]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: transactionEvent.contexts?.trace?.trace_id, @@ -154,7 +154,7 @@ sentryTest( expect(requestSpan).toMatchObject({ description: 'GET /api/users', parent_span_id: transactionEvent.contexts?.trace?.span_id, - span_id: expect.stringMatching(/[a-f0-9]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: transactionEvent.contexts?.trace?.trace_id, diff --git a/dev-packages/browser-integration-tests/suites/tracing/request/fetch-tracing-unsampled-propagateTraceparent/test.ts b/dev-packages/browser-integration-tests/suites/tracing/request/fetch-tracing-unsampled-propagateTraceparent/test.ts index 26815021f0e3..b8fd2b92ad01 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/request/fetch-tracing-unsampled-propagateTraceparent/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/request/fetch-tracing-unsampled-propagateTraceparent/test.ts @@ -18,8 +18,8 @@ sentryTest( const traceparentData = extractTraceparentData(requestHeaders['sentry-trace']); expect(traceparentData).toMatchObject({ - traceId: expect.stringMatching(/^([a-f0-9]{32})$/), - parentSpanId: expect.stringMatching(/^([a-f0-9]{16})$/), + traceId: expect.stringMatching(/^([a-f\d]{32})$/), + parentSpanId: expect.stringMatching(/^([a-f\d]{16})$/), parentSampled: false, }); diff --git a/dev-packages/browser-integration-tests/suites/tracing/request/fetch-tracing-unsampled/test.ts b/dev-packages/browser-integration-tests/suites/tracing/request/fetch-tracing-unsampled/test.ts index e1f69cb0fdf1..4d65cfcd78ea 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/request/fetch-tracing-unsampled/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/request/fetch-tracing-unsampled/test.ts @@ -21,14 +21,14 @@ sentryTest('should attach `sentry-trace` header to unsampled fetch requests', as const request1 = requests[0]; const requestHeaders1 = request1.headers(); expect(requestHeaders1).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-0$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-0$/), baggage: expect.any(String), }); const request2 = requests[1]; const requestHeaders2 = request2.headers(); expect(requestHeaders2).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-0$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-0$/), baggage: expect.any(String), 'x-test-header': 'existing-header', }); @@ -36,7 +36,7 @@ sentryTest('should attach `sentry-trace` header to unsampled fetch requests', as const request3 = requests[2]; const requestHeaders3 = request3.headers(); expect(requestHeaders3).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-0$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-0$/), baggage: expect.any(String), }); }); diff --git a/dev-packages/browser-integration-tests/suites/tracing/request/fetch-tracing-without-performance-propagateTraceparent/test.ts b/dev-packages/browser-integration-tests/suites/tracing/request/fetch-tracing-without-performance-propagateTraceparent/test.ts index 718cca0c8701..5ecb32caa07f 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/request/fetch-tracing-without-performance-propagateTraceparent/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/request/fetch-tracing-without-performance-propagateTraceparent/test.ts @@ -22,8 +22,8 @@ sentryTest( const traceparentData = extractTraceparentData(requestHeaders0['sentry-trace']); expect(traceparentData).toMatchObject({ - traceId: expect.stringMatching(/^([a-f0-9]{32})$/), - parentSpanId: expect.stringMatching(/^([a-f0-9]{16})$/), + traceId: expect.stringMatching(/^([a-f\d]{32})$/), + parentSpanId: expect.stringMatching(/^([a-f\d]{16})$/), parentSampled: undefined, }); diff --git a/dev-packages/browser-integration-tests/suites/tracing/request/fetch-tracing-without-performance/test.ts b/dev-packages/browser-integration-tests/suites/tracing/request/fetch-tracing-without-performance/test.ts index c2ebf52d18f6..c16c1d90ddda 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/request/fetch-tracing-without-performance/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/request/fetch-tracing-without-performance/test.ts @@ -23,14 +23,14 @@ sentryTest( const request1 = requests[0]; const requestHeaders1 = request1.headers(); expect(requestHeaders1).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/), baggage: expect.any(String), }); const request2 = requests[1]; const requestHeaders2 = request2.headers(); expect(requestHeaders2).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/), baggage: expect.any(String), 'x-test-header': 'existing-header', }); @@ -38,7 +38,7 @@ sentryTest( const request3 = requests[2]; const requestHeaders3 = request3.headers(); expect(requestHeaders3).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/), baggage: expect.any(String), }); }, diff --git a/dev-packages/browser-integration-tests/suites/tracing/request/fetch/test.ts b/dev-packages/browser-integration-tests/suites/tracing/request/fetch/test.ts index 72a196d5d8e9..7955676bf0c8 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/request/fetch/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/request/fetch/test.ts @@ -26,7 +26,7 @@ sentryTest('should create spans for fetch requests', async ({ getLocalTestUrl, p expect(span).toMatchObject({ description: `GET http://sentry-test-site.example/${index}`, parent_span_id: tracingEvent.contexts?.trace?.span_id, - span_id: expect.stringMatching(/[a-f0-9]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: tracingEvent.contexts?.trace?.trace_id, @@ -62,7 +62,7 @@ sentryTest('attaches `sentry-trace` and `baggage` headers to fetch requests', as const request1 = requests[0]; const requestHeaders1 = request1.headers(); expect(requestHeaders1).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-1$/), baggage: expect.any(String), }); // traceparent must only be attached if propagateTraceparent is `true` @@ -71,7 +71,7 @@ sentryTest('attaches `sentry-trace` and `baggage` headers to fetch requests', as const request2 = requests[1]; const requestHeaders2 = request2.headers(); expect(requestHeaders2).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-1$/), baggage: expect.any(String), 'x-test-header': 'existing-header', }); @@ -80,7 +80,7 @@ sentryTest('attaches `sentry-trace` and `baggage` headers to fetch requests', as const request3 = requests[2]; const requestHeaders3 = request3.headers(); expect(requestHeaders3).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-1$/), baggage: expect.any(String), }); expect(requestHeaders3).not.toHaveProperty('traceparent'); diff --git a/dev-packages/browser-integration-tests/suites/tracing/request/xhr-propagateTraceparent/test.ts b/dev-packages/browser-integration-tests/suites/tracing/request/xhr-propagateTraceparent/test.ts index 1289dfb6cdcc..b97a6a70479b 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/request/xhr-propagateTraceparent/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/request/xhr-propagateTraceparent/test.ts @@ -25,8 +25,8 @@ sentryTest( const requestHeaders1 = request1.headers(); const traceparentData1 = extractTraceparentData(requestHeaders1['sentry-trace']); expect(traceparentData1).toMatchObject({ - traceId: expect.stringMatching(/^([a-f0-9]{32})$/), - parentSpanId: expect.stringMatching(/^([a-f0-9]{16})$/), + traceId: expect.stringMatching(/^([a-f\d]{32})$/), + parentSpanId: expect.stringMatching(/^([a-f\d]{16})$/), parentSampled: true, }); diff --git a/dev-packages/browser-integration-tests/suites/tracing/request/xhr-relative-url/test.ts b/dev-packages/browser-integration-tests/suites/tracing/request/xhr-relative-url/test.ts index ef180c0dcb6d..e207d3db04b2 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/request/xhr-relative-url/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/request/xhr-relative-url/test.ts @@ -23,7 +23,7 @@ sentryTest('should create spans for xhr requests', async ({ getLocalTestUrl, pag expect(span).toMatchObject({ description: `GET /test-req/${index}`, parent_span_id: tracingEvent.contexts?.trace?.span_id, - span_id: expect.stringMatching(/[a-f0-9]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: tracingEvent.contexts?.trace?.trace_id, @@ -57,14 +57,14 @@ sentryTest('should attach `sentry-trace` header to xhr requests', async ({ getLo const request1 = requests[0]; const requestHeaders1 = request1.headers(); expect(requestHeaders1).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-1$/), baggage: expect.any(String), }); const request2 = requests[1]; const requestHeaders2 = request2.headers(); expect(requestHeaders2).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-1$/), baggage: expect.any(String), 'x-test-header': 'existing-header', }); @@ -72,7 +72,7 @@ sentryTest('should attach `sentry-trace` header to xhr requests', async ({ getLo const request3 = requests[2]; const requestHeaders3 = request3.headers(); expect(requestHeaders3).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-1$/), baggage: expect.any(String), }); }); diff --git a/dev-packages/browser-integration-tests/suites/tracing/request/xhr-strip-query-and-fragment/test.ts b/dev-packages/browser-integration-tests/suites/tracing/request/xhr-strip-query-and-fragment/test.ts index d4ed06fcdd4e..fb96465b8b5b 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/request/xhr-strip-query-and-fragment/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/request/xhr-strip-query-and-fragment/test.ts @@ -24,7 +24,7 @@ sentryTest('strips query params in XHR request spans', async ({ getLocalTestUrl, expect(requestSpan).toMatchObject({ description: 'GET http://sentry-test-site.example/0', parent_span_id: transactionEvent.contexts?.trace?.span_id, - span_id: expect.stringMatching(/[a-f0-9]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: transactionEvent.contexts?.trace?.trace_id, @@ -66,7 +66,7 @@ sentryTest('strips hash fragment in XHR request spans', async ({ getLocalTestUrl expect(requestSpan).toMatchObject({ description: 'GET http://sentry-test-site.example/1', parent_span_id: transactionEvent.contexts?.trace?.span_id, - span_id: expect.stringMatching(/[a-f0-9]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: transactionEvent.contexts?.trace?.trace_id, @@ -108,7 +108,7 @@ sentryTest('strips hash fragment and query params in XHR request spans', async ( expect(requestSpan).toMatchObject({ description: 'GET http://sentry-test-site.example/2', parent_span_id: transactionEvent.contexts?.trace?.span_id, - span_id: expect.stringMatching(/[a-f0-9]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: transactionEvent.contexts?.trace?.trace_id, @@ -151,7 +151,7 @@ sentryTest( expect(requestSpan).toMatchObject({ description: 'GET /api/users', parent_span_id: transactionEvent.contexts?.trace?.span_id, - span_id: expect.stringMatching(/[a-f0-9]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: transactionEvent.contexts?.trace?.trace_id, diff --git a/dev-packages/browser-integration-tests/suites/tracing/request/xhr-tracing-unsampled/test.ts b/dev-packages/browser-integration-tests/suites/tracing/request/xhr-tracing-unsampled/test.ts index 786ce872d349..ba4fd377fc1c 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/request/xhr-tracing-unsampled/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/request/xhr-tracing-unsampled/test.ts @@ -21,14 +21,14 @@ sentryTest('should attach `sentry-trace` header to unsampled xhr requests', asyn const request1 = requests[0]; const requestHeaders1 = request1.headers(); expect(requestHeaders1).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-0$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-0$/), baggage: expect.any(String), }); const request2 = requests[1]; const requestHeaders2 = request2.headers(); expect(requestHeaders2).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-0$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-0$/), baggage: expect.any(String), 'x-test-header': 'existing-header', }); @@ -36,7 +36,7 @@ sentryTest('should attach `sentry-trace` header to unsampled xhr requests', asyn const request3 = requests[2]; const requestHeaders3 = request3.headers(); expect(requestHeaders3).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-0$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-0$/), baggage: expect.any(String), }); }); diff --git a/dev-packages/browser-integration-tests/suites/tracing/request/xhr-tracing-without-performance-propagateTraceparent/test.ts b/dev-packages/browser-integration-tests/suites/tracing/request/xhr-tracing-without-performance-propagateTraceparent/test.ts index de1afa51f962..23bf6e6ccac9 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/request/xhr-tracing-without-performance-propagateTraceparent/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/request/xhr-tracing-without-performance-propagateTraceparent/test.ts @@ -18,8 +18,8 @@ sentryTest( const traceparentData = extractTraceparentData(requestHeaders['sentry-trace']); expect(traceparentData).toEqual({ - traceId: expect.stringMatching(/^([a-f0-9]{32})$/), - parentSpanId: expect.stringMatching(/^([a-f0-9]{16})$/), + traceId: expect.stringMatching(/^([a-f\d]{32})$/), + parentSpanId: expect.stringMatching(/^([a-f\d]{16})$/), parentSampled: undefined, }); diff --git a/dev-packages/browser-integration-tests/suites/tracing/request/xhr-tracing-without-performance/test.ts b/dev-packages/browser-integration-tests/suites/tracing/request/xhr-tracing-without-performance/test.ts index 728133a2ac4c..1806fcad21b5 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/request/xhr-tracing-without-performance/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/request/xhr-tracing-without-performance/test.ts @@ -23,14 +23,14 @@ sentryTest( const request1 = requests[0]; const requestHeaders1 = request1.headers(); expect(requestHeaders1).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/), baggage: expect.any(String), }); const request2 = requests[1]; const requestHeaders2 = request2.headers(); expect(requestHeaders2).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/), baggage: expect.any(String), 'x-test-header': 'existing-header', }); @@ -38,7 +38,7 @@ sentryTest( const request3 = requests[2]; const requestHeaders3 = request3.headers(); expect(requestHeaders3).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/), baggage: expect.any(String), }); }, diff --git a/dev-packages/browser-integration-tests/suites/tracing/request/xhr/test.ts b/dev-packages/browser-integration-tests/suites/tracing/request/xhr/test.ts index cf3b11c02260..ccf40203281a 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/request/xhr/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/request/xhr/test.ts @@ -21,7 +21,7 @@ sentryTest('should create spans for XHR requests', async ({ getLocalTestUrl, pag expect(span).toMatchObject({ description: `GET http://sentry-test-site.example/${index}`, parent_span_id: eventData.contexts?.trace?.span_id, - span_id: expect.stringMatching(/[a-f0-9]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: eventData.contexts?.trace?.trace_id, @@ -55,14 +55,14 @@ sentryTest('should attach `sentry-trace` header to XHR requests', async ({ getLo const request1 = requests[0]; const requestHeaders1 = request1.headers(); expect(requestHeaders1).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-1$/), baggage: expect.any(String), }); const request2 = requests[1]; const requestHeaders2 = request2.headers(); expect(requestHeaders2).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-1$/), baggage: expect.any(String), 'x-test-header': 'existing-header', }); @@ -70,7 +70,7 @@ sentryTest('should attach `sentry-trace` header to XHR requests', async ({ getLo const request3 = requests[2]; const requestHeaders3 = request3.headers(); expect(requestHeaders3).toMatchObject({ - 'sentry-trace': expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/), + 'sentry-trace': expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-1$/), baggage: expect.any(String), }); }); diff --git a/dev-packages/browser-integration-tests/suites/tracing/setSpanActive/default/test.ts b/dev-packages/browser-integration-tests/suites/tracing/setSpanActive/default/test.ts index 080ebbfa6e84..2019c78c837f 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/setSpanActive/default/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/setSpanActive/default/test.ts @@ -14,7 +14,7 @@ sentryTest('sets an inactive span active and adds child spans to it', async ({ g const checkoutEvent = envelopeRequestParser(await req); const checkoutSpanId = checkoutEvent.contexts?.trace?.span_id; - expect(checkoutSpanId).toMatch(/[a-f0-9]{16}/); + expect(checkoutSpanId).toMatch(/[a-f\d]{16}/); expect(checkoutEvent.spans).toHaveLength(3); diff --git a/dev-packages/browser-integration-tests/suites/tracing/setSpanActive/nested-parentAlwaysRoot/test.ts b/dev-packages/browser-integration-tests/suites/tracing/setSpanActive/nested-parentAlwaysRoot/test.ts index 2270b470123b..5132178d1981 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/setSpanActive/nested-parentAlwaysRoot/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/setSpanActive/nested-parentAlwaysRoot/test.ts @@ -21,8 +21,8 @@ sentryTest( const checkoutSpanId = checkoutEvent.contexts?.trace?.span_id; const postCheckoutSpanId = postCheckoutEvent.contexts?.trace?.span_id; - expect(checkoutSpanId).toMatch(/[a-f0-9]{16}/); - expect(postCheckoutSpanId).toMatch(/[a-f0-9]{16}/); + expect(checkoutSpanId).toMatch(/[a-f\d]{16}/); + expect(postCheckoutSpanId).toMatch(/[a-f\d]{16}/); expect(checkoutEvent.spans).toHaveLength(4); expect(postCheckoutEvent.spans).toHaveLength(1); diff --git a/dev-packages/browser-integration-tests/suites/tracing/setSpanActive/nested/test.ts b/dev-packages/browser-integration-tests/suites/tracing/setSpanActive/nested/test.ts index 094bb0ed3dd8..cea01f304691 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/setSpanActive/nested/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/setSpanActive/nested/test.ts @@ -21,8 +21,8 @@ sentryTest( const checkoutSpanId = checkoutEvent.contexts?.trace?.span_id; const postCheckoutSpanId = postCheckoutEvent.contexts?.trace?.span_id; - expect(checkoutSpanId).toMatch(/[a-f0-9]{16}/); - expect(postCheckoutSpanId).toMatch(/[a-f0-9]{16}/); + expect(checkoutSpanId).toMatch(/[a-f\d]{16}/); + expect(postCheckoutSpanId).toMatch(/[a-f\d]{16}/); expect(checkoutEvent.spans).toHaveLength(4); expect(postCheckoutEvent.spans).toHaveLength(1); 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 42547709e928..0255507287d3 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 @@ -38,8 +38,8 @@ sentryTest('creates a new trace and sample_rand on each navigation', async ({ ge expect(navigation1TraceContext).toMatchObject({ op: 'navigation', - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(navigation1TraceContext).not.toHaveProperty('parent_span_id'); @@ -54,8 +54,8 @@ sentryTest('creates a new trace and sample_rand on each navigation', async ({ ge expect(navigation2TraceContext).toMatchObject({ op: 'navigation', - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(navigation2TraceContext).not.toHaveProperty('parent_span_id'); @@ -93,8 +93,8 @@ sentryTest('error after navigation has navigation traceId', async ({ getLocalTes expect(navigationTraceContext).toMatchObject({ op: 'navigation', - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(navigationTraceContext).not.toHaveProperty('parent_span_id'); @@ -120,7 +120,7 @@ sentryTest('error after navigation has navigation traceId', async ({ getLocalTes const errorTraceContext = errorEvent.contexts?.trace; expect(errorTraceContext).toEqual({ trace_id: navigationTraceContext?.trace_id, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(errorTraceHeader).toEqual({ environment: 'production', @@ -162,8 +162,8 @@ sentryTest('error during navigation has new navigation traceId', async ({ getLoc const navigationTraceContext = navigationEvent?.contexts?.trace; expect(navigationTraceContext).toMatchObject({ op: 'navigation', - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(navigationTraceContext).not.toHaveProperty('parent_span_id'); @@ -179,7 +179,7 @@ sentryTest('error during navigation has new navigation traceId', async ({ getLoc const errorTraceContext = errorEvent?.contexts?.trace; expect(errorTraceContext).toEqual({ trace_id: navigationTraceContext?.trace_id, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(errorTraceHeader).toEqual({ @@ -230,8 +230,8 @@ sentryTest( expect(navigationEvent.type).toEqual('transaction'); expect(navigationTraceContext).toMatchObject({ op: 'navigation', - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(navigationTraceContext).not.toHaveProperty('parent_span_id'); @@ -293,8 +293,8 @@ sentryTest( expect(navigationEvent.type).toEqual('transaction'); expect(navigationTraceContext).toMatchObject({ op: 'navigation', - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(navigationTraceContext).not.toHaveProperty('parent_span_id'); @@ -335,8 +335,8 @@ sentryTest( const navigationTraceContext = navigationEvent.contexts?.trace; expect(navigationTraceContext).toMatchObject({ op: 'navigation', - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(navigationTraceContext).not.toHaveProperty('parent_span_id'); @@ -357,7 +357,7 @@ sentryTest( expect(feedbackTraceContext).toMatchObject({ trace_id: navigationTraceContext?.trace_id, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); }, ); 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 98f468818d51..ae3186abda06 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 @@ -43,7 +43,7 @@ sentryTest( op: 'pageload', trace_id: META_TAG_TRACE_ID, parent_span_id: META_TAG_PARENT_SPAN_ID, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(pageloadTraceHeader).toEqual({ @@ -60,8 +60,8 @@ sentryTest( expect(navigationEvent.type).toEqual('transaction'); expect(navigationTraceContext).toMatchObject({ op: 'navigation', - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); // navigation span is head of trace, so there's no parent span: expect(navigationTraceContext?.trace_id).not.toHaveProperty('parent_span_id'); @@ -97,7 +97,7 @@ sentryTest('error after tag pageload has pageload traceId', async ({ getL op: 'pageload', trace_id: META_TAG_TRACE_ID, parent_span_id: META_TAG_PARENT_SPAN_ID, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(pageloadTraceHeader).toEqual({ @@ -123,7 +123,7 @@ sentryTest('error after tag pageload has pageload traceId', async ({ getL expect(errorEvent.contexts?.trace).toEqual({ trace_id: META_TAG_TRACE_ID, parent_span_id: META_TAG_PARENT_SPAN_ID, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(errorTraceHeader).toEqual({ @@ -165,7 +165,7 @@ sentryTest('error during tag pageload has pageload traceId', async ({ get op: 'pageload', trace_id: META_TAG_TRACE_ID, parent_span_id: META_TAG_PARENT_SPAN_ID, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(pageloadTraceHeader).toEqual({ @@ -183,7 +183,7 @@ sentryTest('error during tag pageload has pageload traceId', async ({ get expect(errorEvent?.contexts?.trace).toEqual({ trace_id: META_TAG_TRACE_ID, parent_span_id: META_TAG_PARENT_SPAN_ID, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(errorTraceHeader).toEqual({ @@ -230,7 +230,7 @@ sentryTest( op: 'pageload', trace_id: META_TAG_TRACE_ID, parent_span_id: META_TAG_PARENT_SPAN_ID, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(pageloadTraceHeader).toEqual({ @@ -284,7 +284,7 @@ sentryTest( op: 'pageload', trace_id: META_TAG_TRACE_ID, parent_span_id: META_TAG_PARENT_SPAN_ID, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(pageloadTraceHeader).toEqual({ @@ -320,7 +320,7 @@ sentryTest('user feedback event after pageload has pageload traceId in headers', op: 'pageload', trace_id: META_TAG_TRACE_ID, parent_span_id: META_TAG_PARENT_SPAN_ID, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); const feedbackEventPromise = getFirstSentryEnvelopeRequest(page); @@ -340,6 +340,6 @@ sentryTest('user feedback event after pageload has pageload traceId in headers', expect(feedbackTraceContext).toMatchObject({ trace_id: META_TAG_TRACE_ID, parent_span_id: META_TAG_PARENT_SPAN_ID, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); }); 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 e889be038bdd..e6edd02cf360 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 @@ -38,8 +38,8 @@ sentryTest( expect(pageloadTraceContext).toMatchObject({ op: 'pageload', - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(pageloadTraceContext).not.toHaveProperty('parent_span_id'); @@ -54,8 +54,8 @@ sentryTest( expect(navigationTraceContext).toMatchObject({ op: 'navigation', - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(navigationTraceContext).not.toHaveProperty('parent_span_id'); @@ -89,8 +89,8 @@ sentryTest('error after pageload has pageload traceId', async ({ getLocalTestUrl 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}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(pageloadTraceContext).not.toHaveProperty('parent_span_id'); @@ -116,7 +116,7 @@ sentryTest('error after pageload has pageload traceId', async ({ getLocalTestUrl expect(errorTraceContext).toEqual({ trace_id: pageloadTraceContext?.trace_id, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(errorTraceHeader).toEqual({ @@ -156,8 +156,8 @@ sentryTest('error during pageload has pageload traceId', async ({ getLocalTestUr 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}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(pageloadTraceContext).not.toHaveProperty('parent_span_id'); @@ -175,7 +175,7 @@ sentryTest('error during pageload has pageload traceId', async ({ getLocalTestUr expect(errorEvent.type).toEqual(undefined); expect(errorTraceContext).toEqual({ trace_id: pageloadTraceContext?.trace_id, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(errorTraceHeader).toEqual({ @@ -221,8 +221,8 @@ sentryTest( 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}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(pageloadTraceContext).not.toHaveProperty('parent_span_id'); @@ -278,8 +278,8 @@ sentryTest( 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}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(pageloadTraceContext).not.toHaveProperty('parent_span_id'); @@ -457,8 +457,8 @@ sentryTest('user feedback event after pageload has pageload traceId in headers', expect(pageloadTraceContext).toMatchObject({ op: 'pageload', - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(pageloadTraceContext).not.toHaveProperty('parent_span_id'); @@ -479,6 +479,6 @@ sentryTest('user feedback event after pageload has pageload traceId in headers', expect(feedbackTraceContext).toMatchObject({ trace_id: pageloadTraceContext?.trace_id, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); }); diff --git a/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/startNewTrace/test.ts b/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/startNewTrace/test.ts index 6f5ede5eccf8..40cc8a64d75f 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/startNewTrace/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/startNewTrace/test.ts @@ -37,8 +37,8 @@ sentryTest( expect(pageloadTraceContext).toMatchObject({ op: 'pageload', - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(pageloadTraceContext).not.toHaveProperty('parent_span_id'); @@ -71,8 +71,8 @@ sentryTest( const newTraceTransactionTraceContext = newTraceTransactionEvent.contexts?.trace; expect(newTraceTransactionTraceContext).toMatchObject({ op: 'ui.interaction.click', - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(newTraceTransactionTraceHeaders).toEqual({ @@ -88,8 +88,8 @@ sentryTest( const oldTraceTransactionEventTraceContext = oldTraceTransactionEvent.contexts?.trace; expect(oldTraceTransactionEventTraceContext).toMatchObject({ op: 'ui.interaction.click', - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(oldTraceTransactionTraceHeaders).toEqual({ diff --git a/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/startNewTraceSampling/test.ts b/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/startNewTraceSampling/test.ts index 616c89cd66f8..dc3d75f54799 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/startNewTraceSampling/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/startNewTraceSampling/test.ts @@ -37,8 +37,8 @@ sentryTest( expect(pageloadTraceContext).toMatchObject({ op: 'pageload', - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), data: { 'sentry.sample_rate': 0.5, }, @@ -67,8 +67,8 @@ sentryTest( const newTraceTransactionTraceContext = newTraceTransactionEvent.contexts?.trace; expect(newTraceTransactionTraceContext).toMatchObject({ op: 'ui.interaction.click', - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), data: { 'sentry.sample_rate': 0.9, }, diff --git a/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/tracing-without-performance-propagateTraceparent/test.ts b/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/tracing-without-performance-propagateTraceparent/test.ts index d2106b892b7b..dfc0b6d83b76 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/tracing-without-performance-propagateTraceparent/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/tracing-without-performance-propagateTraceparent/test.ts @@ -36,7 +36,7 @@ sentryTest( // sampling decision is deferred because TwP means we didn't sample any span expect(sentryTraceParentData).toEqual({ traceId: META_TAG_TRACE_ID, - parentSpanId: expect.stringMatching(/^[0-9a-f]{16}$/), + parentSpanId: expect.stringMatching(/^[\da-f]{16}$/), parentSampled: undefined, }); expect(headers['baggage']).toBe(META_TAG_BAGGAGE); @@ -69,7 +69,7 @@ sentryTest( }); expect(headers3['baggage']).toMatch( - /sentry-environment=production,sentry-public_key=public,sentry-trace_id=[0-9a-f]{32}/, + /sentry-environment=production,sentry-public_key=public,sentry-trace_id=[\da-f]{32}/, ); expect(headers3['baggage']).not.toContain(`sentry-trace_id=${META_TAG_TRACE_ID}`); // but traceparent propagates a negative sampling decision because it has no concept of deferred sampling @@ -121,10 +121,10 @@ sentryTest('outgoing XHR requests have new traceId after navigation', async ({ g const headers2 = request2.headers(); // sampling decision is deferred because TwP means we didn't sample any span - expect(headers2['sentry-trace']).toMatch(/^[0-9a-f]{32}-[0-9a-f]{16}$/); + expect(headers2['sentry-trace']).toMatch(/^[\da-f]{32}-[\da-f]{16}$/); expect(headers2['baggage']).not.toBe(`${META_TAG_TRACE_ID}-${META_TAG_PARENT_SPAN_ID}`); expect(headers2['baggage']).toMatch( - /sentry-environment=production,sentry-public_key=public,sentry-trace_id=[0-9a-f]{32}/, + /sentry-environment=production,sentry-public_key=public,sentry-trace_id=[\da-f]{32}/, ); expect(headers2['baggage']).not.toContain(`sentry-trace_id=${META_TAG_TRACE_ID}`); }); diff --git a/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/tracing-without-performance/test.ts b/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/tracing-without-performance/test.ts index 686f65227aa7..f05d51ff2377 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/tracing-without-performance/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/tracing-without-performance/test.ts @@ -33,7 +33,7 @@ sentryTest('error on initial page has traceId from meta tag', async ({ getLocalT expect(errorEvent.contexts?.trace).toEqual({ trace_id: META_TAG_TRACE_ID, parent_span_id: META_TAG_PARENT_SPAN_ID, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(errorTraceHeader).toEqual({ @@ -65,7 +65,7 @@ sentryTest('error has new traceId after navigation', async ({ getLocalTestUrl, p expect(errorEvent.contexts?.trace).toEqual({ trace_id: META_TAG_TRACE_ID, parent_span_id: META_TAG_PARENT_SPAN_ID, - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(errorTraceHeader).toEqual({ @@ -85,8 +85,8 @@ sentryTest('error has new traceId after navigation', async ({ getLocalTestUrl, p const [errorEvent2, errorTraceHeader2] = await errorEventPromise2; expect(errorEvent2.contexts?.trace).toEqual({ - trace_id: expect.stringMatching(/^[0-9a-f]{32}$/), - span_id: expect.stringMatching(/^[0-9a-f]{16}$/), + trace_id: expect.stringMatching(/^[\da-f]{32}$/), + span_id: expect.stringMatching(/^[\da-f]{16}$/), }); expect(errorTraceHeader2).toEqual({ @@ -132,10 +132,10 @@ sentryTest('outgoing fetch requests have new traceId after navigation', async ({ const headers2 = request2.headers(); // sampling decision is deferred because TwP means we didn't sample any span - expect(headers2['sentry-trace']).toMatch(/^[0-9a-f]{32}-[0-9a-f]{16}$/); + expect(headers2['sentry-trace']).toMatch(/^[\da-f]{32}-[\da-f]{16}$/); expect(headers2['baggage']).not.toBe(`${META_TAG_TRACE_ID}-${META_TAG_PARENT_SPAN_ID}`); expect(headers2['baggage']).toMatch( - /sentry-environment=production,sentry-public_key=public,sentry-trace_id=[0-9a-f]{32}/, + /sentry-environment=production,sentry-public_key=public,sentry-trace_id=[\da-f]{32}/, ); expect(headers2['baggage']).not.toContain(`sentry-trace_id=${META_TAG_TRACE_ID}`); }); @@ -174,10 +174,10 @@ sentryTest('outgoing XHR requests have new traceId after navigation', async ({ g const headers2 = request2.headers(); // sampling decision is deferred because TwP means we didn't sample any span - expect(headers2['sentry-trace']).toMatch(/^[0-9a-f]{32}-[0-9a-f]{16}$/); + expect(headers2['sentry-trace']).toMatch(/^[\da-f]{32}-[\da-f]{16}$/); expect(headers2['baggage']).not.toBe(`${META_TAG_TRACE_ID}-${META_TAG_PARENT_SPAN_ID}`); expect(headers2['baggage']).toMatch( - /sentry-environment=production,sentry-public_key=public,sentry-trace_id=[0-9a-f]{32}/, + /sentry-environment=production,sentry-public_key=public,sentry-trace_id=[\da-f]{32}/, ); expect(headers2['baggage']).not.toContain(`sentry-trace_id=${META_TAG_TRACE_ID}`); }); diff --git a/dev-packages/browser-integration-tests/utils/replayHelpers.ts b/dev-packages/browser-integration-tests/utils/replayHelpers.ts index 86a9e5ba3d78..72e98cb3e9d1 100644 --- a/dev-packages/browser-integration-tests/utils/replayHelpers.ts +++ b/dev-packages/browser-integration-tests/utils/replayHelpers.ts @@ -447,9 +447,10 @@ export function normalize( ): string { const rawString = JSON.stringify(obj, null, 2); let normalizedString = rawString - .replace(/"file:\/\/.+(\/.*\.html)"/gm, '"$1"') - .replace(/"timeOffset":\s*-?\d+/gm, '"timeOffset": [timeOffset]') - .replace(/"timestamp":\s*0/gm, '"timestamp": [timestamp]'); + // eslint-disable-next-line regexp/no-super-linear-backtracking + .replace(/"file:\/\/.+(\/.*\.html)"/g, '"$1"') + .replace(/"timeOffset":\s*-?\d+/g, '"timeOffset": [timeOffset]') + .replace(/"timestamp":\s*0/g, '"timestamp": [timestamp]'); if (normalizeNumberAttributes?.length) { // We look for: "attr": "123px", "123", "123%", "123em", "123rem" diff --git a/dev-packages/bundle-analyzer-scenarios/package.json b/dev-packages/bundle-analyzer-scenarios/package.json index 2286f4a6266e..366c7bb49ba1 100644 --- a/dev-packages/bundle-analyzer-scenarios/package.json +++ b/dev-packages/bundle-analyzer-scenarios/package.json @@ -12,6 +12,9 @@ "webpack": "^5.95.0", "webpack-bundle-analyzer": "^4.10.2" }, + "devDependencies": { + "eslint-plugin-regexp": "^1.15.0" + }, "scripts": { "analyze": "node webpack.cjs" }, diff --git a/dev-packages/clear-cache-gh-action/.eslintrc.cjs b/dev-packages/clear-cache-gh-action/.eslintrc.cjs index dfc1b926f803..9472d27555a3 100644 --- a/dev-packages/clear-cache-gh-action/.eslintrc.cjs +++ b/dev-packages/clear-cache-gh-action/.eslintrc.cjs @@ -1,5 +1,7 @@ module.exports = { - extends: ['../../.eslintrc.js'], + // todo: remove regexp plugin from here once we add it to base.js eslint config for the whole project + extends: ['../../.eslintrc.js', 'plugin:regexp/recommended'], + plugins: ['regexp'], parserOptions: { sourceType: 'module', ecmaVersion: 'latest', diff --git a/dev-packages/clear-cache-gh-action/package.json b/dev-packages/clear-cache-gh-action/package.json index c4700fe531bb..758a6f712b11 100644 --- a/dev-packages/clear-cache-gh-action/package.json +++ b/dev-packages/clear-cache-gh-action/package.json @@ -17,6 +17,9 @@ "@actions/core": "1.10.1", "@actions/github": "^5.0.0" }, + "devDependencies": { + "eslint-plugin-regexp": "^1.15.0" + }, "volta": { "extends": "../../package.json" } diff --git a/dev-packages/cloudflare-integration-tests/.eslintrc.js b/dev-packages/cloudflare-integration-tests/.eslintrc.js index 899a60f9a2bd..5ce331e4074a 100644 --- a/dev-packages/cloudflare-integration-tests/.eslintrc.js +++ b/dev-packages/cloudflare-integration-tests/.eslintrc.js @@ -2,7 +2,9 @@ module.exports = { env: { node: true, }, - extends: ['../../.eslintrc.js'], + // todo: remove regexp plugin from here once we add it to base.js eslint config for the whole project + extends: ['../../.eslintrc.js', 'plugin:regexp/recommended'], + plugins: ['regexp'], overrides: [ { files: ['*.ts'], diff --git a/dev-packages/cloudflare-integration-tests/expect.ts b/dev-packages/cloudflare-integration-tests/expect.ts index 6050ff6816c4..5caec668cd13 100644 --- a/dev-packages/cloudflare-integration-tests/expect.ts +++ b/dev-packages/cloudflare-integration-tests/expect.ts @@ -2,11 +2,11 @@ import type { Contexts, Envelope, Event, SdkInfo } from '@sentry/core'; import { SDK_VERSION } from '@sentry/core'; import { expect } from 'vitest'; -export const UUID_MATCHER = expect.stringMatching(/^[0-9a-f]{32}$/); +export const UUID_MATCHER = expect.stringMatching(/^[\da-f]{32}$/); export const UUID_V4_MATCHER = expect.stringMatching( - /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/, + /^[\da-f]{8}-[\da-f]{4}-4[\da-f]{3}-[89ab][\da-f]{3}-[\da-f]{12}$/, ); -export const SHORT_UUID_MATCHER = expect.stringMatching(/^[0-9a-f]{16}$/); +export const SHORT_UUID_MATCHER = expect.stringMatching(/^[\da-f]{16}$/); export const ISO_DATE_MATCHER = expect.stringMatching(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/); function dropUndefinedKeys>(obj: T): T { diff --git a/dev-packages/cloudflare-integration-tests/package.json b/dev-packages/cloudflare-integration-tests/package.json index 6681839f6106..de63e3551eb0 100644 --- a/dev-packages/cloudflare-integration-tests/package.json +++ b/dev-packages/cloudflare-integration-tests/package.json @@ -18,6 +18,7 @@ "devDependencies": { "@cloudflare/workers-types": "^4.20250922.0", "@sentry-internal/test-utils": "10.22.0", + "eslint-plugin-regexp": "^1.15.0", "vitest": "^3.2.4", "wrangler": "4.22.0" }, diff --git a/dev-packages/e2e-tests/.eslintrc.js b/dev-packages/e2e-tests/.eslintrc.js index 5ba76262baaf..9c0a56bca5f4 100644 --- a/dev-packages/e2e-tests/.eslintrc.js +++ b/dev-packages/e2e-tests/.eslintrc.js @@ -2,7 +2,9 @@ module.exports = { env: { node: true, }, - extends: ['../../.eslintrc.js'], + // todo: remove regexp plugin from here once we add it to base.js eslint config for the whole project + extends: ['../../.eslintrc.js', 'plugin:regexp/recommended'], + plugins: ['regexp'], ignorePatterns: ['test-applications/**', 'tmp/**'], parserOptions: { sourceType: 'module', diff --git a/dev-packages/e2e-tests/package.json b/dev-packages/e2e-tests/package.json index 2f39a0978697..99d3a07a164e 100644 --- a/dev-packages/e2e-tests/package.json +++ b/dev-packages/e2e-tests/package.json @@ -25,6 +25,7 @@ "@types/node": "^18.19.1", "dotenv": "16.0.3", "esbuild": "0.20.0", + "eslint-plugin-regexp": "^1.15.0", "glob": "8.0.3", "rimraf": "^5.0.10", "ts-node": "10.9.1", diff --git a/dev-packages/external-contributor-gh-action/.eslintrc.cjs b/dev-packages/external-contributor-gh-action/.eslintrc.cjs index dfc1b926f803..9472d27555a3 100644 --- a/dev-packages/external-contributor-gh-action/.eslintrc.cjs +++ b/dev-packages/external-contributor-gh-action/.eslintrc.cjs @@ -1,5 +1,7 @@ module.exports = { - extends: ['../../.eslintrc.js'], + // todo: remove regexp plugin from here once we add it to base.js eslint config for the whole project + extends: ['../../.eslintrc.js', 'plugin:regexp/recommended'], + plugins: ['regexp'], parserOptions: { sourceType: 'module', ecmaVersion: 'latest', diff --git a/dev-packages/external-contributor-gh-action/index.mjs b/dev-packages/external-contributor-gh-action/index.mjs index 2bad8a16f0bd..ef2e14ad32b6 100644 --- a/dev-packages/external-contributor-gh-action/index.mjs +++ b/dev-packages/external-contributor-gh-action/index.mjs @@ -35,7 +35,7 @@ async function run() { // If the contributor message already exists, add the new contributor to the list if (existing) { - const users = existing[1].split(/(?:,? and )|(?:, )/); + const users = existing[1].split(/,? and |, /); if (!users.includes(ghUserName)) { users.push(ghUserName); } diff --git a/dev-packages/external-contributor-gh-action/package.json b/dev-packages/external-contributor-gh-action/package.json index 84c7a5d60b64..d29cfdb7d2dd 100644 --- a/dev-packages/external-contributor-gh-action/package.json +++ b/dev-packages/external-contributor-gh-action/package.json @@ -16,6 +16,9 @@ "dependencies": { "@actions/core": "1.10.1" }, + "devDependencies": { + "eslint-plugin-regexp": "^1.15.0" + }, "volta": { "extends": "../../package.json" } diff --git a/dev-packages/node-core-integration-tests/.eslintrc.js b/dev-packages/node-core-integration-tests/.eslintrc.js index 0598ba3f5ca1..e307575fe52e 100644 --- a/dev-packages/node-core-integration-tests/.eslintrc.js +++ b/dev-packages/node-core-integration-tests/.eslintrc.js @@ -2,7 +2,9 @@ module.exports = { env: { node: true, }, - extends: ['../../.eslintrc.js'], + // todo: remove regexp plugin from here once we add it to base.js eslint config for the whole project + extends: ['../../.eslintrc.js', 'plugin:regexp/recommended'], + plugins: ['regexp'], overrides: [ { files: ['utils/**/*.ts', 'src/**/*.ts'], diff --git a/dev-packages/node-core-integration-tests/package.json b/dev-packages/node-core-integration-tests/package.json index 4d0b8bbf2e5e..10cd01464c06 100644 --- a/dev-packages/node-core-integration-tests/package.json +++ b/dev-packages/node-core-integration-tests/package.json @@ -53,6 +53,7 @@ "devDependencies": { "@types/node-cron": "^3.0.11", "@types/node-schedule": "^2.1.7", + "eslint-plugin-regexp": "^1.15.0", "globby": "11" }, "config": { diff --git a/dev-packages/node-core-integration-tests/suites/anr/test.ts b/dev-packages/node-core-integration-tests/suites/anr/test.ts index 08b6a6571e17..c9a81ccb5db0 100644 --- a/dev-packages/node-core-integration-tests/suites/anr/test.ts +++ b/dev-packages/node-core-integration-tests/suites/anr/test.ts @@ -6,8 +6,8 @@ const ANR_EVENT = { // Ensure we have context contexts: { trace: { - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), }, device: { arch: expect.any(String), diff --git a/dev-packages/node-core-integration-tests/suites/cron/cron/test.ts b/dev-packages/node-core-integration-tests/suites/cron/cron/test.ts index c7d0ca5239fc..60edd2812b4b 100644 --- a/dev-packages/node-core-integration-tests/suites/cron/cron/test.ts +++ b/dev-packages/node-core-integration-tests/suites/cron/cron/test.ts @@ -16,8 +16,8 @@ test('cron instrumentation', async () => { monitor_config: { schedule: { type: 'crontab', value: '* * * * * *' } }, contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, @@ -31,8 +31,8 @@ test('cron instrumentation', async () => { duration: expect.any(Number), contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, @@ -46,8 +46,8 @@ test('cron instrumentation', async () => { monitor_config: { schedule: { type: 'crontab', value: '* * * * * *' } }, contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, @@ -61,8 +61,8 @@ test('cron instrumentation', async () => { duration: expect.any(Number), contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, diff --git a/dev-packages/node-core-integration-tests/suites/cron/node-cron/test.ts b/dev-packages/node-core-integration-tests/suites/cron/node-cron/test.ts index fb3e7bacbf45..dcdb1ba4c4d9 100644 --- a/dev-packages/node-core-integration-tests/suites/cron/node-cron/test.ts +++ b/dev-packages/node-core-integration-tests/suites/cron/node-cron/test.ts @@ -16,8 +16,8 @@ test('node-cron instrumentation', async () => { monitor_config: { schedule: { type: 'crontab', value: '* * * * * *' } }, contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, @@ -31,8 +31,8 @@ test('node-cron instrumentation', async () => { duration: expect.any(Number), contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, @@ -46,8 +46,8 @@ test('node-cron instrumentation', async () => { monitor_config: { schedule: { type: 'crontab', value: '* * * * * *' } }, contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, @@ -61,8 +61,8 @@ test('node-cron instrumentation', async () => { duration: expect.any(Number), contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, diff --git a/dev-packages/node-core-integration-tests/suites/cron/node-schedule/test.ts b/dev-packages/node-core-integration-tests/suites/cron/node-schedule/test.ts index 285e41cee304..220f388d65d0 100644 --- a/dev-packages/node-core-integration-tests/suites/cron/node-schedule/test.ts +++ b/dev-packages/node-core-integration-tests/suites/cron/node-schedule/test.ts @@ -16,8 +16,8 @@ test('node-schedule instrumentation', async () => { monitor_config: { schedule: { type: 'crontab', value: '* * * * * *' } }, contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, @@ -31,8 +31,8 @@ test('node-schedule instrumentation', async () => { duration: expect.any(Number), contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, @@ -46,8 +46,8 @@ test('node-schedule instrumentation', async () => { monitor_config: { schedule: { type: 'crontab', value: '* * * * * *' } }, contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, @@ -61,8 +61,8 @@ test('node-schedule instrumentation', async () => { duration: expect.any(Number), contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, diff --git a/dev-packages/node-core-integration-tests/suites/tracing/dsc-txn-name-update/test.ts b/dev-packages/node-core-integration-tests/suites/tracing/dsc-txn-name-update/test.ts index 9fe401badaa7..b9b2327497f5 100644 --- a/dev-packages/node-core-integration-tests/suites/tracing/dsc-txn-name-update/test.ts +++ b/dev-packages/node-core-integration-tests/suites/tracing/dsc-txn-name-update/test.ts @@ -16,13 +16,13 @@ conditionalTest({ min: 22 })('node >=22', () => { const baggageItems = getBaggageHeaderItems(headers); traceId = baggageItems.find(item => item.startsWith('sentry-trace_id='))?.split('=')[1] as string; - expect(traceId).toMatch(/^[0-9a-f]{32}$/); + expect(traceId).toMatch(/^[\da-f]{32}$/); expect(baggageItems).toEqual([ 'sentry-environment=production', 'sentry-public_key=public', 'sentry-release=1.0', - expect.stringMatching(/sentry-sample_rand=0\.[0-9]+/), + expect.stringMatching(/sentry-sample_rand=0\.\d+/), 'sentry-sample_rate=1', 'sentry-sampled=true', `sentry-trace_id=${traceId}`, @@ -33,7 +33,7 @@ conditionalTest({ min: 22 })('node >=22', () => { 'sentry-environment=production', 'sentry-public_key=public', 'sentry-release=1.0', - expect.stringMatching(/sentry-sample_rand=0\.[0-9]+/), + expect.stringMatching(/sentry-sample_rand=0\.\d+/), 'sentry-sample_rate=1', 'sentry-sampled=true', `sentry-trace_id=${traceId}`, @@ -45,7 +45,7 @@ conditionalTest({ min: 22 })('node >=22', () => { 'sentry-environment=production', 'sentry-public_key=public', 'sentry-release=1.0', - expect.stringMatching(/sentry-sample_rand=0\.[0-9]+/), + expect.stringMatching(/sentry-sample_rand=0\.\d+/), 'sentry-sample_rate=1', 'sentry-sampled=true', `sentry-trace_id=${traceId}`, @@ -77,7 +77,7 @@ test('adds current transaction name to trace envelope header when the txn name i release: '1.0', sample_rate: '1', sampled: 'true', - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), sample_rand: expect.any(String), }, }, @@ -90,7 +90,7 @@ test('adds current transaction name to trace envelope header when the txn name i release: '1.0', sample_rate: '1', sampled: 'true', - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), transaction: 'updated-name-1', sample_rand: expect.any(String), }, @@ -104,7 +104,7 @@ test('adds current transaction name to trace envelope header when the txn name i release: '1.0', sample_rate: '1', sampled: 'true', - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), transaction: 'updated-name-2', sample_rand: expect.any(String), }, @@ -118,7 +118,7 @@ test('adds current transaction name to trace envelope header when the txn name i release: '1.0', sample_rate: '1', sampled: 'true', - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), transaction: 'updated-name-2', sample_rand: expect.any(String), }, diff --git a/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/error-active-span-unsampled/test.ts b/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/error-active-span-unsampled/test.ts index bba04c788282..9fe5f34ef8e5 100644 --- a/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/error-active-span-unsampled/test.ts +++ b/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/error-active-span-unsampled/test.ts @@ -7,7 +7,7 @@ test('envelope header for error event during active unsampled span is correct', .expectHeader({ event: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), public_key: 'public', environment: 'production', release: '1.0', diff --git a/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/error-active-span/test.ts b/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/error-active-span/test.ts index f11defc490c8..4b103c7e7d79 100644 --- a/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/error-active-span/test.ts +++ b/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/error-active-span/test.ts @@ -7,7 +7,7 @@ test('envelope header for error event during active span is correct', async () = .expectHeader({ event: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), public_key: 'public', environment: 'production', release: '1.0', diff --git a/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/error/test.ts b/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/error/test.ts index 9d39209d456f..29a487949adb 100644 --- a/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/error/test.ts +++ b/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/error/test.ts @@ -6,7 +6,7 @@ test('envelope header for error events is correct', async () => { .expectHeader({ event: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), environment: 'production', public_key: 'public', release: '1.0', diff --git a/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/transaction-route/test.ts b/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/transaction-route/test.ts index f4bb6e2b4293..9798194b0c1c 100644 --- a/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/transaction-route/test.ts +++ b/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/transaction-route/test.ts @@ -6,7 +6,7 @@ test('envelope header for transaction event of route correct', async () => { .expectHeader({ transaction: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), public_key: 'public', transaction: 'GET /route', environment: 'production', diff --git a/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/transaction-url/test.ts b/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/transaction-url/test.ts index c4ed5ae4983f..7b6b07191c44 100644 --- a/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/transaction-url/test.ts +++ b/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/transaction-url/test.ts @@ -6,7 +6,7 @@ test('envelope header for transaction event with source=url correct', async () = .expectHeader({ transaction: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), public_key: 'public', environment: 'production', release: '1.0', diff --git a/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/transaction/test.ts b/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/transaction/test.ts index 104761d52c86..24276f57f212 100644 --- a/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/transaction/test.ts +++ b/dev-packages/node-core-integration-tests/suites/tracing/envelope-header/transaction/test.ts @@ -6,7 +6,7 @@ test('envelope header for transaction event is correct', async () => { .expectHeader({ transaction: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), public_key: 'public', environment: 'production', release: '1.0', diff --git a/dev-packages/node-core-integration-tests/suites/tracing/meta-tags-twp-errors/test.ts b/dev-packages/node-core-integration-tests/suites/tracing/meta-tags-twp-errors/test.ts index 7c6612a0f4f7..d58f35b02972 100644 --- a/dev-packages/node-core-integration-tests/suites/tracing/meta-tags-twp-errors/test.ts +++ b/dev-packages/node-core-integration-tests/suites/tracing/meta-tags-twp-errors/test.ts @@ -13,8 +13,8 @@ describe('errors in TwP mode have same trace in trace context and getTraceData() event: event => { const { contexts } = event; const { trace_id, span_id } = contexts?.trace || {}; - expect(trace_id).toMatch(/^[a-f0-9]{32}$/); - expect(span_id).toMatch(/^[a-f0-9]{16}$/); + expect(trace_id).toMatch(/^[a-f\d]{32}$/); + expect(span_id).toMatch(/^[a-f\d]{16}$/); const traceData = contexts?.traceData || {}; @@ -40,12 +40,12 @@ describe('errors in TwP mode have same trace in trace context and getTraceData() event: event => { const { contexts } = event; const { trace_id, span_id } = contexts?.trace || {}; - expect(trace_id).toMatch(/^[a-f0-9]{32}$/); - expect(span_id).toMatch(/^[a-f0-9]{16}$/); + expect(trace_id).toMatch(/^[a-f\d]{32}$/); + expect(span_id).toMatch(/^[a-f\d]{16}$/); const traceData = contexts?.traceData || {}; - expect(traceData['sentry-trace']).toMatch(/^[a-f0-9]{32}-[a-f0-9]{16}$/); + expect(traceData['sentry-trace']).toMatch(/^[a-f\d]{32}-[a-f\d]{16}$/); expect(traceData['sentry-trace']).toContain(`${trace_id}-`); // span_id is a random span ID expect(traceData['sentry-trace']).not.toContain(span_id); @@ -53,7 +53,7 @@ describe('errors in TwP mode have same trace in trace context and getTraceData() expect(traceData.baggage).toContain(`sentry-trace_id=${trace_id}`); expect(traceData.baggage).not.toContain('sentry-sampled='); - expect(traceData.metaTags).toMatch(//); + expect(traceData.metaTags).toMatch(//); expect(traceData.metaTags).toContain(`/); + expect(html).toMatch(//); expect(html).toContain(''); }); @@ -32,7 +32,7 @@ describe('getTraceMetaTags', () => { const html = response?.response; - const traceId = html?.match(//)?.[1]; + const traceId = html?.match(//)?.[1]; expect(traceId).not.toBeUndefined(); expect(html).toContain(' { const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); expect(headers['baggage']).toEqual(expect.any(String)); }) .get('/api/v1', headers => { - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); expect(headers['baggage']).toEqual(expect.any(String)); }) diff --git a/dev-packages/node-core-integration-tests/suites/tracing/requests/fetch-no-tracing/test.ts b/dev-packages/node-core-integration-tests/suites/tracing/requests/fetch-no-tracing/test.ts index b4594c4d9c41..046763a0b55a 100644 --- a/dev-packages/node-core-integration-tests/suites/tracing/requests/fetch-no-tracing/test.ts +++ b/dev-packages/node-core-integration-tests/suites/tracing/requests/fetch-no-tracing/test.ts @@ -9,12 +9,12 @@ describe('outgoing fetch', () => { const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); expect(headers['baggage']).toEqual(expect.any(String)); }) .get('/api/v1', headers => { - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); expect(headers['baggage']).toEqual(expect.any(String)); }) diff --git a/dev-packages/node-core-integration-tests/suites/tracing/requests/fetch-sampled-no-active-span/test.ts b/dev-packages/node-core-integration-tests/suites/tracing/requests/fetch-sampled-no-active-span/test.ts index 32f24517b3f6..acc1d6c89a25 100644 --- a/dev-packages/node-core-integration-tests/suites/tracing/requests/fetch-sampled-no-active-span/test.ts +++ b/dev-packages/node-core-integration-tests/suites/tracing/requests/fetch-sampled-no-active-span/test.ts @@ -10,12 +10,12 @@ describe('outgoing fetch', () => { const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); }) .get('/api/v1', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); }) .get('/api/v2', headers => { diff --git a/dev-packages/node-core-integration-tests/suites/tracing/requests/fetch-unsampled/test.ts b/dev-packages/node-core-integration-tests/suites/tracing/requests/fetch-unsampled/test.ts index 097236ba4e7f..4507a360006c 100644 --- a/dev-packages/node-core-integration-tests/suites/tracing/requests/fetch-unsampled/test.ts +++ b/dev-packages/node-core-integration-tests/suites/tracing/requests/fetch-unsampled/test.ts @@ -10,12 +10,12 @@ describe('outgoing fetch', () => { const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-0$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-0$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000-0'); }) .get('/api/v1', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-0$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-0$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000-0'); }) .get('/api/v2', headers => { diff --git a/dev-packages/node-core-integration-tests/suites/tracing/requests/http-no-tracing-no-spans/test.ts b/dev-packages/node-core-integration-tests/suites/tracing/requests/http-no-tracing-no-spans/test.ts index fe9cba032344..1cad4abf9a99 100644 --- a/dev-packages/node-core-integration-tests/suites/tracing/requests/http-no-tracing-no-spans/test.ts +++ b/dev-packages/node-core-integration-tests/suites/tracing/requests/http-no-tracing-no-spans/test.ts @@ -11,12 +11,12 @@ describe('outgoing http requests with tracing & spans disabled', () => { const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); expect(headers['baggage']).toEqual(expect.any(String)); }) .get('/api/v1', headers => { - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); expect(headers['baggage']).toEqual(expect.any(String)); }) diff --git a/dev-packages/node-core-integration-tests/suites/tracing/requests/http-no-tracing/test.ts b/dev-packages/node-core-integration-tests/suites/tracing/requests/http-no-tracing/test.ts index 8727f1cad0de..55882d18830a 100644 --- a/dev-packages/node-core-integration-tests/suites/tracing/requests/http-no-tracing/test.ts +++ b/dev-packages/node-core-integration-tests/suites/tracing/requests/http-no-tracing/test.ts @@ -11,12 +11,12 @@ describe('outgoing http', () => { const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); expect(headers['baggage']).toEqual(expect.any(String)); }) .get('/api/v1', headers => { - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); expect(headers['baggage']).toEqual(expect.any(String)); }) diff --git a/dev-packages/node-core-integration-tests/suites/tracing/requests/http-sampled-no-active-span/test.ts b/dev-packages/node-core-integration-tests/suites/tracing/requests/http-sampled-no-active-span/test.ts index d89992dd362e..8cf07571fe24 100644 --- a/dev-packages/node-core-integration-tests/suites/tracing/requests/http-sampled-no-active-span/test.ts +++ b/dev-packages/node-core-integration-tests/suites/tracing/requests/http-sampled-no-active-span/test.ts @@ -12,12 +12,12 @@ describe('outgoing http', () => { const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); }) .get('/api/v1', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); }) .get('/api/v2', headers => { diff --git a/dev-packages/node-core-integration-tests/suites/tracing/requests/http-sampled/test.ts b/dev-packages/node-core-integration-tests/suites/tracing/requests/http-sampled/test.ts index 1189afc502e5..a1ac7ca292e4 100644 --- a/dev-packages/node-core-integration-tests/suites/tracing/requests/http-sampled/test.ts +++ b/dev-packages/node-core-integration-tests/suites/tracing/requests/http-sampled/test.ts @@ -12,12 +12,12 @@ describe('outgoing http', () => { const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-1$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000-1'); }) .get('/api/v1', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-1$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000-1'); }) .get('/api/v2', headers => { diff --git a/dev-packages/node-core-integration-tests/suites/tracing/requests/http-unsampled/test.ts b/dev-packages/node-core-integration-tests/suites/tracing/requests/http-unsampled/test.ts index 60d3345dcb51..63ae25f32a0c 100644 --- a/dev-packages/node-core-integration-tests/suites/tracing/requests/http-unsampled/test.ts +++ b/dev-packages/node-core-integration-tests/suites/tracing/requests/http-unsampled/test.ts @@ -12,12 +12,12 @@ describe('outgoing http', () => { const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-0$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-0$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000-0'); }) .get('/api/v1', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-0$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-0$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000-0'); }) .get('/api/v2', headers => { diff --git a/dev-packages/node-core-integration-tests/suites/tracing/sample-rand-propagation/test.ts b/dev-packages/node-core-integration-tests/suites/tracing/sample-rand-propagation/test.ts index 40001a9f62f5..6bb8f3dfc3f6 100644 --- a/dev-packages/node-core-integration-tests/suites/tracing/sample-rand-propagation/test.ts +++ b/dev-packages/node-core-integration-tests/suites/tracing/sample-rand-propagation/test.ts @@ -30,7 +30,7 @@ describe('sample_rand propagation', () => { }); expect(response).toEqual({ propagatedData: { - baggage: expect.not.stringMatching(/sentry-sample_rand=0\.[0-9]+/), + baggage: expect.not.stringMatching(/sentry-sample_rand=0\.\d+/), }, }); }); @@ -44,7 +44,7 @@ describe('sample_rand propagation', () => { }, }); - const sampleRand = Number((response as any).propagatedData.baggage.match(/sentry-sample_rand=(0\.[0-9]+)/)[1]); + const sampleRand = Number((response as any).propagatedData.baggage.match(/sentry-sample_rand=(0\.\d+)/)[1]); expect(sampleRand).toStrictEqual(expect.any(Number)); expect(sampleRand).not.toBeNaN(); @@ -61,7 +61,7 @@ describe('sample_rand propagation', () => { }, }); - const sampleRand = Number((response as any).propagatedData.baggage.match(/sentry-sample_rand=(0\.[0-9]+)/)[1]); + const sampleRand = Number((response as any).propagatedData.baggage.match(/sentry-sample_rand=(0\.\d+)/)[1]); expect(sampleRand).toStrictEqual(expect.any(Number)); expect(sampleRand).not.toBeNaN(); @@ -77,6 +77,6 @@ describe('sample_rand propagation', () => { }, }); - expect((response as any).propagatedData.baggage).not.toMatch(/sentry-sample_rand=0\.[0-9]+/); + expect((response as any).propagatedData.baggage).not.toMatch(/sentry-sample_rand=0\.\d+/); }); }); diff --git a/dev-packages/node-core-integration-tests/suites/tracing/tracePropagationTargets/test.ts b/dev-packages/node-core-integration-tests/suites/tracing/tracePropagationTargets/test.ts index 8ae06f883b38..a136eb770a8d 100644 --- a/dev-packages/node-core-integration-tests/suites/tracing/tracePropagationTargets/test.ts +++ b/dev-packages/node-core-integration-tests/suites/tracing/tracePropagationTargets/test.ts @@ -12,12 +12,12 @@ conditionalTest({ min: 22 })('node >=22', () => { const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-1$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000-1'); }) .get('/api/v1', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-1$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000-1'); }) .get('/api/v2', headers => { diff --git a/dev-packages/node-core-integration-tests/utils/runner.ts b/dev-packages/node-core-integration-tests/utils/runner.ts index 22a600efa63b..416d55d803a1 100644 --- a/dev-packages/node-core-integration-tests/utils/runner.ts +++ b/dev-packages/node-core-integration-tests/utils/runner.ts @@ -489,7 +489,7 @@ export function createRunner(...paths: string[]) { function tryParseEnvelopeFromStdoutLine(line: string): void { // Lines can have leading '[something] [{' which we need to remove - const cleanedLine = line.replace(/^.*?] \[{"/, '[{"'); + const cleanedLine = line.replace(/^.*?\] \[\{"/, '[{"'); // See if we have a port message if (cleanedLine.startsWith('{"port":')) { @@ -676,6 +676,7 @@ function convertEsmToCjs(content: string): string { // Handle default imports: import x from 'y' -> const x = require('y') newContent = newContent.replace( + // eslint-disable-next-line regexp/no-super-linear-backtracking, regexp/optimal-quantifier-concatenation /import\s+([\w*{}\s,]+)\s+from\s+['"]([^'"]+)['"]/g, (_, imports: string, module: string) => { if (imports.includes('* as')) { diff --git a/dev-packages/node-integration-tests/.eslintrc.js b/dev-packages/node-integration-tests/.eslintrc.js index 0598ba3f5ca1..e307575fe52e 100644 --- a/dev-packages/node-integration-tests/.eslintrc.js +++ b/dev-packages/node-integration-tests/.eslintrc.js @@ -2,7 +2,9 @@ module.exports = { env: { node: true, }, - extends: ['../../.eslintrc.js'], + // todo: remove regexp plugin from here once we add it to base.js eslint config for the whole project + extends: ['../../.eslintrc.js', 'plugin:regexp/recommended'], + plugins: ['regexp'], overrides: [ { files: ['utils/**/*.ts', 'src/**/*.ts'], diff --git a/dev-packages/node-integration-tests/package.json b/dev-packages/node-integration-tests/package.json index 31554947e8c8..e81c3a2da2b3 100644 --- a/dev-packages/node-integration-tests/package.json +++ b/dev-packages/node-integration-tests/package.json @@ -86,6 +86,7 @@ "@types/amqplib": "^0.10.5", "@types/node-cron": "^3.0.11", "@types/node-schedule": "^2.1.7", + "eslint-plugin-regexp": "^1.15.0", "file-type": "^20.4.1", "globby": "11", "react": "^18.3.1", diff --git a/dev-packages/node-integration-tests/suites/anr/test.ts b/dev-packages/node-integration-tests/suites/anr/test.ts index 08b6a6571e17..c9a81ccb5db0 100644 --- a/dev-packages/node-integration-tests/suites/anr/test.ts +++ b/dev-packages/node-integration-tests/suites/anr/test.ts @@ -6,8 +6,8 @@ const ANR_EVENT = { // Ensure we have context contexts: { trace: { - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), }, device: { arch: expect.any(String), diff --git a/dev-packages/node-integration-tests/suites/cron/cron/test.ts b/dev-packages/node-integration-tests/suites/cron/cron/test.ts index 8b9fdfd5c593..a9febf9efbe4 100644 --- a/dev-packages/node-integration-tests/suites/cron/cron/test.ts +++ b/dev-packages/node-integration-tests/suites/cron/cron/test.ts @@ -16,8 +16,8 @@ test('cron instrumentation', async () => { monitor_config: { schedule: { type: 'crontab', value: '* * * * * *' } }, contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, @@ -31,8 +31,8 @@ test('cron instrumentation', async () => { duration: expect.any(Number), contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, @@ -46,8 +46,8 @@ test('cron instrumentation', async () => { monitor_config: { schedule: { type: 'crontab', value: '* * * * * *' } }, contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, @@ -61,8 +61,8 @@ test('cron instrumentation', async () => { duration: expect.any(Number), contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, diff --git a/dev-packages/node-integration-tests/suites/cron/node-cron/test.ts b/dev-packages/node-integration-tests/suites/cron/node-cron/test.ts index 1c5fa515e208..a986e3f83d92 100644 --- a/dev-packages/node-integration-tests/suites/cron/node-cron/test.ts +++ b/dev-packages/node-integration-tests/suites/cron/node-cron/test.ts @@ -16,8 +16,8 @@ test('node-cron instrumentation', async () => { monitor_config: { schedule: { type: 'crontab', value: '* * * * * *' } }, contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, @@ -31,8 +31,8 @@ test('node-cron instrumentation', async () => { duration: expect.any(Number), contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, @@ -46,8 +46,8 @@ test('node-cron instrumentation', async () => { monitor_config: { schedule: { type: 'crontab', value: '* * * * * *' } }, contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, @@ -61,8 +61,8 @@ test('node-cron instrumentation', async () => { duration: expect.any(Number), contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, diff --git a/dev-packages/node-integration-tests/suites/cron/node-schedule/test.ts b/dev-packages/node-integration-tests/suites/cron/node-schedule/test.ts index a2019253203f..2b46e04d50a4 100644 --- a/dev-packages/node-integration-tests/suites/cron/node-schedule/test.ts +++ b/dev-packages/node-integration-tests/suites/cron/node-schedule/test.ts @@ -16,8 +16,8 @@ test('node-schedule instrumentation', async () => { monitor_config: { schedule: { type: 'crontab', value: '* * * * * *' } }, contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, @@ -31,8 +31,8 @@ test('node-schedule instrumentation', async () => { duration: expect.any(Number), contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, @@ -46,8 +46,8 @@ test('node-schedule instrumentation', async () => { monitor_config: { schedule: { type: 'crontab', value: '* * * * * *' } }, contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, @@ -61,8 +61,8 @@ test('node-schedule instrumentation', async () => { duration: expect.any(Number), contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), }, }, }, diff --git a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-header-assign/test.ts b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-header-assign/test.ts index 8b8d648513e4..20f19dccf3ea 100644 --- a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-header-assign/test.ts +++ b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-header-assign/test.ts @@ -113,8 +113,8 @@ test('Should populate and propagate sentry baggage if sentry-trace header does n 'sentry-release': '1.0', 'sentry-public_key': 'public', // TraceId changes, hence we only expect that the string contains the traceid key - 'sentry-trace_id': expect.stringMatching(/[\S]*/), - 'sentry-sample_rand': expect.stringMatching(/[\S]*/), + 'sentry-trace_id': expect.stringMatching(/\S*/), + 'sentry-sample_rand': expect.stringMatching(/\S*/), 'sentry-sample_rate': '1', 'sentry-sampled': 'true', 'sentry-transaction': 'GET /test/express', @@ -139,8 +139,8 @@ test('Should populate Sentry and ignore 3rd party content if sentry-trace header 'sentry-release': '1.0', 'sentry-public_key': 'public', // TraceId changes, hence we only expect that the string contains the traceid key - 'sentry-trace_id': expect.stringMatching(/[\S]*/), - 'sentry-sample_rand': expect.stringMatching(/[\S]*/), + 'sentry-trace_id': expect.stringMatching(/\S*/), + 'sentry-sample_rand': expect.stringMatching(/\S*/), 'sentry-sample_rate': '1', 'sentry-sampled': 'true', 'sentry-transaction': 'GET /test/express', diff --git a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-header-out/test.ts b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-header-out/test.ts index 913fcd5e2038..4551baa06e23 100644 --- a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-header-out/test.ts +++ b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-header-out/test.ts @@ -23,7 +23,7 @@ test('should attach a baggage header to an outgoing request.', async () => { 'sentry-sampled=true', 'sentry-trace_id=__SENTRY_TRACE_ID__', 'sentry-transaction=GET%20%2Ftest%2Fexpress', - expect.stringMatching(/sentry-sample_rand=0\.[0-9]+/), + expect.stringMatching(/sentry-sample_rand=0\.\d+/), ].forEach(item => { expect(baggage).toContainEqual(item); }); diff --git a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-other-vendors-with-sentry-entries/test.ts b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-other-vendors-with-sentry-entries/test.ts index 2d2074be773c..dbdd69ffb45b 100644 --- a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-other-vendors-with-sentry-entries/test.ts +++ b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-other-vendors-with-sentry-entries/test.ts @@ -32,7 +32,7 @@ test('should ignore sentry-values in `baggage` header of a third party vendor an 'other=vendor', 'sentry-environment=myEnv', 'sentry-release=2.1.0', - expect.stringMatching(/sentry-sample_rand=[0-9]+/), + expect.stringMatching(/sentry-sample_rand=\d+/), 'sentry-sample_rate=0.54', 'third=party', ]); @@ -60,10 +60,10 @@ test('should ignore sentry-values in `baggage` header of a third party vendor an 'sentry-environment=prod', 'sentry-public_key=public', 'sentry-release=1.0', - expect.stringMatching(/sentry-sample_rand=[0-9]+/), + expect.stringMatching(/sentry-sample_rand=\d+/), 'sentry-sample_rate=1', 'sentry-sampled=true', - expect.stringMatching(/sentry-trace_id=[0-9a-f]{32}/), + expect.stringMatching(/sentry-trace_id=[\da-f]{32}/), 'sentry-transaction=GET%20%2Ftest%2Fexpress', 'third=party', ]); diff --git a/dev-packages/node-integration-tests/suites/express/tracing/scenario.mjs b/dev-packages/node-integration-tests/suites/express/tracing/scenario.mjs index 4e32a052908d..e307319a1fd0 100644 --- a/dev-packages/node-integration-tests/suites/express/tracing/scenario.mjs +++ b/dev-packages/node-integration-tests/suites/express/tracing/scenario.mjs @@ -39,7 +39,7 @@ app.get(['/test/array1', /\/test\/array[2-9]/], (_req, res) => { res.send({ response: 'response 3' }); }); -app.get(['/test/arr/:id', /\/test\/arr[0-9]*\/required(path)?(\/optionalPath)?\/(lastParam)?/], (_req, res) => { +app.get(['/test/arr/:id', /\/test\/arr\d*\/required(path)?(\/optionalPath)?\/(lastParam)?/], (_req, res) => { res.send({ response: 'response 4' }); }); diff --git a/dev-packages/node-integration-tests/suites/express/tracing/test.ts b/dev-packages/node-integration-tests/suites/express/tracing/test.ts index 4476c76a3933..9cff4678f038 100644 --- a/dev-packages/node-integration-tests/suites/express/tracing/test.ts +++ b/dev-packages/node-integration-tests/suites/express/tracing/test.ts @@ -14,8 +14,8 @@ describe('express tracing', () => { transaction: { contexts: { trace: { - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), data: { url: expect.stringMatching(/\/test\/express$/), 'http.response.status_code': 200, @@ -61,8 +61,8 @@ describe('express tracing', () => { }, contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), data: { url: expect.stringMatching(/\/test\/regex$/), 'http.response.status_code': 200, @@ -85,8 +85,8 @@ describe('express tracing', () => { transaction: 'GET /', contexts: { trace: { - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), data: { 'http.response.status_code': 200, url: expect.stringMatching(/\/$/), @@ -132,8 +132,8 @@ describe('express tracing', () => { }, contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), data: { url: expect.stringMatching(`/test/${segment}$`), 'http.response.status_code': 200, @@ -169,8 +169,8 @@ describe('express tracing', () => { }, contexts: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), - span_id: expect.stringMatching(/[a-f0-9]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), data: { url: expect.stringMatching(`/test/${segment}$`), 'http.response.status_code': 200, @@ -346,8 +346,8 @@ describe('express tracing', () => { transaction: `GET ${url}`, contexts: { trace: { - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), data: { 'http.response.status_code': status_code, url: expect.stringMatching(url), diff --git a/dev-packages/node-integration-tests/suites/featureFlags/growthbook/onSpan/test.ts b/dev-packages/node-integration-tests/suites/featureFlags/growthbook/onSpan/test.ts index fbb084b98928..3f0011b4f617 100644 --- a/dev-packages/node-integration-tests/suites/featureFlags/growthbook/onSpan/test.ts +++ b/dev-packages/node-integration-tests/suites/featureFlags/growthbook/onSpan/test.ts @@ -20,8 +20,8 @@ test('GrowthBook flags are added to active span attributes on span end', async ( op: 'function', origin: 'manual', status: 'ok', - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), }, }, spans: [], diff --git a/dev-packages/node-integration-tests/suites/tracing/dsc-txn-name-update/test.ts b/dev-packages/node-integration-tests/suites/tracing/dsc-txn-name-update/test.ts index f450d2150e31..aa74bea7d79e 100644 --- a/dev-packages/node-integration-tests/suites/tracing/dsc-txn-name-update/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/dsc-txn-name-update/test.ts @@ -12,13 +12,13 @@ test('adds current transaction name to baggage when the txn name is high-quality const baggageItems = getBaggageHeaderItems(headers); traceId = baggageItems.find(item => item.startsWith('sentry-trace_id='))?.split('=')[1] as string; - expect(traceId).toMatch(/^[0-9a-f]{32}$/); + expect(traceId).toMatch(/^[\da-f]{32}$/); expect(baggageItems).toEqual([ 'sentry-environment=production', 'sentry-public_key=public', 'sentry-release=1.0', - expect.stringMatching(/sentry-sample_rand=0\.[0-9]+/), + expect.stringMatching(/sentry-sample_rand=0\.\d+/), 'sentry-sample_rate=1', 'sentry-sampled=true', `sentry-trace_id=${traceId}`, @@ -29,7 +29,7 @@ test('adds current transaction name to baggage when the txn name is high-quality 'sentry-environment=production', 'sentry-public_key=public', 'sentry-release=1.0', - expect.stringMatching(/sentry-sample_rand=0\.[0-9]+/), + expect.stringMatching(/sentry-sample_rand=0\.\d+/), 'sentry-sample_rate=1', 'sentry-sampled=true', `sentry-trace_id=${traceId}`, @@ -41,7 +41,7 @@ test('adds current transaction name to baggage when the txn name is high-quality 'sentry-environment=production', 'sentry-public_key=public', 'sentry-release=1.0', - expect.stringMatching(/sentry-sample_rand=0\.[0-9]+/), + expect.stringMatching(/sentry-sample_rand=0\.\d+/), 'sentry-sample_rate=1', 'sentry-sampled=true', `sentry-trace_id=${traceId}`, @@ -72,7 +72,7 @@ test('adds current transaction name to trace envelope header when the txn name i release: '1.0', sample_rate: '1', sampled: 'true', - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), sample_rand: expect.any(String), }, }, @@ -85,7 +85,7 @@ test('adds current transaction name to trace envelope header when the txn name i release: '1.0', sample_rate: '1', sampled: 'true', - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), transaction: 'updated-name-1', sample_rand: expect.any(String), }, @@ -99,7 +99,7 @@ test('adds current transaction name to trace envelope header when the txn name i release: '1.0', sample_rate: '1', sampled: 'true', - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), transaction: 'updated-name-2', sample_rand: expect.any(String), }, @@ -113,7 +113,7 @@ test('adds current transaction name to trace envelope header when the txn name i release: '1.0', sample_rate: '1', sampled: 'true', - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), transaction: 'updated-name-2', sample_rand: expect.any(String), }, diff --git a/dev-packages/node-integration-tests/suites/tracing/envelope-header/error-active-span-unsampled/test.ts b/dev-packages/node-integration-tests/suites/tracing/envelope-header/error-active-span-unsampled/test.ts index bba04c788282..9fe5f34ef8e5 100644 --- a/dev-packages/node-integration-tests/suites/tracing/envelope-header/error-active-span-unsampled/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/envelope-header/error-active-span-unsampled/test.ts @@ -7,7 +7,7 @@ test('envelope header for error event during active unsampled span is correct', .expectHeader({ event: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), public_key: 'public', environment: 'production', release: '1.0', diff --git a/dev-packages/node-integration-tests/suites/tracing/envelope-header/error-active-span/test.ts b/dev-packages/node-integration-tests/suites/tracing/envelope-header/error-active-span/test.ts index f11defc490c8..4b103c7e7d79 100644 --- a/dev-packages/node-integration-tests/suites/tracing/envelope-header/error-active-span/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/envelope-header/error-active-span/test.ts @@ -7,7 +7,7 @@ test('envelope header for error event during active span is correct', async () = .expectHeader({ event: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), public_key: 'public', environment: 'production', release: '1.0', diff --git a/dev-packages/node-integration-tests/suites/tracing/envelope-header/error/test.ts b/dev-packages/node-integration-tests/suites/tracing/envelope-header/error/test.ts index 9d39209d456f..29a487949adb 100644 --- a/dev-packages/node-integration-tests/suites/tracing/envelope-header/error/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/envelope-header/error/test.ts @@ -6,7 +6,7 @@ test('envelope header for error events is correct', async () => { .expectHeader({ event: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), environment: 'production', public_key: 'public', release: '1.0', diff --git a/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction-route/test.ts b/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction-route/test.ts index f4bb6e2b4293..9798194b0c1c 100644 --- a/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction-route/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction-route/test.ts @@ -6,7 +6,7 @@ test('envelope header for transaction event of route correct', async () => { .expectHeader({ transaction: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), public_key: 'public', transaction: 'GET /route', environment: 'production', diff --git a/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction-url/test.ts b/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction-url/test.ts index c4ed5ae4983f..7b6b07191c44 100644 --- a/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction-url/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction-url/test.ts @@ -6,7 +6,7 @@ test('envelope header for transaction event with source=url correct', async () = .expectHeader({ transaction: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), public_key: 'public', environment: 'production', release: '1.0', diff --git a/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction/test.ts b/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction/test.ts index 104761d52c86..24276f57f212 100644 --- a/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/envelope-header/transaction/test.ts @@ -6,7 +6,7 @@ test('envelope header for transaction event is correct', async () => { .expectHeader({ transaction: { trace: { - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), public_key: 'public', environment: 'production', release: '1.0', diff --git a/dev-packages/node-integration-tests/suites/tracing/http-client-spans/fetch-strip-query/test.ts b/dev-packages/node-integration-tests/suites/tracing/http-client-spans/fetch-strip-query/test.ts index 797047080283..580a63a52e90 100644 --- a/dev-packages/node-integration-tests/suites/tracing/http-client-spans/fetch-strip-query/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/http-client-spans/fetch-strip-query/test.ts @@ -44,7 +44,7 @@ test('strips and handles query params in spans of outgoing fetch requests', asyn origin: 'auto.http.otel.node_fetch', status: 'ok', parent_span_id: txn.contexts?.trace?.span_id, - span_id: expect.stringMatching(/[a-f0-9]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), trace_id: txn.contexts?.trace?.trace_id, }); }, diff --git a/dev-packages/node-integration-tests/suites/tracing/http-client-spans/http-strip-query/test.ts b/dev-packages/node-integration-tests/suites/tracing/http-client-spans/http-strip-query/test.ts index ebe2eff07013..edfac9fe2081 100644 --- a/dev-packages/node-integration-tests/suites/tracing/http-client-spans/http-strip-query/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/http-client-spans/http-strip-query/test.ts @@ -44,7 +44,7 @@ test('strips and handles query params in spans of outgoing http requests', async origin: 'auto.http.otel.http', status: 'ok', parent_span_id: txn.contexts?.trace?.span_id, - span_id: expect.stringMatching(/[a-f0-9]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), trace_id: txn.contexts?.trace?.trace_id, }); }, diff --git a/dev-packages/node-integration-tests/suites/tracing/httpIntegration/test.ts b/dev-packages/node-integration-tests/suites/tracing/httpIntegration/test.ts index 48fab1be2e9d..15c354e45533 100644 --- a/dev-packages/node-integration-tests/suites/tracing/httpIntegration/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/httpIntegration/test.ts @@ -27,8 +27,8 @@ describe('httpIntegration', () => { transaction: { contexts: { trace: { - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), data: { url: expect.stringMatching(/\/test$/), 'http.response.status_code': 200, @@ -69,8 +69,8 @@ describe('httpIntegration', () => { transaction: { contexts: { trace: { - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), data: { url: expect.stringMatching(/\/test$/), 'http.response.status_code': 200, @@ -198,8 +198,8 @@ describe('httpIntegration', () => { transaction: 'GET /test1', contexts: { trace: { - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), data: { 'http.response.status_code': 200, 'sentry.op': 'http.server', @@ -214,8 +214,8 @@ describe('httpIntegration', () => { transaction: 'GET /test2', contexts: { trace: { - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), data: { 'http.response.status_code': 200, 'sentry.op': 'http.server', @@ -230,8 +230,8 @@ describe('httpIntegration', () => { transaction: 'GET /test3', contexts: { trace: { - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), data: { 'http.response.status_code': 200, 'sentry.op': 'http.server', @@ -256,8 +256,8 @@ describe('httpIntegration', () => { transaction: 'GET /test1-proxy', contexts: { trace: { - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), data: { 'http.response.status_code': 200, 'sentry.op': 'http.server', @@ -272,8 +272,8 @@ describe('httpIntegration', () => { transaction: 'GET /test2-proxy', contexts: { trace: { - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), data: { 'http.response.status_code': 200, 'sentry.op': 'http.server', @@ -288,8 +288,8 @@ describe('httpIntegration', () => { transaction: 'GET /test3-proxy', contexts: { trace: { - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), data: { 'http.response.status_code': 200, 'sentry.op': 'http.server', @@ -313,8 +313,8 @@ describe('httpIntegration', () => { transaction: 'GET /test1-original', contexts: { trace: { - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), data: { 'http.response.status_code': 200, 'sentry.op': 'http.server', @@ -329,8 +329,8 @@ describe('httpIntegration', () => { transaction: 'GET /test2-original', contexts: { trace: { - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), data: { 'http.response.status_code': 200, 'sentry.op': 'http.server', @@ -345,8 +345,8 @@ describe('httpIntegration', () => { transaction: 'GET /test3-original', contexts: { trace: { - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), data: { 'http.response.status_code': 200, 'sentry.op': 'http.server', @@ -371,8 +371,8 @@ describe('httpIntegration', () => { transaction: 'GET /test1-proxy-original', contexts: { trace: { - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), data: { 'http.response.status_code': 200, 'sentry.op': 'http.server', @@ -387,8 +387,8 @@ describe('httpIntegration', () => { transaction: 'GET /test2-proxy-original', contexts: { trace: { - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), data: { 'http.response.status_code': 200, 'sentry.op': 'http.server', @@ -403,8 +403,8 @@ describe('httpIntegration', () => { transaction: 'GET /test3-proxy-original', contexts: { trace: { - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), data: { 'http.response.status_code': 200, 'sentry.op': 'http.server', @@ -433,8 +433,8 @@ describe('httpIntegration', () => { transaction: { contexts: { trace: { - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), data: { url: expect.stringMatching(/\/test$/), 'http.response.status_code': 200, @@ -459,8 +459,8 @@ describe('httpIntegration', () => { transaction: { contexts: { trace: { - span_id: expect.stringMatching(/[a-f0-9]{16}/), - trace_id: expect.stringMatching(/[a-f0-9]{32}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), + trace_id: expect.stringMatching(/[a-f\d]{32}/), data: { url: expect.stringMatching(/\/test$/), 'http.response.status_code': 200, diff --git a/dev-packages/node-integration-tests/suites/tracing/meta-tags-twp-errors/test.ts b/dev-packages/node-integration-tests/suites/tracing/meta-tags-twp-errors/test.ts index 7c6612a0f4f7..d58f35b02972 100644 --- a/dev-packages/node-integration-tests/suites/tracing/meta-tags-twp-errors/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/meta-tags-twp-errors/test.ts @@ -13,8 +13,8 @@ describe('errors in TwP mode have same trace in trace context and getTraceData() event: event => { const { contexts } = event; const { trace_id, span_id } = contexts?.trace || {}; - expect(trace_id).toMatch(/^[a-f0-9]{32}$/); - expect(span_id).toMatch(/^[a-f0-9]{16}$/); + expect(trace_id).toMatch(/^[a-f\d]{32}$/); + expect(span_id).toMatch(/^[a-f\d]{16}$/); const traceData = contexts?.traceData || {}; @@ -40,12 +40,12 @@ describe('errors in TwP mode have same trace in trace context and getTraceData() event: event => { const { contexts } = event; const { trace_id, span_id } = contexts?.trace || {}; - expect(trace_id).toMatch(/^[a-f0-9]{32}$/); - expect(span_id).toMatch(/^[a-f0-9]{16}$/); + expect(trace_id).toMatch(/^[a-f\d]{32}$/); + expect(span_id).toMatch(/^[a-f\d]{16}$/); const traceData = contexts?.traceData || {}; - expect(traceData['sentry-trace']).toMatch(/^[a-f0-9]{32}-[a-f0-9]{16}$/); + expect(traceData['sentry-trace']).toMatch(/^[a-f\d]{32}-[a-f\d]{16}$/); expect(traceData['sentry-trace']).toContain(`${trace_id}-`); // span_id is a random span ID expect(traceData['sentry-trace']).not.toContain(span_id); @@ -53,7 +53,7 @@ describe('errors in TwP mode have same trace in trace context and getTraceData() expect(traceData.baggage).toContain(`sentry-trace_id=${trace_id}`); expect(traceData.baggage).not.toContain('sentry-sampled='); - expect(traceData.metaTags).toMatch(//); + expect(traceData.metaTags).toMatch(//); expect(traceData.metaTags).toContain(`/) || [ + const [, traceId, spanId] = html.match(//) || [ undefined, undefined, undefined, diff --git a/dev-packages/node-integration-tests/suites/tracing/meta-tags/test.ts b/dev-packages/node-integration-tests/suites/tracing/meta-tags/test.ts index c1b88699d8a0..a8d88fdd7cb4 100644 --- a/dev-packages/node-integration-tests/suites/tracing/meta-tags/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/meta-tags/test.ts @@ -21,7 +21,7 @@ describe('getTraceMetaTags', () => { const html = response?.response; - expect(html).toMatch(//); + expect(html).toMatch(//); expect(html).toContain(''); }); @@ -32,7 +32,7 @@ describe('getTraceMetaTags', () => { const html = response?.response; - const traceId = html?.match(//)?.[1]; + const traceId = html?.match(//)?.[1]; expect(traceId).not.toBeUndefined(); expect(html).toContain(' { const html = response?.response; - const traceId = html?.match(//)?.[1]; + const traceId = html?.match(//)?.[1]; expect(traceId).not.toBeUndefined(); expect(html).toContain(' { const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); expect(headers['baggage']).toEqual(expect.any(String)); }) .get('/api/v1', headers => { - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); expect(headers['baggage']).toEqual(expect.any(String)); }) diff --git a/dev-packages/node-integration-tests/suites/tracing/requests/fetch-no-tracing/test.ts b/dev-packages/node-integration-tests/suites/tracing/requests/fetch-no-tracing/test.ts index b4594c4d9c41..046763a0b55a 100644 --- a/dev-packages/node-integration-tests/suites/tracing/requests/fetch-no-tracing/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/requests/fetch-no-tracing/test.ts @@ -9,12 +9,12 @@ describe('outgoing fetch', () => { const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); expect(headers['baggage']).toEqual(expect.any(String)); }) .get('/api/v1', headers => { - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); expect(headers['baggage']).toEqual(expect.any(String)); }) diff --git a/dev-packages/node-integration-tests/suites/tracing/requests/fetch-sampled-no-active-span/test.ts b/dev-packages/node-integration-tests/suites/tracing/requests/fetch-sampled-no-active-span/test.ts index 32f24517b3f6..acc1d6c89a25 100644 --- a/dev-packages/node-integration-tests/suites/tracing/requests/fetch-sampled-no-active-span/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/requests/fetch-sampled-no-active-span/test.ts @@ -10,12 +10,12 @@ describe('outgoing fetch', () => { const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); }) .get('/api/v1', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); }) .get('/api/v2', headers => { diff --git a/dev-packages/node-integration-tests/suites/tracing/requests/fetch-unsampled/test.ts b/dev-packages/node-integration-tests/suites/tracing/requests/fetch-unsampled/test.ts index 097236ba4e7f..4507a360006c 100644 --- a/dev-packages/node-integration-tests/suites/tracing/requests/fetch-unsampled/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/requests/fetch-unsampled/test.ts @@ -10,12 +10,12 @@ describe('outgoing fetch', () => { const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-0$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-0$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000-0'); }) .get('/api/v1', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-0$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-0$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000-0'); }) .get('/api/v2', headers => { diff --git a/dev-packages/node-integration-tests/suites/tracing/requests/http-no-tracing-no-spans/test.ts b/dev-packages/node-integration-tests/suites/tracing/requests/http-no-tracing-no-spans/test.ts index fe9cba032344..1cad4abf9a99 100644 --- a/dev-packages/node-integration-tests/suites/tracing/requests/http-no-tracing-no-spans/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/requests/http-no-tracing-no-spans/test.ts @@ -11,12 +11,12 @@ describe('outgoing http requests with tracing & spans disabled', () => { const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); expect(headers['baggage']).toEqual(expect.any(String)); }) .get('/api/v1', headers => { - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); expect(headers['baggage']).toEqual(expect.any(String)); }) diff --git a/dev-packages/node-integration-tests/suites/tracing/requests/http-no-tracing/test.ts b/dev-packages/node-integration-tests/suites/tracing/requests/http-no-tracing/test.ts index 7922fe3a443f..d0b13513d1de 100644 --- a/dev-packages/node-integration-tests/suites/tracing/requests/http-no-tracing/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/requests/http-no-tracing/test.ts @@ -9,12 +9,12 @@ describe('outgoing http', () => { const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); expect(headers['baggage']).toEqual(expect.any(String)); }) .get('/api/v1', headers => { - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); expect(headers['baggage']).toEqual(expect.any(String)); }) diff --git a/dev-packages/node-integration-tests/suites/tracing/requests/http-sampled-no-active-span/test.ts b/dev-packages/node-integration-tests/suites/tracing/requests/http-sampled-no-active-span/test.ts index 8d1afff8c867..932f379ec23e 100644 --- a/dev-packages/node-integration-tests/suites/tracing/requests/http-sampled-no-active-span/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/requests/http-sampled-no-active-span/test.ts @@ -10,12 +10,12 @@ describe('outgoing http', () => { const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); }) .get('/api/v1', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000'); }) .get('/api/v2', headers => { diff --git a/dev-packages/node-integration-tests/suites/tracing/requests/http-sampled/test.ts b/dev-packages/node-integration-tests/suites/tracing/requests/http-sampled/test.ts index 5951db7f51b7..9a7b13a34332 100644 --- a/dev-packages/node-integration-tests/suites/tracing/requests/http-sampled/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/requests/http-sampled/test.ts @@ -10,12 +10,12 @@ describe('outgoing http', () => { const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-1$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000-1'); }) .get('/api/v1', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-1$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000-1'); }) .get('/api/v2', headers => { diff --git a/dev-packages/node-integration-tests/suites/tracing/requests/http-unsampled/test.ts b/dev-packages/node-integration-tests/suites/tracing/requests/http-unsampled/test.ts index 4e83d2e3feb1..28fb877d0425 100644 --- a/dev-packages/node-integration-tests/suites/tracing/requests/http-unsampled/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/requests/http-unsampled/test.ts @@ -10,12 +10,12 @@ describe('outgoing http', () => { const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-0$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-0$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000-0'); }) .get('/api/v1', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-0$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-0$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000-0'); }) .get('/api/v2', headers => { diff --git a/dev-packages/node-integration-tests/suites/tracing/sample-rand-propagation/test.ts b/dev-packages/node-integration-tests/suites/tracing/sample-rand-propagation/test.ts index df25a261ab2c..a63efe51adbd 100644 --- a/dev-packages/node-integration-tests/suites/tracing/sample-rand-propagation/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/sample-rand-propagation/test.ts @@ -11,7 +11,7 @@ describe('sample_rand propagation', () => { const response = await runner.makeRequest('get', '/check'); expect(response).toEqual({ propagatedData: { - baggage: expect.stringMatching(/sentry-sample_rand=0\.[0-9]+/), + baggage: expect.stringMatching(/sentry-sample_rand=0\.\d+/), }, }); }); @@ -40,7 +40,7 @@ describe('sample_rand propagation', () => { }); expect(response).toEqual({ propagatedData: { - baggage: expect.stringMatching(/sentry-sample_rand=0\.[0-9]+/), + baggage: expect.stringMatching(/sentry-sample_rand=0\.\d+/), }, }); }); @@ -54,7 +54,7 @@ describe('sample_rand propagation', () => { }, }); - const sampleRand = Number((response as any).propagatedData.baggage.match(/sentry-sample_rand=(0\.[0-9]+)/)[1]); + const sampleRand = Number((response as any).propagatedData.baggage.match(/sentry-sample_rand=(0\.\d+)/)[1]); expect(sampleRand).toStrictEqual(expect.any(Number)); expect(sampleRand).not.toBeNaN(); @@ -71,7 +71,7 @@ describe('sample_rand propagation', () => { }, }); - const sampleRand = Number((response as any).propagatedData.baggage.match(/sentry-sample_rand=(0\.[0-9]+)/)[1]); + const sampleRand = Number((response as any).propagatedData.baggage.match(/sentry-sample_rand=(0\.\d+)/)[1]); expect(sampleRand).toStrictEqual(expect.any(Number)); expect(sampleRand).not.toBeNaN(); @@ -87,8 +87,8 @@ describe('sample_rand propagation', () => { }, }); - expect((response as any).propagatedData.baggage).toMatch(/sentry-sample_rand=0\.[0-9]+/); - const sampleRandStr = (response as any).propagatedData.baggage.match(/sentry-sample_rand=(0\.[0-9]+)/)[1]; + expect((response as any).propagatedData.baggage).toMatch(/sentry-sample_rand=0\.\d+/); + const sampleRandStr = (response as any).propagatedData.baggage.match(/sentry-sample_rand=(0\.\d+)/)[1]; expect(sampleRandStr).not.toBe('0.5'); }); }); diff --git a/dev-packages/node-integration-tests/suites/tracing/tracePropagationTargets/test.ts b/dev-packages/node-integration-tests/suites/tracing/tracePropagationTargets/test.ts index 4185dec46afb..9fb39a1ec8f2 100644 --- a/dev-packages/node-integration-tests/suites/tracing/tracePropagationTargets/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/tracePropagationTargets/test.ts @@ -8,12 +8,12 @@ test('HttpIntegration should instrument correct requests when tracePropagationTa const [SERVER_URL, closeTestServer] = await createTestServer() .get('/api/v0', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-1$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000-1'); }) .get('/api/v1', headers => { expect(headers['baggage']).toEqual(expect.any(String)); - expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f0-9]{32})-([a-f0-9]{16})-1$/)); + expect(headers['sentry-trace']).toEqual(expect.stringMatching(/^([a-f\d]{32})-([a-f\d]{16})-1$/)); expect(headers['sentry-trace']).not.toEqual('00000000000000000000000000000000-0000000000000000-1'); }) .get('/api/v2', headers => { diff --git a/dev-packages/node-integration-tests/utils/runner.ts b/dev-packages/node-integration-tests/utils/runner.ts index ac15a944ee0b..c32f2cbf3b7e 100644 --- a/dev-packages/node-integration-tests/utils/runner.ts +++ b/dev-packages/node-integration-tests/utils/runner.ts @@ -611,7 +611,7 @@ export function createRunner(...paths: string[]) { function tryParseEnvelopeFromStdoutLine(line: string): void { // Lines can have leading '[something] [{' which we need to remove - const cleanedLine = line.replace(/^.*?] \[{"/, '[{"'); + const cleanedLine = line.replace(/^.*?\] \[\{"/, '[{"'); // See if we have a port message if (cleanedLine.startsWith('{"port":')) { diff --git a/dev-packages/node-overhead-gh-action/.eslintrc.cjs b/dev-packages/node-overhead-gh-action/.eslintrc.cjs index 381653af6ece..a1c4f5968e46 100644 --- a/dev-packages/node-overhead-gh-action/.eslintrc.cjs +++ b/dev-packages/node-overhead-gh-action/.eslintrc.cjs @@ -2,7 +2,9 @@ module.exports = { env: { node: true, }, - extends: ['../../.eslintrc.js'], + // todo: remove regexp plugin from here once we add it to base.js eslint config for the whole project + extends: ['../../.eslintrc.js', 'plugin:regexp/recommended'], + plugins: ['regexp'], overrides: [ { files: ['**/*.mjs'], diff --git a/dev-packages/node-overhead-gh-action/package.json b/dev-packages/node-overhead-gh-action/package.json index d176e5d8475c..3713ed84c5ed 100644 --- a/dev-packages/node-overhead-gh-action/package.json +++ b/dev-packages/node-overhead-gh-action/package.json @@ -35,6 +35,7 @@ "@actions/glob": "0.4.0", "@actions/io": "1.1.3", "autocannon": "^8.0.0", + "eslint-plugin-regexp": "^1.15.0", "markdown-table": "3.0.3", "tree-kill": "1.2.2" }, diff --git a/dev-packages/rollup-utils/.eslintrc.cjs b/dev-packages/rollup-utils/.eslintrc.cjs index 0939c10d3812..f4a3ac1b8cb7 100644 --- a/dev-packages/rollup-utils/.eslintrc.cjs +++ b/dev-packages/rollup-utils/.eslintrc.cjs @@ -1,5 +1,7 @@ module.exports = { - extends: ['../../.eslintrc.js'], + // todo: remove regexp plugin from here once we add it to base.js eslint config for the whole project + extends: ['../../.eslintrc.js', 'plugin:regexp/recommended'], + plugins: ['regexp'], ignorePatterns: ['otelLoaderTemplate.js.tmpl'], sourceType: 'module', }; diff --git a/dev-packages/rollup-utils/package.json b/dev-packages/rollup-utils/package.json index 7e3421b5488b..11a9019247c4 100644 --- a/dev-packages/rollup-utils/package.json +++ b/dev-packages/rollup-utils/package.json @@ -12,6 +12,9 @@ "acorn": "^8.7.0", "recast": "^0.20.5" }, + "devDependencies": { + "eslint-plugin-regexp": "^1.15.0" + }, "volta": { "extends": "../../package.json" }, diff --git a/dev-packages/size-limit-gh-action/.eslintrc.cjs b/dev-packages/size-limit-gh-action/.eslintrc.cjs index bc17bc85b4ab..fbc38a65db9c 100644 --- a/dev-packages/size-limit-gh-action/.eslintrc.cjs +++ b/dev-packages/size-limit-gh-action/.eslintrc.cjs @@ -1,5 +1,7 @@ module.exports = { - extends: ['../../.eslintrc.js'], + // todo: remove regexp plugin from here once we add it to base.js eslint config for the whole project + extends: ['../../.eslintrc.js', 'plugin:regexp/recommended'], + plugins: ['regexp'], parserOptions: { sourceType: 'module', ecmaVersion: 'latest', diff --git a/dev-packages/test-utils/.eslintrc.js b/dev-packages/test-utils/.eslintrc.js index fdb9952bae52..3be74e6c3f9d 100644 --- a/dev-packages/test-utils/.eslintrc.js +++ b/dev-packages/test-utils/.eslintrc.js @@ -2,5 +2,7 @@ module.exports = { env: { node: true, }, - extends: ['../../.eslintrc.js'], + // todo: remove regexp plugin from here once we add it to base.js eslint config for the whole project + extends: ['../../.eslintrc.js', 'plugin:regexp/recommended'], + plugins: ['regexp'], }; diff --git a/dev-packages/test-utils/package.json b/dev-packages/test-utils/package.json index 806a03601188..a8eb01ad18d0 100644 --- a/dev-packages/test-utils/package.json +++ b/dev-packages/test-utils/package.json @@ -48,7 +48,8 @@ }, "devDependencies": { "@playwright/test": "~1.53.2", - "@sentry/core": "10.22.0" + "@sentry/core": "10.22.0", + "eslint-plugin-regexp": "^1.15.0" }, "volta": { "extends": "../../package.json" diff --git a/yarn.lock b/yarn.lock index 06f8d3741128..c53987535103 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4092,6 +4092,13 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.6.tgz#4276edd5c105bc28b11c6a1f76fb9d29d1bd25c1" integrity sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA== +"@eslint-community/eslint-utils@^4.2.0": + version "4.9.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz#7308df158e064f0dd8b8fdb58aa14fa2a7f913b3" + integrity sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g== + dependencies: + eslint-visitor-keys "^3.4.3" + "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -4099,6 +4106,11 @@ dependencies: eslint-visitor-keys "^3.3.0" +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.5.0": + version "4.12.2" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b" + integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew== + "@eslint/eslintrc@^0.4.3": version "0.4.3" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" @@ -13122,6 +13134,11 @@ comment-parser@^0.7.6: resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-0.7.6.tgz#0e743a53c8e646c899a1323db31f6cd337b10f12" integrity sha512-GKNxVA7/iuTnAqGADlTWX4tkhzxZKXp5fLJqKTlQLHkE65XDUKutZ3BHaJC5IGcper2tT3QRD1xr4o3jNpgXXg== +comment-parser@^1.1.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.4.1.tgz#bdafead37961ac079be11eb7ec65c4d021eaf9cc" + integrity sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg== + commenting@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/commenting/-/commenting-1.1.0.tgz#fae14345c6437b8554f30bc6aa6c1e1633033590" @@ -16220,6 +16237,20 @@ eslint-plugin-react@^7.20.5, eslint-plugin-react@^7.31.11: semver "^6.3.0" string.prototype.matchall "^4.0.8" +eslint-plugin-regexp@^1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-regexp/-/eslint-plugin-regexp-1.15.0.tgz#2717cd4867418287b36d9569c72fca7d242c59b3" + integrity sha512-YEtQPfdudafU7RBIFci81R/Q1yErm0mVh3BkGnXD2Dk8DLwTFdc2ITYH1wCnHKim2gnHfPFgrkh+b2ozyyU7ag== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.4.0" + comment-parser "^1.1.2" + grapheme-splitter "^1.0.4" + jsdoctypeparser "^9.0.0" + refa "^0.11.0" + regexp-ast-analysis "^0.6.0" + scslre "^0.2.0" + eslint-plugin-simple-import-sort@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-6.0.1.tgz#24a3af3b745dcd389c060db28e22d0f5e3edf86e" @@ -16257,7 +16288,7 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== @@ -18100,6 +18131,11 @@ graceful-fs@4.2.11, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2 resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + graphql-tag@^2.11.0: version "2.12.6" resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" @@ -26403,6 +26439,13 @@ redux@^4.0.5: loose-envify "^1.4.0" symbol-observable "^1.2.0" +refa@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/refa/-/refa-0.11.0.tgz#07d57a9f5f3ee2dd58e0d145a6a489fda2591ed0" + integrity sha512-486O8/pQXwj9jV0mVvUnTsxq0uknpBnNJ0eCUhkZqJRQ8KutrT1PhzmumdCeM1hSBF2eMlFPmwECRER4IbKXlQ== + dependencies: + "@eslint-community/regexpp" "^4.5.0" + reflect-metadata@0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.2.1.tgz#8d5513c0f5ef2b4b9c3865287f3c0940c1f67f74" @@ -26460,6 +26503,14 @@ regex-parser@^2.2.11: resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== +regexp-ast-analysis@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regexp-ast-analysis/-/regexp-ast-analysis-0.6.0.tgz#c0b648728c85d266a409ce00a6440c01c9834c61" + integrity sha512-OLxjyjPkVH+rQlBLb1I/P/VTmamSjGkvN5PTV5BXP432k3uVz727J7H29GA5IFiY0m7e1xBN7049Wn59FY3DEQ== + dependencies: + "@eslint-community/regexpp" "^4.5.0" + refa "^0.11.0" + regexp-clone@1.0.0, regexp-clone@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-1.0.0.tgz#222db967623277056260b992626354a04ce9bf63" @@ -27328,6 +27379,15 @@ schema-utils@^4.0.0, schema-utils@^4.3.0, schema-utils@^4.3.2: ajv-formats "^2.1.1" ajv-keywords "^5.1.0" +scslre@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/scslre/-/scslre-0.2.0.tgz#b604eedbab76f87003738d00de44d7601a78609e" + integrity sha512-4hc49fUMmX3jM0XdFUAPBrs1xwEcdHa0KyjEsjFs+Zfc66mpFpq5YmRgDtl+Ffo6AtJIilfei+yKw8fUn3N88w== + dependencies: + "@eslint-community/regexpp" "^4.5.0" + refa "^0.11.0" + regexp-ast-analysis "^0.6.0" + scule@^1.0.0, scule@^1.2.0, scule@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/scule/-/scule-1.3.0.tgz#6efbd22fd0bb801bdcc585c89266a7d2daa8fbd3" From c5f407f6288e3f353a808ef51409929d70a0743b Mon Sep 17 00:00:00 2001 From: s1gr1d <32902192+s1gr1d@users.noreply.github.com> Date: Fri, 31 Oct 2025 10:34:00 +0100 Subject: [PATCH 2/5] Add manual eslint ignores --- .../suites/tracing/trace-lifetime/pageload-meta/test.ts | 2 ++ .../tracing-without-performance-propagateTraceparent/test.ts | 1 + .../tracing/trace-lifetime/tracing-without-performance/test.ts | 2 ++ dev-packages/node-integration-tests/utils/runner.ts | 1 + 4 files changed, 6 insertions(+) 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 ae3186abda06..4269f91c2c07 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 @@ -247,6 +247,7 @@ sentryTest( const headers = request.headers(); // sampling decision is propagated from meta tag's sentry-trace sampled flag + // eslint-disable-next-line regexp/prefer-d expect(headers['sentry-trace']).toMatch(new RegExp(`^${META_TAG_TRACE_ID}-[0-9a-f]{16}-1$`)); expect(headers['baggage']).toBe(META_TAG_BAGGAGE); }, @@ -301,6 +302,7 @@ sentryTest( const headers = request.headers(); // sampling decision is propagated from meta tag's sentry-trace sampled flag + // eslint-disable-next-line regexp/prefer-d expect(headers['sentry-trace']).toMatch(new RegExp(`^${META_TAG_TRACE_ID}-[0-9a-f]{16}-1$`)); expect(headers['baggage']).toBe(META_TAG_BAGGAGE); }, diff --git a/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/tracing-without-performance-propagateTraceparent/test.ts b/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/tracing-without-performance-propagateTraceparent/test.ts index dfc0b6d83b76..8ce78c869179 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/tracing-without-performance-propagateTraceparent/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/tracing-without-performance-propagateTraceparent/test.ts @@ -110,6 +110,7 @@ sentryTest('outgoing XHR requests have new traceId after navigation', async ({ g const headers = request.headers(); // sampling decision is deferred because TwP means we didn't sample any span + // eslint-disable-next-line regexp/prefer-d expect(headers['sentry-trace']).toMatch(new RegExp(`^${META_TAG_TRACE_ID}-[0-9a-f]{16}$`)); expect(headers['baggage']).toBe(META_TAG_BAGGAGE); diff --git a/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/tracing-without-performance/test.ts b/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/tracing-without-performance/test.ts index f05d51ff2377..51cc61e0de0c 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/tracing-without-performance/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/tracing-without-performance/test.ts @@ -121,6 +121,7 @@ sentryTest('outgoing fetch requests have new traceId after navigation', async ({ const headers = request.headers(); // sampling decision is deferred because TwP means we didn't sample any span + // eslint-disable-next-line regexp/prefer-d expect(headers['sentry-trace']).toMatch(new RegExp(`^${META_TAG_TRACE_ID}-[0-9a-f]{16}$`)); expect(headers['baggage']).toBe(META_TAG_BAGGAGE); @@ -163,6 +164,7 @@ sentryTest('outgoing XHR requests have new traceId after navigation', async ({ g const headers = request.headers(); // sampling decision is deferred because TwP means we didn't sample any span + // eslint-disable-next-line regexp/prefer-d expect(headers['sentry-trace']).toMatch(new RegExp(`^${META_TAG_TRACE_ID}-[0-9a-f]{16}$`)); expect(headers['baggage']).toBe(META_TAG_BAGGAGE); diff --git a/dev-packages/node-integration-tests/utils/runner.ts b/dev-packages/node-integration-tests/utils/runner.ts index c32f2cbf3b7e..97c4021ccc89 100644 --- a/dev-packages/node-integration-tests/utils/runner.ts +++ b/dev-packages/node-integration-tests/utils/runner.ts @@ -801,6 +801,7 @@ function convertEsmToCjs(content: string): string { // Handle default imports: import x from 'y' -> const x = require('y') newContent = newContent.replace( + // eslint-disable-next-line regexp/optimal-quantifier-concatenation, regexp/no-super-linear-backtracking /import\s+([\w*{}\s,]+)\s+from\s+['"]([^'"]+)['"]/g, (_, imports: string, module: string) => { if (imports.includes('* as')) { From b78cf6c9f397bb39af535747163645de3b6ebbc2 Mon Sep 17 00:00:00 2001 From: s1gr1d <32902192+s1gr1d@users.noreply.github.com> Date: Mon, 3 Nov 2025 11:55:02 +0100 Subject: [PATCH 3/5] fix test, fix yarn lock --- .../suites/express/tracing/test.ts | 2 +- yarn.lock | 9 +-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/dev-packages/node-integration-tests/suites/express/tracing/test.ts b/dev-packages/node-integration-tests/suites/express/tracing/test.ts index 9cff4678f038..759df300181a 100644 --- a/dev-packages/node-integration-tests/suites/express/tracing/test.ts +++ b/dev-packages/node-integration-tests/suites/express/tracing/test.ts @@ -163,7 +163,7 @@ describe('express tracing', () => { const runner = await createRunner() .expect({ transaction: { - transaction: 'GET /test/arr/:id,/\\/test\\/arr[0-9]*\\/required(path)?(\\/optionalPath)?\\/(lastParam)?/', + transaction: 'GET /test/arr/:id,/\\/test\\/arr\\d*\\/required(path)?(\\/optionalPath)?\\/(lastParam)?/', transaction_info: { source: 'route', }, diff --git a/yarn.lock b/yarn.lock index 1cbb0643f2fc..8781a2da5e45 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4092,20 +4092,13 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.6.tgz#4276edd5c105bc28b11c6a1f76fb9d29d1bd25c1" integrity sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA== -"@eslint-community/eslint-utils@^4.2.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.9.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz#7308df158e064f0dd8b8fdb58aa14fa2a7f913b3" integrity sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g== dependencies: eslint-visitor-keys "^3.4.3" -"@eslint-community/eslint-utils@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.5.0": version "4.12.2" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b" From 203d926437cb0faebcca034c8135f4182f52b6c0 Mon Sep 17 00:00:00 2001 From: s1gr1d <32902192+s1gr1d@users.noreply.github.com> Date: Tue, 4 Nov 2025 12:07:57 +0100 Subject: [PATCH 4/5] fix linting --- .../tracing/metrics/web-vitals-inp-navigate/test.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-navigate/test.ts b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-navigate/test.ts index cf3cdb552cbf..d1cc7cce020d 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-navigate/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-navigate/test.ts @@ -46,7 +46,7 @@ sentryTest( const spanEnvelopeItem = spanEnvelope[1][0][1]; const traceId = spanEnvelopeHeaders.trace!.trace_id; - expect(traceId).toMatch(/[a-f0-9]{32}/); + expect(traceId).toMatch(/[a-f\d]{32}/); expect(spanEnvelopeHeaders).toEqual({ sent_at: expect.any(String), @@ -84,7 +84,7 @@ sentryTest( origin: 'auto.http.browser.inp', is_segment: true, segment_id: spanEnvelopeItem.span_id, - span_id: expect.stringMatching(/[a-f0-9]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: traceId, @@ -127,7 +127,7 @@ sentryTest( const spanEnvelopeItem = spanEnvelope[1][0][1]; const traceId = spanEnvelopeHeaders.trace!.trace_id; - expect(traceId).toMatch(/[a-f0-9]{32}/); + expect(traceId).toMatch(/[a-f\d]{32}/); expect(spanEnvelopeHeaders).toEqual({ sent_at: expect.any(String), @@ -165,7 +165,7 @@ sentryTest( origin: 'auto.http.browser.inp', is_segment: true, segment_id: spanEnvelopeItem.span_id, - span_id: expect.stringMatching(/[a-f0-9]{16}/), + span_id: expect.stringMatching(/[a-f\d]{16}/), start_timestamp: expect.any(Number), timestamp: expect.any(Number), trace_id: traceId, From 43b82293ae524c5dd3f954082c7f5e6a355dddad Mon Sep 17 00:00:00 2001 From: s1gr1d <32902192+s1gr1d@users.noreply.github.com> Date: Tue, 4 Nov 2025 15:22:54 +0100 Subject: [PATCH 5/5] add rimraf as devDep --- .../e2e-tests/test-applications/aws-serverless/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/dev-packages/e2e-tests/test-applications/aws-serverless/package.json b/dev-packages/e2e-tests/test-applications/aws-serverless/package.json index bf8085c4e892..d24bc1b78805 100644 --- a/dev-packages/e2e-tests/test-applications/aws-serverless/package.json +++ b/dev-packages/e2e-tests/test-applications/aws-serverless/package.json @@ -19,6 +19,7 @@ "aws-cdk-lib": "^2.210.0", "constructs": "^10.4.2", "glob": "^11.0.3", + "rimraf": "^5.0.10", "tmp": "^0.2.5" }, "volta": {