Skip to content

Commit 4452e24

Browse files
committed
add additional test
1 parent 7276665 commit 4452e24

File tree

1 file changed

+41
-1
lines changed
  • dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-lcp

1 file changed

+41
-1
lines changed

dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-lcp/test.ts

+41-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,46 @@ sentryTest('should capture a LCP vital with element details.', async ({ browserN
2929
// the button as LCP.
3030
expect(eventData.contexts?.trace?.data?.['lcp.element'].startsWith('body >')).toBe(true);
3131
expect(eventData.contexts?.trace?.data?.['lcp.size']).toBeGreaterThan(0);
32-
expect(eventData.contexts?.trace?.data?.['lcp.renderTime']).toBeGreaterThan(0);
3332
expect(eventData.contexts?.trace?.data?.['lcp.loadTime']).toBeGreaterThan(0);
33+
34+
// renderTime is not set because we do not return the `Timing-Allow-Origin` header
35+
// and the image is loaded from a 3rd party origin
36+
expect(eventData.contexts?.trace?.data?.['lcp.renderTime']).toBeUndefined();
3437
});
38+
39+
sentryTest(
40+
'captures LCP renderTime when returning Timing-Allow-Origin header.',
41+
async ({ browserName, getLocalTestPath, page }) => {
42+
if (shouldSkipTracingTest() || browserName !== 'chromium') {
43+
sentryTest.skip();
44+
}
45+
46+
page.route('**', route => route.continue());
47+
page.route('**/my/image.png', async (route: Route) => {
48+
return route.fulfill({
49+
path: `${__dirname}/assets/sentry-logo-600x179.png`,
50+
headers: { 'Timing-Allow-Origin': '*' },
51+
});
52+
});
53+
54+
const url = await getLocalTestPath({ testDir: __dirname });
55+
const [eventData] = await Promise.all([
56+
getFirstSentryEnvelopeRequest<Event>(page),
57+
page.goto(url),
58+
page.locator('button').click(),
59+
]);
60+
61+
expect(eventData.measurements).toBeDefined();
62+
expect(eventData.measurements?.lcp?.value).toBeDefined();
63+
64+
// XXX: This should be body > img, but it can be flakey as sometimes it will report
65+
// the button as LCP.
66+
expect(eventData.contexts?.trace?.data?.['lcp.element'].startsWith('body >')).toBe(true);
67+
expect(eventData.contexts?.trace?.data?.['lcp.size']).toBeGreaterThan(0);
68+
expect(eventData.contexts?.trace?.data?.['lcp.loadTime']).toBeGreaterThan(0);
69+
70+
// renderTime is not set because we do not return the `Timing-Allow-Origin` header
71+
// and the image is loaded from a 3rd party origin
72+
expect(eventData.contexts?.trace?.data?.['lcp.renderTime']).toBeGreaterThan(0);
73+
},
74+
);

0 commit comments

Comments
 (0)