chromium/third_party/blink/web_tests/transitions/transition-end-event-rendering.html

<!DOCTYPE html>

<html>
<head>
  <style>
    body {
      margin: 0;
    }
    
    #container {
      position: relative;
      width: 400px;
      height: 230px;
      border: 1px solid  black;
    }
    
    .box {
      position: relative;
      width: 100px;
      height: 100px;
      margin: 10px 0;
      background-color: green;
    }

    #container.moved .hardware {
      transform: translateX(300px);
    }

    .hardware {
      -webkit-transition: transform 100ms linear;
      transform: translateX(0);
    }

   </style>
   <script>
    'use strict';
    function waitForCompositor() {
      var tester = document.getElementById('tester');
      return tester.animate({transform: ['scale(1)', 'scale(1)']}, 1).finished;
    }

    function testEnded()
    {
      waitForCompositor().then(() => {
        if (window.testRunner)
          testRunner.notifyDone();
      });
    }
    
    function startTest()
    {
      if (window.testRunner)
        testRunner.waitUntilDone();

      document.getElementById('tester').addEventListener('webkitTransitionEnd', testEnded, false);
      document.getElementById('container').offsetTop; // Force style recalc
      document.getElementById('container').className = 'moved';
    }
    
    window.addEventListener('load', startTest, false);
   </script>
</head>
<body>

  <div id="container">
    <div id="tester" class="hardware box"></div>
  </div>

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

</body>
</html>