WPT
wpt / css / css-properties-values-api / at-property.html
Spec: CSS Properties and Values API ↗
Runs: Chrome 155.0.8038.0 (wpt@05fffeacb, 2026-09-02) | Firefox 157.0a1 (wpt@7addae031, 2026-09-02) | Safari 251 preview (wpt@5ce815a83, 2026-08-27) | Ladybird 1.0-410b4 (wpt@ce41a9c47, 2026-09-02) | Servo Servo 0.6 (wpt@09159dcb3, 2026-09-02) | Blitz 188486089 (wpt@a95401e4e, 2026-09-02)
View on the Blitz WPT dashboard | Open test on wpt.live | wpt.fyi
| Chrome | Firefox | Safari | Ladybird | Servo | Blitz | |
|---|---|---|---|---|---|---|
| Total | 106/106 | 106/106 | 106/106 | 103/106 | 106/106 | 0/106 |
| Subtest | Chrome | Firefox | Safari | Ladybird | Servo | Blitz |
|---|---|---|---|---|---|---|
| Attribute 'syntax' returns expected value for ["<color>"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' returns expected value for ["<color> | none"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' returns expected value for ["<color># | <image> | none"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' returns expected value for ["foo | <length>#"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' returns expected value for ["foo | bar | baz"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' returns expected value for ["notasyntax"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' returns expected value for ["*"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' returns expected value for [" * "] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' returns expected value for ["* "] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' returns expected value for [" * "] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' returns expected value for ["red"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' makes the @property rule invalid for ["rgb(255, 0, 0)"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' makes the @property rule invalid for [<color>] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' makes the @property rule invalid for [foo | bar] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' makes the @property rule invalid for ["default"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' makes the @property rule invalid for ["Default"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' makes the @property rule invalid for ["initial"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' makes the @property rule invalid for ["Initial"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' makes the @property rule invalid for ["inherit"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' makes the @property rule invalid for ["Inherit"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' makes the @property rule invalid for ["unset"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' makes the @property rule invalid for ["Unset"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' makes the @property rule invalid for ["revert"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' makes the @property rule invalid for ["Revert"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' makes the @property rule invalid for ["revert-layer"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' makes the @property rule invalid for ["Revert-layer"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' makes the @property rule invalid for ["foo bar"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' makes the @property rule invalid for ["Foo <length>"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' makes the @property rule invalid for ["foo, bar"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' makes the @property rule invalid for ["<length> <percentage>"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'syntax' makes the @property rule invalid for ["|<length>"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'initial-value' returns expected value for [10px] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'initial-value' returns expected value for [rgb(1, 2, 3)] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'initial-value' returns expected value for [red] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'initial-value' returns expected value for [foo] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'initial-value' returns expected value for [foo(){}] | PASS | PASS | PASS | FAIL | PASS | FAIL |
| Attribute 'initial-value' makes the @property rule invalid for [3em] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'initial-value' makes the @property rule invalid for [var(--x)] | PASS | PASS | PASS | FAIL | PASS | FAIL |
| Attribute 'inherits' returns expected value for [true] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'inherits' returns expected value for [false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'inherits' makes the @property rule invalid for [none] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'inherits' makes the @property rule invalid for [0] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'inherits' makes the @property rule invalid for [1] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'inherits' makes the @property rule invalid for ["true"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'inherits' makes the @property rule invalid for ["false"] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Attribute 'inherits' makes the @property rule invalid for [calc(0)] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Invalid property name does not parse [foo] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Invalid property name does not parse [-foo] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [*, foo(){}, false] | PASS | PASS | PASS | FAIL | PASS | FAIL |
| Rule applied [<angle>, 42deg, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<angle>, 1turn, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<color>, green, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<color>, rgb(1, 2, 3), false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<image>, url("http://a/"), false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<integer>, 5, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<length-percentage>, 10px, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<length-percentage>, 10%, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<length-percentage>, calc(10% + 10px), false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<length>, 10px, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<number>, 2.5, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<percentage>, 10%, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<resolution>, 50dppx, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<resolution>, 96dpi, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<time>, 10s, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<time>, 1000ms, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<transform-function>, rotateX(0deg), false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<transform-list>, rotateX(0deg), false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<transform-list>, rotateX(0deg) translateX(10px), false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<url>, url("http://a/"), false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<string>, 'foo bar', false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<string>, 'foo bar' , false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<string>, '"foo" bar', false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<string>, "bar baz", false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<string>, "bar 'baz'", false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<string>+, 'foo' 'bar', false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<string>#, 'foo', 'bar', false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<string>+ | <string>#, 'foo' 'bar', false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<string>+ | <string>#, 'foo' 'bar', false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<string>+ | <string>#, 'foo' "bar", false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<string># | <string>+, 'foo', 'bar', false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<string># | <string>+, 'foo', 'bar' , false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<string># | <string>+, "foo", 'bar', false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule not applied [<string>, 1px, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule not applied [<string>, foo, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule not applied [<string>, calc(1 + 2), false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule not applied [<string>, rgb(255, 99, 71), false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule not applied [<string>, 'foo' 2px, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<color>, tomato, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied [<color>, tomato, true] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule applied for "*", even with no initial value | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule not applied [undefined, green, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule not applied [<color>, undefined, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule not applied [<color>, green, undefined] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule not applied [<gandalf>, grey, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule not applied [gandalf, grey, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule not applied [<color>, notacolor, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule not applied [<length>, 10em, false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule not applied [<transform-function>, translateX(1em), false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule not applied [<transform-function>, translateY(1lh), false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule not applied [<transform-list>, rotate(10deg) translateX(1em), false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Rule not applied [<transform-list>, rotate(10deg) translateY(1lh), false] | PASS | PASS | PASS | PASS | PASS | FAIL |
| Non-inherited properties do not inherit | PASS | PASS | PASS | PASS | PASS | FAIL |
| Inherited properties inherit | PASS | PASS | PASS | PASS | PASS | FAIL |
| Initial values substituted as computed value | PASS | PASS | PASS | PASS | PASS | FAIL |
| Non-universal registration are invalid without an initial value | PASS | PASS | PASS | PASS | PASS | FAIL |
| Initial value may be omitted for universal registration | PASS | PASS | PASS | PASS | PASS | FAIL |