Skip to content

Commit 4fbbdeb

Browse files
committed
adjustments and fixes
1 parent a6b3041 commit 4fbbdeb

4 files changed

Lines changed: 18 additions & 31 deletions

File tree

  • dev-packages/browser-integration-tests/suites/tracing/continueTrace

dev-packages/browser-integration-tests/suites/tracing/continueTrace/full-tracing/test.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
eventAndTraceHeaderRequestParser,
66
getFirstSentryEnvelopeRequest,
77
shouldSkipTracingTest,
8+
waitForErrorRequest,
89
waitForTransactionRequest,
910
} from '../../../../utils/helpers';
1011

@@ -73,15 +74,11 @@ sentryTest(
7374
await getFirstSentryEnvelopeRequest<EventAndTraceHeader>(page, url, eventAndTraceHeaderRequestParser);
7475

7576
// The captured error carries the continued (unsampled) trace even though no transaction is sent.
76-
const errorPromise = getFirstSentryEnvelopeRequest<EventAndTraceHeader>(
77-
page,
78-
undefined,
79-
eventAndTraceHeaderRequestParser,
80-
);
77+
const errorPromise = waitForErrorRequest(page);
8178

8279
await page.locator('#unsampled').click();
8380

84-
const [errorEvent] = await errorPromise;
81+
const [errorEvent] = eventAndTraceHeaderRequestParser(await errorPromise);
8582
expect(errorEvent.contexts?.trace?.trace_id).toBe(UNSAMPLED_TRACE_ID);
8683

8784
// Outgoing request carries the continued trace with the negative sampling decision.

dev-packages/browser-integration-tests/suites/tracing/continueTrace/subject.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,11 @@ const TRACES = {
2222
function continueAndRun(variant) {
2323
const { sentryTrace, baggage } = TRACES[variant];
2424
Sentry.continueTrace({ sentryTrace, baggage }, () => {
25-
Sentry.startSpan({ op: 'ui.interaction.click', name: `continued-${variant}` }, async () => {
26-
await fetch('http://sentry-test-site.example');
25+
// Keep the span callback synchronous: the browser ACS is stack-based, so an `await` here would pop
26+
// the continued span/scope before `fetch` and `captureException` run. Firing `fetch` without
27+
// awaiting still attaches the propagation headers (they are read synchronously at call time).
28+
Sentry.startSpan({ op: 'ui.interaction.click', name: `continued-${variant}` }, () => {
29+
fetch('http://sentry-test-site.example');
2730
Sentry.captureException(new Error(`continued-${variant}-error`));
2831
});
2932
});

dev-packages/browser-integration-tests/suites/tracing/continueTrace/tracesSampleRate-zero/test.ts

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import { expect } from '@playwright/test';
22
import { sentryTest } from '../../../../utils/fixtures';
3-
import type { EventAndTraceHeader } from '../../../../utils/helpers';
43
import {
54
eventAndTraceHeaderRequestParser,
6-
getFirstSentryEnvelopeRequest,
75
shouldSkipTracingTest,
6+
waitForErrorRequest,
87
waitForTransactionRequest,
98
} from '../../../../utils/helpers';
109

@@ -63,20 +62,17 @@ sentryTest(
6362
await page.goto(url);
6463

6564
// The captured error carries the continued trace even though no transaction is sent.
66-
const errorPromise = getFirstSentryEnvelopeRequest<EventAndTraceHeader>(
67-
page,
68-
undefined,
69-
eventAndTraceHeaderRequestParser,
70-
);
65+
const errorPromise = waitForErrorRequest(page);
7166

7267
await page.locator('#deferred').click();
7368

74-
const [errorEvent] = await errorPromise;
69+
const [errorEvent] = eventAndTraceHeaderRequestParser(await errorPromise);
7570
expect(errorEvent.contexts?.trace?.trace_id).toBe(DEFERRED_TRACE_ID);
7671

72+
// The deferred decision resolves negatively against the local tracesSampleRate=0.
7773
const outgoingRequest = await outgoingRequestPromise;
7874
const headers = await outgoingRequest.allHeaders();
79-
expect(headers['sentry-trace']).toMatch(new RegExp(`^${DEFERRED_TRACE_ID}-[a-f0-9]{16}`));
75+
expect(headers['sentry-trace']).toMatch(new RegExp(`^${DEFERRED_TRACE_ID}-[a-f0-9]{16}-0$`));
8076
},
8177
);
8278

@@ -96,15 +92,11 @@ sentryTest(
9692

9793
await page.goto(url);
9894

99-
const errorPromise = getFirstSentryEnvelopeRequest<EventAndTraceHeader>(
100-
page,
101-
undefined,
102-
eventAndTraceHeaderRequestParser,
103-
);
95+
const errorPromise = waitForErrorRequest(page);
10496

10597
await page.locator('#unsampled').click();
10698

107-
const [errorEvent] = await errorPromise;
99+
const [errorEvent] = eventAndTraceHeaderRequestParser(await errorPromise);
108100
expect(errorEvent.contexts?.trace?.trace_id).toBe(UNSAMPLED_TRACE_ID);
109101

110102
const outgoingRequest = await outgoingRequestPromise;

dev-packages/browser-integration-tests/suites/tracing/continueTrace/tracing-without-performance/test.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import { expect } from '@playwright/test';
22
import { sentryTest } from '../../../../utils/fixtures';
3-
import type { EventAndTraceHeader } from '../../../../utils/helpers';
43
import {
54
eventAndTraceHeaderRequestParser,
6-
getFirstSentryEnvelopeRequest,
75
shouldSkipTracingTest,
6+
waitForErrorRequest,
87
} from '../../../../utils/helpers';
98

109
const SAMPLED_TRACE_ID = '12345678901234567890123456789012';
@@ -36,15 +35,11 @@ for (const variant of VARIANTS) {
3635

3736
await page.goto(url);
3837

39-
const errorPromise = getFirstSentryEnvelopeRequest<EventAndTraceHeader>(
40-
page,
41-
undefined,
42-
eventAndTraceHeaderRequestParser,
43-
);
38+
const errorPromise = waitForErrorRequest(page);
4439

4540
await page.locator(`#${variant.button}`).click();
4641

47-
const [errorEvent] = await errorPromise;
42+
const [errorEvent] = eventAndTraceHeaderRequestParser(await errorPromise);
4843
expect(errorEvent.contexts?.trace?.trace_id).toBe(variant.traceId);
4944

5045
const outgoingRequest = await outgoingRequestPromise;

0 commit comments

Comments
 (0)