async_test(t => { assert_implements(window.LargestContentfulPaint, "LargestContentfulPaint is not implemented"); const observer = new PerformanceObserver( t.step_func(entryList => { entryList.getEntries().forEach(entry => { // May receive a text entry. Ignore that entry. if (!entry.url) { return; } // The images should not have caused an entry, so fail test. assert_unreached('Should not have received an entry! Received one with id ' + entryList.getEntries()[0].id); }); }) ); observer.observe({type: 'largest-contentful-paint', buffered: true}); // Images have been added but should not cause entries to be dispatched. // Wait for 500ms and end test, ensuring no entry was created. t.step_timeout(() => { t.done(); }, 500); }, 'Images with opacity: 0, visibility: hidden, or display: none are not observable by LargestContentfulPaint.');