Status: FAIL | Duration: 64ms | Subtests: 1/6 | Open test on wpt.live | wpt.fyi
Data from commit:
a50cb89 wpt: run reference-named files which are themselves tests (#836) (2026-09-03)
| Subtest | Status | Message |
|---|---|---|
| registerProperty requires a Dictionary type | PASS | |
| registerProperty requires a name matching <custom-property-name> | FAIL | not a callable function |
| registerProperty only allows omitting initialValue if syntax is '*' | FAIL | not a callable function |
| registerProperty fails for an already registered property | FAIL | not a callable function |
| registerProperty requires inherits | FAIL | not a callable function |
| Registering a property should not cause a transition | FAIL | not a callable function |
/css/css-properties-values-api/register-property.html
<!DOCTYPE HTML> <link rel="help" href="https://drafts.css-houdini.org/css-properties-values-api/#register-a-custom-property" /> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="./resources/utils.js"></script> <div id=target></div> <script> // Tests for error checking during property registration test(function() { assert_throws_js(TypeError, () => CSS.registerProperty()); assert_throws_js(TypeError, () => CSS.registerProperty(undefined)); assert_throws_js(TypeError, () => CSS.registerProperty(true)); assert_throws_js(TypeError, () => CSS.registerProperty(2)); assert_throws_js(TypeError, () => CSS.registerProperty("css")); assert_throws_js(TypeError, () => CSS.registerProperty(null)); }, "registerProperty requires a Dictionary type"); test(function() { // Valid property names, shouldn't throw CSS.registerProperty({name: '--name1', inherits: false}); CSS.registerProperty({name: '--name2, no need for escapes', inherits: false}); CSS.registerProperty({name: ['--name', 3], inherits: false}); // Invalid property names assert_throws_js(TypeError, () => CSS.registerProperty({})); assert_throws_dom("SyntaxError", () => CSS.registerProperty({name: 'no-leading-dash', inherits: false})); assert_throws_dom("SyntaxError", () => CSS.registerProperty({name: '', inherits: false})); assert_throws_dom("SyntaxError", () => CSS.registerProperty({name: '\\--name', inherits: false})); }, "registerProperty requires a name matching <custom-property-name>"); test(function() { CSS.registerProperty({name: '--syntax-test-1', syntax: '*', inherits: false}); CSS.registerProperty({name: '--syntax-test-2', syntax: ' * ', inherits: false}); assert_throws_dom("SyntaxError", () => CSS.registerProperty({name: '--syntax-test-3', syntax: 'length', inherits: false})); }, "registerProperty only allows omitting initialValue if syntax is '*'"); test(function() { CSS.registerProperty({name: '--re-register', syntax: '<length>', initialValue: '0px', inherits: false}); assert_throws_dom('InvalidModificationError', () => CSS.registerProperty({name: '--re-register', syntax: '<percentage>', initialValue: '0%', inherits: false})); }, "registerProperty fails for an already registered property"); test(function(){ CSS.registerProperty({name: '--inherit-test-1', syntax: '<length>', initialValue: '0px', inherits: true}); CSS.registerProperty({name: '--inherit-test-2', syntax: '<length>', initialValue: '0px', inherits: false}); assert_throws_js(TypeError, () => CSS.registerProperty({name: '--inherit-test-3', syntax: '<length>', initialValue: '0px'})); }, "registerProperty requires inherits"); test(function(){ try { let name = generate_name(); target.style.setProperty(name, 'green'); target.style.transitionProperty = name; target.style.transitionDuration = '1s'; target.style.transitionTimingFunction = 'steps(1, end)'; assert_equals(getComputedStyle(target).getPropertyValue(name), 'green'); CSS.registerProperty({ name: name, syntax: '<color>', initialValue: 'red', inherits: false }); assert_equals(getComputedStyle(target).getPropertyValue(name), 'rgb(0, 128, 0)'); } finally { target.style = ''; } }, 'Registering a property should not cause a transition'); </script>