| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../http/tests/inspector/resources/inspector-test.js"></script> |
| <script src="resources/lifecycle-utilities.js"></script> |
| <style> |
| @keyframes fade-in { |
| from { |
| color: red; |
| opacity: 0; |
| } |
| 50% { |
| color: green; |
| opacity: 0.5; |
| } |
| to { |
| color: blue; |
| opacity: 1; |
| } |
| } |
| div#target.active { |
| animation-name: fade-in; |
| animation-duration: 400ms; |
| animation-timing-function: cubic-bezier(0.1, 0.2, 0.3, 0.4); |
| animation-delay: 100ms; |
| animation-iteration-count: 2; |
| animation-direction: alternate; |
| animation-fill-mode: both; |
| } |
| </style> |
| <script> |
| function test() |
| { |
| let suite = InspectorTest.createAsyncSuite("Animation.Lifecycle"); |
| |
| suite.addTestCase({ |
| name: "Animation.Lifecycle.CSSAnimation", |
| description: "Check that Web Inspector is notified whenever CSS animations are created/destroyed.", |
| async test() { |
| InspectorTest.expectEqual(WI.animationManager.animationCollection.size, 0, "There should not be any animations."); |
| |
| let [animation] = await Promise.all([ |
| InspectorTest.AnimationLifecycleUtilities.awaitAnimationCreated(WI.Animation.Type.CSSAnimation), |
| InspectorTest.evaluateInPage(`document.getElementById("target").classList.add("active")`), |
| ]); |
| |
| await Promise.all([ |
| InspectorTest.AnimationLifecycleUtilities.awaitAnimationDestroyed(animation.animationId), |
| InspectorTest.AnimationLifecycleUtilities.destroyAnimations(), |
| InspectorTest.evaluateInPage(`document.getElementById("target").classList.remove("active")`), |
| ]); |
| }, |
| }); |
| |
| suite.runTestCasesAndFinish(); |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <p>Tests for the Animation.animationCreated and Animation.animationDestroyed events.</p> |
| <div id="target"></div> |
| </body> |
| </html> |