<!DOCTYPE html>
<html>
<head>
  <title>Test events when the animation has a short duration and is delayed</title>
  <style>
    #box {
      position: relative;
      left: 100px;
      top: 10px;
      height: 100px;
      width: 100px;
      animation-duration: 0.001s;
      animation-delay: 0.001s;
      animation-name: anim;
      background-color: #999;
      animation-iteration-count: 2;
    }
    @keyframes anim {
        from { left: 200px; }
        to   { left: 300px; }
    }
  </style>
  <script>
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }
  
    onload = function()
    {
        document.addEventListener('animationstart', function() {
            document.getElementById('result').innerHTML = 'PASS: got animationstart event';
        }, false);
        document.addEventListener('animationend', function() {
            document.getElementById('result').innerHTML += '<br>PASS: got animationend event';
            if (window.testRunner)
                testRunner.notifyDone();
        }, false);
        
        // Animation begins once we append the DOM node to the document.
        var boxNode = document.createElement('div');
        boxNode.id = 'box';
        document.body.appendChild(boxNode);
    }
  </script>
</head>
<body>
Test events when the animation has a short duration and is delayed.
<pre id="result">FAIL: No events received</pre>
</body>
</html>
