testing/web-platform/tests/css/css-overflow/scroll-marker-hover-remove.html
author Florian Quèze <florian@queze.net>
Tue, 08 Jul 2025 20:48:53 +0000 (8 hours ago)
changeset 795809 b01190f141a12f4b506acb1f4476561c4b0f2407
parent 771100 4650decda2840276040073cc42079ac92531025b
permissions -rw-r--r--
Bug 1960567 - remove the last C++ and scriptable APIs to accumulate data to legacy telemetry histograms, r=chutten. Differential Revision: https://phabricator.services.mozilla.com/D255582
<!doctype html>
<meta charset="utf-8">
<title>CSS Test: ::scroll-marker:hover is removed correctly</title>
<link rel="help" href="https://drafts.csswg.org/css-overflow-5/#scroll-marker">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<style>
  body {
    margin: 0;
  }

  #scroller {
    width: 600px;
    height: 300px;
    overflow: auto;
    scroll-marker-group: before;
    white-space: nowrap;
  }

  #scroller div {
    background: green;
    display: inline-block;
    width: 600px;
    height: 270px;
  }

  #scroller div:hover {
    background-color: blue;
  }

  #scroller::scroll-marker-group {
    display: flex;
    height: 20px;
    width: 40px;
  }

  .scroller div::scroll-marker {
    content: "";
    width: 100px;
    height: 20px;
    background-color: green;
    display: inline-block;
  }

  .scroller div::scroll-marker:hover {
    background-color: blue;
  }
</style>
<div id="scroller" class="scroller">
  <div id="target"></div>
  <div></div>
</div>
<script>
  promise_test(async t => {
    actions_promise = new test_driver.Actions()
      .pointerMove(15, 15)
      .send();
    await actions_promise;
    assert_equals(getComputedStyle(target, "::scroll-marker").backgroundColor, "rgb(0, 0, 255)", "::scroll-marker changes on hover via :hover");
    assert_equals(getComputedStyle(target).backgroundColor, "rgb(0, 0, 255)", "::scroll-marker's originating element is hovered when ::scroll-marker is hovered");
    scroller.classList.remove("scroller");
    requestAnimationFrame(() => {
      assert_equals(getComputedStyle(target).backgroundColor, "rgb(0, 128, 0)", "::scroll-marker's originating element is not hovered when ::scroll-marker is removed");
    });
  });
</script>