chromium/third_party/blink/web_tests/fast/scrolling/abspos-relayout-overflow-style-change.html

<!DOCTYPE html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<style>

.scroller {
  position: absolute;
  height: 200px;
  width: 300px;
  top: 100px;
  border: 5px solid #ccc;
}
.scroller.vert {
  left: 20px;
  overflow-y: scroll;
}
.scroller.horz {
  left: 350px;
  overflow-x: scroll;
}
.scroller::-webkit-scrollbar {
  width: 20px;
  height: 20px;
  background-color: #ccc;
}
.scroller::-webkit-scrollbar-thumb {
  background-color: #68c;
}
.abs {
  position: absolute;
  background-color: #ACF7AA;
}
.vert > .abs {
  top: 20px;
  right: 20px;
  width: 200px;
  height: 400px;
}
.horz > .abs {
  left: 20px;
  bottom: 20px;
  width: 400px;
  height: 100px;
}

</style>
<div class="scroller vert"><div class="abs"></div></div>
<div class="scroller horz"><div class="abs"></div></div>
<script>

var vScroll = document.querySelector(".scroller.vert");
var hScroll = document.querySelector(".scroller.horz");

test((t) => {
  assert_equals(vScroll.firstChild.offsetLeft, 60);
  assert_equals(hScroll.firstChild.offsetTop, 60);

  vScroll.style.overflowY = "hidden";
  hScroll.style.overflowX = "hidden";

  assert_equals(vScroll.firstChild.offsetLeft, 80);
  assert_equals(hScroll.firstChild.offsetTop, 80);

  vScroll.style.overflowY = "";
  hScroll.style.overflowX = "";

  assert_equals(vScroll.firstChild.offsetLeft, 60);
  assert_equals(hScroll.firstChild.offsetTop, 60);
}, "Relayout abspos child when overflow style changes.");

</script>