Click here to download the Blitz Browser!

WPT

wpt / web-animations / interfaces / Animatable / animate.html

Spec: Web Animations ↗

Runs: Chrome 155.0.8041.0 (wpt@18be93235, 2026-09-04) | Firefox 157.0a1 (wpt@1b4bc17cf, 2026-09-04) | Safari 251 preview (wpt@2c385f65e, 2026-09-04) | Ladybird 1.0-17043 (wpt@25681acff, 2026-09-04) | Servo Servo 0.6 (wpt@2c385f65e, 2026-09-04) | Blitz a50cb8971 (wpt@a95401e4e, 2026-09-03)

View on the Blitz WPT dashboard | Open test on wpt.live | wpt.fyi

ChromeFirefoxSafariLadybirdServoBlitz
Total153/153150/153152/153141/15355/153NOT RUN
SubtestChromeFirefoxSafariLadybirdServoBlitz
Element.animate() creates an Animation objectPASSPASSPASSPASSFAIL
Element.animate() creates an Animation object in the relevant realm of the target elementPASSPASSPASSPASSFAIL
Element.animate() creates an Animation object with a KeyframeEffectPASSPASSPASSPASSFAIL
Element.animate() creates an Animation object with a KeyframeEffect that is created in the relevant realm of the target elementPASSPASSPASSPASSFAIL
Element.animate() accepts empty keyframe lists (input: [])PASSPASSPASSPASSFAIL
Element.animate() accepts empty keyframe lists (input: null)PASSPASSPASSPASSFAIL
Element.animate() accepts empty keyframe lists (input: undefined)PASSPASSPASSPASSFAIL
Element.animate() accepts a one property two value property-indexed keyframes specificationPASSPASSPASSPASSFAIL
Element.animate() accepts a one shorthand property two value property-indexed keyframes specificationPASSPASSPASSPASSFAIL
Element.animate() accepts a two property (one shorthand and one of its longhand components) two value property-indexed keyframes specificationPASSPASSPASSPASSFAIL
Element.animate() accepts a two property (one shorthand and one of its shorthand components) two value property-indexed keyframes specificationPASSPASSPASSPASSFAIL
Element.animate() accepts a two property two value property-indexed keyframes specificationPASSPASSPASSPASSFAIL
Element.animate() accepts a two property property-indexed keyframes specification with different numbers of valuesPASSPASSPASSPASSFAIL
Element.animate() accepts a property-indexed keyframes specification with an invalid valuePASSPASSPASSPASSFAIL
Element.animate() accepts a one property two value property-indexed keyframes specification that needs to stringify its valuesPASSPASSPASSPASSFAIL
Element.animate() accepts a property-indexed keyframes specification with a CSS variable referencePASSPASSPASSPASSFAIL
Element.animate() accepts a property-indexed keyframes specification with a CSS variable reference in a shorthand propertyPASSPASSPASSPASSFAIL
Element.animate() accepts a one property one value property-indexed keyframes specificationPASSPASSPASSPASSFAIL
Element.animate() accepts a one property one non-array value property-indexed keyframes specificationPASSPASSPASSPASSFAIL
Element.animate() accepts a one property two value property-indexed keyframes specification where the first value is invalidPASSPASSPASSPASSFAIL
Element.animate() accepts a one property two value property-indexed keyframes specification where the second value is invalidPASSPASSPASSPASSFAIL
Element.animate() accepts a property-indexed keyframes specification with a CSS variable as the propertyPASSPASSPASSPASSFAIL
Element.animate() accepts a property-indexed keyframe with a single offsetPASSPASSPASSFAILFAIL
Element.animate() accepts a property-indexed keyframe with an array of offsetsPASSPASSPASSPASSFAIL
Element.animate() accepts a property-indexed keyframe with an array of offsets that is too shortPASSPASSPASSPASSFAIL
Element.animate() accepts a property-indexed keyframe with an array of offsets that is too longPASSPASSPASSPASSFAIL
Element.animate() accepts a property-indexed keyframe with an empty array of offsetsPASSPASSPASSPASSFAIL
Element.animate() accepts a property-indexed keyframe with an array of offsets with an embedded null valuePASSPASSPASSFAILFAIL
Element.animate() accepts a property-indexed keyframe with an array of offsets with a trailing null valuePASSPASSPASSFAILFAIL
Element.animate() accepts a property-indexed keyframe with an array of offsets with leading and trailing null valuesPASSPASSPASSFAILFAIL
Element.animate() accepts a property-indexed keyframe with an array of offsets with adjacent null valuesPASSPASSPASSFAILFAIL
Element.animate() accepts a property-indexed keyframe with an array of offsets with all null values (and too many at that)PASSPASSPASSFAILFAIL
Element.animate() accepts a property-indexed keyframe with a single null offsetPASSPASSPASSPASSFAIL
Element.animate() accepts a property-indexed keyframe with an array of offsets that is not strictly ascending in the unused part of the arrayPASSPASSPASSPASSFAIL
Element.animate() accepts a property-indexed keyframe without any specified easingPASSPASSPASSPASSFAIL
Element.animate() accepts a property-indexed keyframe with a single easingPASSPASSPASSPASSFAIL
Element.animate() accepts a property-indexed keyframe with an array of easingsPASSPASSPASSPASSFAIL
Element.animate() accepts a property-indexed keyframe with an array of easings that is too shortPASSPASSPASSPASSFAIL
Element.animate() accepts a property-indexed keyframe with a single-element array of easingsPASSPASSPASSPASSFAIL
Element.animate() accepts a property-indexed keyframe with an empty array of easingsPASSPASSPASSPASSFAIL
Element.animate() accepts a property-indexed keyframe with an array of easings that is too longPASSPASSPASSPASSFAIL
Element.animate() accepts a property-indexed keyframe with a single composite operationPASSPASSPASSPASSFAIL
Element.animate() accepts a property-indexed keyframe with a composite arrayPASSPASSPASSPASSFAIL
Element.animate() accepts a property-indexed keyframe with a composite array that is too shortPASSPASSPASSPASSFAIL
Element.animate() accepts a property-indexed keyframe with a composite array that is too longPASSPASSPASSPASSFAIL
Element.animate() accepts a property-indexed keyframe with a single-element composite arrayPASSPASSPASSPASSFAIL
Element.animate() accepts a one property one keyframe sequencePASSPASSPASSPASSFAIL
Element.animate() accepts a one property two keyframe sequencePASSPASSPASSPASSFAIL
Element.animate() accepts a two property two keyframe sequencePASSPASSPASSPASSFAIL
Element.animate() accepts a one shorthand property two keyframe sequencePASSPASSPASSPASSFAIL
Element.animate() accepts a two property (a shorthand and one of its component longhands) two keyframe sequencePASSPASSPASSPASSFAIL
Element.animate() accepts a two property keyframe sequence where one property is missing from the first keyframePASSPASSPASSPASSFAIL
Element.animate() accepts a two property keyframe sequence where one property is missing from the last keyframePASSPASSPASSPASSFAIL
Element.animate() accepts a one property two keyframe sequence that needs to stringify its valuesPASSPASSPASSPASSFAIL
Element.animate() accepts a keyframe sequence with a CSS variable referencePASSPASSPASSPASSFAIL
Element.animate() accepts a keyframe sequence with a CSS variable reference in a shorthand propertyPASSPASSPASSPASSFAIL
Element.animate() accepts a keyframe sequence with a CSS variable as its propertyPASSPASSPASSPASSFAIL
Element.animate() accepts a keyframe sequence with duplicate values for a given interior offsetPASSPASSPASSPASSFAIL
Element.animate() accepts a keyframe sequence with duplicate values for offsets 0 and 1PASSPASSPASSPASSFAIL
Element.animate() accepts a two property four keyframe sequencePASSPASSPASSPASSFAIL
Element.animate() accepts a single keyframe sequence with omitted offsetPASSPASSPASSPASSFAIL
Element.animate() accepts a single keyframe sequence with null offsetPASSPASSPASSFAILFAIL
Element.animate() accepts a single keyframe sequence with string offsetPASSPASSPASSPASSFAIL
Element.animate() accepts a single keyframe sequence with a single calc() offsetPASSPASSFAILFAILFAIL
Element.animate() accepts a one property keyframe sequence with some omitted offsetsPASSPASSPASSFAILFAIL
Element.animate() accepts a one property keyframe sequence with some null offsetsPASSPASSPASSFAILFAIL
Element.animate() accepts a two property keyframe sequence with some omitted offsetsPASSPASSPASSFAILFAIL
Element.animate() accepts a one property keyframe sequence with all omitted offsetsPASSPASSPASSPASSFAIL
Element.animate() accepts a keyframe sequence with different easing values, but the same easing value for a given offsetPASSPASSPASSPASSFAIL
Element.animate() accepts a keyframe sequence with different composite values, but the same composite value for a given offsetPASSPASSPASSPASSFAIL
Element.animate() does not accept keyframes with an out-of-bounded positive offsetPASSPASSPASSPASSPASS
Element.animate() does not accept keyframes with an out-of-bounded negative offsetPASSPASSPASSPASSPASS
Element.animate() does not accept property-indexed keyframes not loosely sorted by offsetPASSPASSPASSPASSPASS
Element.animate() does not accept property-indexed keyframes not loosely sorted by offset even though not all offsets are specifiedPASSPASSPASSPASSPASS
Element.animate() does not accept property-indexed keyframes with offsets out of rangePASSPASSPASSPASSPASS
Element.animate() does not accept keyframes not loosely sorted by offsetPASSPASSPASSPASSPASS
Element.animate() does not accept property-indexed keyframes with an invalid easing valuePASSPASSPASSPASSPASS
Element.animate() does not accept property-indexed keyframes with an invalid easing value as one of the array valuesPASSPASSPASSPASSPASS
Element.animate() does not accept property-indexed keyframe with an invalid easing in the unused part of the array of easingsPASSPASSPASSPASSPASS
Element.animate() does not accept empty property-indexed keyframe with an invalid easingPASSPASSPASSPASSPASS
Element.animate() does not accept empty property-indexed keyframe with an invalid easings arrayPASSPASSPASSPASSPASS
Element.animate() does not accept a keyframe sequence with an invalid easing valuePASSPASSPASSPASSPASS
Element.animate() does not accept property-indexed keyframes with an invalid composite valuePASSPASSPASSPASSPASS
Element.animate() does not accept property-indexed keyframes with an invalid composite value as one of the array valuesPASSPASSPASSPASSPASS
Element.animate() does not accept keyframes with an invalid composite valuePASSPASSPASSPASSPASS
Element.animate() accepts a double as an options argumentPASSPASSPASSPASSFAIL
Element.animate() accepts a KeyframeAnimationOptions argumentPASSPASSPASSPASSFAIL
Element.animate() accepts an absent options argumentPASSPASSPASSPASSFAIL
Element.animate() does not accept invalid delay value: NaNPASSPASSPASSPASSPASS
Element.animate() does not accept invalid delay value: InfinityPASSPASSPASSPASSPASS
Element.animate() does not accept invalid delay value: -InfinityPASSPASSPASSPASSPASS
Element.animate() accepts a duration of 'auto' using a dictionary objectPASSPASSPASSPASSFAIL
Element.animate() does not accept invalid duration value: -1PASSPASSPASSPASSPASS
Element.animate() does not accept invalid duration value: NaNPASSPASSPASSPASSPASS
Element.animate() does not accept invalid duration value: -InfinityPASSPASSPASSPASSPASS
Element.animate() does not accept invalid duration value: "abc"PASSPASSPASSPASSPASS
Element.animate() does not accept invalid duration value: -1 using a dictionary objectPASSPASSPASSPASSPASS
Element.animate() does not accept invalid duration value: NaN using a dictionary objectPASSPASSPASSPASSPASS
Element.animate() does not accept invalid duration value: -Infinity using a dictionary objectPASSPASSPASSPASSPASS
Element.animate() does not accept invalid duration value: "abc" using a dictionary objectPASSPASSPASSPASSPASS
Element.animate() does not accept invalid duration value: "100" using a dictionary objectPASSPASSPASSPASSPASS
Element.animate() does not accept invalid easing: ''PASSPASSPASSPASSPASS
Element.animate() does not accept invalid easing: '7'PASSPASSPASSPASSPASS
Element.animate() does not accept invalid easing: 'test'PASSPASSPASSPASSPASS
Element.animate() does not accept invalid easing: 'initial'PASSPASSPASSPASSPASS
Element.animate() does not accept invalid easing: 'inherit'PASSPASSPASSPASSPASS
Element.animate() does not accept invalid easing: 'unset'PASSPASSPASSPASSPASS
Element.animate() does not accept invalid easing: 'unrecognized'PASSPASSPASSPASSPASS
Element.animate() does not accept invalid easing: 'var(--x)'PASSPASSPASSPASSPASS
Element.animate() does not accept invalid easing: 'ease-in-out, ease-out'PASSPASSPASSPASSPASS
Element.animate() does not accept invalid easing: 'cubic-bezier(1.1, 0, 1, 1)'PASSPASSPASSPASSPASS
Element.animate() does not accept invalid easing: 'cubic-bezier(0, 0, 1.1, 1)'PASSPASSPASSPASSPASS
Element.animate() does not accept invalid easing: 'cubic-bezier(-0.1, 0, 1, 1)'PASSPASSPASSPASSPASS
Element.animate() does not accept invalid easing: 'cubic-bezier(0, 0, -0.1, 1)'PASSPASSPASSPASSPASS
Element.animate() does not accept invalid easing: 'cubic-bezier(0.1, 0, 4, 0.4)'PASSPASSPASSPASSPASS
Element.animate() does not accept invalid easing: 'steps(-1, start)'PASSPASSPASSPASSPASS
Element.animate() does not accept invalid easing: 'steps(0.1, start)'PASSPASSPASSPASSPASS
Element.animate() does not accept invalid easing: 'steps(3, nowhere)'PASSPASSPASSPASSPASS
Element.animate() does not accept invalid easing: 'steps(-3, end)'PASSPASSPASSPASSPASS
Element.animate() does not accept invalid easing: 'function (a){return a}'PASSPASSPASSPASSPASS
Element.animate() does not accept invalid easing: 'function (x){return x}'PASSPASSPASSPASSPASS
Element.animate() does not accept invalid easing: 'function(x, y){return 0.3}'PASSPASSPASSPASSPASS
Element.animate() does not accept invalid iterationStart value: -1PASSPASSPASSPASSPASS
Element.animate() does not accept invalid iterationStart value: NaNPASSPASSPASSPASSPASS
Element.animate() does not accept invalid iterationStart value: InfinityPASSPASSPASSPASSPASS
Element.animate() does not accept invalid iterationStart value: -InfinityPASSPASSPASSPASSPASS
Element.animate() does not accept invalid iterations value: -1PASSPASSPASSPASSPASS
Element.animate() does not accept invalid iterations value: -InfinityPASSPASSPASSPASSPASS
Element.animate() does not accept invalid iterations value: NaNPASSPASSPASSPASSPASS
Element.animate() correctly sets the id attribute when no id is specifiedPASSPASSPASSPASSFAIL
Element.animate() correctly sets the id attributePASSPASSPASSPASSFAIL
Element.animate() correctly sets the Animation's timelinePASSPASSPASSPASSFAIL
Element.animate() correctly sets the Animation's timeline when triggered on an element in a different documentPASSPASSPASSPASSFAIL
Element.animate() correctly sets the Animation's timeline with no timeline parameter in KeyframeAnimationOptions.PASSPASSPASSPASSFAIL
Element.animate() correctly sets the Animation's timeline with undefined timeline in KeyframeAnimationOptions.PASSPASSPASSPASSFAIL
Element.animate() correctly sets the Animation's timeline with null timeline in KeyframeAnimationOptions.PASSPASSPASSPASSFAIL
Element.animate() correctly sets the Animation's timeline with DocumentTimeline in KeyframeAnimationOptions.PASSPASSPASSPASSFAIL
Element.animate() calls play on the AnimationPASSPASSPASSPASSFAIL
Element.animate() does NOT trigger a style change eventPASSPASSPASSPASSFAIL
animate() with pseudoElement parameter creates an Animation objectPASSPASSPASSPASSFAIL
animate() with pseudoElement parameter without content creates an Animation objectPASSPASSPASSPASSFAIL
animate() with pseudoElement parameter creates an Animation object for ::markerPASSPASSPASSPASSFAIL
animate() with pseudoElement parameter creates an Animation object for ::first-linePASSFAILPASSPASSFAIL
animate() with pseudoElement an Animation object targeting the correct pseudo-elementPASSPASSPASSPASSFAIL
animate() with pseudoElement without content creates an Animation object targeting the correct pseudo-elementPASSPASSPASSPASSFAIL
animate() with pseudoElement an Animation object targeting the correct pseudo-element for ::markerPASSPASSPASSPASSFAIL
animate() with pseudoElement an Animation object targeting the correct pseudo-element for ::first-linePASSFAILPASSPASSFAIL
animate() with a non-null invalid pseudoElement '' throws a SyntaxErrorPASSPASSPASSPASSFAIL
animate() with a non-null invalid pseudoElement 'before' throws a SyntaxErrorPASSPASSPASSPASSFAIL
animate() with a non-null invalid pseudoElement ':abc' throws a SyntaxErrorPASSPASSPASSPASSFAIL
animate() with a non-null invalid pseudoElement '::abc' throws a SyntaxErrorPASSPASSPASSPASSFAIL
animate() with pseudoElement ::placeholder does not throwPASSFAILPASSPASSFAIL
Finished fill animation doesn't replace animation on a different pseudoElementPASSPASSPASSFAILFAIL