Skip to content

Commit 0433939

Browse files
committed
send onlyIfParent
1 parent 7e66499 commit 0433939

File tree

2 files changed

+1
-83
lines changed
  • dev-packages/browser-integration-tests/suites/tracing/metrics/element-timing
  • packages/browser-utils/src/metrics

2 files changed

+1
-83
lines changed

dev-packages/browser-integration-tests/suites/tracing/metrics/element-timing/test.ts

Lines changed: 0 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -209,86 +209,3 @@ sentryTest('emits element timing spans on navigation', async ({ getLocalTestUrl,
209209
navigationStartTime,
210210
);
211211
});
212-
213-
// For element timing, we're fine with just always emitting a transaction,
214-
// regardless of a parent span being present or not (as in this case)
215-
sentryTest('emits element timing spans if no parent span is active', async ({ getLocalTestUrl, page, browserName }) => {
216-
if (shouldSkipTracingTest() || browserName === 'webkit') {
217-
sentryTest.skip();
218-
}
219-
220-
serveAssets(page);
221-
222-
const pageloadEventPromise = waitForTransactionRequest(page, evt => evt.contexts?.trace?.op === 'pageload');
223-
224-
const elementTimingTransactionPromise1 = waitForTransactionRequest(
225-
page,
226-
evt => evt.contexts?.trace?.op === 'ui.elementtiming' && evt.transaction === 'element[click-image]',
227-
);
228-
229-
const elementTimingTransactionPromise2 = waitForTransactionRequest(
230-
page,
231-
evt => evt.contexts?.trace?.op === 'ui.elementtiming' && evt.transaction === 'element[click-text]',
232-
);
233-
234-
const url = await getLocalTestUrl({ testDir: __dirname });
235-
236-
await page.goto(url);
237-
238-
await pageloadEventPromise;
239-
240-
await page.locator('#button2').click();
241-
242-
const imageElementTimingTransaction = envelopeRequestParser(await elementTimingTransactionPromise1);
243-
const textElementTimingTransaction = envelopeRequestParser(await elementTimingTransactionPromise2);
244-
245-
expect(imageElementTimingTransaction.spans?.length).toEqual(0);
246-
expect(textElementTimingTransaction.spans?.length).toEqual(0);
247-
248-
const imageETattributes = imageElementTimingTransaction.contexts?.trace?.data;
249-
const textETattributes = textElementTimingTransaction.contexts?.trace?.data;
250-
251-
expect(imageETattributes).toEqual({
252-
'element.identifier': 'click-image',
253-
'element.paint-type': 'image-paint',
254-
'element.load-time': expect.any(Number),
255-
'element.render-time': expect.any(Number),
256-
'element.size': '600x179',
257-
'element.type': 'img',
258-
'element.url': 'https://sentry-test-site.example/path/to/image-click.png',
259-
'sentry.span-start-time-source': 'load-time',
260-
'sentry.op': 'ui.elementtiming',
261-
'sentry.origin': 'auto.ui.browser.elementtiming',
262-
'sentry.source': 'component',
263-
route: '/index.html',
264-
});
265-
266-
expect(textETattributes).toEqual({
267-
'element.identifier': 'click-text',
268-
'element.load-time': 0,
269-
'element.render-time': expect.any(Number),
270-
'element.paint-type': 'text-paint',
271-
'element.type': 'p',
272-
'sentry.span-start-time-source': 'render-time',
273-
'sentry.op': 'ui.elementtiming',
274-
'sentry.origin': 'auto.ui.browser.elementtiming',
275-
'sentry.source': 'component',
276-
route: '/index.html',
277-
});
278-
});
279-
280-
function serveAssets(page: Page) {
281-
page.route(/image-(fast|lazy|navigation|click)\.png/, async (route: Route) => {
282-
await new Promise(resolve => setTimeout(resolve, 100));
283-
return route.fulfill({
284-
path: `${__dirname}/assets/sentry-logo-600x179.png`,
285-
});
286-
});
287-
288-
page.route('**/image-slow.png', async (route: Route) => {
289-
await new Promise(resolve => setTimeout(resolve, 1500));
290-
return route.fulfill({
291-
path: `${__dirname}/assets/sentry-logo-600x179.png`,
292-
});
293-
});
294-
}

packages/browser-utils/src/metrics/elementTiming.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ export const _onElementTiming = ({ entries }: { entries: PerformanceEntry[] }):
109109
name: `element[${elementEntry.identifier}]`,
110110
attributes,
111111
startTime: spanStartTime,
112+
onlyIfParent: true,
112113
},
113114
span => {
114115
span.end(spanStartTime + duration);

0 commit comments

Comments
 (0)