animation-worklet

edit

WPT coverage of the tests of animation-worklet at the revision 5602b0f210e3. The tests link to their results in the browsers on wpt.fyi. The tentative tests (experimental features) and the reftests are listed separately from the stable tests.

GroupPassingTestsDisabledPass rate
Stable1523065%
Tentative000–
Reftests1015067%
All2538066%

Failure reasons

The tests that do not pass (failing or disabled), by kind of reason. A test with several reasons counts once per kind.

  • TEST BUG: 13

Stable tests

TestResultSubtestsKindDescription
animate-multiple-effects-on-different-targets-via-main-thread.https.htmlPass1 / 1
animate-non-accelerated-property.https.htmlPass1 / 1
animation-worklet-inside-iframe.https.htmlPass1 / 1
animator-with-options.https.htmlPass1 / 1
cancel-non-accelerated-property.https.htmlPass1 / 1
current-time.https.htmlPass2 / 2
idlharness.any.jsFail25 / 33TEST BUGthe object of the test, new WorkletAnimation("name"), throws a TypeError: no animator named name is registered in the animation worklet ("If documentAnimatorDefinitions[animatorName] does not exists, throw an TypeError"), and the worker variant evaluates it in a worker, where WorkletAnimation ([Exposed=Window]) is not defined; CSS.animationWorklet is only exposed in the secure contexts, as the Worklet interface it returns, and the test is not served over HTTPS (see css/css-paint-api/idlharness.html); these subtests fail in every browser
inactive-timeline.https.htmlFail0 / 1TEST BUGthe test uses the scrollSource option and attribute of ScrollTimeline, of an old draft of Scroll-driven Animations (now source; the times are now progress-based instead of the times of a timeRange): animation.timeline.scrollSource is undefined and the test throws; fails in every browser
multiple-effects-on-same-target-driven-by-individual-local-time.https.htmlPass1 / 1
playback-rate.https.htmlTimeout6 / 12TEST BUGthe scroll-linked subtests use the scrollSource option and attribute of ScrollTimeline, of an old draft of Scroll-driven Animations (now source): animation.timeline.scrollSource is undefined and they throw (the last one waits for a local time in milliseconds that a progress-based timeline never gives: it times out); they fail in every browser
scroll-timeline-writing-modes.https.htmlFail0 / 5TEST BUGthe test creates its timeline with new ScrollTimeline({ scrollSource, orientation }), the options of an old draft of Scroll-driven Animations (now source and axis, with progress-based times instead of the times of a timeRange): the unknown members are ignored, so the timeline is the scroll timeline of the scrolling element of the document, which does not scroll (its progress stays 0%, so the transform is the one of the first keyframe); fails in every browser
stateful-animator.https.htmlPass6 / 6
worklet-animation-animator-name.https.htmlFail0 / 1TEST BUGthe test has no encoding declaration and one of its animator names is Persian: decoded as windows-1252 (UTF-8 is not detected for a document of the network, as in the browsers: encoding-detection/utf-8.html), the name contains code points that are not identifier code points (U+00AF, U+00B2…), so registerAnimator() throws a TypeError ("If name is not a valid ") and the module does not register the animators
worklet-animation-creation.https.htmlFail6 / 8TEST BUGnew WorkletAnimation('test-animator', []) is expected to throw a NotSupportedError: the draft creates a WorkletGroupEffect without children (https://drafts.css-houdini.org/css-animation-worklet-1/#dom-workletanimation-workletanimation); new WorkletAnimation('unregistered-animator', effect) is expected to throw an InvalidStateError DOMException: the draft, which is followed, throws a TypeError ("If documentAnimatorDefinitions[animatorName] does not exists, throw an TypeError"); both are behaviors of the former Chromium implementation; they fail in every browser
worklet-animation-duration.https.htmlPass1 / 1
worklet-animation-get-computed-timing-progress-on-worklet-thread.https.htmlPass1 / 1
worklet-animation-local-time-null-1.https.htmlTimeout2 / 4TEST BUGthe last two subtests wait for animation.currentTime > 1000 on an animation whose effect ends at 1000 ms: a worklet animation is an animation, which is finished and whose current time is limited to the end of its effect (https://drafts.csswg.org/web-animations-1/#update-an-animations-finished-state), so the animator never gets a current time over 1000 and the subtest times out; the worklet animations of the former Chromium implementation never finished
worklet-animation-pause.https.htmlPass2 / 2
worklet-animation-play.https.htmlPass2 / 2
worklet-animation-with-effects-from-different-frames.https.htmlPass1 / 1
worklet-animation-with-fill-mode.https.htmlPass6 / 6
worklet-animation-with-invalid-effect.https.htmlFail0 / 1TEST BUGplay() is expected to throw an InvalidStateError for an effect without keyframes: neither Web Animations nor the Animation Worklet draft make such an effect invalid (a behavior of the former Chromium implementation); fails in every browser
worklet-animation-without-target.https.htmlPass2 / 2

Reftests

TestResultVariantsKindDescription
worklet-animation-cancel.https.htmlPass1 / 1
worklet-animation-get-timing-on-worklet-thread.https.htmlPass1 / 1
worklet-animation-local-time-after-duration.https.htmlPass1 / 1
worklet-animation-local-time-before-start.https.htmlPass1 / 1
worklet-animation-local-time-null-2.https.htmlTimeout0 / 1TEST BUGthe test waits for animation.currentTime > 1000 on an animation whose effect ends at 1000 ms before it takes the screenshot: a worklet animation is an animation, which is finished and whose current time is limited to the end of its effect (https://drafts.csswg.org/web-animations-1/#update-an-animations-finished-state), so the screenshot is never taken; the worklet animations of the former Chromium implementation never finished
worklet-animation-pause-immediately.https.htmlPass1 / 1
worklet-animation-pause-resume.https.htmlPass1 / 1
worklet-animation-set-keyframes.https.htmlPass1 / 1
worklet-animation-set-timing.https.htmlPass1 / 1
worklet-animation-start-delay.https.htmlPass1 / 1
worklet-animation-with-non-ascii-name.https.htmlTimeout0 / 1TEST BUGthe test has no encoding declaration and one of its animator names is Japanese: decoded as windows-1252 (UTF-8 is not detected for a document of the network, as in the browsers: encoding-detection/utf-8.html), the name contains code points that are not identifier code points, so registerAnimator() throws a TypeError ("If name is not a valid "), the module does not register the animators and the constructor of the worklet animations throws before the screenshot is taken
worklet-animation-with-scroll-timeline-and-display-none.https.htmlFail0 / 1TEST BUGthe test creates its timeline with new ScrollTimeline({ scrollSource, orientation }), the options of an old draft of Scroll-driven Animations (now source and axis, with progress-based times instead of the times of a timeRange): the unknown members are ignored, so the timeline is the scroll timeline of the scrolling element of the document, which does not scroll (the animated box stays at its first keyframe, the same test with the root scroller passes); fails in every browser
worklet-animation-with-scroll-timeline-and-overflow-hidden.https.htmlFail0 / 1TEST BUGthe test creates its timeline with new ScrollTimeline({ scrollSource, orientation }), the options of an old draft of Scroll-driven Animations (now source and axis, with progress-based times instead of the times of a timeRange): the unknown members are ignored, so the timeline is the scroll timeline of the scrolling element of the document, which does not scroll (the animated box stays at its first keyframe, the same test with the root scroller passes); fails in every browser
worklet-animation-with-scroll-timeline-root-scroller.https.htmlPass1 / 1
worklet-animation-with-scroll-timeline.https.htmlFail0 / 1TEST BUGthe test creates its timeline with new ScrollTimeline({ scrollSource, orientation }), the options of an old draft of Scroll-driven Animations (now source and axis, with progress-based times instead of the times of a timeRange): the unknown members are ignored, so the timeline is the scroll timeline of the scrolling element of the document, which does not scroll (the animated box stays at its first keyframe, the same test with the root scroller passes); fails in every browser