|
@@ -0,0 +1,34 @@
|
|
|
|
+<!DOCTYPE html>
|
|
|
|
+<div id="foo"></div>
|
|
|
|
+<script src="../../include.js"></script>
|
|
|
|
+<script>
|
|
|
|
+ asyncTest(async done => {
|
|
|
|
+ const foo = document.getElementById("foo");
|
|
|
|
+ let animation = foo.animate({ opacity: [0, 1] }, { duration: 100 });
|
|
|
|
+ let finishedPromise = animation.finished;
|
|
|
|
+
|
|
|
|
+ // FIXME: Figure out how to consistently test timings
|
|
|
|
+ // const currentTime = performance.now();
|
|
|
|
+ await finishedPromise;
|
|
|
|
+ // const elapsedTime = performance.now() - currentTime;
|
|
|
|
+ // if (elapsedTime > 95 && elapsedTime < 105)
|
|
|
|
+ // println("Animation time after 100ms is correct")
|
|
|
|
+
|
|
|
|
+ println(`finished promise remains after finishing: ${Object.is(finishedPromise, animation.finished)}`);
|
|
|
|
+
|
|
|
|
+ animation.play();
|
|
|
|
+ println(`finished promise updates after playing: ${!Object.is(finishedPromise, animation.finished)}`);
|
|
|
|
+ finishedPromise = animation.finished;
|
|
|
|
+
|
|
|
|
+ // Upon cancellation, the finished promise should be rejected
|
|
|
|
+ finishedPromise.then(() => {
|
|
|
|
+ println("Unexpected finished promise resolution");
|
|
|
|
+ }).catch(() => {
|
|
|
|
+ println("Expected finished promise cancellation");
|
|
|
|
+ });
|
|
|
|
+ animation.cancel();
|
|
|
|
+
|
|
|
|
+ println(`cancel() updates finished promise: ${!Object.is(finishedPromise, animation.finished)}`);
|
|
|
|
+ done();
|
|
|
|
+ });
|
|
|
|
+</script>
|