<!DOCTYPE html>
<title>position:sticky elements should respect the bottom constraint</title>
<link rel="help" href="https://www.w3.org/TR/css-position-3/#sticky-pos" />
<meta name="assert" content="This test checks that position:sticky elements obey their bottom anchor after scrolling" />

<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

<script src="resources/sticky-util.js"></script>

<body></body>

<script>
test(() => {
  const elements = setupStickyTest('bottom', 25);
  elements.scroller.scrollTop = 300;
  const nonStickyTopY = elements.container.offsetTop +
      elements.filler.clientHeight;
  assert_equals(elements.sticky.offsetTop, nonStickyTopY);
}, 'before reaching the sticking point the sticky box should not be offset');

test(() => {
  const elements = setupStickyTest('bottom', 25);
  elements.scroller.scrollTop = 100;

  const nonStickyTopY = elements.container.offsetTop +
      elements.filler.clientHeight;
  const nonStickyBottomY = nonStickyTopY + elements.sticky.clientHeight;
  const targetBottomY = elements.scroller.clientHeight +
      elements.scroller.scrollTop - 25;
  const stickyOffset = nonStickyBottomY - targetBottomY;

  assert_equals(elements.sticky.offsetTop, nonStickyTopY - stickyOffset);
}, 'after reaching the sticking point the sticky box should be offset');

test(() => {
  const elements = setupStickyTest('bottom', 25);
  elements.scroller.scrollTop = 0;
  assert_equals(elements.sticky.offsetTop, elements.container.offsetTop);
}, 'the sticky box should not be pushed outside its containing block');
</script>
