<!DOCTYPE html>
<title>Test scrollIntoView() inside a fenced frame</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/utils.js"></script>
<script src="/common/dispatcher/dispatcher.js"></script>
<script src="resources/utils.js"></script>

<body>
<!-- This spacer is used to ensure that the fenced frame will be out of view
     unless a scroll is performed. -->
<div style="height: 2000px;"></div>
<script>
promise_test(async(t) => {
  const fencedframe = await attachFencedFrameContext();

  const start_y_offset = window.pageYOffset;

  await fencedframe.execute(() => {
    // Ensure that any elements created are out of view until a scroll is
    // performed.
    const spacer = document.createElement("div");
    spacer.style = "height: 2000px;";
    document.body.appendChild(spacer);

    const start_fenced_y_offset = window.pageYOffset;

    const button = document.createElement("button");
    document.body.appendChild(button);
    button.scrollIntoView();

    const end_fenced_y_offset = window.pageYOffset;
    assert_not_equals(start_fenced_y_offset, end_fenced_y_offset,
      "The inner page should have scrolled.");
  }, []);

  const end_y_offset = window.pageYOffset;
  assert_equals(start_y_offset, end_y_offset,
      "The outer page should not have scrolled.");

}, 'scrollIntoView() inside a fenced frame should not scroll ancestors');

</script>
</body>
