This is a testharness.js-based test.
PASS Test pausing then playing does not change the finished promise 
PASS Test restarting a finished animation 
PASS Test restarting a reversed finished animation 
PASS Test redundant finishing of animation 
PASS Finished promise does not resolve when paused 
PASS Finished promise does not resolve when pause-pending 
PASS The finished promise is fulfilled with its Animation 
PASS finished promise is rejected when an animation is cancelled by calling cancel() 
PASS cancelling an already-finished animation replaces the finished promise 
FAIL cancelling an idle animation still replaces the finished promise assert_not_equals: A redundant call to cancel() should still generate a new finished promise got disallowed value object "[object Promise]"
FAIL Test finished promise changes for animation duration changes assert_false: shortening of the animation duration should resolve the finished promise expected false got true
PASS Test finished promise changes when playbackRate == 0 
PASS Test finished promise resolves when reaching to the natural boundary. 
PASS Test finished promise changes when a prior finished promise resolved and the animation falls out finished state 
PASS Test no new finished promise generated when finished state is checked asynchronously 
PASS Test new finished promise generated when finished state is checked synchronously 
FAIL Test synchronous finished promise resolved even if finished state is changed soon assert_true: Animation.finished should be resolved even if the finished state is changed soon expected true got false
FAIL Test synchronous finished promise resolved even if asynchronous finished promise happens just before synchronous promise assert_true: Animation.finished should be resolved soon after finish() is called even if there are other asynchronous promises just before it expected true got false
PASS Test finished promise is not resolved when the animation falls out finished state immediately 
FAIL Test finished promise is not resolved once the animation falls out finished state even though the current finished promise is generated soon after animation state became finished assert_unreached: Animation.finished should not be resolved Reached unreachable code
PASS Finished promise should be resolved after the ready promise is resolved 
PASS Finished promise should be rejected after the ready promise is rejected 
Harness: the test ran to completion.

