chromium/third_party/blink/web_tests/fast/scrolling/no-hover-during-smooth-js-scroll.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/hover-on-scroll-checker.js"></script>
<script src="../../resources/testdriver.js"></script>
<script src="../../resources/testdriver-actions.js"></script>
<script src="../../resources/testdriver-vendor.js"></script>

<style>
  body, html {
    margin: 0;
    height: 500vh;
  }
  div {
    height: 50px;
    width: 100%;
  }

  .hoverme {
    background-color: rgb(0, 0, 255);
  }

  .hoverme:hover {
    background-color: rgb(255, 255, 0);
  }

  .message {
    width: 100%;
    text-align: left;
  }
</style>

<div class="message">
  First move your mouse cursor to the page, you will see the color under the mouse cursor changed from blue to yellow. <br>
  Do a smooth JS scroll, you will see the hover update on a text under the mouse cursor when the scrolling finishes.
</div>
<div class="hoverme">hover over me</div>
<div class="hoverme">hover over me</div>
<div class="hoverme">hover over me</div>
<div class="hoverme">hover over me</div>
<div class="hoverme">hover over me</div>

<script>

  window.onload = async () => {
    promise_test(async () => {
      const postScrollHoverIndex = 3;
      const scrollAmount = postScrollHoverIndex * elementHeight();
      const scrollCallback = () => {
        return waitForWindowScrollTo({
          top: scrollAmount,
          left: 0,
          behavior: 'smooth'
        });
      };
      return runHoverStateOnScrollTest(scrollCallback, postScrollHoverIndex);
    }, 'JS smooth scroll on the page, no hover update during scrolling, but ' +
       'updating hover at the end of scroll.');
  };

</script>