<!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>
