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