blob: ca711f22411c6cba5acf5cc2f8302526e3d37722 [file] [log] [blame]
<!DOCTYPE HTML>
<meta charset=utf-8>
<title>Largest Contentful Paint: largest text is reported.</title>
<body>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style type="text/css">
#text2 {
position: absolute;
width: auto;
white-space: nowrap;
}
</style>
<!-- There is some text and some tiny images. We care about the largest text. -->
<img src='/images/green-1x1.png'/>
<div id='text1'>This is some text.</div>
<div id='text2'>This is more text so it will be the Largest Contentful Paint!</div>
<img src='/images/green-2x2.png'/>
<script>
async_test(function (t) {
assert_implements(window.LargestContentfulPaint, "LargestContentfulPaint is not implemented");
let beforeRender;
const observer = new PerformanceObserver(
t.step_func(entryList => {
entryList.getEntries().forEach(entry => {
// The tiny images or text1 could be reported as LCP if it is rendered before text2.
if (entry.id !== 'text2')
return;
assert_equals(entry.entryType, 'largest-contentful-paint');
assert_greater_than_equal(entry.renderTime, beforeRender);
assert_greater_than_equal(performance.now(), entry.renderTime);
assert_equals(entry.startTime, entry.renderTime, 'startTime should equal renderTime');
assert_equals(entry.duration, 0);
const div = document.getElementById('text2');
// The div styling makes it approximate the text size.
assert_greater_than_equal(entry.size, (div.clientHeight - 5) * (div.clientWidth - 5));
assert_less_than_equal(entry.size, (div.clientHeight + 1) * (div.clientWidth + 1));
assert_equals(entry.loadTime, 0);
assert_equals(entry.id, 'text2');
assert_equals(entry.url, '');
assert_equals(entry.element, div);
t.done();
})
})
);
observer.observe({type: 'largest-contentful-paint', buffered: true});
beforeRender = performance.now();
}, 'Largest Contentful Paint: largest text is reported.');
</script>
</body>