WPT
wpt / css / css-mixins / functions / at-function-parsing.html
Spec: CSS Functions and Mixins ↗
Runs: Chrome 155.0.8042.0 (wpt@4eb09bcd9, 2026-09-04) | Firefox 157.0a1 (wpt@c3fcbf4ba, 2026-09-04) | Safari 251 preview (wpt@e7122b73f, 2026-09-04) | Ladybird 1.0-52f0f (wpt@a1ecd0c09, 2026-09-04) | Servo Servo 0.6 (wpt@2c385f65e, 2026-09-04) | Blitz a50cb8971 (wpt@a95401e4e, 2026-09-03)
View on the Blitz WPT dashboard | Open test on wpt.live | wpt.fyi
| Chrome | Firefox | Safari | Ladybird | Servo | Blitz | |
|---|---|---|---|---|---|---|
| Total | 93/93 | 39/93 | 87/93 | 93/93 | 39/93 | 0/93 |
| Subtest | Chrome | Firefox | Safari | Ladybird | Servo | Blitz |
|---|---|---|---|---|---|---|
| @function --foo() is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo( ) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo( --x ) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo () is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo (--x) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x auto) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x <angle>) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x <color>) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x <custom-ident>) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x <image>) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x <integer>) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x <length>) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x <length-percentage>) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x <number>) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x <percentage>) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x <resolution>) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x <string>) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x <time>) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x <url>) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x <transform-function>) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x <transform-list>) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x type(auto)) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x type(<length>)) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x type(<length> | auto)) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x type(none | auto)) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x type(*)) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x, --y) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x, --y, --z) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x <length>, --y, --z) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x, --y <number>, --z <angle>) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x : 10px) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x type(*): 10px) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x <length>: 10px) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x <length>: 10px, --y) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x, --y <length>: 10px) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x type(<length> | auto): auto) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x type(<length> | auto) : auto) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x:1px, --y, --z:2px) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x: 10px !important) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x: var(--y, 10px)) is valid | PASS | FAIL | FAIL | PASS | FAIL | — |
| @function --foo(--x <color>: rgb(1, 2, 3)) is valid | PASS | FAIL | FAIL | PASS | FAIL | — |
| @function --foo(--x: var(--y, 10px), --z: 2px) is valid | PASS | FAIL | FAIL | PASS | FAIL | — |
| @function --foo(--x <length>: clamp(1px, 2px, 3px)) is valid | PASS | FAIL | FAIL | PASS | FAIL | — |
| @function --foo(--x: {1px, 2px}) is valid | PASS | FAIL | FAIL | PASS | FAIL | — |
| @function --foo(--x: --bar(1px, 2px)) is valid | PASS | FAIL | FAIL | PASS | FAIL | — |
| @function --foo(--x: var(--y, 10px) is invalid | PASS | PASS | PASS | PASS | PASS | — |
| @function --foo(--x <length>: 10deg) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x <angle>: 10px) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x <color>: 10px) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x type(<color>+): red 5) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x type(auto | none): thing) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x <length>#) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x <length>+) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x type(<length>+)) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x <transform-function>#) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x <transform-function>+) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x <transform-list>#) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x <transform-list>+) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x *) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x !) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x 50px) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x <length> | auto) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x none | auto) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x <dino>) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(!) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x: !) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x type(!)) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(,) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(,,,) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x, ;) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(;) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(]) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(, --x]) is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x) returns type(*) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x) returns <length> is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x) returns <length>+ is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x) returns type(<length>) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x) returns type(<length> | auto) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x) returns type(foo | bar) is valid | PASS | FAIL | PASS | PASS | FAIL | FAIL |
| @function --foo(--x) ! is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x) ! <length> is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x) returns <length>! is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x) length is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x) returns is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x) returns is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x) returns * is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x) returns <transform-list># is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x) returns <transform-list>+ is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x) returns auto | none is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x): <length> is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x): length is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |
| @function --foo(--x) returneth <length> is invalid | PASS | PASS | PASS | PASS | PASS | FAIL |