chromium/third_party/blink/web_tests/animations/direction-and-fill/animation-direction-reverse-hardware.html

<!doctype html>
<html>
<head>
  <title>Test of animation-direction on composited elements</title>
  <style>
    body {
      margin: 0;
    }

    .box {
      position: relative;
      left: 20px;
      top: 10px;
      height: 50px;
      width: 250px;
      margin-bottom: 10px;
      animation-duration: 2s;
      animation-timing-function: linear;
      animation-iteration-count: 8;
    }
    
    .move1 {
      animation-name: move1;
      background-color: blue;
      color: white;
    }

    .move2 {
      animation-name: move2;
      background-color: orange;
    }

    .normal {
      animation-direction: normal;
    }

    .alternate {
      animation-direction: alternate;
    }

    .reverse {
      animation-direction: reverse;
    }

    .alternate-reverse {
      animation-direction: alternate-reverse;
    }
    
    @keyframes move1 {
      from { transform: translateX(0px); }
      to { transform: translateX(200px); }
    }

    @keyframes move2 {
      0% { transform: translateX(0px); }
      40% { transform: translateX(160px); }
      60% { transform: translateX(120px); }
      100% { transform: translateX(200px); }
    }
  </style>
  <script src="../resources/animation-test-helpers.js"></script>
  <script>
    const expectedValues = [
      // [time, element-id, property, expected-value, tolerance]
      [0.2, "box1", "transform", [1,0,0,1, 20,0], 20],
      [0.2, "box2", "transform", [1,0,0,1, 20,0], 20],
      [0.2, "box3", "transform", [1,0,0,1, 180,0], 20],
      [0.2, "box4", "transform", [1,0,0,1, 180,0], 20],
      [2.2, "box1", "transform", [1,0,0,1, 20,0], 20],
      [2.2, "box2", "transform", [1,0,0,1, 180,0], 20],
      [2.2, "box3", "transform", [1,0,0,1, 180,0], 20],
      [2.2, "box4", "transform", [1,0,0,1, 20,0], 20],
      [0.2, "box5", "transform", [1,0,0,1, 40,0], 20],
      [0.2, "box6", "transform", [1,0,0,1, 40,0], 20],
      [0.2, "box7", "transform", [1,0,0,1, 180,0], 20],
      [0.2, "box8", "transform", [1,0,0,1, 180,0], 20],
      [2.2, "box5", "transform", [1,0,0,1, 40,0], 20],
      [2.2, "box6", "transform", [1,0,0,1, 180,0], 20],
      [2.2, "box7", "transform", [1,0,0,1, 180,0], 20],
      [2.2, "box8", "transform", [1,0,0,1, 40,0], 20],
    ];

    runAnimationTest(expectedValues);

  </script>
</head>
<body>
<div id="box1" class="box move1 normal">2 keyframes: normal</div>
<div id="box2" class="box move1 alternate">2 keyframes: alternate</div>
<div id="box3" class="box move1 reverse">2 keyframes: reverse</div>
<div id="box4" class="box move1 alternate-reverse">2 keyframes: alternate-reverse</div>
<div id="box5" class="box move2 normal">4 keyframes: normal</div>
<div id="box6" class="box move2 alternate">4 keyframes: alternate</div>
<div id="box7" class="box move2 reverse">4 keyframes: reverse</div>
<div id="box8" class="box move2 alternate-reverse">4 keyframes: alternate-reverse</div>
<div id="result"></div>
</div>
</body>
</html>