observe-text.html (2145B)
1 <!DOCTYPE HTML> 2 <meta charset=utf-8> 3 <title>Largest Contentful Paint: observe text.</title> 4 <body> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 <style> 8 p { 9 font-size: 12px; 10 } 11 </style> 12 <script> 13 async_test(function (t) { 14 assert_implements(window.LargestContentfulPaint, "LargestContentfulPaint is not implemented"); 15 let beforeRender; 16 const observer = new PerformanceObserver( 17 t.step_func_done(function(entryList) { 18 assert_equals(entryList.getEntries().length, 1); 19 const entry = entryList.getEntries()[0]; 20 assert_equals(entry.entryType, 'largest-contentful-paint'); 21 assert_greater_than_equal(entry.renderTime, beforeRender); 22 assert_greater_than_equal(performance.now(), entry.renderTime); 23 assert_approx_equals(entry.startTime, entry.renderTime, 0.001, 24 'startTime should be equal to renderTime to the precision of 1 millisecond.'); 25 26 // PaintTimingMixin 27 assert_greater_than_equal(entry.paintTime, beforeRender, 'paintTime should represent the time when the UA started painting'); 28 29 if ("presentationTime" in entry && entry.presentationTime !== null) { 30 assert_greater_than(entry.presentationTime, entry.paintTime); 31 assert_equals(entry.presentationTime, entry.renderTime); 32 } else { 33 assert_equals(entry.renderTime, entry.paintTime); 34 } 35 assert_equals(entry.duration, 0); 36 // Some lower bound: height of at least 12 px. 37 // Width of at least 100 px. 38 // TODO: find a good way to bound text width. 39 assert_greater_than_equal(entry.size, 1200); 40 assert_equals(entry.loadTime, 0); 41 assert_equals(entry.id, 'my_text'); 42 assert_equals(entry.url, ''); 43 assert_equals(entry.element, document.getElementById('my_text')); 44 }) 45 ); 46 observer.observe({type: 'largest-contentful-paint', buffered: true}); 47 beforeRender = performance.now(); 48 }, 'Text element is observable as a LargestContentfulPaint candidate.'); 49 </script> 50 51 <p id='my_text'>This is important text! :)</p> 52 </body>