<!DOCTYPE html>
<meta name="viewport" content="width=device-width, user-scalable=no">
<link rel="stylesheet" type="text/css" href="resources/tablet.css">
<script src="resources/perf_test_helper.js"></script>
<script src="resources/web_animations_api_check.js"></script>

<container id="container"></container>

<script>
var N = PerfTestHelper.getN(1000);
var duration = 1000;
var targets = [];

function startAnimation(element) {
  element.animate([
    {opacity: 0},
    {opacity: 1},
  ], duration);
}

function startAllAnimations() {
  for (var i in targets)
    startAnimation(targets[i]);
  setTimeout(startAllAnimations, duration);
}

for (var i = 0; i < N; i++) {
  var target = document.createElement('target');
  container.appendChild(target);
  targets.push(target);
}

startAllAnimations();

PerfTestHelper.signalReady();
</script>
