Skip to content

Commit 3c0f4a1

Browse files
committed
more test refactors
1 parent 95e4f39 commit 3c0f4a1

File tree

3 files changed

+218
-26
lines changed
  • dev-packages/browser-integration-tests/suites/tracing/trace-lifetime

3 files changed

+218
-26
lines changed

dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/pageload-meta/test.ts

Lines changed: 156 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
import { release } from 'os';
12
import { expect } from '@playwright/test';
23
import type { Event } from '@sentry/types';
34
import { sentryTest } from '../../../../utils/fixtures';
5+
import type { EventAndTraceHeader } from '../../../../utils/helpers';
46
import {
7+
eventAndTraceHeaderRequestParser,
58
getFirstSentryEnvelopeRequest,
69
getMultipleSentryEnvelopeRequests,
710
shouldSkipTracingTest,
@@ -21,8 +24,16 @@ sentryTest(
2124

2225
const url = await getLocalTestPath({ testDir: __dirname });
2326

24-
const pageloadEvent = await getFirstSentryEnvelopeRequest<Event>(page, url);
25-
const navigationEvent = await getFirstSentryEnvelopeRequest<Event>(page, `${url}#foo`);
27+
const [pageloadEvent, pageloadTraceHeader] = await getFirstSentryEnvelopeRequest<EventAndTraceHeader>(
28+
page,
29+
url,
30+
eventAndTraceHeaderRequestParser,
31+
);
32+
const [navigationEvent, navigationTraceHeader] = await getFirstSentryEnvelopeRequest<EventAndTraceHeader>(
33+
page,
34+
`${url}#foo`,
35+
eventAndTraceHeaderRequestParser,
36+
);
2637

2738
const pageloadTraceContext = pageloadEvent.contexts?.trace;
2839
const navigationTraceContext = navigationEvent.contexts?.trace;
@@ -33,6 +44,17 @@ sentryTest(
3344
parent_span_id: META_TAG_PARENT_SPAN_ID,
3445
span_id: expect.stringMatching(/^[0-9a-f]{16}$/),
3546
});
47+
48+
expect(pageloadTraceHeader).toEqual({
49+
environment: 'prod',
50+
release: '1.0.0',
51+
sample_rate: '0.2',
52+
sampled: 'true',
53+
transaction: 'my-transaction',
54+
public_key: 'public',
55+
trace_id: META_TAG_TRACE_ID,
56+
});
57+
3658
expect(navigationTraceContext).toMatchObject({
3759
op: 'navigation',
3860
trace_id: expect.stringMatching(/^[0-9a-f]{32}$/),
@@ -41,6 +63,14 @@ sentryTest(
4163
// navigation span is head of trace, so there's no parent span:
4264
expect(navigationTraceContext?.trace_id).not.toHaveProperty('parent_span_id');
4365

66+
expect(navigationTraceHeader).toEqual({
67+
environment: 'production',
68+
public_key: 'public',
69+
sample_rate: '1',
70+
sampled: 'true',
71+
trace_id: navigationTraceContext?.trace_id,
72+
});
73+
4474
expect(pageloadTraceContext?.trace_id).not.toEqual(navigationTraceContext?.trace_id);
4575
},
4676
);
@@ -52,23 +82,52 @@ sentryTest('error after <meta> tag pageload has pageload traceId', async ({ getL
5282

5383
const url = await getLocalTestPath({ testDir: __dirname });
5484

55-
const pageloadEvent = await getFirstSentryEnvelopeRequest<Event>(page, url);
85+
const [pageloadEvent, pageloadTraceHeader] = await getFirstSentryEnvelopeRequest<EventAndTraceHeader>(
86+
page,
87+
url,
88+
eventAndTraceHeaderRequestParser,
89+
);
90+
5691
expect(pageloadEvent.contexts?.trace).toMatchObject({
5792
op: 'pageload',
5893
trace_id: META_TAG_TRACE_ID,
5994
parent_span_id: META_TAG_PARENT_SPAN_ID,
6095
span_id: expect.stringMatching(/^[0-9a-f]{16}$/),
6196
});
6297

63-
const errorEventPromise = getFirstSentryEnvelopeRequest<Event>(page);
98+
expect(pageloadTraceHeader).toEqual({
99+
environment: 'prod',
100+
release: '1.0.0',
101+
sample_rate: '0.2',
102+
sampled: 'true',
103+
transaction: 'my-transaction',
104+
public_key: 'public',
105+
trace_id: META_TAG_TRACE_ID,
106+
});
107+
108+
const errorEventPromise = getFirstSentryEnvelopeRequest<EventAndTraceHeader>(
109+
page,
110+
undefined,
111+
eventAndTraceHeaderRequestParser,
112+
);
64113
await page.locator('#errorBtn').click();
65-
const errorEvent = await errorEventPromise;
114+
const [errorEvent, errorTraceHeader] = await errorEventPromise;
66115

67116
expect(errorEvent.contexts?.trace).toMatchObject({
68117
trace_id: META_TAG_TRACE_ID,
69118
parent_span_id: META_TAG_PARENT_SPAN_ID,
70119
span_id: expect.stringMatching(/^[0-9a-f]{16}$/),
71120
});
121+
122+
expect(errorTraceHeader).toEqual({
123+
environment: 'prod',
124+
release: '1.0.0',
125+
sample_rate: '0.2',
126+
sampled: 'true',
127+
transaction: 'my-transaction',
128+
public_key: 'public',
129+
trace_id: META_TAG_TRACE_ID,
130+
});
72131
});
73132

74133
sentryTest('error during <meta> tag pageload has pageload traceId', async ({ getLocalTestPath, page }) => {
@@ -78,13 +137,20 @@ sentryTest('error during <meta> tag pageload has pageload traceId', async ({ get
78137

79138
const url = await getLocalTestPath({ testDir: __dirname });
80139

81-
const envelopeRequestsPromise = getMultipleSentryEnvelopeRequests<Event>(page, 2);
140+
const envelopeRequestsPromise = getMultipleSentryEnvelopeRequests<EventAndTraceHeader>(
141+
page,
142+
2,
143+
undefined,
144+
eventAndTraceHeaderRequestParser,
145+
);
82146
await page.goto(url);
83147
await page.locator('#errorBtn').click();
84-
const events = await envelopeRequestsPromise;
148+
const envelopes = await envelopeRequestsPromise;
85149

86-
const pageloadEvent = events.find(event => event.type === 'transaction');
87-
const errorEvent = events.find(event => !event.type);
150+
const [pageloadEvent, pageloadTraceHeader] = envelopes.find(
151+
eventAndHeader => eventAndHeader[0].type === 'transaction',
152+
)!;
153+
const [errorEvent, errorTraceHeader] = envelopes.find(eventAndHeader => !eventAndHeader[0].type)!;
88154

89155
expect(pageloadEvent?.contexts?.trace).toMatchObject({
90156
op: 'pageload',
@@ -93,11 +159,31 @@ sentryTest('error during <meta> tag pageload has pageload traceId', async ({ get
93159
span_id: expect.stringMatching(/^[0-9a-f]{16}$/),
94160
});
95161

162+
expect(pageloadTraceHeader).toEqual({
163+
environment: 'prod',
164+
release: '1.0.0',
165+
sample_rate: '0.2',
166+
sampled: 'true',
167+
transaction: 'my-transaction',
168+
public_key: 'public',
169+
trace_id: META_TAG_TRACE_ID,
170+
});
171+
96172
expect(errorEvent?.contexts?.trace).toMatchObject({
97173
trace_id: META_TAG_TRACE_ID,
98174
parent_span_id: META_TAG_PARENT_SPAN_ID,
99175
span_id: expect.stringMatching(/^[0-9a-f]{16}$/),
100176
});
177+
178+
expect(errorTraceHeader).toEqual({
179+
environment: 'prod',
180+
release: '1.0.0',
181+
sample_rate: '0.2',
182+
sampled: 'true',
183+
transaction: 'my-transaction',
184+
public_key: 'public',
185+
trace_id: META_TAG_TRACE_ID,
186+
});
101187
});
102188

103189
sentryTest(
@@ -109,14 +195,28 @@ sentryTest(
109195

110196
const url = await getLocalTestPath({ testDir: __dirname });
111197

112-
const pageloadEvent = await getFirstSentryEnvelopeRequest<Event>(page, url);
198+
const [pageloadEvent, pageloadTraceHeader] = await getFirstSentryEnvelopeRequest<EventAndTraceHeader>(
199+
page,
200+
url,
201+
eventAndTraceHeaderRequestParser,
202+
);
113203
expect(pageloadEvent?.contexts?.trace).toMatchObject({
114204
op: 'pageload',
115205
trace_id: META_TAG_TRACE_ID,
116206
parent_span_id: META_TAG_PARENT_SPAN_ID,
117207
span_id: expect.stringMatching(/^[0-9a-f]{16}$/),
118208
});
119209

210+
expect(pageloadTraceHeader).toEqual({
211+
environment: 'prod',
212+
release: '1.0.0',
213+
sample_rate: '0.2',
214+
sampled: 'true',
215+
transaction: 'my-transaction',
216+
public_key: 'public',
217+
trace_id: META_TAG_TRACE_ID,
218+
});
219+
120220
const requestPromise = page.waitForRequest('http://example.com/*');
121221
await page.locator('#fetchBtn').click();
122222
const request = await requestPromise;
@@ -137,11 +237,15 @@ sentryTest(
137237

138238
const url = await getLocalTestPath({ testDir: __dirname });
139239

140-
const pageloadEventPromise = getFirstSentryEnvelopeRequest<Event>(page);
240+
const pageloadEventPromise = getFirstSentryEnvelopeRequest<EventAndTraceHeader>(
241+
page,
242+
undefined,
243+
eventAndTraceHeaderRequestParser,
244+
);
141245
const requestPromise = page.waitForRequest('http://example.com/*');
142246
await page.goto(url);
143247
await page.locator('#fetchBtn').click();
144-
const [pageloadEvent, request] = await Promise.all([pageloadEventPromise, requestPromise]);
248+
const [[pageloadEvent, pageloadTraceHeader], request] = await Promise.all([pageloadEventPromise, requestPromise]);
145249

146250
expect(pageloadEvent?.contexts?.trace).toMatchObject({
147251
op: 'pageload',
@@ -150,6 +254,16 @@ sentryTest(
150254
span_id: expect.stringMatching(/^[0-9a-f]{16}$/),
151255
});
152256

257+
expect(pageloadTraceHeader).toEqual({
258+
environment: 'prod',
259+
release: '1.0.0',
260+
sample_rate: '0.2',
261+
sampled: 'true',
262+
transaction: 'my-transaction',
263+
public_key: 'public',
264+
trace_id: META_TAG_TRACE_ID,
265+
});
266+
153267
const headers = request.headers();
154268

155269
// sampling decision is propagated from meta tag's sentry-trace sampled flag
@@ -167,13 +281,26 @@ sentryTest(
167281

168282
const url = await getLocalTestPath({ testDir: __dirname });
169283

170-
const pageloadEvent = await getFirstSentryEnvelopeRequest<Event>(page, url);
284+
const [pageloadEvent, pageloadTraceHeader] = await getFirstSentryEnvelopeRequest<EventAndTraceHeader>(
285+
page,
286+
url,
287+
eventAndTraceHeaderRequestParser,
288+
);
171289
expect(pageloadEvent?.contexts?.trace).toMatchObject({
172290
op: 'pageload',
173291
trace_id: META_TAG_TRACE_ID,
174292
parent_span_id: META_TAG_PARENT_SPAN_ID,
175293
span_id: expect.stringMatching(/^[0-9a-f]{16}$/),
176294
});
295+
expect(pageloadTraceHeader).toEqual({
296+
environment: 'prod',
297+
release: '1.0.0',
298+
sample_rate: '0.2',
299+
sampled: 'true',
300+
transaction: 'my-transaction',
301+
public_key: 'public',
302+
trace_id: META_TAG_TRACE_ID,
303+
});
177304

178305
const requestPromise = page.waitForRequest('http://example.com/*');
179306
await page.locator('#xhrBtn').click();
@@ -195,11 +322,15 @@ sentryTest(
195322

196323
const url = await getLocalTestPath({ testDir: __dirname });
197324

198-
const pageloadEventPromise = getFirstSentryEnvelopeRequest<Event>(page);
325+
const pageloadEventPromise = getFirstSentryEnvelopeRequest<EventAndTraceHeader>(
326+
page,
327+
undefined,
328+
eventAndTraceHeaderRequestParser,
329+
);
199330
const requestPromise = page.waitForRequest('http://example.com/*');
200331
await page.goto(url);
201332
await page.locator('#xhrBtn').click();
202-
const [pageloadEvent, request] = await Promise.all([pageloadEventPromise, requestPromise]);
333+
const [[pageloadEvent, pageloadTraceHeader], request] = await Promise.all([pageloadEventPromise, requestPromise]);
203334

204335
expect(pageloadEvent?.contexts?.trace).toMatchObject({
205336
op: 'pageload',
@@ -208,6 +339,16 @@ sentryTest(
208339
span_id: expect.stringMatching(/^[0-9a-f]{16}$/),
209340
});
210341

342+
expect(pageloadTraceHeader).toEqual({
343+
environment: 'prod',
344+
release: '1.0.0',
345+
sample_rate: '0.2',
346+
sampled: 'true',
347+
transaction: 'my-transaction',
348+
public_key: 'public',
349+
trace_id: META_TAG_TRACE_ID,
350+
});
351+
211352
const headers = request.headers();
212353

213354
// sampling decision is propagated from meta tag's sentry-trace sampled flag

dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/pageload/test.ts

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -274,8 +274,13 @@ sentryTest(
274274

275275
const url = await getLocalTestPath({ testDir: __dirname });
276276

277-
const pageloadEvent = await getFirstSentryEnvelopeRequest<Event>(page, url);
277+
const [pageloadEvent, pageloadTraceHeader] = await getFirstSentryEnvelopeRequest<EventAndTraceHeader>(
278+
page,
279+
url,
280+
eventAndTraceHeaderRequestParser,
281+
);
278282
const pageloadTraceContext = pageloadEvent.contexts?.trace;
283+
const pageloadTraceId = pageloadTraceContext?.trace_id;
279284

280285
expect(pageloadTraceContext).toMatchObject({
281286
op: 'pageload',
@@ -284,13 +289,20 @@ sentryTest(
284289
});
285290
expect(pageloadTraceContext).not.toHaveProperty('parent_span_id');
286291

292+
expect(pageloadTraceHeader).toEqual({
293+
environment: 'production',
294+
public_key: 'public',
295+
sample_rate: '1',
296+
sampled: 'true',
297+
trace_id: pageloadTraceId,
298+
});
299+
287300
const requestPromise = page.waitForRequest('http://example.com/*');
288301
await page.locator('#xhrBtn').click();
289302
const request = await requestPromise;
290303
const headers = request.headers();
291304

292305
// sampling decision and DSC are continued from the pageload span even after it ended
293-
const pageloadTraceId = pageloadTraceContext?.trace_id;
294306
expect(headers['sentry-trace']).toMatch(new RegExp(`^${pageloadTraceId}-[0-9a-f]{16}-1$`));
295307
expect(headers['baggage']).toEqual(
296308
`sentry-environment=production,sentry-public_key=public,sentry-trace_id=${pageloadTraceId},sentry-sample_rate=1,sentry-sampled=true`,
@@ -307,24 +319,37 @@ sentryTest(
307319

308320
const url = await getLocalTestPath({ testDir: __dirname });
309321

310-
const pageloadEventPromise = getFirstSentryEnvelopeRequest<Event>(page);
322+
const pageloadEventPromise = getFirstSentryEnvelopeRequest<EventAndTraceHeader>(
323+
page,
324+
undefined,
325+
eventAndTraceHeaderRequestParser,
326+
);
311327
const requestPromise = page.waitForRequest('http://example.com/*');
312328
await page.goto(url);
313329
await page.locator('#xhrBtn').click();
314-
const [pageloadEvent, request] = await Promise.all([pageloadEventPromise, requestPromise]);
330+
const [[pageloadEvent, pageloadTraceHeader], request] = await Promise.all([pageloadEventPromise, requestPromise]);
315331

316332
const pageloadTraceContext = pageloadEvent.contexts?.trace;
333+
const pageloadTraceId = pageloadTraceContext?.trace_id;
334+
317335
expect(pageloadTraceContext).toMatchObject({
318336
op: 'pageload',
319337
trace_id: expect.stringMatching(/^[0-9a-f]{32}$/),
320338
span_id: expect.stringMatching(/^[0-9a-f]{16}$/),
321339
});
322340
expect(pageloadTraceContext).not.toHaveProperty('parent_span_id');
323341

342+
expect(pageloadTraceHeader).toEqual({
343+
environment: 'production',
344+
public_key: 'public',
345+
sample_rate: '1',
346+
sampled: 'true',
347+
trace_id: pageloadTraceId,
348+
});
349+
324350
const headers = request.headers();
325351

326352
// sampling decision is propagated from active span sampling decision
327-
const pageloadTraceId = pageloadTraceContext?.trace_id;
328353
expect(headers['sentry-trace']).toMatch(new RegExp(`^${pageloadTraceId}-[0-9a-f]{16}-1$`));
329354
expect(headers['baggage']).toEqual(
330355
`sentry-environment=production,sentry-public_key=public,sentry-trace_id=${pageloadTraceId},sentry-sample_rate=1,sentry-sampled=true`,

0 commit comments

Comments
 (0)