diff options
Diffstat (limited to 'testing/web-platform/tests/scroll-animations/css/animation-range-normal-matches-cover.html')
-rw-r--r-- | testing/web-platform/tests/scroll-animations/css/animation-range-normal-matches-cover.html | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/testing/web-platform/tests/scroll-animations/css/animation-range-normal-matches-cover.html b/testing/web-platform/tests/scroll-animations/css/animation-range-normal-matches-cover.html new file mode 100644 index 0000000000..44b08cab96 --- /dev/null +++ b/testing/web-platform/tests/scroll-animations/css/animation-range-normal-matches-cover.html @@ -0,0 +1,92 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<link rel="help" src="https://drafts.csswg.org/scroll-animations-1/#named-timeline-range"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/web-animations/testcommon.js"></script> +<script src="support/testcommon.js"></script> +<script src="/scroll-animations/scroll-timelines/testcommon.js"></script> +<title>Animation range 'normal' is equivalent to animation range 'cover'</title> +</head> +<style type="text/css"> + @keyframes anim-1 { + from { background-color: blue; } + to { background-color: white; } + } + @keyframes anim-2 { + from { opacity: 0.3; } + to { opacity: 1; } + } + #scroller { + border: 10px solid lightgray; + overflow-y: scroll; + overflow-x: hidden; + width: 300px; + height: 200px; + } + #target { + margin-top: 800px; + margin-bottom: 800px; + margin-left: 10px; + margin-right: 10px; + width: 100px; + height: 100px; + z-index: -1; + background-color: green; + animation: anim-1 auto linear, anim-2 auto linear; + animation-range: normal, cover; + view-timeline: t1; + animation-timeline: t1, t1; + } +</style> +<body> + <div id="scroller"> + <div id="target"></div> + </div> +</body> +<script type="text/javascript"> + async function runTest() { + function assert_range_equals(actual, expected) { + if (typeof expected == 'string') { + assert_equals(actual, expected); + } else { + assert_equals(actual.rangeName, expected.rangeName); + assert_equals(actual.offset.value, expected.offset.value); + } + } + + promise_test(async t => { + anims = target.getAnimations(); + assert_equals(anims.length, 2, "Expecting 2 animations"); + await anims[0].ready; + await anims[1].ready; + + assert_range_equals(anims[0].rangeStart, "normal"); + assert_range_equals(anims[0].rangeEnd, "normal"); + assert_range_equals(anims[1].rangeStart, + { rangeName: 'cover', offset: CSS.percent(0) }); + assert_range_equals(anims[1].rangeEnd, + { rangeName: 'cover', offset: CSS.percent(100) }); + + scroller.scrollTop = 600; // Start boundary for cover range. + await waitForNextFrame(); + + assert_percents_equal(anims[0].currentTime, 0, + 'currentTime at start of normal range'); + assert_percents_equal(anims[1].currentTime, 0, + 'currentTime at cover 0%'); + + scroller.scrollTop = 900; // End boundary for cover range. + await waitForNextFrame(); + + assert_percents_equal(anims[0].currentTime, 100, + 'currentTime at end of normal range'); + assert_percents_equal(anims[1].currentTime, 100, + 'currentTime at cover 100%'); + }, 'Changing the animation range updates the play state'); + } + + window.onload = runTest; +</script> |