blob: b778dadf3c1b67a076fa3d09738fd5a71d01eae3 [file] [edit]
<!doctype html>
<title>CSSKeyframeRule keyText getter and setter</title>
<link rel="help" href="https://drafts.csswg.org/css-animations-1/#dom-csskeyframerule-keytext">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
@keyframes test {
from { opacity: 0 }
to { opacity: 1 }
50% { opacity: 0.5 }
25%, 75% { opacity: 0.3 }
}
</style>
<script>
"use strict";
const rules = document.styleSheets[0].cssRules[0].cssRules;
test(() => {
assert_equals(rules[0].keyText, "0%");
}, "getter normalizes 'from' to '0%'");
test(() => {
assert_equals(rules[1].keyText, "100%");
}, "getter normalizes 'to' to '100%'");
test(() => {
assert_equals(rules[2].keyText, "50%");
}, "getter preserves percentage values");
test(() => {
assert_equals(rules[3].keyText, "25%, 75%");
}, "getter normalizes comma-separated selectors");
test(() => {
rules[0].keyText = "10%";
assert_equals(rules[0].keyText, "10%");
}, "setter accepts a valid percentage");
test(() => {
rules[0].keyText = "from";
assert_equals(rules[0].keyText, "0%");
}, "setter normalizes 'from' to '0%'");
test(() => {
rules[0].keyText = "to";
assert_equals(rules[0].keyText, "100%");
}, "setter normalizes 'to' to '100%'");
test(() => {
rules[0].keyText = "10%, 90%";
assert_equals(rules[0].keyText, "10%, 90%");
}, "setter accepts comma-separated percentages");
test(() => {
rules[0].keyText = "from, to";
assert_equals(rules[0].keyText, "0%, 100%");
}, "setter normalizes comma-separated from/to");
test(() => {
rules[0].keyText = "50%";
assert_throws_dom("SyntaxError", () => {
rules[0].keyText = "invalid";
});
assert_equals(rules[0].keyText, "50%", "value unchanged after invalid set");
}, "setter throws SyntaxError for invalid selector");
test(() => {
rules[0].keyText = "50%";
assert_throws_dom("SyntaxError", () => {
rules[0].keyText = "";
});
assert_equals(rules[0].keyText, "50%", "value unchanged after empty set");
}, "setter throws SyntaxError for empty string");
</script>