Skip to content

Commit 1f08b3b

Browse files
authored
test: Ensure we properly test trace & span IDs (#14520)
This updates all our tests to properly test for trace ID & span ID shape, instead of just `any(String)`. This should show/avoid having e.g. `trace_id: ''` or similar somewhere, which would be invalid.
1 parent bdbdcc8 commit 1f08b3b

File tree

118 files changed

+850
-854
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

118 files changed

+850
-854
lines changed

dev-packages/browser-integration-tests/suites/manual-client/browser-context/test.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ sentryTest('allows to setup a client manually & capture exceptions', async ({ ge
4343
version: expect.any(String),
4444
packages: [{ name: expect.any(String), version: expect.any(String) }],
4545
},
46-
contexts: { trace: { trace_id: expect.any(String), span_id: expect.any(String) } },
46+
contexts: {
47+
trace: { trace_id: expect.stringMatching(/[a-f0-9]{32}/), span_id: expect.stringMatching(/[a-f0-9]{16}/) },
48+
},
4749
});
4850
});

dev-packages/browser-integration-tests/suites/replay/dsc/test.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ sentryTest(
5858
expect(envHeader.trace).toEqual({
5959
environment: 'production',
6060
sample_rate: '1',
61-
trace_id: expect.any(String),
61+
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
6262
public_key: 'public',
6363
replay_id: replay.session?.id,
6464
sampled: 'true',
@@ -105,7 +105,7 @@ sentryTest(
105105
expect(envHeader.trace).toEqual({
106106
environment: 'production',
107107
sample_rate: '1',
108-
trace_id: expect.any(String),
108+
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
109109
public_key: 'public',
110110
sampled: 'true',
111111
});
@@ -157,7 +157,7 @@ sentryTest(
157157
expect(envHeader.trace).toEqual({
158158
environment: 'production',
159159
sample_rate: '1',
160-
trace_id: expect.any(String),
160+
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
161161
public_key: 'public',
162162
replay_id: replay.session?.id,
163163
sampled: 'true',
@@ -199,7 +199,7 @@ sentryTest(
199199
expect(envHeader.trace).toEqual({
200200
environment: 'production',
201201
sample_rate: '1',
202-
trace_id: expect.any(String),
202+
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
203203
public_key: 'public',
204204
sampled: 'true',
205205
});
@@ -240,7 +240,7 @@ sentryTest('should add replay_id to error DSC while replay is active', async ({
240240
expect(error1Header.trace).toBeDefined();
241241
expect(error1Header.trace).toEqual({
242242
environment: 'production',
243-
trace_id: expect.any(String),
243+
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
244244
public_key: 'public',
245245
replay_id: replay.session?.id,
246246
...(hasTracing
@@ -261,7 +261,7 @@ sentryTest('should add replay_id to error DSC while replay is active', async ({
261261
expect(error2Header.trace).toBeDefined();
262262
expect(error2Header.trace).toEqual({
263263
environment: 'production',
264-
trace_id: expect.any(String),
264+
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
265265
public_key: 'public',
266266
...(hasTracing
267267
? {

dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/http-timings/test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ sentryTest('should create fetch spans with http timing @firefox', async ({ brows
3535
expect(span).toMatchObject({
3636
description: `GET http://example.com/${index}`,
3737
parent_span_id: tracingEvent.contexts?.trace?.span_id,
38-
span_id: expect.any(String),
38+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
3939
start_timestamp: expect.any(Number),
4040
timestamp: expect.any(Number),
4141
trace_id: tracingEvent.contexts?.trace?.trace_id,

dev-packages/browser-integration-tests/suites/tracing/envelope-header-transaction-name/test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ sentryTest(
2424
environment: 'production',
2525
sample_rate: '1',
2626
transaction: expect.stringContaining('/index.html'),
27-
trace_id: expect.any(String),
27+
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
2828
public_key: 'public',
2929
sampled: 'true',
3030
});

dev-packages/browser-integration-tests/suites/tracing/envelope-header/test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ sentryTest(
2727
expect(envHeader.trace).toEqual({
2828
environment: 'production',
2929
sample_rate: '1',
30-
trace_id: expect.any(String),
30+
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
3131
public_key: 'public',
3232
sampled: 'true',
3333
});

dev-packages/browser-integration-tests/suites/tracing/request/fetch-relative-url/test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ sentryTest('should create spans for fetch requests', async ({ getLocalTestUrl, p
2424
expect(span).toMatchObject({
2525
description: `GET /test-req/${index}`,
2626
parent_span_id: tracingEvent.contexts?.trace?.span_id,
27-
span_id: expect.any(String),
27+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
2828
start_timestamp: expect.any(Number),
2929
timestamp: expect.any(Number),
3030
trace_id: tracingEvent.contexts?.trace?.trace_id,

dev-packages/browser-integration-tests/suites/tracing/request/fetch/test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ sentryTest('should create spans for fetch requests', async ({ getLocalTestUrl, p
2828
expect(span).toMatchObject({
2929
description: `GET http://example.com/${index}`,
3030
parent_span_id: tracingEvent.contexts?.trace?.span_id,
31-
span_id: expect.any(String),
31+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
3232
start_timestamp: expect.any(Number),
3333
timestamp: expect.any(Number),
3434
trace_id: tracingEvent.contexts?.trace?.trace_id,

dev-packages/browser-integration-tests/suites/tracing/request/xhr-relative-url/test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ sentryTest('should create spans for xhr requests', async ({ getLocalTestUrl, pag
2424
expect(span).toMatchObject({
2525
description: `GET /test-req/${index}`,
2626
parent_span_id: tracingEvent.contexts?.trace?.span_id,
27-
span_id: expect.any(String),
27+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
2828
start_timestamp: expect.any(Number),
2929
timestamp: expect.any(Number),
3030
trace_id: tracingEvent.contexts?.trace?.trace_id,

dev-packages/browser-integration-tests/suites/tracing/request/xhr/test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ sentryTest('should create spans for XHR requests', async ({ getLocalTestUrl, pag
2020
expect(span).toMatchObject({
2121
description: `GET http://example.com/${index}`,
2222
parent_span_id: eventData.contexts?.trace?.span_id,
23-
span_id: expect.any(String),
23+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
2424
start_timestamp: expect.any(Number),
2525
timestamp: expect.any(Number),
2626
trace_id: eventData.contexts?.trace?.trace_id,

dev-packages/e2e-tests/test-applications/aws-lambda-layer-cjs/tests/basic.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@ test('Lambda layer SDK bundle sends events', async ({ request }) => {
3737
},
3838
op: 'function.aws.lambda',
3939
origin: 'auto.otel.aws-lambda',
40-
span_id: expect.any(String),
40+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
4141
status: 'ok',
42-
trace_id: expect.any(String),
42+
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
4343
});
4444

4545
expect(transactionEvent.spans).toHaveLength(2);

dev-packages/e2e-tests/test-applications/aws-serverless-esm/tests/basic.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ test('AWS Serverless SDK sends events in ESM mode', async ({ request }) => {
3434
},
3535
op: 'function.aws.lambda',
3636
origin: 'auto.function.serverless',
37-
span_id: expect.any(String),
37+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
3838
status: 'ok',
39-
trace_id: expect.any(String),
39+
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
4040
});
4141

4242
expect(transactionEvent.spans).toHaveLength(2);

dev-packages/e2e-tests/test-applications/create-next-app/tests/client-errors.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ test('Sends a client-side exception to Sentry', async ({ page }) => {
2424
expect(errorEvent.transaction).toEqual('/');
2525

2626
expect(errorEvent.contexts?.trace).toEqual({
27-
trace_id: expect.any(String),
28-
span_id: expect.any(String),
27+
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
28+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
2929
});
3030
});

dev-packages/e2e-tests/test-applications/create-next-app/tests/client-transactions.test.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ test('Sends a pageload transaction to Sentry', async ({ page }) => {
2020
version: '18.2.0',
2121
},
2222
trace: {
23-
span_id: expect.any(String),
24-
trace_id: expect.any(String),
23+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
24+
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
2525
op: 'pageload',
2626
origin: 'auto.pageload.nextjs.pages_router_instrumentation',
2727
data: expect.objectContaining({
@@ -65,8 +65,8 @@ test('captures a navigation transcation to Sentry', async ({ page }) => {
6565
version: '18.2.0',
6666
},
6767
trace: {
68-
span_id: expect.any(String),
69-
trace_id: expect.any(String),
68+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
69+
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
7070
op: 'navigation',
7171
origin: 'auto.navigation.nextjs.pages_router_instrumentation',
7272
data: expect.objectContaining({

dev-packages/e2e-tests/test-applications/create-next-app/tests/server-errors.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ test('Sends a server-side exception to Sentry', async ({ baseURL }) => {
2525
expect(errorEvent.transaction).toEqual('GET /api/error');
2626

2727
expect(errorEvent.contexts?.trace).toEqual({
28-
trace_id: expect.any(String),
29-
span_id: expect.any(String),
28+
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
29+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
3030
});
3131
});

dev-packages/e2e-tests/test-applications/create-next-app/tests/server-transactions.test.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ test('Sends server-side transactions to Sentry', async ({ baseURL }) => {
1919
type: 'transaction',
2020
contexts: expect.objectContaining({
2121
trace: {
22-
span_id: expect.any(String),
23-
trace_id: expect.any(String),
22+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
23+
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
2424
op: 'http.server',
2525
origin: 'auto.http.nextjs',
2626
data: expect.objectContaining({
@@ -41,7 +41,7 @@ test('Sends server-side transactions to Sentry', async ({ baseURL }) => {
4141
description: 'test-span',
4242
origin: 'manual',
4343
parent_span_id: transactionEvent.contexts?.trace?.span_id,
44-
span_id: expect.any(String),
44+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
4545
start_timestamp: expect.any(Number),
4646
status: 'ok',
4747
timestamp: expect.any(Number),

dev-packages/e2e-tests/test-applications/create-remix-app/tests/client-inp.test.ts

+11-11
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ test('sends an INP span during pageload', async ({ page }) => {
3434
},
3535
description: 'body > div > input#exception-button[type="button"]',
3636
op: 'ui.interaction.click',
37-
parent_span_id: expect.any(String),
37+
parent_span_id: expect.stringMatching(/[a-f0-9]{16}/),
3838
is_segment: true,
39-
span_id: expect.any(String),
39+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
4040
start_timestamp: expect.any(Number),
4141
timestamp: expect.any(Number),
42-
trace_id: expect.any(String),
42+
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
4343
origin: 'auto.http.browser.inp',
4444
exclusive_time: expect.any(Number),
4545
measurements: { inp: { unit: 'millisecond', value: expect.any(Number) } },
@@ -86,12 +86,12 @@ test('sends an INP span after pageload', async ({ page }) => {
8686
},
8787
description: 'body > div > input#exception-button[type="button"]',
8888
op: 'ui.interaction.click',
89-
parent_span_id: expect.any(String),
89+
parent_span_id: expect.stringMatching(/[a-f0-9]{16}/),
9090
is_segment: true,
91-
span_id: expect.any(String),
91+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
9292
start_timestamp: expect.any(Number),
9393
timestamp: expect.any(Number),
94-
trace_id: expect.any(String),
94+
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
9595
origin: 'auto.http.browser.inp',
9696
exclusive_time: expect.any(Number),
9797
measurements: { inp: { unit: 'millisecond', value: expect.any(Number) } },
@@ -131,11 +131,11 @@ test('sends an INP span during navigation', async ({ page }) => {
131131
},
132132
description: '<unknown>',
133133
op: 'ui.interaction.click',
134-
parent_span_id: expect.any(String),
135-
span_id: expect.any(String),
134+
parent_span_id: expect.stringMatching(/[a-f0-9]{16}/),
135+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
136136
start_timestamp: expect.any(Number),
137137
timestamp: expect.any(Number),
138-
trace_id: expect.any(String),
138+
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
139139
origin: 'auto.http.browser.inp',
140140
exclusive_time: expect.any(Number),
141141
measurements: { inp: { unit: 'millisecond', value: expect.any(Number) } },
@@ -186,10 +186,10 @@ test('sends an INP span after navigation', async ({ page }) => {
186186
description: '<unknown>',
187187
op: 'ui.interaction.click',
188188
is_segment: true,
189-
span_id: expect.any(String),
189+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
190190
start_timestamp: expect.any(Number),
191191
timestamp: expect.any(Number),
192-
trace_id: expect.any(String),
192+
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
193193
origin: 'auto.http.browser.inp',
194194
exclusive_time: expect.any(Number),
195195
measurements: { inp: { unit: 'millisecond', value: expect.any(Number) } },

dev-packages/e2e-tests/test-applications/default-browser/tests/errors.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ test('captures an error', async ({ page }) => {
2424
});
2525

2626
expect(errorEvent.contexts?.trace).toEqual({
27-
trace_id: expect.any(String),
28-
span_id: expect.any(String),
27+
trace_id: expect.stringMatching(/[a-f0-9]{32}/),
28+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
2929
});
3030
});
3131

dev-packages/e2e-tests/test-applications/ember-classic/tests/performance.test.ts

+8-8
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ test('captures correct spans for navigation', async ({ page }) => {
157157
op: 'ui.ember.transition',
158158
origin: 'auto.ui.ember',
159159
parent_span_id: spanId,
160-
span_id: expect.any(String),
160+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
161161
start_timestamp: expect.any(Number),
162162
timestamp: expect.any(Number),
163163
trace_id: traceId,
@@ -174,7 +174,7 @@ test('captures correct spans for navigation', async ({ page }) => {
174174
op: 'ui.ember.route.before_model',
175175
origin: 'auto.ui.ember',
176176
parent_span_id: spanId,
177-
span_id: expect.any(String),
177+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
178178
start_timestamp: expect.any(Number),
179179
timestamp: expect.any(Number),
180180
trace_id: traceId,
@@ -189,7 +189,7 @@ test('captures correct spans for navigation', async ({ page }) => {
189189
op: 'ui.ember.route.before_model',
190190
origin: 'auto.ui.ember',
191191
parent_span_id: spanId,
192-
span_id: expect.any(String),
192+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
193193
start_timestamp: expect.any(Number),
194194
timestamp: expect.any(Number),
195195
trace_id: traceId,
@@ -207,7 +207,7 @@ test('captures correct spans for navigation', async ({ page }) => {
207207
op: 'ui.ember.route.model',
208208
origin: 'auto.ui.ember',
209209
parent_span_id: spanId,
210-
span_id: expect.any(String),
210+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
211211
start_timestamp: expect.any(Number),
212212
timestamp: expect.any(Number),
213213
trace_id: traceId,
@@ -222,7 +222,7 @@ test('captures correct spans for navigation', async ({ page }) => {
222222
op: 'ui.ember.route.model',
223223
origin: 'auto.ui.ember',
224224
parent_span_id: spanId,
225-
span_id: expect.any(String),
225+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
226226
start_timestamp: expect.any(Number),
227227
timestamp: expect.any(Number),
228228
trace_id: traceId,
@@ -240,7 +240,7 @@ test('captures correct spans for navigation', async ({ page }) => {
240240
op: 'ui.ember.route.after_model',
241241
origin: 'auto.ui.ember',
242242
parent_span_id: spanId,
243-
span_id: expect.any(String),
243+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
244244
start_timestamp: expect.any(Number),
245245
timestamp: expect.any(Number),
246246
trace_id: traceId,
@@ -255,7 +255,7 @@ test('captures correct spans for navigation', async ({ page }) => {
255255
op: 'ui.ember.route.after_model',
256256
origin: 'auto.ui.ember',
257257
parent_span_id: spanId,
258-
span_id: expect.any(String),
258+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
259259
start_timestamp: expect.any(Number),
260260
timestamp: expect.any(Number),
261261
trace_id: traceId,
@@ -271,7 +271,7 @@ test('captures correct spans for navigation', async ({ page }) => {
271271
op: 'ui.ember.runloop.render',
272272
origin: 'auto.ui.ember',
273273
parent_span_id: spanId,
274-
span_id: expect.any(String),
274+
span_id: expect.stringMatching(/[a-f0-9]{16}/),
275275
start_timestamp: expect.any(Number),
276276
timestamp: expect.any(Number),
277277
trace_id: traceId,

0 commit comments

Comments
 (0)