<!DOCTYPE html>
<meta name="viewport" content="width=device-width,initial-scale=1">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../resources/intersection-observer-test-utils.js"></script>

<style>
body, html {
  margin: 0;
}
pre, #log {
  position: absolute;
  top: 0;
  left: 200px;
}
#target {
  width: 100px;
  height: 100px;
  background-color: green;
}
@keyframes rotate {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(45deg);
  }
}
#occluder {
  will-change: transform;
  width: 100px;
  height: 100px;
  background-color: blue;
}
</style>

<div id="target"></div>
<div id="occluder"></div>

<script>
var vw = document.documentElement.clientWidth;
var vh = document.documentElement.clientHeight;
var delay = 100;
var entries = [];
var target;
var occluder;

runTestCycle(function() {
  target = document.getElementById("target");
  occluder = document.getElementById("occluder");
  assert_true(!!target, "target exists");
  assert_true(!!occluder, "occluder exists");
  var observer = new IntersectionObserver(function(changes) {
    entries = entries.concat(changes)
  }, {trackVisibility: true, delay: delay});
  observer.observe(target);
  entries = entries.concat(observer.takeRecords());
  assert_equals(entries.length, 0, "No initial notifications.");
  runTestCycle(step0, "First rAF.", delay);
}, "IntersectionObserverV2 in a single document using the implicit root, with an animated occluding element.", delay);

function step0() {
  occluder.style.animation = "rotate .1s linear";
  step_timeout(() => {
    runTestCycle(step1, "occluder.style.animation = 'rotate .1s linear'", delay);
  }, 50);
  checkLastEntry(entries, 0, [0, 100, 0, 100, 0, 100, 0, 100, 0, vw, 0, vh, true, true]);
}

function step1() {
  checkLastEntry(entries, 1, [0, 100, 0, 100, 0, 100, 0, 100, 0, vw, 0, vh, true, false]);
}
</script>
