Skip to content

Commit 9a81cd0

Browse files
committed
fix test flakiness
1 parent 02f7e7e commit 9a81cd0

File tree

5 files changed

+34
-34
lines changed
  • dev-packages/browser-integration-tests

5 files changed

+34
-34
lines changed

dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/consistent-sampling/default/test.ts

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { sentryTest } from '../../../../../../utils/fixtures';
99
import {
1010
eventAndTraceHeaderRequestParser,
1111
shouldSkipTracingTest,
12+
waitForTracingHeadersOnUrl,
1213
waitForTransactionRequest,
1314
} from '../../../../../../utils/helpers';
1415

@@ -109,19 +110,13 @@ sentryTest.describe('When `consistentTraceSampling` is `true`', () => {
109110
});
110111

111112
await sentryTest.step('Make fetch request', async () => {
112-
let sentryTrace = undefined;
113-
let baggage = undefined;
114-
115-
await page.route('https://someUrl.com', (route, req) => {
116-
baggage = req.headers()['baggage'];
117-
sentryTrace = req.headers()['sentry-trace'];
118-
return route.fulfill({ status: 200, body: 'ok' });
119-
});
120-
121113
const fetchTracePromise = waitForTransactionRequest(page, evt => evt.contexts?.trace?.op === 'custom');
114+
const tracingHeadersPromise = waitForTracingHeadersOnUrl(page, 'https://someUrl.com');
122115

123116
await page.locator('#btn2').click();
124117

118+
const { baggage, sentryTrace } = await tracingHeadersPromise;
119+
125120
const [fetchTraceEvent, fetchTraceTraceHeader] = eventAndTraceHeaderRequestParser(await fetchTracePromise);
126121

127122
const fetchTraceSampleRand = Number(fetchTraceTraceHeader?.sample_rand);

dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/consistent-sampling/meta-negative/test.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
hidePage,
99
shouldSkipTracingTest,
1010
waitForClientReportRequest,
11+
waitForTracingHeadersOnUrl,
1112
} from '../../../../../../utils/helpers';
1213

1314
const metaTagSampleRand = 0.9;
@@ -49,16 +50,10 @@ sentryTest.describe('When `consistentTraceSampling` is `true` and page contains
4950
});
5051

5152
await sentryTest.step('Make fetch request', async () => {
52-
let sentryTrace = undefined;
53-
let baggage = undefined;
54-
55-
await page.route('https://someUrl.com', (route, req) => {
56-
baggage = req.headers()['baggage'];
57-
sentryTrace = req.headers()['sentry-trace'];
58-
return route.fulfill({ status: 200, body: 'ok' });
59-
});
53+
const tracingHeadersPromise = waitForTracingHeadersOnUrl(page, 'https://someUrl.com');
6054

6155
await page.locator('#btn2').click();
56+
const { baggage, sentryTrace } = await tracingHeadersPromise;
6257

6358
expect(sentryTrace).toBeDefined();
6459
expect(baggage).toBeDefined();

dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/consistent-sampling/meta-precedence/test.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
hidePage,
99
shouldSkipTracingTest,
1010
waitForClientReportRequest,
11+
waitForTracingHeadersOnUrl,
1112
waitForTransactionRequest,
1213
} from '../../../../../../utils/helpers';
1314

@@ -33,17 +34,12 @@ sentryTest.describe('When `consistentTraceSampling` is `true` and page contains
3334
});
3435

3536
await sentryTest.step('Make fetch request', async () => {
36-
let sentryTrace = undefined;
37-
let baggage = undefined;
38-
39-
await page.route('https://someUrl.com', (route, req) => {
40-
baggage = req.headers()['baggage'];
41-
sentryTrace = req.headers()['sentry-trace'];
42-
return route.fulfill({ status: 200, body: 'ok' });
43-
});
37+
const tracingHeadersPromise = waitForTracingHeadersOnUrl(page, 'https://someUrl.com');
4438

4539
await page.locator('#btn2').click();
4640

41+
const { baggage, sentryTrace } = await tracingHeadersPromise;
42+
4743
expect(sentryTrace).toBeDefined();
4844
expect(baggage).toBeDefined();
4945

dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/linked-traces/consistent-sampling/meta/test.ts

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { sentryTest } from '../../../../../../utils/fixtures';
99
import {
1010
eventAndTraceHeaderRequestParser,
1111
shouldSkipTracingTest,
12+
waitForTracingHeadersOnUrl,
1213
waitForTransactionRequest,
1314
} from '../../../../../../utils/helpers';
1415

@@ -129,19 +130,13 @@ sentryTest.describe('When `consistentTraceSampling` is `true` and page contains
129130
});
130131

131132
await sentryTest.step('Make fetch request', async () => {
132-
let sentryTrace = undefined;
133-
let baggage = undefined;
134-
135-
await page.route('https://someUrl.com', (route, req) => {
136-
baggage = req.headers()['baggage'];
137-
sentryTrace = req.headers()['sentry-trace'];
138-
return route.fulfill({ status: 200, body: 'ok' });
139-
});
140-
141133
const fetchTracePromise = waitForTransactionRequest(page, evt => evt.contexts?.trace?.op === 'custom');
134+
const tracingHeadersPromise = waitForTracingHeadersOnUrl(page, 'https://someUrl.com');
142135

143136
await page.locator('#btn2').click();
144137

138+
const { baggage, sentryTrace } = await tracingHeadersPromise;
139+
145140
const [fetchTraceEvent, fetchTraceTraceHeader] = eventAndTraceHeaderRequestParser(await fetchTracePromise);
146141

147142
const fetchTraceSampleRand = Number(fetchTraceTraceHeader?.sample_rand);

dev-packages/browser-integration-tests/utils/helpers.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -460,3 +460,22 @@ export async function hidePage(page: Page): Promise<void> {
460460
document.dispatchEvent(new Event('visibilitychange'));
461461
});
462462
}
463+
464+
export async function waitForTracingHeadersOnUrl(
465+
page: Page,
466+
url: string,
467+
): Promise<{ baggage: string; sentryTrace: string }> {
468+
return new Promise<{ baggage: string; sentryTrace: string }>(resolve => {
469+
page
470+
.route(url, (route, req) => {
471+
const baggage = req.headers()['baggage'];
472+
const sentryTrace = req.headers()['sentry-trace'];
473+
resolve({ baggage, sentryTrace });
474+
return route.fulfill({ status: 200, body: 'ok' });
475+
})
476+
.catch(error => {
477+
// Handle any routing setup errors
478+
throw error;
479+
});
480+
});
481+
}

0 commit comments

Comments
 (0)