summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/web-animations/responsive
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/web-animations/responsive
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/web-animations/responsive')
-rw-r--r--testing/web-platform/tests/web-animations/responsive/assorted-lengths.html102
-rw-r--r--testing/web-platform/tests/web-animations/responsive/backgroundPosition.html25
-rw-r--r--testing/web-platform/tests/web-animations/responsive/backgroundSize.html22
-rw-r--r--testing/web-platform/tests/web-animations/responsive/baselineShift.html43
-rw-r--r--testing/web-platform/tests/web-animations/responsive/borderImageWidth.html22
-rw-r--r--testing/web-platform/tests/web-animations/responsive/borderRadius.html39
-rw-r--r--testing/web-platform/tests/web-animations/responsive/borderWidth.html33
-rw-r--r--testing/web-platform/tests/web-animations/responsive/boxShadow.html30
-rw-r--r--testing/web-platform/tests/web-animations/responsive/clip.html45
-rw-r--r--testing/web-platform/tests/web-animations/responsive/columnCount.html32
-rw-r--r--testing/web-platform/tests/web-animations/responsive/columnGap.html49
-rw-r--r--testing/web-platform/tests/web-animations/responsive/d.html27
-rw-r--r--testing/web-platform/tests/web-animations/responsive/font-size-adjust.html32
-rw-r--r--testing/web-platform/tests/web-animations/responsive/fontSize.html72
-rw-r--r--testing/web-platform/tests/web-animations/responsive/fontWeight.html42
-rw-r--r--testing/web-platform/tests/web-animations/responsive/lineHeight.html80
-rw-r--r--testing/web-platform/tests/web-animations/responsive/minHeight.html35
-rw-r--r--testing/web-platform/tests/web-animations/responsive/offset-path.html27
-rw-r--r--testing/web-platform/tests/web-animations/responsive/offsetDistance.html57
-rw-r--r--testing/web-platform/tests/web-animations/responsive/offsetRotate.html43
-rw-r--r--testing/web-platform/tests/web-animations/responsive/opacity.html48
-rw-r--r--testing/web-platform/tests/web-animations/responsive/perspective.html49
-rw-r--r--testing/web-platform/tests/web-animations/responsive/resources/block.html10
-rw-r--r--testing/web-platform/tests/web-animations/responsive/rotate.html22
-rw-r--r--testing/web-platform/tests/web-animations/responsive/rowGap.html49
-rw-r--r--testing/web-platform/tests/web-animations/responsive/shapeMargin.html24
-rw-r--r--testing/web-platform/tests/web-animations/responsive/shapeOutside.html59
-rw-r--r--testing/web-platform/tests/web-animations/responsive/strokeDasharray.html28
-rw-r--r--testing/web-platform/tests/web-animations/responsive/text-size-adjust.html29
-rw-r--r--testing/web-platform/tests/web-animations/responsive/textIndent.html59
-rw-r--r--testing/web-platform/tests/web-animations/responsive/to-color-change.html253
-rw-r--r--testing/web-platform/tests/web-animations/responsive/to-inherited-change.html56
-rw-r--r--testing/web-platform/tests/web-animations/responsive/to-style-change.html44
-rw-r--r--testing/web-platform/tests/web-animations/responsive/toggle-animated-iframe-visibility-ref.html10
-rw-r--r--testing/web-platform/tests/web-animations/responsive/toggle-animated-iframe-visibility.html55
-rw-r--r--testing/web-platform/tests/web-animations/responsive/transform.html22
-rw-r--r--testing/web-platform/tests/web-animations/responsive/translate.html22
-rw-r--r--testing/web-platform/tests/web-animations/responsive/verticalAlign.html22
38 files changed, 1718 insertions, 0 deletions
diff --git a/testing/web-platform/tests/web-animations/responsive/assorted-lengths.html b/testing/web-platform/tests/web-animations/responsive/assorted-lengths.html
new file mode 100644
index 0000000000..50e01f766c
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/assorted-lengths.html
@@ -0,0 +1,102 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<div id='container'>
+<div id='element'></div>
+</div>
+
+<script>
+var element = document.getElementById('element');
+var container = document.getElementById('container');
+
+test(function() {
+ element.style.fontSize = '10px';
+ var player = element.animate([{bottom: '3em'}, {bottom: '5em'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.fontSize = '20px';
+ assert_equals(getComputedStyle(element).bottom, '80px');
+}, 'bottom responsive to style changes');
+
+test(function() {
+ element.style.fontSize = '10px';
+ var player = element.animate([{height: '3em'}, {height: '5em'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.fontSize = '20px';
+ assert_equals(getComputedStyle(element).height, '80px');
+}, 'height responsive to style changes');
+
+test(function() {
+ element.style.fontSize = '10px';
+ var player = element.animate([{letterSpacing: '3em'}, {letterSpacing: '5em'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.fontSize = '20px';
+ assert_equals(getComputedStyle(element).letterSpacing, '80px');
+}, 'letterSpacing responsive to style changes');
+
+test(function() {
+ var player = element.animate([{letterSpacing: 'normal'}, {letterSpacing: 'normal'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ assert_equals(getComputedStyle(element).letterSpacing, 'normal');
+}, 'letterSpacing can be normal');
+
+test(function() {
+ element.style.fontSize = '10px';
+ var player = element.animate([{marginRight: '3em'}, {marginRight: '5em'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.fontSize = '20px';
+ assert_equals(getComputedStyle(element).marginRight, '80px');
+}, 'marginRight responsive to style changes');
+
+test(function() {
+ element.style.fontSize = '10px';
+ container.style.width = '300px';
+ var player = element.animate([{marginRight: '3em'}, {marginRight: '50%'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.fontSize = '20px';
+ container.style.width = '600px';
+ assert_equals(getComputedStyle(element).marginRight, '180px');
+}, 'marginRight allows percentages');
+
+test(function() {
+ element.style.fontSize = '10px';
+ var player = element.animate([{outlineOffset: '3em'}, {outlineOffset: '5em'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.outline = 'dashed thin';
+ element.style.fontSize = '20px';
+ assert_equals(getComputedStyle(element).outlineOffset, '80px');
+}, 'outlineOffset responsive to style changes');
+
+test(function() {
+ container.style.fontSize = '10px';
+ var player = container.animate([{perspective: '3em'}, {perspective: '5em'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ container.style.fontSize = '20px';
+ assert_equals(getComputedStyle(container).perspective, '80px');
+}, 'perspective responsive to style changes');
+
+test(function() {
+ var player = element.animate([{perspective: 'none'}, {perspective: 'none'}], 10);
+ player.pause();
+ player.currentTime = 10;
+ assert_equals(getComputedStyle(element).perspective, 'none');
+}, 'perspective can be none');
+
+test(function() {
+ element.style.fontSize = '10px';
+ var player = element.animate([{wordSpacing: '3em'}, {wordSpacing: '5em'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.fontSize = '20px';
+ assert_equals(getComputedStyle(element).wordSpacing, '80px');
+}, 'wordSpacing responsive to style changes');
+
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/backgroundPosition.html b/testing/web-platform/tests/web-animations/responsive/backgroundPosition.html
new file mode 100644
index 0000000000..cd6c6991a3
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/backgroundPosition.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<div id='container'>
+<div id='element'></div>
+</div>
+
+<script>
+var element = document.getElementById('element');
+var container = document.getElementById('container');
+
+test(function() {
+ element.style.fontSize = '10px';
+ var player = element.animate([
+ {backgroundPosition: '10% 1em'},
+ {backgroundPosition: '20% 5em'}],
+ 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.fontSize = '20px';
+ assert_equals(getComputedStyle(element).backgroundPosition, '15% 60px');
+}, 'Background position responsive to style changes');
+
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/backgroundSize.html b/testing/web-platform/tests/web-animations/responsive/backgroundSize.html
new file mode 100644
index 0000000000..1e9ccf96a1
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/backgroundSize.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<div id='container'>
+<div id='element'></div>
+</div>
+
+<script>
+var element = document.getElementById('element');
+var container = document.getElementById('container');
+
+test(function() {
+ container.style.fontSize = '50px';
+ var player = element.animate([{backgroundSize: '300px 30px'}, {backgroundSize: '10em 1em'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ container.style.fontSize = '10px';
+ assert_equals(getComputedStyle(element).backgroundSize, '200px 20px');
+}, 'Border image width responsive to font size changes');
+
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/baselineShift.html b/testing/web-platform/tests/web-animations/responsive/baselineShift.html
new file mode 100644
index 0000000000..4ccaaf33ac
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/baselineShift.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<svg>
+ <text>
+ <tspan id='container'>
+ <tspan id='element'></tspan>
+ </tspan>
+ </text>
+</svg>
+
+<script>
+var element = document.getElementById('element');
+var container = document.getElementById('container');
+
+test(function() {
+ element.style.fontSize = '10px';
+ var player = element.animate([{baselineShift: '3em'}, {baselineShift: '5em'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.fontSize = '20px';
+ assert_equals(getComputedStyle(element).baselineShift, '80px');
+}, 'baselineShift responsive to style changes');
+
+test(function() {
+ container.style.baselineShift = 'sub';
+ var player = element.animate([{baselineShift: 'inherit'}, {baselineShift: '20px'}], 4000);
+ player.pause();
+
+ player.currentTime = 1000;
+ assert_equals(getComputedStyle(element).baselineShift, 'sub');
+
+ container.style.baselineShift = 'super';
+ assert_equals(getComputedStyle(element).baselineShift, 'super');
+
+ container.style.baselineShift = '100px';
+ assert_equals(getComputedStyle(element).baselineShift, '80px');
+
+ container.style.baselineShift = 'sub';
+ assert_equals(getComputedStyle(element).baselineShift, 'sub');
+}, 'baselineShift responsive to inherited changes');
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/borderImageWidth.html b/testing/web-platform/tests/web-animations/responsive/borderImageWidth.html
new file mode 100644
index 0000000000..4b832889bd
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/borderImageWidth.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<div id='container'>
+<div id='element'></div>
+</div>
+
+<script>
+var element = document.getElementById('element');
+var container = document.getElementById('container');
+
+test(function() {
+ container.style.fontSize = '50px';
+ var player = element.animate([{borderImageWidth: '300px 30px'}, {borderImageWidth: '10em 1em'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ container.style.fontSize = '10px';
+ assert_equals(getComputedStyle(element).borderImageWidth, '200px 20px');
+}, 'Border image width responsive to font size changes');
+
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/borderRadius.html b/testing/web-platform/tests/web-animations/responsive/borderRadius.html
new file mode 100644
index 0000000000..c59696ec90
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/borderRadius.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id='element'></div>
+<script>
+
+var element = document.getElementById('element');
+
+test(function() {
+ var keyframes = [
+ {borderTopLeftRadius: '8% 16%'},
+ {borderTopLeftRadius: '12% 24%'}
+ ];
+
+ element.style.width = '100';
+ element.style.height = '200';
+ var player = element.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.width = '300';
+ element.style.height = '600';
+ assert_equals(getComputedStyle(element).borderTopLeftRadius, '10% 20%');
+}, 'Border radius percentages are supported');
+
+test(function() {
+ var keyframes = [
+ {borderTopLeftRadius: '8em 16em'},
+ {borderTopLeftRadius: '12em 24em'}
+ ];
+
+ element.style.fontSize = '10px';
+ var player = element.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.fontSize = '20px';
+ assert_equals(getComputedStyle(element).borderTopLeftRadius, '200px 400px');
+}, 'Border radius lengths respond to style changes');
+
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/borderWidth.html b/testing/web-platform/tests/web-animations/responsive/borderWidth.html
new file mode 100644
index 0000000000..090d9a185a
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/borderWidth.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<div id='container'>
+<div id='element'></div>
+</div>
+
+<script>
+var element = document.getElementById('element');
+var container = document.getElementById('container');
+
+test(function() {
+ element.style.fontSize = '10px';
+ element.style.border = 'none';
+ var player = element.animate([{borderBottomWidth: '300px'}, {borderBottomWidth: '10em'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.border = 'solid';
+ assert_equals(getComputedStyle(element).borderBottomWidth, '200px');
+}, 'Border width responsive to border style changes');
+
+test(function() {
+ element.style.fontSize = '50px';
+ element.style.border = 'solid';
+ var player = element.animate([{borderBottomWidth: '300px'}, {borderBottomWidth: '10em'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.fontSize = '10px';
+ assert_equals(getComputedStyle(element).borderBottomWidth, '200px');
+}, 'Border width responsive to font size changes');
+
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/boxShadow.html b/testing/web-platform/tests/web-animations/responsive/boxShadow.html
new file mode 100644
index 0000000000..bd1911132d
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/boxShadow.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id='container'>
+ <div id='element'></div>
+</div>
+<script>
+
+var container = document.getElementById('container');
+var element = document.getElementById('element');
+
+test(function() {
+ container.style.fontSize = '10px';
+ container.style.color = 'red';
+
+ var keyframes = [
+ {boxShadow: '10em 10em currentColor'},
+ {boxShadow: '10em 10em currentColor'}
+ ];
+ var player = element.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+
+ var boxShadow = getComputedStyle(element).boxShadow;
+ container.style.fontSize = '20px';
+ container.style.color = 'green';
+ assert_not_equals(getComputedStyle(element).boxShadow, boxShadow);
+}, 'boxShadow responsive to style changes');
+
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/clip.html b/testing/web-platform/tests/web-animations/responsive/clip.html
new file mode 100644
index 0000000000..316e977576
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/clip.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id='container'>
+ <div id='element'></div>
+</div>
+<script>
+
+var container = document.getElementById('container');
+var element = document.getElementById('element');
+
+test(function() {
+ var keyframes = [
+ {clip: 'inherit'},
+ {clip: 'rect(10px, 20px, 30px, 40px)'}
+ ];
+
+ container.style.clip = 'rect(10px, 20px, 30px, 40px)';
+ var player = element.animate(keyframes, 20);
+
+ player.pause();
+ player.currentTime = 5;
+ assert_equals(getComputedStyle(element).clip, 'rect(10px, 20px, 30px, 40px)');
+
+ container.style.clip = 'rect(10px, 20px, 430px, 440px)';
+ assert_equals(getComputedStyle(element).clip, 'rect(10px, 20px, 330px, 340px)');
+}, 'clip responsive to inherited clip changes');
+
+test(function() {
+ var keyframes = [
+ {clip: 'inherit'},
+ {clip: 'rect(10px, 20px, 30px, auto)'}
+ ];
+
+ container.style.clip = 'auto';
+ var player = element.animate(keyframes, 20);
+
+ player.pause();
+ player.currentTime = 5;
+ assert_equals(getComputedStyle(element).clip, 'auto');
+
+ container.style.clip = 'rect(410px, 420px, 30px, auto)';
+ assert_equals(getComputedStyle(element).clip, 'rect(310px, 320px, 30px, auto)');
+}, 'clip responsive to inherited clip changes from auto');
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/columnCount.html b/testing/web-platform/tests/web-animations/responsive/columnCount.html
new file mode 100644
index 0000000000..c92d5cbf8f
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/columnCount.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id='container'>
+ <div id='element'></div>
+</div>
+<script>
+
+var container = document.getElementById('container');
+var element = document.getElementById('element');
+
+test(function() {
+ var keyframes = [
+ {columnCount: 'inherit'},
+ {columnCount: '6'}
+ ];
+
+ container.style.columnCount = 'auto';
+ var player = element.animate(keyframes, 20);
+
+ player.pause();
+ player.currentTime = 5;
+ assert_equals(getComputedStyle(element).columnCount, 'auto');
+
+ container.style.columnCount = '2';
+ assert_equals(getComputedStyle(element).columnCount, '3');
+
+ player.currentTime = 10;
+ container.style.columnCount = '8';
+ assert_equals(getComputedStyle(element).columnCount, '7');
+}, 'column-count responsive to inherited column-count changes');
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/columnGap.html b/testing/web-platform/tests/web-animations/responsive/columnGap.html
new file mode 100644
index 0000000000..43d44152cb
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/columnGap.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<div id='container'>
+<div id='element'></div>
+</div>
+
+<script>
+var element = document.getElementById('element');
+var container = document.getElementById('container');
+
+test(function() {
+ element.style.fontSize = '10px';
+ var player = element.animate([{columnGap: '3em'}, {columnGap: '5em'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.fontSize = '20px';
+ assert_equals(getComputedStyle(element).columnGap, '80px');
+}, 'column-gap responsive to style changes');
+
+test(function() {
+ element.style.fontSize = '10px';
+ var player = element.animate([{columnGap: '40px'}, {columnGap: 'calc(40px - 2em)'}], 10);
+ player.pause();
+
+ player.currentTime = 5;
+ element.style.fontSize = '40px';
+ assert_equals(getComputedStyle(element).columnGap, '20px');
+
+ player.currentTime = 7.5;
+ assert_equals(getComputedStyle(element).columnGap, '10px');
+}, 'column-gap clamped to 0px on keyframes');
+
+test(function() {
+ container.style.columnGap = 'normal';
+ var player = element.animate([{columnGap: 'inherit'}, {columnGap: '20px'}], 4000);
+ player.pause();
+
+ player.currentTime = 1000;
+ assert_equals(getComputedStyle(element).columnGap, 'normal');
+
+ container.style.columnGap = '100px';
+ assert_equals(getComputedStyle(element).columnGap, '80px');
+
+ container.style.columnGap = 'normal';
+ assert_equals(getComputedStyle(element).columnGap, 'normal');
+}, 'column-gap responsive to inherited changes');
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/d.html b/testing/web-platform/tests/web-animations/responsive/d.html
new file mode 100644
index 0000000000..55c6c23a0e
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/d.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id='container'>
+ <div id='element'></div>
+</div>
+<script>
+
+var container = document.getElementById('container');
+var element = document.getElementById('element');
+
+test(function() {
+ var keyframes = [
+ {d: 'inherit'},
+ {d: 'path("M 0 0 H 200")'}
+ ];
+
+ container.style.d = 'path("M 0 0 H 100")';
+ var player = element.animate(keyframes, 10);
+
+ player.pause();
+ player.currentTime = 5;
+ container.style.d = 'path("M 0 0 H 400")';
+ assert_equals(getComputedStyle(element).d, 'path("M 0 0 H 300")');
+}, 'd responsive to inherited d changes');
+
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/font-size-adjust.html b/testing/web-platform/tests/web-animations/responsive/font-size-adjust.html
new file mode 100644
index 0000000000..282ec7fede
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/font-size-adjust.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id='container'>
+ <div id='element'></div>
+</div>
+<script>
+
+var container = document.getElementById('container');
+var element = document.getElementById('element');
+
+test(function() {
+ var keyframes = [
+ {fontSizeAdjust: 'inherit'},
+ {fontSizeAdjust: '6'}
+ ];
+
+ container.style.fontSizeAdjust = 'none';
+ var player = element.animate(keyframes, 20);
+
+ player.pause();
+ player.currentTime = 5;
+ assert_equals(getComputedStyle(element).fontSizeAdjust, 'none');
+
+ container.style.fontSizeAdjust = '2';
+ assert_equals(getComputedStyle(element).fontSizeAdjust, '3');
+
+ player.currentTime = 10;
+ container.style.fontSizeAdjust = '8';
+ assert_equals(getComputedStyle(element).fontSizeAdjust, '7');
+}, 'font-size-adjust responsive to inherited font-size-adjust changes');
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/fontSize.html b/testing/web-platform/tests/web-animations/responsive/fontSize.html
new file mode 100644
index 0000000000..d65aeacd46
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/fontSize.html
@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id='container'>
+ <div id='element'></div>
+</div>
+<script>
+
+var container = document.getElementById('container');
+var element = document.getElementById('element');
+
+test(function() {
+ var keyframes = [
+ {fontSize: 'larger'},
+ {fontSize: 'larger'}
+ ];
+
+ container.style.fontSize = 'small';
+ var player = element.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+ fontSize = getComputedStyle(element).fontSize;
+ container.style.fontSize = 'medium';
+ assert_not_equals(getComputedStyle(element).fontSize, fontSize);
+}, 'Relative font size larger responsive to style changes');
+
+test(function() {
+ var keyframes = [
+ {fontSize: 'smaller'},
+ {fontSize: 'smaller'}
+ ];
+
+ container.style.fontSize = 'large';
+ var player = element.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+ fontSize = getComputedStyle(element).fontSize;
+ container.style.fontSize = 'medium';
+ assert_not_equals(getComputedStyle(element).fontSize, fontSize);
+}, 'Relative font size smaller responsive to style changes');
+
+test(function() {
+ var keyframes = [
+ {fontSize: 'medium'},
+ {fontSize: 'medium'}
+ ];
+
+ container.style.fontFamily = 'cursive';
+ var player = element.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+ fontSize = getComputedStyle(element).fontSize;
+ container.style.fontFamily = 'monospace';
+ assert_not_equals(getComputedStyle(element).fontSize, fontSize);
+}, 'Font size medium responsive to style changes');
+
+test(function() {
+ var keyframes = [
+ {fontSize: 'initial'},
+ {fontSize: 'initial'}
+ ];
+
+ container.style.fontFamily = 'monospace';
+ var player = element.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+ fontSize = getComputedStyle(element).fontSize;
+ container.style.fontFamily = 'serif';
+ assert_not_equals(getComputedStyle(element).fontSize, fontSize);
+}, 'Font size initial responsive to style changes');
+
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/fontWeight.html b/testing/web-platform/tests/web-animations/responsive/fontWeight.html
new file mode 100644
index 0000000000..e8fbbae0e7
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/fontWeight.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id='container'>
+ <div id='element'></div>
+</div>
+<script>
+
+var container = document.getElementById('container');
+var element = document.getElementById('element');
+
+test(function() {
+ var keyframes = [
+ {fontWeight: 'bolder'},
+ {fontWeight: 'bolder'}
+ ];
+
+ container.style.fontWeight = '100';
+ var player = element.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+ fontWeight = getComputedStyle(element).fontWeight;
+ container.style.fontWeight = '800';
+ assert_not_equals(getComputedStyle(element).fontWeight, fontWeight);
+}, 'Relative font weight bolder responsive to style changes');
+
+test(function() {
+ var keyframes = [
+ {fontWeight: 'lighter'},
+ {fontWeight: 'lighter'}
+ ];
+
+ container.style.fontWeight = '900';
+ var player = element.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+ fontWeight = getComputedStyle(element).fontWeight;
+ container.style.fontWeight = '200';
+ assert_not_equals(getComputedStyle(element).fontWeight, fontWeight);
+}, 'Relative font weight lighter responsive to style changes');
+
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/lineHeight.html b/testing/web-platform/tests/web-animations/responsive/lineHeight.html
new file mode 100644
index 0000000000..03d45e54c1
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/lineHeight.html
@@ -0,0 +1,80 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<div id='container'>
+<div id='element'></div>
+</div>
+
+<script>
+var element = document.getElementById('element');
+var container = document.getElementById('container');
+
+test(function() {
+ element.style.fontSize = '10px';
+ var player = element.animate([{lineHeight: '3em'}, {lineHeight: '5em'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.fontSize = '20px';
+ assert_equals(getComputedStyle(element).lineHeight, '80px');
+}, 'lineHeight responsive to style changes');
+
+test(function() {
+ element.style.fontSize = '10px';
+ var player = element.animate([{lineHeight: '40px'}, {lineHeight: 'calc(40px - 2em)'}], 10);
+ player.pause();
+
+ player.currentTime = 5;
+ element.style.fontSize = '40px';
+ assert_equals(getComputedStyle(element).lineHeight, '20px');
+
+ player.currentTime = 7.5;
+ assert_equals(getComputedStyle(element).lineHeight, '10px');
+}, 'lineHeight clamped to 0px on keyframes');
+
+test(function() {
+ container.style.lineHeight = 'normal';
+ var player = element.animate([{lineHeight: 'inherit'}, {lineHeight: '20px'}], 4000);
+ player.pause();
+
+ player.currentTime = 1000;
+ assert_equals(getComputedStyle(element).lineHeight, 'normal');
+
+ container.style.lineHeight = '100px';
+ assert_equals(getComputedStyle(element).lineHeight, '80px');
+
+ container.style.lineHeight = 'normal';
+ assert_equals(getComputedStyle(element).lineHeight, 'normal');
+}, 'lineHeight responsive to inherited changes from keyword');
+
+test(function() {
+ container.style.fontSize = '10px';
+ container.style.lineHeight = '1.0';
+ const expected = getComputedStyle(container).lineHeight;
+ var player = element.animate([{lineHeight: 'inherit'}, {lineHeight: '20px'}], 4000);
+ player.pause();
+
+ player.currentTime = 1000;
+ getComputedStyle(element).lineHeight;
+
+ container.style.lineHeight = '100px';
+ assert_equals(getComputedStyle(element).lineHeight, '80px');
+}, 'lineHeight responsive to inherited changes from number');
+
+test(function() {
+ container.style.fontSize = '10px';
+ container.style.lineHeight = '1';
+ var player = element.animate([{lineHeight: 'inherit'}, {lineHeight: '2'}], 4000);
+ player.pause();
+
+ player.currentTime = 1000;
+ const expected = getComputedStyle(element).lineHeight;
+
+ container.style.lineHeight = '97px';
+ assert_equals(getComputedStyle(element).lineHeight, '97px');
+
+ container.style.lineHeight = '1';
+ assert_equals(getComputedStyle(element).lineHeight, expected);
+}, 'lineHeight responsive to inherited changes from length');
+
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/minHeight.html b/testing/web-platform/tests/web-animations/responsive/minHeight.html
new file mode 100644
index 0000000000..07474bc3f4
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/minHeight.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<div id='container'>
+<div id='element'></div>
+</div>
+
+<script>
+var element = document.getElementById('element');
+var container = document.getElementById('container');
+
+test(function() {
+ element.style.fontSize = '10px';
+ var player = element.animate([{minHeight: '3em'}, {minHeight: '5em'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.fontSize = '20px';
+ assert_equals(getComputedStyle(element).minHeight, '80px');
+}, 'minHeight responsive to style changes');
+
+test(function() {
+ element.style.fontSize = '10px';
+ var player = element.animate([{minHeight: '40px'}, {minHeight: 'calc(40px - 2em)'}], 10);
+ player.pause();
+
+ player.currentTime = 5;
+ element.style.fontSize = '40px';
+ assert_equals(getComputedStyle(element).minHeight, '20px');
+
+ player.currentTime = 7.5;
+ assert_equals(getComputedStyle(element).minHeight, '10px');
+}, 'minHeight clamped to 0px on keyframes');
+
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/offset-path.html b/testing/web-platform/tests/web-animations/responsive/offset-path.html
new file mode 100644
index 0000000000..eff8ede60f
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/offset-path.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id='container'>
+ <div id='element'></div>
+</div>
+<script>
+
+var container = document.getElementById('container');
+var element = document.getElementById('element');
+
+test(function() {
+ var keyframes = [
+ {offsetPath: 'inherit'},
+ {offsetPath: 'path("M 0 0 H 200")'}
+ ];
+
+ container.style.offsetPath = 'path("M 0 0 H 100")';
+ var player = element.animate(keyframes, 10);
+
+ player.pause();
+ player.currentTime = 5;
+ container.style.offsetPath = 'path("M 0 0 H 400")';
+ assert_equals(getComputedStyle(element).offsetPath, 'path("M 0 0 H 300")');
+}, 'offset-path responsive to inherited offset-path changes');
+
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/offsetDistance.html b/testing/web-platform/tests/web-animations/responsive/offsetDistance.html
new file mode 100644
index 0000000000..d56da9c767
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/offsetDistance.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id='container'>
+ <div id='element'></div>
+</div>
+<script>
+
+var container = document.getElementById('container');
+var element = document.getElementById('element');
+
+test(function() {
+ var keyframes = [
+ {offsetDistance: '4%'},
+ {offsetDistance: '12%'}
+ ];
+
+ element.style.width = '100';
+ element.style.height = '200';
+ var player = element.animate(keyframes, 20);
+ player.pause();
+ player.currentTime = 15;
+ element.style.width = '300';
+ element.style.height = '600';
+ assert_equals(getComputedStyle(element).offsetDistance, '10%');
+}, 'offsetDistance percentages are supported');
+
+test(function() {
+ var keyframes = [
+ {offsetDistance: '8em'},
+ {offsetDistance: '16em'}
+ ];
+
+ element.style.fontSize = '10px';
+ var player = element.animate(keyframes, 20);
+ player.pause();
+ player.currentTime = 5;
+ element.style.fontSize = '20px';
+ assert_equals(getComputedStyle(element).offsetDistance, '200px');
+}, 'offsetDistance lengths respond to style changes');
+
+test(function() {
+ var keyframes = [
+ {offsetDistance: 'inherit'},
+ {offsetDistance: '200px'}
+ ];
+
+ container.style.offsetDistance = '100px';
+ var player = element.animate(keyframes, 10);
+
+ player.pause();
+ player.currentTime = 5;
+
+ container.style.offsetDistance = '400px';
+ assert_equals(getComputedStyle(element).offsetDistance, '300px');
+}, 'offsetDistance responsive to inherited offsetDistance changes');
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/offsetRotate.html b/testing/web-platform/tests/web-animations/responsive/offsetRotate.html
new file mode 100644
index 0000000000..f0957e15c5
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/offsetRotate.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id='container'>
+ <div id='element'></div>
+</div>
+<script>
+
+var container = document.getElementById('container');
+var element = document.getElementById('element');
+
+test(function() {
+ var keyframes = [
+ {offsetRotate: 'inherit'},
+ {offsetRotate: 'auto 200deg'}
+ ];
+
+ container.style.offsetRotate = 'auto 100deg';
+ var player = element.animate(keyframes, 10);
+
+ player.pause();
+ player.currentTime = 5;
+ assert_equals(getComputedStyle(element).offsetRotate, 'auto 150deg');
+
+ container.style.offsetRotate = '400deg';
+ assert_equals(getComputedStyle(element).offsetRotate, 'auto 200deg');
+
+ container.style.offsetRotate = '400deg auto';
+ assert_equals(getComputedStyle(element).offsetRotate, 'auto 300deg');
+
+ container.style.offsetRotate = '800deg auto';
+ assert_equals(getComputedStyle(element).offsetRotate, 'auto 500deg');
+
+ container.style.offsetRotate = '400deg';
+ assert_equals(getComputedStyle(element).offsetRotate, 'auto 200deg');
+
+ container.style.offsetRotate = '800deg auto';
+ assert_equals(getComputedStyle(element).offsetRotate, 'auto 500deg');
+
+ container.style.offsetRotate = '400deg auto';
+ assert_equals(getComputedStyle(element).offsetRotate, 'auto 300deg');
+}, 'offsetRotate responsive to inherited offsetRotate changes');
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/opacity.html b/testing/web-platform/tests/web-animations/responsive/opacity.html
new file mode 100644
index 0000000000..0bedfc879a
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/opacity.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id='container'>
+ <div id='element'></div>
+</div>
+<script>
+
+'use strict';
+var container = document.getElementById('container');
+var element = document.getElementById('element');
+
+var properties = [
+ 'fillOpacity',
+ 'floodOpacity',
+ 'opacity',
+ 'shapeImageThreshold',
+ 'stopOpacity',
+ 'strokeOpacity',
+];
+
+for (var property of properties) {
+ test(function() {
+ var initialKeyframe = {};
+ initialKeyframe[property] = 'inherit';
+ var finalKeyframe = {};
+ finalKeyframe[property] = '0.5';
+ var keyframes = [ initialKeyframe, finalKeyframe ];
+
+ container.style[property] = 1;
+ var player = element.animate(keyframes, 10);
+
+ player.pause();
+ player.currentTime = 5;
+ assert_equals(getComputedStyle(element)[property], '0.75');
+
+ container.style[property] = 0.25;
+ assert_equals(getComputedStyle(element)[property], '0.375');
+
+ container.style[property] = -0.5; // clamps to 0
+ assert_equals(getComputedStyle(element)[property], '0.25');
+
+ container.style[property] = 2; // clamps to 1
+ assert_equals(getComputedStyle(element)[property], '0.75');
+ }, property + ' responsive to inherited changes');
+}
+
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/perspective.html b/testing/web-platform/tests/web-animations/responsive/perspective.html
new file mode 100644
index 0000000000..f32b4dbad3
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/perspective.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<div id='container'>
+<div id='element'></div>
+</div>
+
+<script>
+var element = document.getElementById('element');
+var container = document.getElementById('container');
+
+test(function() {
+ element.style.fontSize = '10px';
+ var player = element.animate([{perspective: '3em'}, {perspective: '5em'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.fontSize = '20px';
+ assert_equals(getComputedStyle(element).perspective, '80px');
+}, 'perspective responsive to style changes');
+
+test(function() {
+ element.style.fontSize = '10px';
+ var player = element.animate([{perspective: '40px'}, {perspective: 'calc(40px - 2em)'}], 10);
+ player.pause();
+
+ player.currentTime = 5;
+ element.style.fontSize = '40px';
+ assert_equals(getComputedStyle(element).perspective, '20px');
+
+ player.currentTime = 7.5;
+ assert_equals(getComputedStyle(element).perspective, '10px');
+}, 'perspective clamped to 0px on keyframes');
+
+test(function() {
+ container.style.perspective = 'none';
+ var player = element.animate([{perspective: 'inherit'}, {perspective: '20px'}], 4000);
+ player.pause();
+
+ player.currentTime = 1000;
+ assert_equals(getComputedStyle(element).perspective, 'none');
+
+ container.style.perspective = '100px';
+ assert_equals(getComputedStyle(element).perspective, '80px');
+
+ container.style.perspective = 'none';
+ assert_equals(getComputedStyle(element).perspective, 'none');
+}, 'perspective responsive to inherited changes');
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/resources/block.html b/testing/web-platform/tests/web-animations/responsive/resources/block.html
new file mode 100644
index 0000000000..8284055969
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/resources/block.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<style>
+ .testBlock {
+ width: 100px;
+ height: 100px;
+ background: #00cc66;
+ border-top: 50px solid #ffff00;
+ }
+</style>
+<div class="testBlock" id="testBlock"></div> \ No newline at end of file
diff --git a/testing/web-platform/tests/web-animations/responsive/rotate.html b/testing/web-platform/tests/web-animations/responsive/rotate.html
new file mode 100644
index 0000000000..b0e4213200
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/rotate.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<div id='container'>
+<div id='element'></div>
+</div>
+
+<script>
+var element = document.getElementById('element');
+var container = document.getElementById('container');
+
+test(function() {
+ container.style.rotate = 'none';
+ var player = element.animate([{rotate: 'inherit'}, {rotate: '100deg'}], 10);
+ player.pause();
+ player.currentTime = 2;
+ container.style.rotate = '200deg';
+ assert_equals(getComputedStyle(element).rotate, '180deg');
+}, 'Rotate responsive to inherited rotate changes');
+
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/rowGap.html b/testing/web-platform/tests/web-animations/responsive/rowGap.html
new file mode 100644
index 0000000000..b7dae62f23
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/rowGap.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<div id='container'>
+<div id='element'></div>
+</div>
+
+<script>
+var element = document.getElementById('element');
+var container = document.getElementById('container');
+
+test(function() {
+ element.style.fontSize = '10px';
+ var player = element.animate([{rowGap: '3em'}, {rowGap: '5em'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.fontSize = '20px';
+ assert_equals(getComputedStyle(element).rowGap, '80px');
+}, 'row-gap responsive to style changes');
+
+test(function() {
+ element.style.fontSize = '10px';
+ var player = element.animate([{rowGap: '40px'}, {rowGap: 'calc(40px - 2em)'}], 10);
+ player.pause();
+
+ player.currentTime = 5;
+ element.style.fontSize = '40px';
+ assert_equals(getComputedStyle(element).rowGap, '20px');
+
+ player.currentTime = 7.5;
+ assert_equals(getComputedStyle(element).rowGap, '10px');
+}, 'row-gap clamped to 0px on keyframes');
+
+test(function() {
+ container.style.rowGap = 'normal';
+ var player = element.animate([{rowGap: 'inherit'}, {rowGap: '20px'}], 4000);
+ player.pause();
+
+ player.currentTime = 1000;
+ assert_equals(getComputedStyle(element).rowGap, 'normal');
+
+ container.style.rowGap = '100px';
+ assert_equals(getComputedStyle(element).rowGap, '80px');
+
+ container.style.rowGap = 'normal';
+ assert_equals(getComputedStyle(element).rowGap, 'normal');
+}, 'row-gap responsive to inherited changes');
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/shapeMargin.html b/testing/web-platform/tests/web-animations/responsive/shapeMargin.html
new file mode 100644
index 0000000000..02d6151ad0
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/shapeMargin.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<div id='container'>
+<div id='element'></div>
+</div>
+
+<script>
+var element = document.getElementById('element');
+var container = document.getElementById('container');
+
+test(function() {
+ element.style.fontSize = '10px';
+ element.style.width = '200px';
+ var player = element.animate([{shapeMargin: '3em'}, {shapeMargin: '80%'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.fontSize = '20px';
+ element.style.width = '100px';
+ assert_equals(getComputedStyle(element).shapeMargin, 'calc(40% + 30px)');
+}, 'shapeMargin responsive to style changes');
+
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/shapeOutside.html b/testing/web-platform/tests/web-animations/responsive/shapeOutside.html
new file mode 100644
index 0000000000..2a54576a33
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/shapeOutside.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id='container'>
+ <div id='element'></div>
+</div>
+<script>
+
+var container = document.getElementById('container');
+var element = document.getElementById('element');
+
+test(function() {
+ container.style.fontSize = '10px';
+
+ var keyframes = [
+ {shapeOutside: 'circle(10em at 50% 50%)'},
+ {shapeOutside: 'circle(10em at 50% 50%)'}
+ ];
+ var player = element.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+
+ var shapeOutside = getComputedStyle(element).shapeOutside;
+ container.style.fontSize = '20px';
+ assert_not_equals(getComputedStyle(element).shapeOutside, shapeOutside);
+}, 'shapeOutside responsive to style changes');
+
+test(function() {
+ var keyframes = [
+ {shapeOutside: 'inherit'},
+ {shapeOutside: 'circle(200px at 50% 50%)'}
+ ];
+
+ container.style.shapeOutside = 'circle(100px at 50% 50%)';
+ var player = element.animate(keyframes, 10);
+
+ player.pause();
+ player.currentTime = 5;
+ assert_equals(getComputedStyle(element).shapeOutside, 'circle(150px at 50% 50%)');
+
+ container.style.shapeOutside = 'inset(100%)';
+ assert_equals(getComputedStyle(element).shapeOutside, 'circle(200px at 50% 50%)');
+
+ container.style.shapeOutside = 'circle(400px at 50% 50%)';
+ assert_equals(getComputedStyle(element).shapeOutside, 'circle(300px at 50% 50%)');
+
+ container.style.shapeOutside = 'circle(800px at 50% 50%)';
+ assert_equals(getComputedStyle(element).shapeOutside, 'circle(500px at 50% 50%)');
+
+ container.style.shapeOutside = 'inset(100%)';
+ assert_equals(getComputedStyle(element).shapeOutside, 'circle(200px at 50% 50%)');
+
+ container.style.shapeOutside = 'circle(800px at 50% 50%)';
+ assert_equals(getComputedStyle(element).shapeOutside, 'circle(500px at 50% 50%)');
+
+ container.style.shapeOutside = 'circle(400px at 50% 50%)';
+ assert_equals(getComputedStyle(element).shapeOutside, 'circle(300px at 50% 50%)');
+}, 'shapeOutside responsive to inherited shapeOutside changes');
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/strokeDasharray.html b/testing/web-platform/tests/web-animations/responsive/strokeDasharray.html
new file mode 100644
index 0000000000..a1ccb30e90
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/strokeDasharray.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id='container'>
+ <div id='element'></div>
+</div>
+<script>
+
+var container = document.getElementById('container');
+var element = document.getElementById('element');
+
+test(function() {
+ container.style.fontSize = '10px';
+
+ var keyframes = [
+ {strokeDasharray: '10em 10em'},
+ {strokeDasharray: '10em 10em'}
+ ];
+ var player = element.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+
+ var strokeDasharray = getComputedStyle(element).strokeDasharray;
+ container.style.fontSize = '20px';
+ assert_not_equals(getComputedStyle(element).strokeDasharray, strokeDasharray);
+}, 'strokeDasharray responsive to style changes');
+
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/text-size-adjust.html b/testing/web-platform/tests/web-animations/responsive/text-size-adjust.html
new file mode 100644
index 0000000000..203b067a77
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/text-size-adjust.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id='container'>
+ <div id='element'></div>
+</div>
+<script>
+
+var container = document.getElementById('container');
+var element = document.getElementById('element');
+
+test(function() {
+ var keyframes = [
+ {textSizeAdjust: 'inherit'},
+ {textSizeAdjust: '60%'}
+ ];
+
+ container.style.textSizeAdjust = '100%';
+ var player = element.animate(keyframes, 20);
+
+ player.pause();
+ player.currentTime = 5;
+ assert_equals(getComputedStyle(element).textSizeAdjust, '90%');
+
+ player.currentTime = 10;
+ container.style.textSizeAdjust = '50%';
+ assert_equals(getComputedStyle(element).textSizeAdjust, '55%');
+}, 'text-size-adjust responsive to inherited text-size-adjust changes');
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/textIndent.html b/testing/web-platform/tests/web-animations/responsive/textIndent.html
new file mode 100644
index 0000000000..430417d28b
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/textIndent.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id='container'>
+ <div id='element'></div>
+</div>
+<script>
+
+var container = document.getElementById('container');
+var element = document.getElementById('element');
+
+test(function() {
+ container.style.fontSize = '10px';
+
+ var keyframes = [
+ {textIndent: '10em hanging'},
+ {textIndent: '10em hanging'}
+ ];
+ var player = element.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+
+ var textIndent = getComputedStyle(element).textIndent;
+ container.style.fontSize = '20px';
+ assert_not_equals(getComputedStyle(element).textIndent, textIndent);
+}, 'textIndent responsive to style changes');
+
+test(function() {
+ var keyframes = [
+ {textIndent: 'inherit'},
+ {textIndent: '200px hanging each-line'}
+ ];
+
+ container.style.textIndent = '100px hanging each-line';
+ var player = element.animate(keyframes, 10);
+
+ player.pause();
+ player.currentTime = 5;
+ assert_equals(getComputedStyle(element).textIndent, '150px hanging each-line');
+
+ container.style.textIndent = '400px hanging';
+ assert_equals(getComputedStyle(element).textIndent, '200px hanging each-line');
+
+ container.style.textIndent = '400px hanging each-line';
+ assert_equals(getComputedStyle(element).textIndent, '300px hanging each-line');
+
+ container.style.textIndent = '800px hanging each-line';
+ assert_equals(getComputedStyle(element).textIndent, '500px hanging each-line');
+
+ container.style.textIndent = '400px each-line';
+ assert_equals(getComputedStyle(element).textIndent, '200px hanging each-line');
+
+ container.style.textIndent = '800px hanging each-line';
+ assert_equals(getComputedStyle(element).textIndent, '500px hanging each-line');
+
+ container.style.textIndent = '400px hanging each-line';
+ assert_equals(getComputedStyle(element).textIndent, '300px hanging each-line');
+}, 'textIndent responsive to inherited textIndent changes');
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/to-color-change.html b/testing/web-platform/tests/web-animations/responsive/to-color-change.html
new file mode 100644
index 0000000000..6c3fcccf62
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/to-color-change.html
@@ -0,0 +1,253 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+a { visibility: hidden; }
+</style>
+
+<div id='container'>
+ <div id='child'></div>
+</div>
+<div id='element'></div>
+<svg>
+ <rect id='svgElement'></rect>
+</svg>
+
+<a href='example.com/unvisited' id='unvisited'><div id='unvisitedchild'>Unvisited</div></a>
+<a href='' id='visited'><div id='visitedchild'>Visited</div></a>
+
+<script>
+'use strict';
+var container = document.getElementById('container');
+var child = document.getElementById('child');
+var element = document.getElementById('element');
+var unvisited = document.getElementById('unvisited');
+var visited = document.getElementById('visited');
+var unvisitedChild = document.getElementById('unvisitedchild');
+var visitedChild = document.getElementById('visitedchild');
+
+test(function() {
+ var keyframes = [
+ {backgroundColor: 'currentColor'},
+ {backgroundColor: 'rgb(0, 68, 0)'}
+ ];
+
+ element.style.color = 'rgb(204, 0, 0)';
+ var player = element.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.color = 'rgb(0, 0, 204)';
+ assert_equals(getComputedStyle(element).backgroundColor, 'rgb(0, 34, 102)');
+}, 'Background color responsive to currentColor changes');
+
+test(function() {
+ var keyframes = [
+ {fill: 'currentColor'},
+ {fill: 'rgb(0, 68, 0)'}
+ ];
+
+ svgElement.style.color = 'rgb(204, 0, 0)';
+ var player = svgElement.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+ svgElement.style.color = 'rgb(0, 0, 204)';
+ assert_equals(getComputedStyle(svgElement).fill, 'rgb(0, 34, 102)');
+}, 'Fill color responsive to currentColor changes');
+
+test(function() {
+ var keyframes = [
+ {backgroundColor: 'rgba(250, 240, 220, 0.431372549)'},
+ {backgroundColor: 'currentColor'}
+ ];
+
+ element.style.color = 'rgb(204, 0, 0)';
+ var player = element.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 3;
+ element.style.color = 'rgba(160, 190, 180, 0.980392157)';
+ assert_equals(getComputedStyle(element).backgroundColor, 'rgba(206, 215, 200, 0.596)');
+}, 'Color interpolation uses pre-multiplied colors');
+
+test(function() {
+ var keyframes = [
+ {
+ borderBottomColor: 'currentColor',
+ borderLeftColor: 'currentColor',
+ borderRightColor: 'currentColor',
+ borderTopColor: 'currentColor',
+ offset: 0
+ },
+ {
+ borderBottomColor: 'rgb(0, 68, 0)',
+ borderLeftColor: 'rgb(0, 70, 0)',
+ borderRightColor: 'rgb(0, 72, 0)',
+ borderTopColor: 'rgb(0, 74, 0)',
+ offset: 1
+ }
+ ];
+
+ element.style.color = 'rgb(204, 0, 0)';
+ var player = element.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.color = 'rgb(0, 0, 204)';
+ assert_equals(getComputedStyle(element).borderBottomColor, 'rgb(0, 34, 102)');
+ assert_equals(getComputedStyle(element).borderLeftColor, 'rgb(0, 35, 102)');
+ assert_equals(getComputedStyle(element).borderRightColor, 'rgb(0, 36, 102)');
+ assert_equals(getComputedStyle(element).borderTopColor, 'rgb(0, 37, 102)');
+}, 'Border color responsive to currentColor changes');
+
+test(function() {
+ var keyframes = [
+ {
+ borderBottomColor: 'currentColor',
+ borderLeftColor: 'currentColor',
+ borderRightColor: 'currentColor',
+ borderTopColor: 'currentColor',
+ offset: 0
+ },
+ {
+ borderBottomColor: 'rgb(0, 68, 0)',
+ borderLeftColor: 'rgb(0, 70, 0)',
+ borderRightColor: 'rgb(0, 72, 0)',
+ borderTopColor: 'rgb(0, 74, 0)',
+ offset: 1
+ }
+ ];
+
+ element.style.color = 'rgb(204, 0, 0)';
+ var player = element.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.color = 'rgb(0, 0, 200)';
+ assert_equals(getComputedStyle(element).borderBottomColor, 'rgb(0, 34, 100)');
+ assert_equals(getComputedStyle(element).borderLeftColor, 'rgb(0, 35, 100)');
+ assert_equals(getComputedStyle(element).borderRightColor, 'rgb(0, 36, 100)');
+ assert_equals(getComputedStyle(element).borderTopColor, 'rgb(0, 37, 100)');
+}, 'Border color responsive to currentColor changes again');
+
+test(function() {
+ var keyframes = [
+ {outlineColor: 'currentColor'},
+ {outlineColor: 'rgb(0, 68, 0)'}
+ ];
+
+ element.style.color = 'rgb(204, 0, 0)';
+ var player = element.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.color = 'rgb(0, 0, 204)';
+ assert_equals(getComputedStyle(element).outlineColor, 'rgb(0, 34, 102)');
+}, 'Outline color responsive to currentColor changes');
+
+test(function() {
+ var keyframes = [
+ {stroke: 'rgb(0, 68, 0)'},
+ {stroke: 'currentColor'}
+ ];
+
+ svgElement.style.color = 'rgb(204, 0, 0)';
+ var player = svgElement.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+ svgElement.style.color = 'rgb(0, 0, 204)';
+ assert_equals(getComputedStyle(svgElement).stroke, 'rgb(0, 34, 102)');
+}, 'Stroke color responsive to currentColor changes');
+
+test(function() {
+ var keyframes = [
+ {textDecorationColor: 'rgb(0, 68, 0)'},
+ {textDecorationColor: 'currentColor'}
+ ];
+
+ element.style.color = 'rgb(204, 0, 0)';
+ var player = element.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.color = 'rgb(0, 0, 204)';
+ assert_equals(getComputedStyle(element).textDecorationColor, 'rgb(0, 34, 102)');
+}, 'Text decoration color responsive to currentColor changes');
+
+test(function() {
+ var keyframes = [
+ {color: 'currentColor'},
+ {color: 'rgb(0, 68, 0)'}
+ ];
+
+ child.style.color = 'rgb(10, 10, 10)'; // Should be ignored
+ container.style.color = 'rgb(204, 0, 0)';
+ var player = child.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+ container.style.color = 'rgb(0, 0, 204)';
+ assert_equals(getComputedStyle(child).color, 'rgb(0, 34, 102)');
+ player.currentTime = 7.5;
+ container.style.color = 'rgb(136, 0, 136)';
+ assert_equals(getComputedStyle(child).color, 'rgb(34, 51, 34)');
+}, 'Color responsive to parent currentColor changes');
+
+test(function() {
+ var keyframes = [
+ {color: 'rgb(0, 68, 0)'},
+ {color: 'currentColor'}
+ ];
+
+ child.style.color = 'rgb(10, 10, 10)'; // Should be ignored
+ container.style.color = 'rgb(204, 0, 0)';
+ var player = child.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+ container.style.color = 'rgb(0, 0, 204)';
+ assert_equals(getComputedStyle(child).color, 'rgb(0, 34, 102)');
+ player.currentTime = 7.5;
+ container.style.color = 'rgb(136, 0, 68)';
+ assert_equals(getComputedStyle(child).color, 'rgb(102, 17, 51)');
+}, 'Color responsive to repeated parent currentColor changes');
+
+test(function() {
+ var keyframes = [
+ {backgroundColor: 'currentColor'},
+ {backgroundColor: 'rgb(100, 150, 200)'}
+ ];
+
+ var player1 = unvisited.animate(keyframes, 10);
+ var player2 = visited.animate(keyframes, 10);
+ player1.pause();
+ player2.pause();
+ player1.currentTime = 5;
+ player2.currentTime = 5;
+ assert_equals(getComputedStyle(unvisited).backgroundColor, getComputedStyle(visited).backgroundColor);
+}, 'Color animations do not expose visited status');
+
+test(function() {
+ var keyframes = [
+ {color: 'rgb(100, 150, 200)'},
+ {color: 'currentColor'}
+ ];
+
+ var player1 = unvisitedChild.animate(keyframes, 10);
+ var player2 = visitedChild.animate(keyframes, 10);
+ player1.pause();
+ player2.pause();
+ player1.currentTime = 5;
+ player2.currentTime = 5;
+ assert_equals(getComputedStyle(unvisitedChild).color, getComputedStyle(visitedChild).color);
+}, 'Color animations do not expose parent visited status');
+
+test(function() {
+ var keyframes = [
+ {columnRuleColor: 'inherit'},
+ {columnRuleColor: 'rgb(70, 70, 170)'}
+ ];
+
+ container.style.columnRuleColor = 'rgb(170, 70, 70)';
+ var player = child.animate(keyframes, 10);
+
+ player.pause();
+ player.currentTime = 5;
+ assert_equals(getComputedStyle(child).columnRuleColor, 'rgb(120, 70, 120)');
+
+ container.style.columnRuleColor = 'rgb(70, 170, 70)';
+ assert_equals(getComputedStyle(child).columnRuleColor, 'rgb(70, 120, 120)');
+}, 'Color animations respond to inherited changes');
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/to-inherited-change.html b/testing/web-platform/tests/web-animations/responsive/to-inherited-change.html
new file mode 100644
index 0000000000..96ef5d24e1
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/to-inherited-change.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<div id='container'>
+ <div id='element'></div>
+</div>
+
+<script>
+
+var container = document.getElementById('container');
+var element = document.getElementById('element');
+
+test(function() {
+ var keyframes = [
+ {fontSize: 'inherit'},
+ {fontSize: '20px'}
+ ];
+
+ container.style.fontSize = '10px';
+ var player = element.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+ container.style.fontSize = '30px';
+ assert_equals(getComputedStyle(element).fontSize, '25px');
+}, 'Font size responsive to inherited changes at start');
+
+test(function() {
+ var keyframes = [
+ {fontSize: '50px'},
+ {fontSize: 'inherit'}
+ ];
+
+ container.style.fontSize = '40px';
+ var player = element.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+ container.style.fontSize = '60px';
+ assert_equals(getComputedStyle(element).fontSize, '55px');
+}, 'Font size responsive to inherited changes at end');
+
+test(function() {
+ var keyframes = [
+ {fontSize: 'inherit'},
+ {fontSize: 'inherit'}
+ ];
+
+ container.style.fontSize = '70px';
+ var player = element.animate(keyframes, 10);
+ player.pause();
+ player.currentTime = 5;
+ container.style.fontSize = '80px';
+ assert_equals(getComputedStyle(element).fontSize, '80px');
+}, 'Font size responsive to inherited changes');
+
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/to-style-change.html b/testing/web-platform/tests/web-animations/responsive/to-style-change.html
new file mode 100644
index 0000000000..8f4bf4c8b5
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/to-style-change.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<div id='container'>
+<div id='element'></div>
+</div>
+
+<script>
+var element = document.getElementById('element');
+var container = document.getElementById('container');
+
+test(function() {
+ element.style.fontSize = '10px';
+ container.style.width = '1000px';
+ var player = element.animate([{left: 'calc(100px + 80%)'}, {left: '10em'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ assert_equals(getComputedStyle(element).left, 'calc(40% + 100px)');
+ element.style.fontSize = '20px';
+ assert_equals(getComputedStyle(element).left, 'calc(40% + 150px)');
+ container.style.width = '500px';
+ assert_equals(getComputedStyle(element).left, 'calc(40% + 150px)');
+}, 'Lengths responsive to style changes');
+
+test(function() {
+ container.style.width = '1000px';
+ var player = element.animate([{paddingTop: '30%'}, {paddingTop: '50%'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ container.style.width = '700px';
+ assert_equals(getComputedStyle(element).paddingTop, '280px');
+}, 'Percentages responsive to width style changes');
+
+test(function() {
+ element.style.fontSize = '1px';
+ var player = element.animate([{lineHeight: '9'}, {lineHeight: '13'}], 10);
+ player.pause();
+ player.currentTime = 2.5;
+ element.style.fontSize = '7px';
+ assert_equals(getComputedStyle(element).lineHeight, '70px');
+}, 'Numbers responsive to style changes');
+
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/toggle-animated-iframe-visibility-ref.html b/testing/web-platform/tests/web-animations/responsive/toggle-animated-iframe-visibility-ref.html
new file mode 100644
index 0000000000..dab5bed7c8
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/toggle-animated-iframe-visibility-ref.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<style>
+ .rotated {
+ transform: rotate(90deg);
+ }
+</style>
+<div id="container">
+ <iframe class="rotated" src="resources/block.html">
+ </iframe>
+</div> \ No newline at end of file
diff --git a/testing/web-platform/tests/web-animations/responsive/toggle-animated-iframe-visibility.html b/testing/web-platform/tests/web-animations/responsive/toggle-animated-iframe-visibility.html
new file mode 100644
index 0000000000..f50ffaad34
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/toggle-animated-iframe-visibility.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<meta name="assert" content="This should resume the animation after unhiding the iframe.">
+<title>CSS Test (Animations): Unhiding iframe visibility should restart animation. </title>
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=616270">
+<link rel="match" href="toggle-animated-iframe-visibility-ref.html">
+<script src="/common/reftest-wait.js"></script>
+
+<div id="container"></div>
+
+<div id="log"></div>
+
+<script>
+ var container;
+ var block;
+ var logDiv;
+
+ function verifyVisibility(expected_visibility, message) {
+ if (getComputedStyle(block).visibility !== expected_visibility)
+ logDiv.innerHTML = `FAIL: ${message}`;
+ }
+
+ async function runTest() {
+ var animation = block.animate(
+ { transform: [ 'rotate(0deg)', 'rotate(180deg)' ] },
+ {
+ duration: 10000000,
+ delay: -5000000,
+ easing: 'cubic-bezier(0, 1, 1, 0)'
+ });
+
+ await animation.ready;
+
+ container.style.visibility = 'hidden';
+ requestAnimationFrame(() => {
+ verifyVisibility('hidden', 'style.visibility should be hidden');
+ container.style.visibility = 'visible';
+
+ requestAnimationFrame(() => {
+ verifyVisibility('visible', 'style.visiblity should be visible');
+ takeScreenshot();
+ });
+ });
+ }
+
+ window.onload = function () {
+ logDiv = document.getElementById('log');
+ container = document.getElementById('container');
+ block = document.createElement('iframe');
+
+ container.appendChild(block);
+ block.onload = runTest;
+ block.src = 'resources/block.html';
+ };
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/transform.html b/testing/web-platform/tests/web-animations/responsive/transform.html
new file mode 100644
index 0000000000..d57f8b136a
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/transform.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<div id='container'>
+<div id='element'></div>
+</div>
+
+<script>
+var element = document.getElementById('element');
+var container = document.getElementById('container');
+
+test(function() {
+ container.style.fontSize = '10px';
+ var player = element.animate([{transform: 'translateX(10em)'}, {transform: 'translateX(20em)'}], 10);
+ player.pause();
+ player.currentTime = 2;
+ container.style.fontSize = '20px';
+ assert_equals(getComputedStyle(element).transform, 'matrix(1, 0, 0, 1, 240, 0)');
+}, 'Transform responsive to font size changes');
+
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/translate.html b/testing/web-platform/tests/web-animations/responsive/translate.html
new file mode 100644
index 0000000000..8df4d8577d
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/translate.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<div id='container'>
+<div id='element'></div>
+</div>
+
+<script>
+var element = document.getElementById('element');
+var container = document.getElementById('container');
+
+test(function() {
+ container.style.fontSize = '10px';
+ var player = element.animate([{translate: '1em 2em'}, {translate: '10em 20em'}], 10);
+ player.pause();
+ player.currentTime = 2;
+ container.style.fontSize = '20px';
+ assert_equals(getComputedStyle(element).translate, '56px 112px');
+}, 'Translate responsive to font size changes');
+
+</script>
diff --git a/testing/web-platform/tests/web-animations/responsive/verticalAlign.html b/testing/web-platform/tests/web-animations/responsive/verticalAlign.html
new file mode 100644
index 0000000000..af81fa481b
--- /dev/null
+++ b/testing/web-platform/tests/web-animations/responsive/verticalAlign.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<div id='container'>
+<div id='element'></div>
+</div>
+
+<script>
+var element = document.getElementById('element');
+var container = document.getElementById('container');
+
+test(function() {
+ element.style.fontSize = '10px';
+ var player = element.animate([{verticalAlign: '3em'}, {verticalAlign: '5em'}], 10);
+ player.pause();
+ player.currentTime = 5;
+ element.style.fontSize = '20px';
+ assert_equals(getComputedStyle(element).verticalAlign, '80px');
+}, 'verticalAlign responsive to style changes');
+
+</script>