|  | <!DOCTYPE html> | 
|  | <html> | 
|  | <head> | 
|  | <style type="text/css" media="screen"> | 
|  | .box { | 
|  | position: relative; | 
|  | margin: 10px; | 
|  | left: 0; | 
|  | width: 100px; | 
|  | height: 100px; | 
|  | background-color: blue; | 
|  | animation-duration: 2s; | 
|  | animation-timing-function: ease-in; | 
|  | } | 
|  |  | 
|  | #box1 { | 
|  | animation-name: move; | 
|  | } | 
|  | @keyframes move { | 
|  | from { | 
|  | opacity: 0; | 
|  | left: 100px; | 
|  | } | 
|  | 25% { | 
|  | opacity: 0.25; | 
|  | } | 
|  | 50% { | 
|  | left: 200px; | 
|  | animation-timing-function: linear; | 
|  | } | 
|  | to { | 
|  | left: 400px; | 
|  | } | 
|  | } | 
|  |  | 
|  | #box2 { | 
|  | animation-name: move2; | 
|  | } | 
|  | @keyframes move2 { | 
|  | from { | 
|  | opacity: 0; | 
|  | transform: translateX(100px); | 
|  | } | 
|  | 25% { | 
|  | opacity: 0.25; | 
|  | } | 
|  | 50% { | 
|  | transform: translateX(200px); | 
|  | animation-timing-function: linear; | 
|  | } | 
|  | to { | 
|  | transform: translateX(400px); | 
|  | } | 
|  | } | 
|  |  | 
|  | </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.5, "box1", "left", 132, 15], | 
|  | [0.5, "box2", "transform.4", 132, 15], | 
|  | [1.5, "box1", "left", 300, 15], | 
|  | [1.5, "box2", "transform.4", 300, 15], | 
|  | ]; | 
|  |  | 
|  | runAnimationTest(expectedValues); | 
|  | </script> | 
|  | </head> | 
|  | <body> | 
|  | <div id="box1" class="box"></div> | 
|  | <div id="box2" class="box"></div> | 
|  | <div id="result"> | 
|  | </div> | 
|  | </body> | 
|  | </html> |