image-removed-before-load.html (1686B)
1 <!DOCTYPE HTML> 2 <meta charset=utf-8> 3 <title>Largest Contentful Paint: largest image is reported.</title> 4 <body> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 <script src="resources/largest-contentful-paint-helpers.js"></script> 8 <img id="target"/> 9 <img id="target2"/> 10 <script> 11 setup({"hide_test_state": true}); 12 const numInitial = 100; 13 const sleep = 1000; 14 const small_img_src = '/images/lcp-16x16.png'; 15 let beforeLoad; 16 async_test(function (t) { 17 assert_implements(window.LargestContentfulPaint, "LargestContentfulPaint is not implemented"); 18 const img_src = '/element-timing/resources/progressive-image.py?name=square20.jpg&numInitial=' 19 + numInitial + '&sleep=' + sleep; 20 const img1 = document.getElementById('target') 21 img1.src = img_src; 22 // After a brief wait, remove the image and add a smaller image to target2. 23 t.step_timeout(() => { 24 img1.parentNode.removeChild(img1); 25 document.getElementById('target2').src = small_img_src; 26 beforeLoad = performance.now(); 27 }, 0); 28 new PerformanceObserver( 29 t.step_func(entryList => { 30 let images = entryList.getEntries().filter(e => e.id !== ''); 31 if (!images.length) 32 return; 33 assert_equals(images.length, 1, 'Should only receive one entry'); 34 const entry = images[0]; 35 checkImage(images[0], window.location.origin + small_img_src, 'target2', 16 * 16, 36 beforeLoad); 37 t.done(); 38 }) 39 ).observe({type: 'largest-contentful-paint', buffered: true}); 40 }, 'Largest Contentful Paint: image removed before loaded does not produce entry.'); 41 </script> 42 </body>