Skip to content

Commit cdbcdc0

Browse files
committed
test(browser-integration-test): Add tests to check trace lifetime for user feedback events
1 parent f1c4611 commit cdbcdc0

File tree

4 files changed

+121
-6
lines changed

4 files changed

+121
-6
lines changed

dev-packages/browser-integration-tests/suites/tracing/trace-lifetime/init.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ window.Sentry = Sentry;
44

55
Sentry.init({
66
dsn: 'https://[email protected]/1337',
7-
integrations: [Sentry.browserTracingIntegration()],
7+
integrations: [Sentry.browserTracingIntegration(), Sentry.feedbackIntegration()],
88
tracePropagationTargets: ['http://example.com'],
99
tracesSampleRate: 1,
1010
});

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

Lines changed: 47 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ sentryTest('error during navigation has new navigation traceId', async ({ getLoc
7676

7777
const url = await getLocalTestPath({ testDir: __dirname });
7878

79-
// ensure navigation transaction is finished
79+
// ensure pageload transaction is finished
8080
await getFirstSentryEnvelopeRequest<Event>(page, url);
8181

8282
const envelopeRequestsPromise = getMultipleSentryEnvelopeRequests<Event>(page, 2);
@@ -112,7 +112,7 @@ sentryTest(
112112

113113
const url = await getLocalTestPath({ testDir: __dirname });
114114

115-
// ensure navigation transaction is finished
115+
// ensure pageload transaction is finished
116116
await getFirstSentryEnvelopeRequest<Event>(page, url);
117117

118118
const navigationEvent = await getFirstSentryEnvelopeRequest<Event>(page, `${url}#foo`);
@@ -148,7 +148,7 @@ sentryTest(
148148

149149
const url = await getLocalTestPath({ testDir: __dirname });
150150

151-
// ensure navigation transaction is finished
151+
// ensure pageload transaction is finished
152152
await getFirstSentryEnvelopeRequest<Event>(page, url);
153153

154154
const navigationEventPromise = getFirstSentryEnvelopeRequest<Event>(page);
@@ -185,7 +185,7 @@ sentryTest(
185185

186186
const url = await getLocalTestPath({ testDir: __dirname });
187187

188-
// ensure navigation transaction is finished
188+
// ensure pageload transaction is finished
189189
await getFirstSentryEnvelopeRequest<Event>(page, url);
190190

191191
const navigationEvent = await getFirstSentryEnvelopeRequest<Event>(page, `${url}#foo`);
@@ -221,7 +221,7 @@ sentryTest(
221221

222222
const url = await getLocalTestPath({ testDir: __dirname });
223223

224-
// ensure navigation transaction is finished
224+
// ensure pageload transaction is finished
225225
await getFirstSentryEnvelopeRequest<Event>(page, url);
226226

227227
const navigationEventPromise = getFirstSentryEnvelopeRequest<Event>(page);
@@ -247,3 +247,45 @@ sentryTest(
247247
);
248248
},
249249
);
250+
251+
sentryTest(
252+
'user feedback event after navigation has navigation traceId in headers',
253+
async ({ getLocalTestPath, page }) => {
254+
if (shouldSkipTracingTest()) {
255+
sentryTest.skip();
256+
}
257+
258+
const url = await getLocalTestPath({ testDir: __dirname });
259+
260+
// ensure pageload transaction is finished
261+
await getFirstSentryEnvelopeRequest<Event>(page, url);
262+
263+
const navigationEvent = await getFirstSentryEnvelopeRequest<Event>(page, `${url}#foo`);
264+
265+
const navigationTraceContext = navigationEvent.contexts?.trace;
266+
expect(navigationTraceContext).toMatchObject({
267+
op: 'navigation',
268+
trace_id: expect.stringMatching(/^[0-9a-f]{32}$/),
269+
span_id: expect.stringMatching(/^[0-9a-f]{16}$/),
270+
});
271+
expect(navigationTraceContext).not.toHaveProperty('parent_span_id');
272+
273+
const feedbackEventPromise = getFirstSentryEnvelopeRequest<Event>(page);
274+
275+
await page.getByText('Report a Bug').click();
276+
expect(await page.locator(':visible:text-is("Report a Bug")').count()).toEqual(1);
277+
await page.locator('[name="name"]').fill('Jane Doe');
278+
await page.locator('[name="email"]').fill('[email protected]');
279+
await page.locator('[name="message"]').fill('my example feedback');
280+
await page.locator('[data-sentry-feedback] .btn--primary').click();
281+
282+
const feedbackEvent = await feedbackEventPromise;
283+
const feedbackTraceContext = feedbackEvent.contexts?.trace;
284+
285+
expect(feedbackTraceContext).toMatchObject({
286+
op: 'navigation',
287+
trace_id: navigationTraceContext?.trace_id,
288+
span_id: expect.stringMatching(/^[0-9a-f]{16}$/),
289+
});
290+
},
291+
);

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

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,3 +215,40 @@ sentryTest(
215215
expect(headers['baggage']).toBe(META_TAG_BAGGAGE);
216216
},
217217
);
218+
219+
sentryTest('user feedback event after pageload has pageload traceId in headers', async ({ getLocalTestPath, page }) => {
220+
if (shouldSkipTracingTest()) {
221+
sentryTest.skip();
222+
}
223+
224+
const url = await getLocalTestPath({ testDir: __dirname });
225+
226+
const pageloadEvent = await getFirstSentryEnvelopeRequest<Event>(page, url);
227+
const pageloadTraceContext = pageloadEvent.contexts?.trace;
228+
229+
expect(pageloadTraceContext).toMatchObject({
230+
op: 'pageload',
231+
trace_id: META_TAG_TRACE_ID,
232+
parent_span_id: META_TAG_PARENT_SPAN_ID,
233+
span_id: expect.stringMatching(/^[0-9a-f]{16}$/),
234+
});
235+
236+
const feedbackEventPromise = getFirstSentryEnvelopeRequest<Event>(page);
237+
238+
await page.getByText('Report a Bug').click();
239+
expect(await page.locator(':visible:text-is("Report a Bug")').count()).toEqual(1);
240+
await page.locator('[name="name"]').fill('Jane Doe');
241+
await page.locator('[name="email"]').fill('[email protected]');
242+
await page.locator('[name="message"]').fill('my example feedback');
243+
await page.locator('[data-sentry-feedback] .btn--primary').click();
244+
245+
const feedbackEvent = await feedbackEventPromise;
246+
const feedbackTraceContext = feedbackEvent.contexts?.trace;
247+
248+
expect(feedbackTraceContext).toMatchObject({
249+
op: 'pageload',
250+
trace_id: META_TAG_TRACE_ID,
251+
parent_span_id: META_TAG_PARENT_SPAN_ID,
252+
span_id: expect.stringMatching(/^[0-9a-f]{16}$/),
253+
});
254+
});

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

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,3 +233,39 @@ sentryTest(
233233
);
234234
},
235235
);
236+
237+
sentryTest('user feedback event after pageload has pageload traceId in headers', async ({ getLocalTestPath, page }) => {
238+
if (shouldSkipTracingTest()) {
239+
sentryTest.skip();
240+
}
241+
242+
const url = await getLocalTestPath({ testDir: __dirname });
243+
244+
const pageloadEvent = await getFirstSentryEnvelopeRequest<Event>(page, url);
245+
const pageloadTraceContext = pageloadEvent.contexts?.trace;
246+
247+
expect(pageloadTraceContext).toMatchObject({
248+
op: 'pageload',
249+
trace_id: expect.stringMatching(/^[0-9a-f]{32}$/),
250+
span_id: expect.stringMatching(/^[0-9a-f]{16}$/),
251+
});
252+
expect(pageloadTraceContext).not.toHaveProperty('parent_span_id');
253+
254+
const feedbackEventPromise = getFirstSentryEnvelopeRequest<Event>(page);
255+
256+
await page.getByText('Report a Bug').click();
257+
expect(await page.locator(':visible:text-is("Report a Bug")').count()).toEqual(1);
258+
await page.locator('[name="name"]').fill('Jane Doe');
259+
await page.locator('[name="email"]').fill('[email protected]');
260+
await page.locator('[name="message"]').fill('my example feedback');
261+
await page.locator('[data-sentry-feedback] .btn--primary').click();
262+
263+
const feedbackEvent = await feedbackEventPromise;
264+
const feedbackTraceContext = feedbackEvent.contexts?.trace;
265+
266+
expect(feedbackTraceContext).toMatchObject({
267+
op: 'pageload',
268+
trace_id: pageloadTraceContext?.trace_id,
269+
span_id: expect.stringMatching(/^[0-9a-f]{16}$/),
270+
});
271+
});

0 commit comments

Comments
 (0)