<html>
<head>
  <style>
    .box {
      position: relative;
      left: 0;
      height: 100px;
      width: 100px;
      margin: 10px;
      background-color: blue;
      -webkit-transition-property: width, left, background-color, height, top;
      -webkit-transition-duration: 0.05s;
    }
    
    .box1 {
      left: 50px;
    }
    
    .box2 {
      background-color: red;
      left: 50px;
    }
    
    .box3 {
      width: 150px;
      background-color: green;
      left: 50px;
      height: 120px;
      -webkit-transition-duration: 0.07s;
    }
    
  </style>
  <script src="transition-end-event-helpers.js"></script>
  <script type="text/javascript">
    
    var expectedEndEvents = [
      // [property-name, element-id, elapsed-time, listen]
      ["background-color", "box2", 0.05, false],
      ["background-color", "box3", 0.07, false],
      ["height", "box3", 0.07, false],
      ["left", "box1", 0.05, false],
      ["left", "box2", 0.05, false],
      ["left", "box3", 0.07, false],
      ["width", "box3", 0.07, false],
    ];

    function setupTest()
    {
      var boxes = document.body.getElementsByClassName('box');
      for (var i = 0; i < boxes.length; ++i) {
        boxes[i].addEventListener("webkitTransitionEnd", recordTransitionEndEvent, false);
        boxes[i].className = "box box" + (i+1);
      }
    }
    
    runTransitionTest(expectedEndEvents, setupTest);
  </script>
</head>
<body>

<p>Initiating transitions on various properties of all boxes.</p>

<div id="container">
  <div id="box1" class="box"></div>
  <div id="box2" class="box"></div>
  <div id="box3" class="box"></div>
</div>

<div id="result"></div>

</body>
</html>