summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 01:47:29 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 01:47:29 +0000
commit0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d (patch)
treea31f07c9bcca9d56ce61e9a1ffd30ef350d513aa /testing/web-platform/tests/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html
parentInitial commit. (diff)
downloadfirefox-esr-0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d.tar.xz
firefox-esr-0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d.zip
Adding upstream version 115.8.0esr.upstream/115.8.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html')
-rw-r--r--testing/web-platform/tests/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html169
1 files changed, 169 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html b/testing/web-platform/tests/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html
new file mode 100644
index 0000000000..56925fb0bd
--- /dev/null
+++ b/testing/web-platform/tests/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html
@@ -0,0 +1,169 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>KeyframeEffect.getKeyframes() for CSS transitions</title>
+<!-- TODO: Add a more specific link for this once it is specified. -->
+<link rel="help" href="https://drafts.csswg.org/css-transitions-2/#csstransition">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/helper.js"></script>
+<style>
+:root {
+ --var-100px: 100px;
+}
+</style>
+<div id="log"></div>
+<script>
+'use strict';
+
+const getKeyframes = e => {
+ return e.getAnimations()[0].effect.getKeyframes();
+};
+
+const assert_frames_equal = (a, b, name) => {
+ assert_equals(
+ Object.keys(a).sort().toString(),
+ Object.keys(b).sort().toString(),
+ `properties on ${name}`
+ );
+ for (const p in a) {
+ assert_equals(a[p], b[p], `value for '${p}' on ${name}`);
+ }
+};
+
+test(t => {
+ const div = addDiv(t);
+
+ div.style.left = '0px';
+ getComputedStyle(div).transitionProperty;
+ div.style.transition = 'left 100s';
+ div.style.left = '100px';
+
+ const frames = getKeyframes(div);
+
+ assert_equals(frames.length, 2, 'number of frames');
+
+ const expected = [
+ { offset: 0,
+ computedOffset: 0,
+ easing: 'linear',
+ composite: 'auto',
+ left: '0px',
+ },
+ {
+ offset: 1,
+ computedOffset: 1,
+ easing: 'linear',
+ composite: 'auto',
+ left: '100px',
+ },
+ ];
+
+ for (let i = 0; i < frames.length; i++) {
+ assert_frames_equal(frames[i], expected[i], `ComputedKeyframe #${i}`);
+ }
+}, 'KeyframeEffect.getKeyframes() returns expected frames for a simple'
+ + ' transition');
+
+test(t => {
+ const div = addDiv(t);
+
+ div.style.left = '0px';
+ getComputedStyle(div).transitionProperty;
+ div.style.transition = 'left 100s steps(2,end)';
+ div.style.left = '100px';
+
+ const frames = getKeyframes(div);
+
+ assert_equals(frames.length, 2, 'number of frames');
+
+ const expected = [
+ {
+ offset: 0,
+ computedOffset: 0,
+ easing: 'linear',
+ composite: 'auto',
+ left: '0px',
+ },
+ {
+ offset: 1,
+ computedOffset: 1,
+ easing: 'linear',
+ composite: 'auto',
+ left: '100px',
+ },
+ ];
+
+ for (let i = 0; i < frames.length; i++) {
+ assert_frames_equal(frames[i], expected[i], `ComputedKeyframe #${i}`);
+ }
+}, 'KeyframeEffect.getKeyframes() returns frames unaffected by a non-default easing function');
+
+test(t => {
+ const div = addDiv(t);
+ div.style.left = '0px';
+ getComputedStyle(div).transitionProperty;
+ div.style.transition = 'left 100s';
+ div.style.left = 'var(--var-100px)';
+
+ const frames = getKeyframes(div);
+
+ // CSS transition endpoints are based on the computed value so we
+ // shouldn't see the variable reference
+ const expected = [
+ {
+ offset: 0,
+ computedOffset: 0,
+ easing: 'linear',
+ composite: 'auto',
+ left: '0px',
+ },
+ {
+ offset: 1,
+ computedOffset: 1,
+ easing: 'linear',
+ composite: 'auto',
+ left: '100px',
+ },
+ ];
+ for (let i = 0; i < frames.length; i++) {
+ assert_frames_equal(frames[i], expected[i], `ComputedKeyframe #${i}`);
+ }
+}, 'KeyframeEffect.getKeyframes() returns expected frames for a'
+ + ' transition with a CSS variable endpoint');
+
+test(t => {
+ const div = addDiv(t);
+ div.style.left = '0px';
+ getComputedStyle(div).transitionProperty;
+ div.style.transition = 'left 100s';
+ div.style.left = '100px';
+
+ // Resetting the effect target before retrieving the keyframes should not
+ // affect the computed property values.
+ const anim = div.getAnimations()[0];
+ anim.effect.target = null;
+ const frames = anim.effect.getKeyframes();
+
+ const expected = [
+ {
+ offset: 0,
+ computedOffset: 0,
+ easing: 'linear',
+ composite: 'auto',
+ left: '0px',
+ },
+ {
+ offset: 1,
+ computedOffset: 1,
+ easing: 'linear',
+ composite: 'auto',
+ left: '100px',
+ },
+ ];
+ for (let i = 0; i < frames.length; i++) {
+ assert_frames_equal(frames[i], expected[i], `ComputedKeyframe #${i}`);
+ }
+}, 'KeyframeEffect.getKeyframes() returns expected frames for a'
+ + ' transition after resetting the effect target');
+
+</script>