<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title> CSS Scroll Snap 2 Test: scroll-initial-target*</title>
  <link rel="help" href="https://drafts.csswg.org/css-scroll-snap-2/#scroll-initial-target">
  <script src="/resources/testharness.js"></script>
  <script src="/resources/testharnessreport.js"></script>
</head>

<body>
  <style>
    :root {
      scroll-start: end end;
    }

    .spacer {
      width: 200vw;
      height: 200vh;
    }

    .box {
      position: absolute;
      width: 60vw;
      height: 60vh;
    }

    .top_left {
      top: 0px;
      left: 0px;
      background-color: red;
    }

    .center {
      top: 60vh;
      left: 60vw;
      background-color: purple;
      scroll-initial-target: nearest;
    }

    .bottom_right {
      top: 120vh;
      left: 120vw;
      background-color: yellow;
    }
  </style>
  <div class="spacer"></div>
  <div class="top_left box" id="top_left_box"></div>
  <div class="center box" id="centerbox"></div>
  <div class="bottom_right box"></div>
  <script>
    test((t) => {
      let scroller = document.scrollingElement;
      let top_left_box = document.getElementById("top_left_box");

      const expected_scroll_top = top_left_box.getBoundingClientRect().height;
      const expected_scroll_left = top_left_box.getBoundingClientRect().width;

      assert_approx_equals(scroller.scrollTop, expected_scroll_top, 1,
        "scroll-initial-target sets initial vertical scroll position");
      assert_approx_equals(scroller.scrollLeft, expected_scroll_left, 1,
        "scroll-initial-target sets initial horizontal scroll position");
    });
  </script>
</body>