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

<style>
  div {
    width: 100px;
    height: 100px;
    background-color: green;
    position: absolute;
  }

  #blocker {
    top: 30px;
    background-color: yellow;
  }

  #A {
    top: 601px;
    height: 50px;
  }
</style>

<div id="start" tabindex="0"></div>
<div id="blocker"></div>
<div id="A" tabindex="0"></div>

<script>
  // This test checks that focusless mode allows entering focus into an element
  // with the enter key and exiting it with the escape key.
  const A = document.getElementById("A");
  const start = document.getElementById("start");

  snav.assertSnavEnabledAndTestable();
  start.focus();

  test(() => {
    assert_equals(window.scrollY, 0, "Start at 0 scroll offset.")
    assert_equals(window.internals.interestedElement,
                  start, "Top DIV starts off focused");

    // Down should scroll the visual viewport, since there's no targets
    // availabe on screen.
    snav.triggerMove('Down');

    assert_equals(window.internals.interestedElement,
                  start,
                  "First navigation should't move interest");
    assert_greater_than(window.scrollY, 0,
                  "First navigation should scroll");
    assert_greater_than(window.innerHeight,
                        A.getBoundingClientRect().top,
                        "A element should now be at least partially visible");

    snav.triggerMove('Down');
    assert_equals(window.internals.interestedElement,
                  A,
                  "Navigate to onscreen element.");

    snav.triggerMove('Up');
    assert_equals(window.internals.interestedElement,
                  A,
                  "Don't navigate to obscured(in viewport) element even if it has visible part outside of viewport.");

    snav.triggerMove('Up');
    assert_equals(window.internals.interestedElement,
                  start,
                  "Navigate to onscreen element.");
  }, "Don't navigate to elements that are off screen.");
</script>
