<!DOCTYPE HTML>
<meta charset=utf-8>
<title>Element Timing: observe text that is initially not visible</title>
<body>
<style>
.big {
width: 100%;
height: 100vh;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/element-timing-helpers.js"></script>
<div class='big'></div>
<p elementtiming='observeMe'>Test text</p>
<script>
async_test((t) => {
assert_implements(window.PerformanceElementTiming, "PerformanceElementTiming is not implemented");
const observer = new PerformanceObserver(t.step_func_done(() => {}));
observer.observe({type: 'element', buffered: true});
window.onload = () => {
// The div occupies the whole screen because it occupies 100% of the height.
// We scroll to the end of the document so that the paragraph becomes visible.
// A user agent could paint the text before or after scrolling, but either way
// it must produce an entry for it.
window.scrollTo(0,document.scrollingElement.scrollHeight);
};
}, 'Paragraph with elementtiming attribute is observed even when not initially visible.');
</script>
</body>