| <!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> |