<!doctype html> <meta charset=utf-8> <title>CSSAnimation.playState</title> <!-- TODO: Add a more specific link for this once it is specified. --> <link rel="help" href="https://drafts.csswg.org/css-animations-2/#cssanimation"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="support/testcommon.js"></script> <style> @keyframes anim { } </style> <div id="log"></div> <script> 'use strict'; test(t => { const div = addDiv(t, { 'style': 'animation: anim 100s' }); const animation = div.getAnimations()[0]; assert_true(animation.pending); assert_equals(animation.playState, 'running'); assert_equals(animation.startTime, null); }, 'A new CSS animation is initially play-pending'); test(t => { const div = addDiv(t, { 'style': 'animation: anim 1000s paused' }); const animation = div.getAnimations()[0]; assert_equals(animation.playState, 'paused'); }, 'Animation returns correct playState when paused'); test(t => { const div = addDiv(t, { 'style': 'animation: anim 1000s' }); const animation = div.getAnimations()[0]; animation.pause(); assert_equals(animation.playState, 'paused'); }, 'Animation.playState updates when paused by script'); test(t => { const div = addDiv(t, { 'style': 'animation: anim 1000s paused' }); const animation = div.getAnimations()[0]; div.style.animationPlayState = 'running'; // This test also checks that calling playState flushes style assert_equals(animation.playState, 'running', 'Animation.playState reports running after updating' + ' animation-play-state (got: ' + animation.playState + ')'); }, 'Animation.playState updates when resumed by setting style'); test(t => { const div = addDiv(t, { 'style': 'animation: anim 1000s' }); const animation = div.getAnimations()[0]; animation.cancel(); assert_equals(animation.playState, 'idle'); }, 'Animation returns correct playState when canceled'); </script>