@@ -26,25 +26,26 @@ sentryTest(
2626
2727 // Check image-fast span (this is served with a 100ms delay)
2828 const imageFastSpan = elementTimingSpans ?. find ( ( { description } ) => description === 'element[image-fast]' ) ;
29- const imageFastRenderTime = imageFastSpan ?. data [ 'element.render_time' ] ;
30- const imageFastLoadTime = imageFastSpan ?. data [ 'element.load_time' ] ;
29+ const imageFastRenderTime = imageFastSpan ?. data [ 'ui. element.render_time' ] ;
30+ const imageFastLoadTime = imageFastSpan ?. data [ 'ui. element.load_time' ] ;
3131 const duration = imageFastSpan ! . timestamp ! - imageFastSpan ! . start_timestamp ;
3232
3333 expect ( imageFastSpan ) . toBeDefined ( ) ;
3434 expect ( imageFastSpan ?. data ) . toEqual ( {
3535 'sentry.op' : 'ui.elementtiming' ,
3636 'sentry.origin' : 'auto.ui.browser.elementtiming' ,
3737 'sentry.source' : 'component' ,
38- 'sentry.span_start_time_source' : 'load-time' ,
39- 'element.id' : 'image-fast-id' ,
40- 'element.identifier' : 'image-fast' ,
41- 'element.type' : 'img' ,
42- 'element.size' : '600x179' ,
43- 'element.url' : 'https://sentry-test-site.example/path/to/image-fast.png' ,
44- 'element.render_time' : expect . any ( Number ) ,
45- 'element.load_time' : expect . any ( Number ) ,
46- 'element.paint_type' : 'image-paint' ,
47- 'sentry.transaction_name' : '/index.html' ,
38+ 'ui.element.id' : 'image-fast-id' ,
39+ 'ui.element.identifier' : 'image-fast' ,
40+ 'ui.element.type' : 'img' ,
41+ 'ui.element.width' : 600 ,
42+ 'ui.element.height' : 179 ,
43+ 'ui.element.url' : 'https://sentry-test-site.example/path/to/image-fast.png' ,
44+ 'ui.element.render_time' : expect . any ( Number ) ,
45+ 'ui.element.load_time' : expect . any ( Number ) ,
46+ 'ui.element.paint_type' : 'image-paint' ,
47+ 'sentry.transaction' : '/index.html' ,
48+ 'sentry.segment.name' : '/index.html' ,
4849 } ) ;
4950 expect ( imageFastRenderTime ) . toBeGreaterThan ( 90 ) ;
5051 expect ( imageFastRenderTime ) . toBeLessThan ( 400 ) ;
@@ -55,23 +56,25 @@ sentryTest(
5556 expect ( duration ) . toBeLessThan ( 20 ) ;
5657
5758 // Check text1 span
58- const text1Span = elementTimingSpans ?. find ( ( { data } ) => data ?. [ 'element.identifier' ] === 'text1' ) ;
59- const text1RenderTime = text1Span ?. data [ 'element.render_time' ] ;
60- const text1LoadTime = text1Span ?. data [ 'element.load_time' ] ;
59+ const text1Span = elementTimingSpans ?. find ( ( { data } ) => data ?. [ 'ui. element.identifier' ] === 'text1' ) ;
60+ const text1RenderTime = text1Span ?. data [ 'ui. element.render_time' ] ;
61+ const text1LoadTime = text1Span ?. data [ 'ui. element.load_time' ] ;
6162 const text1Duration = text1Span ! . timestamp ! - text1Span ! . start_timestamp ;
6263 expect ( text1Span ) . toBeDefined ( ) ;
6364 expect ( text1Span ?. data ) . toEqual ( {
6465 'sentry.op' : 'ui.elementtiming' ,
6566 'sentry.origin' : 'auto.ui.browser.elementtiming' ,
6667 'sentry.source' : 'component' ,
67- 'sentry.span_start_time_source' : 'render-time' ,
68- 'element.id' : 'text1-id' ,
69- 'element.identifier' : 'text1' ,
70- 'element.type' : 'p' ,
71- 'element.render_time' : expect . any ( Number ) ,
72- 'element.load_time' : expect . any ( Number ) ,
73- 'element.paint_type' : 'text-paint' ,
74- 'sentry.transaction_name' : '/index.html' ,
68+ 'ui.element.id' : 'text1-id' ,
69+ 'ui.element.identifier' : 'text1' ,
70+ 'ui.element.type' : 'p' ,
71+ 'ui.element.render_time' : expect . any ( Number ) ,
72+ 'ui.element.load_time' : expect . any ( Number ) ,
73+ 'ui.element.paint_type' : 'text-paint' ,
74+ 'ui.element.width' : 0 ,
75+ 'ui.element.height' : 0 ,
76+ 'sentry.transaction' : '/index.html' ,
77+ 'sentry.segment.name' : '/index.html' ,
7578 } ) ;
7679 expect ( text1RenderTime ) . toBeGreaterThan ( 0 ) ;
7780 expect ( text1RenderTime ) . toBeLessThan ( 300 ) ;
@@ -80,35 +83,37 @@ sentryTest(
8083 expect ( text1Duration ) . toBe ( 0 ) ;
8184
8285 // Check button1 span (no need for a full assertion)
83- const button1Span = elementTimingSpans ?. find ( ( { data } ) => data ?. [ 'element.identifier' ] === 'button1' ) ;
86+ const button1Span = elementTimingSpans ?. find ( ( { data } ) => data ?. [ 'ui. element.identifier' ] === 'button1' ) ;
8487 expect ( button1Span ) . toBeDefined ( ) ;
8588 expect ( button1Span ?. data ) . toMatchObject ( {
86- 'element.identifier' : 'button1' ,
87- 'element.type' : 'button' ,
88- 'element.paint_type' : 'text-paint' ,
89- 'sentry.transaction_name' : '/index.html' ,
89+ 'ui.element.identifier' : 'button1' ,
90+ 'ui.element.type' : 'button' ,
91+ 'ui.element.paint_type' : 'text-paint' ,
92+ 'sentry.transaction' : '/index.html' ,
93+ 'sentry.segment.name' : '/index.html' ,
9094 } ) ;
9195
9296 // Check image-slow span
93- const imageSlowSpan = elementTimingSpans ?. find ( ( { data } ) => data ?. [ 'element.identifier' ] === 'image-slow' ) ;
97+ const imageSlowSpan = elementTimingSpans ?. find ( ( { data } ) => data ?. [ 'ui. element.identifier' ] === 'image-slow' ) ;
9498 expect ( imageSlowSpan ) . toBeDefined ( ) ;
9599 expect ( imageSlowSpan ?. data ) . toEqual ( {
96- 'element.id' : '' ,
97- 'element.identifier' : 'image-slow' ,
98- 'element.type' : 'img' ,
99- 'element.size' : '600x179' ,
100- 'element.url' : 'https://sentry-test-site.example/path/to/image-slow.png' ,
101- 'element.paint_type' : 'image-paint' ,
102- 'element.render_time' : expect . any ( Number ) ,
103- 'element.load_time' : expect . any ( Number ) ,
100+ 'ui.element.id' : '' ,
101+ 'ui.element.identifier' : 'image-slow' ,
102+ 'ui.element.type' : 'img' ,
103+ 'ui.element.width' : 600 ,
104+ 'ui.element.height' : 179 ,
105+ 'ui.element.url' : 'https://sentry-test-site.example/path/to/image-slow.png' ,
106+ 'ui.element.paint_type' : 'image-paint' ,
107+ 'ui.element.render_time' : expect . any ( Number ) ,
108+ 'ui.element.load_time' : expect . any ( Number ) ,
104109 'sentry.op' : 'ui.elementtiming' ,
105110 'sentry.origin' : 'auto.ui.browser.elementtiming' ,
106111 'sentry.source' : 'component' ,
107- 'sentry.span_start_time_source ' : 'load-time ' ,
108- 'sentry.transaction_name ' : '/index.html' ,
112+ 'sentry.transaction ' : '/index.html ' ,
113+ 'sentry.segment.name ' : '/index.html' ,
109114 } ) ;
110- const imageSlowRenderTime = imageSlowSpan ?. data [ 'element.render_time' ] ;
111- const imageSlowLoadTime = imageSlowSpan ?. data [ 'element.load_time' ] ;
115+ const imageSlowRenderTime = imageSlowSpan ?. data [ 'ui. element.render_time' ] ;
116+ const imageSlowLoadTime = imageSlowSpan ?. data [ 'ui. element.load_time' ] ;
112117 const imageSlowDuration = imageSlowSpan ! . timestamp ! - imageSlowSpan ! . start_timestamp ;
113118 expect ( imageSlowRenderTime ) . toBeGreaterThan ( 1400 ) ;
114119 expect ( imageSlowRenderTime ) . toBeLessThan ( 2000 ) ;
@@ -118,25 +123,26 @@ sentryTest(
118123 expect ( imageSlowDuration ) . toBeLessThan ( 20 ) ;
119124
120125 // Check lazy-image span
121- const lazyImageSpan = elementTimingSpans ?. find ( ( { data } ) => data ?. [ 'element.identifier' ] === 'lazy-image' ) ;
126+ const lazyImageSpan = elementTimingSpans ?. find ( ( { data } ) => data ?. [ 'ui. element.identifier' ] === 'lazy-image' ) ;
122127 expect ( lazyImageSpan ) . toBeDefined ( ) ;
123128 expect ( lazyImageSpan ?. data ) . toEqual ( {
124- 'element.id' : '' ,
125- 'element.identifier' : 'lazy-image' ,
126- 'element.type' : 'img' ,
127- 'element.size' : '600x179' ,
128- 'element.url' : 'https://sentry-test-site.example/path/to/image-lazy.png' ,
129- 'element.paint_type' : 'image-paint' ,
130- 'element.render_time' : expect . any ( Number ) ,
131- 'element.load_time' : expect . any ( Number ) ,
129+ 'ui.element.id' : '' ,
130+ 'ui.element.identifier' : 'lazy-image' ,
131+ 'ui.element.type' : 'img' ,
132+ 'ui.element.width' : 600 ,
133+ 'ui.element.height' : 179 ,
134+ 'ui.element.url' : 'https://sentry-test-site.example/path/to/image-lazy.png' ,
135+ 'ui.element.paint_type' : 'image-paint' ,
136+ 'ui.element.render_time' : expect . any ( Number ) ,
137+ 'ui.element.load_time' : expect . any ( Number ) ,
132138 'sentry.op' : 'ui.elementtiming' ,
133139 'sentry.origin' : 'auto.ui.browser.elementtiming' ,
134140 'sentry.source' : 'component' ,
135- 'sentry.span_start_time_source ' : 'load-time ' ,
136- 'sentry.transaction_name ' : '/index.html' ,
141+ 'sentry.transaction ' : '/index.html ' ,
142+ 'sentry.segment.name ' : '/index.html' ,
137143 } ) ;
138- const lazyImageRenderTime = lazyImageSpan ?. data [ 'element.render_time' ] ;
139- const lazyImageLoadTime = lazyImageSpan ?. data [ 'element.load_time' ] ;
144+ const lazyImageRenderTime = lazyImageSpan ?. data [ 'ui. element.render_time' ] ;
145+ const lazyImageLoadTime = lazyImageSpan ?. data [ 'ui. element.load_time' ] ;
140146 const lazyImageDuration = lazyImageSpan ! . timestamp ! - lazyImageSpan ! . start_timestamp ;
141147 expect ( lazyImageRenderTime ) . toBeGreaterThan ( 1000 ) ;
142148 expect ( lazyImageRenderTime ) . toBeLessThan ( 1500 ) ;
@@ -146,15 +152,16 @@ sentryTest(
146152 expect ( lazyImageDuration ) . toBeLessThan ( 20 ) ;
147153
148154 // Check lazy-text span
149- const lazyTextSpan = elementTimingSpans ?. find ( ( { data } ) => data ?. [ 'element.identifier' ] === 'lazy-text' ) ;
155+ const lazyTextSpan = elementTimingSpans ?. find ( ( { data } ) => data ?. [ 'ui. element.identifier' ] === 'lazy-text' ) ;
150156 expect ( lazyTextSpan ?. data ) . toMatchObject ( {
151- 'element.id' : '' ,
152- 'element.identifier' : 'lazy-text' ,
153- 'element.type' : 'p' ,
154- 'sentry.transaction_name' : '/index.html' ,
157+ 'ui.element.id' : '' ,
158+ 'ui.element.identifier' : 'lazy-text' ,
159+ 'ui.element.type' : 'p' ,
160+ 'sentry.transaction' : '/index.html' ,
161+ 'sentry.segment.name' : '/index.html' ,
155162 } ) ;
156- const lazyTextRenderTime = lazyTextSpan ?. data [ 'element.render_time' ] ;
157- const lazyTextLoadTime = lazyTextSpan ?. data [ 'element.load_time' ] ;
163+ const lazyTextRenderTime = lazyTextSpan ?. data [ 'ui. element.render_time' ] ;
164+ const lazyTextLoadTime = lazyTextSpan ?. data [ 'ui. element.load_time' ] ;
158165 const lazyTextDuration = lazyTextSpan ! . timestamp ! - lazyTextSpan ! . start_timestamp ;
159166 expect ( lazyTextRenderTime ) . toBeGreaterThan ( 1000 ) ;
160167 expect ( lazyTextRenderTime ) . toBeLessThan ( 1500 ) ;
@@ -202,15 +209,15 @@ sentryTest('emits element timing spans on navigation', async ({ getLocalTestUrl,
202209
203210 // Image started loading after navigation, but render-time and load-time still start from the time origin
204211 // of the pageload. This is somewhat a limitation (though by design according to the ElementTiming spec)
205- expect ( ( imageSpan ! . data [ 'element.render_time' ] ! as number ) / 1000 + pageloadStartTime ) . toBeGreaterThan (
212+ expect ( ( imageSpan ! . data [ 'ui. element.render_time' ] ! as number ) / 1000 + pageloadStartTime ) . toBeGreaterThan (
206213 navigationStartTime ,
207214 ) ;
208- expect ( ( imageSpan ! . data [ 'element.load_time' ] ! as number ) / 1000 + pageloadStartTime ) . toBeGreaterThan (
215+ expect ( ( imageSpan ! . data [ 'ui. element.load_time' ] ! as number ) / 1000 + pageloadStartTime ) . toBeGreaterThan (
209216 navigationStartTime ,
210217 ) ;
211218
212- expect ( textSpan ?. data [ 'element.load_time' ] ) . toBe ( 0 ) ;
213- expect ( ( textSpan ! . data [ 'element.render_time' ] ! as number ) / 1000 + pageloadStartTime ) . toBeGreaterThan (
219+ expect ( textSpan ?. data [ 'ui. element.load_time' ] ) . toBe ( 0 ) ;
220+ expect ( ( textSpan ! . data [ 'ui. element.render_time' ] ! as number ) / 1000 + pageloadStartTime ) . toBeGreaterThan (
214221 navigationStartTime ,
215222 ) ;
216223} ) ;
0 commit comments