chromium/third_party/blink/web_tests/fast/scrolling/autoscroll-over-scrollbar.html

<!DOCTYPE HTML>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../../resources/gesture-util.js"></script>
<script src="../../resources/compositor-controls.js"></script>
<style>
  body {
    margin: 0px;
    height: 1000px;
    width: 1000px;
  }
  #scrollable {
    background-color: #FF7F7F;
    height: 600px;
    width: 600px;
    overflow: scroll;
  }
  #content {
    height: 700px;
    width: 700px;
  }
</style>

<div id="scrollable">
  <div id="content"> </div>
</div>

<script>
setAnimationRequiresRaster();
var scrollable = document.getElementById('scrollable');
async function autoScroll(start_x, start_y, end_x, end_y) {
  const MIDDLE_BUTTON = 1;
  await mouseMoveTo(start_x, start_y);
  await mouseClickOn(start_x, start_y, MIDDLE_BUTTON);
  await mouseMoveTo(end_x, end_y);
}

promise_test(async t => {
  const MIDDLE_CLICK_AUTOSCROLL_RADIUS = 15; // from blink::kNoMiddleClickAutoscrollRadius
  var rect = scrollable.getBoundingClientRect();
  var startX = rect.right - 5;
  var startY = rect.top + 20;
  var endX = startX;
  var endY = startY + 2 * MIDDLE_CLICK_AUTOSCROLL_RADIUS;
  assert_equals(scrollable.scrollTop, 0);
  await autoScroll(startX, startY, endX, endY);
  await waitUntil(() => {return scrollable.scrollTop > 0;});

  assert_greater_than(scrollable.scrollTop, 0);
});

</script>