Skip to content

Commit 0fc87b3

Browse files
committed
adjust test
1 parent 91316ea commit 0fc87b3

File tree

1 file changed

+103
-100
lines changed
  • dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/startNewTrace

1 file changed

+103
-100
lines changed

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

Lines changed: 103 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -7,104 +7,107 @@ import {
77
shouldSkipTracingTest,
88
} from '../../../../utils/helpers';
99

10-
sentryTest('should create a new trace if `startNewTrace` is called', async ({ getLocalTestUrl, page }) => {
11-
if (shouldSkipTracingTest()) {
12-
sentryTest.skip();
13-
}
14-
15-
const url = await getLocalTestUrl({ testDir: __dirname });
16-
17-
await page.route('http://example.com/**', route => {
18-
return route.fulfill({
19-
status: 200,
20-
contentType: 'application/json',
21-
body: JSON.stringify({}),
10+
sentryTest(
11+
'creates a new trace if `startNewTrace` is called and leaves old trace valid outside the callback',
12+
async ({ getLocalTestUrl, page }) => {
13+
if (shouldSkipTracingTest()) {
14+
sentryTest.skip();
15+
}
16+
17+
const url = await getLocalTestUrl({ testDir: __dirname });
18+
19+
await page.route('http://example.com/**', route => {
20+
return route.fulfill({
21+
status: 200,
22+
contentType: 'application/json',
23+
body: JSON.stringify({}),
24+
});
2225
});
23-
});
24-
25-
const [pageloadEvent, pageloadTraceHeaders] = await getFirstSentryEnvelopeRequest<EventAndTraceHeader>(
26-
page,
27-
url,
28-
eventAndTraceHeaderRequestParser,
29-
);
30-
31-
const pageloadTraceContext = pageloadEvent.contexts?.trace;
32-
33-
expect(pageloadEvent.type).toEqual('transaction');
34-
35-
expect(pageloadTraceContext).toMatchObject({
36-
op: 'pageload',
37-
trace_id: expect.stringMatching(/^[0-9a-f]{32}$/),
38-
span_id: expect.stringMatching(/^[0-9a-f]{16}$/),
39-
});
40-
expect(pageloadTraceContext).not.toHaveProperty('parent_span_id');
41-
42-
expect(pageloadTraceHeaders).toEqual({
43-
environment: 'production',
44-
public_key: 'public',
45-
sample_rate: '1',
46-
sampled: 'true',
47-
trace_id: pageloadTraceContext?.trace_id,
48-
});
49-
50-
const newTraceTransactionPromise = getFirstSentryEnvelopeRequest<EventAndTraceHeader>(
51-
page,
52-
undefined,
53-
eventAndTraceHeaderRequestParser,
54-
);
55-
56-
await page.locator('#newTrace').click();
57-
58-
const [newTraceTransactionEvent, newTraceTransactionTraceHeaders] = await newTraceTransactionPromise;
59-
60-
expect(newTraceTransactionEvent.type).toEqual('transaction');
61-
expect(newTraceTransactionEvent.transaction).toEqual('new-trace');
62-
63-
const newTraceTransactionTraceContext = newTraceTransactionEvent.contexts?.trace;
64-
expect(newTraceTransactionTraceContext).toMatchObject({
65-
op: 'ui.interaction.click',
66-
trace_id: expect.stringMatching(/^[0-9a-f]{32}$/),
67-
span_id: expect.stringMatching(/^[0-9a-f]{16}$/),
68-
});
69-
70-
expect(newTraceTransactionTraceHeaders).toEqual({
71-
environment: 'production',
72-
public_key: 'public',
73-
sample_rate: '1',
74-
sampled: 'true',
75-
trace_id: newTraceTransactionTraceContext?.trace_id,
76-
transaction: 'new-trace',
77-
});
78-
79-
const oldTraceTransactionPromise = getFirstSentryEnvelopeRequest<EventAndTraceHeader>(
80-
page,
81-
undefined,
82-
eventAndTraceHeaderRequestParser,
83-
);
84-
await page.locator('#oldTrace').click();
85-
86-
const [oldTraceTransactionEvent, oldTraceTransactionTraceHeaders] = await oldTraceTransactionPromise;
87-
88-
expect(oldTraceTransactionEvent.type).toEqual('transaction');
89-
expect(oldTraceTransactionEvent.transaction).toEqual('old-trace');
90-
91-
const oldTraceTransactionEventTraceContext = oldTraceTransactionEvent.contexts?.trace;
92-
expect(oldTraceTransactionEventTraceContext).toMatchObject({
93-
op: 'ui.interaction.click',
94-
trace_id: expect.stringMatching(/^[0-9a-f]{32}$/),
95-
span_id: expect.stringMatching(/^[0-9a-f]{16}$/),
96-
});
97-
98-
expect(oldTraceTransactionTraceHeaders).toEqual({
99-
environment: 'production',
100-
public_key: 'public',
101-
sample_rate: '1',
102-
sampled: 'true',
103-
trace_id: oldTraceTransactionTraceHeaders?.trace_id,
104-
// transaction: 'old-trace', <-- this is not in the DSC because the DSC is continued from the pageload transaction
105-
// which does not have a `transaction` field because its source is URL.
106-
});
107-
108-
expect(oldTraceTransactionEventTraceContext?.trace_id).toEqual(pageloadTraceContext?.trace_id);
109-
expect(newTraceTransactionTraceContext?.trace_id).not.toEqual(pageloadTraceContext?.trace_id);
110-
});
26+
27+
const [pageloadEvent, pageloadTraceHeaders] = await getFirstSentryEnvelopeRequest<EventAndTraceHeader>(
28+
page,
29+
url,
30+
eventAndTraceHeaderRequestParser,
31+
);
32+
33+
const pageloadTraceContext = pageloadEvent.contexts?.trace;
34+
35+
expect(pageloadEvent.type).toEqual('transaction');
36+
37+
expect(pageloadTraceContext).toMatchObject({
38+
op: 'pageload',
39+
trace_id: expect.stringMatching(/^[0-9a-f]{32}$/),
40+
span_id: expect.stringMatching(/^[0-9a-f]{16}$/),
41+
});
42+
expect(pageloadTraceContext).not.toHaveProperty('parent_span_id');
43+
44+
expect(pageloadTraceHeaders).toEqual({
45+
environment: 'production',
46+
public_key: 'public',
47+
sample_rate: '1',
48+
sampled: 'true',
49+
trace_id: pageloadTraceContext?.trace_id,
50+
});
51+
52+
const newTraceTransactionPromise = getFirstSentryEnvelopeRequest<EventAndTraceHeader>(
53+
page,
54+
undefined,
55+
eventAndTraceHeaderRequestParser,
56+
);
57+
58+
await page.locator('#newTrace').click();
59+
60+
const [newTraceTransactionEvent, newTraceTransactionTraceHeaders] = await newTraceTransactionPromise;
61+
62+
expect(newTraceTransactionEvent.type).toEqual('transaction');
63+
expect(newTraceTransactionEvent.transaction).toEqual('new-trace');
64+
65+
const newTraceTransactionTraceContext = newTraceTransactionEvent.contexts?.trace;
66+
expect(newTraceTransactionTraceContext).toMatchObject({
67+
op: 'ui.interaction.click',
68+
trace_id: expect.stringMatching(/^[0-9a-f]{32}$/),
69+
span_id: expect.stringMatching(/^[0-9a-f]{16}$/),
70+
});
71+
72+
expect(newTraceTransactionTraceHeaders).toEqual({
73+
environment: 'production',
74+
public_key: 'public',
75+
sample_rate: '1',
76+
sampled: 'true',
77+
trace_id: newTraceTransactionTraceContext?.trace_id,
78+
transaction: 'new-trace',
79+
});
80+
81+
const oldTraceTransactionPromise = getFirstSentryEnvelopeRequest<EventAndTraceHeader>(
82+
page,
83+
undefined,
84+
eventAndTraceHeaderRequestParser,
85+
);
86+
await page.locator('#oldTrace').click();
87+
88+
const [oldTraceTransactionEvent, oldTraceTransactionTraceHeaders] = await oldTraceTransactionPromise;
89+
90+
expect(oldTraceTransactionEvent.type).toEqual('transaction');
91+
expect(oldTraceTransactionEvent.transaction).toEqual('old-trace');
92+
93+
const oldTraceTransactionEventTraceContext = oldTraceTransactionEvent.contexts?.trace;
94+
expect(oldTraceTransactionEventTraceContext).toMatchObject({
95+
op: 'ui.interaction.click',
96+
trace_id: expect.stringMatching(/^[0-9a-f]{32}$/),
97+
span_id: expect.stringMatching(/^[0-9a-f]{16}$/),
98+
});
99+
100+
expect(oldTraceTransactionTraceHeaders).toEqual({
101+
environment: 'production',
102+
public_key: 'public',
103+
sample_rate: '1',
104+
sampled: 'true',
105+
trace_id: oldTraceTransactionTraceHeaders?.trace_id,
106+
// transaction: 'old-trace', <-- this is not in the DSC because the DSC is continued from the pageload transaction
107+
// which does not have a `transaction` field because its source is URL.
108+
});
109+
110+
expect(oldTraceTransactionEventTraceContext?.trace_id).toEqual(pageloadTraceContext?.trace_id);
111+
expect(newTraceTransactionTraceContext?.trace_id).not.toEqual(pageloadTraceContext?.trace_id);
112+
},
113+
);

0 commit comments

Comments
 (0)