chromium/third_party/blink/web_tests/animations/missing-from-to-transforms.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Test animation with missing from and to keyframes</title>
  <style type="text/css" media="screen">
    .box {
      position: relative;
      left: 10px;
      top: 10px;
      height: 20px;
      width: 20px;
      transform: translateX(10px);
      background-color: blue;
      animation-duration: 2s;
      animation-timing-function: linear;
    }
  
    #box1 {
      animation-name: anim1;
    }
    @keyframes anim1 {
      from { transform: translateX(10px); }
      40% { transform: translateX(30px); }
      60% { transform: translateX(10px); }
      to { transform: translateX(20px); }
    }

    #box2 {
      animation-name: anim2;
      background-color: red;
    }
    @keyframes anim2 {
      40% { transform: translateX(30px); }
      60% { transform: translateX(10px); }
      to { transform: translateX(20px); }
    }

    #box3 {
      transform: translateX(20px);
      animation-name: anim3;
      background-color: green;
    }
    @keyframes anim3 {
      from { transform: translateX(10px); }
      40% { transform: translateX(30px); }
      60% { transform: translateX(10px); }
    }

    #box4 {
      animation-name: anim4;
      background-color: yellow;
    }
    @keyframes anim4 {
      40% { transform: translateX(30px); }
      60% { transform: translateX(20px); }
    }

    #result {
      margin-top: 20px;
    }
  </style>
  <script src="resources/animation-test-helpers.js" type="text/javascript" charset="utf-8"></script>
  <script type="text/javascript" charset="utf-8">

    const expectedValues = [
      // [time, element-id, property, expected-value, tolerance]
      [0.4, "box1", "transform.4", 20, 2],
      [1.0, "box1", "transform.4", 20, 2],
      [1.6, "box1", "transform.4", 15, 2],
      [0.4, "box2", "transform.4", 20, 2],
      [1.0, "box2", "transform.4", 20, 2],
      [1.6, "box2", "transform.4", 15, 2],
      [0.4, "box3", "transform.4", 20, 2],
      [1.0, "box3", "transform.4", 20, 2],
      [1.6, "box3", "transform.4", 15, 2],
      [0.4, "box4", "transform.4", 20, 2],
      [1.0, "box4", "transform.4", 25, 2],
      [1.6, "box4", "transform.4", 15, 2]
    ];

    runAnimationTest(expectedValues);
    
  </script>
</head>
<body>
This test performs animations of the transform property on four boxes over 2 seconds.
Box 1 has all keyframes. Box 2 has a missing "from" keyframe.
Box 3 has a missing "to" keyframe.
Box 4 has both "from" and "to" keyframes missing, but other keyframes which
should trigger the generation of "from" and "to". Box 5 has no keyframes, and
should not animate.
The test takes 3 snapshots each and expects each result to be within a specified range.
<div class="box" id="box1">
</div>
<div class="box" id="box2">
</div>
<div class="box" id="box3">
</div>
<div class="box" id="box4">
</div>
<div id="result">
</div>
</body>
</html>