WPT
wpt / css / css-values / attr-security.html
Spec: CSS Values ↗
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 | 32/32 | 32/32 | 32/32 | 26/32 | 29/32 | 0/32 |
| Subtest | Chrome | Firefox | Safari | Ladybird | Servo | Blitz |
|---|---|---|---|---|---|---|
| '--x: image-set(attr(data-foo))' with data-foo="https://does-not-exist.test/404.png" | PASS | PASS | PASS | PASS | PASS | — |
| 'background-image: image-set(attr(data-foo))' with data-foo="https://does-not-exist.test/404.png" | PASS | PASS | PASS | PASS | PASS | — |
| 'background: image-set(attr(data-foo))' with data-foo="https://does-not-exist.test/404.png" | PASS | PASS | PASS | PASS | PASS | — |
| 'background-image: image-set("https://does-not-exist.test/404.png")' with data-foo="https://does-not-exist.test/404.png" | PASS | PASS | PASS | PASS | PASS | — |
| '--x: src(attr(data-foo))' with data-foo="https://does-not-exist.test/404.png" | PASS | PASS | PASS | PASS | PASS | — |
| 'background-image: src(attr(data-foo))' with data-foo="https://does-not-exist.test/404.png" | PASS | PASS | PASS | FAIL | PASS | — |
| 'background-image: src("https://does-not-exist.test/404.png")' with data-foo="https://does-not-exist.test/404.png" | PASS | PASS | PASS | FAIL | PASS | — |
| '--x: src(string("https://does-not-exist.test" attr(data-foo)))' with data-foo="/404.png" | PASS | PASS | PASS | PASS | PASS | — |
| 'background-image: src(string("https://does-not-exist.test" attr(data-foo)))' with data-foo="/404.png" | PASS | PASS | PASS | PASS | PASS | — |
| 'background-image: src(string("https://does-not-exist.test/""404.png"))' with data-foo="/404.png" | PASS | PASS | PASS | PASS | PASS | — |
| '--x: attr(data-foo type(<url>))' with data-foo="url(https://does-not-exist.test/404.png)" | — | — | — | — | — | — |
| 'background-image: attr(data-foo type(<url>))' with data-foo="url(https://does-not-exist.test/404.png)" | PASS | PASS | PASS | FAIL | PASS | — |
| 'background-image: url("https://does-not-exist.test/404.png")' with data-foo="url(https://does-not-exist.test/404.png)" | PASS | PASS | PASS | PASS | PASS | — |
| '--x: image(attr(data-foo))' with data-foo="https://does-not-exist.test/404.png" | PASS | PASS | PASS | PASS | PASS | — |
| 'background-image: image(attr(data-foo))' with data-foo="https://does-not-exist.test/404.png" | PASS | PASS | PASS | PASS | PASS | — |
| 'background-image: image("https://does-not-exist.test/404.png")' with data-foo="https://does-not-exist.test/404.png" | PASS | PASS | PASS | PASS | PASS | — |
| 'background-image: url(https://does-not-exist.test/404.png), attr(data-foo type(<image>))' with data-foo="linear-gradient(#000000, #ffffff)" | PASS | PASS | PASS | PASS | PASS | — |
| '--x: image-set(var(--y, attr(data-foo)))' with data-foo="https://does-not-exist.test/404.png" | PASS | PASS | PASS | FAIL | PASS | — |
| 'background-image: image-set(var(--y, attr(data-foo)))' with data-foo="https://does-not-exist.test/404.png" | PASS | PASS | PASS | PASS | PASS | — |
| '--x: image-set(var(--some-string))' with data-foo="https://does-not-exist.test/404.png" | PASS | PASS | PASS | PASS | PASS | — |
| 'background-image: image-set(var(--some-string))' with data-foo="https://does-not-exist.test/404.png" | PASS | PASS | PASS | PASS | PASS | — |
| '--x: image-set(var(--some-string-list))' with data-foo="https://does-not-exist.test/404.png" | PASS | PASS | PASS | PASS | PASS | — |
| 'background-image: image-set(var(--some-string-list))' with data-foo="https://does-not-exist.test/404.png" | PASS | PASS | PASS | PASS | PASS | — |
| '--registered-url: attr(data-foo type(<url>))' with data-foo="${url}" | PASS | PASS | PASS | PASS | PASS | — |
| '--registered-color: attr(data-foo type(<color>))' with data-foo="blue" | PASS | PASS | PASS | PASS | PASS | — |
| '--x: image-set(var(--some-other-url))' with data-foo="https://does-not-exist.test/404.png" | PASS | PASS | PASS | PASS | PASS | — |
| 'background-image: image-set(var(--some-other-url))' with data-foo="https://does-not-exist.test/404.png" | PASS | PASS | PASS | PASS | PASS | — |
| 'background-image: attr(data-foo type(*))' with data-foo="url(https://does-not-exist.test/404.png), linear-gradient(black, white)" | PASS | PASS | PASS | FAIL | PASS | — |
| 'background-image: image-set(var(--image-set-valid))' with data-foo="image/jpeg" | PASS | PASS | PASS | PASS | PASS | — |
| 'background-image: image-set(var(--image-set-invalid))' with data-foo="https://does-not-exist.test/404.png" | PASS | PASS | PASS | PASS | PASS | — |
| 'background-image: attr(data-foo type(*))' with data-foo="linear-gradient(black, white), url(https://does-not-exist.test/404.png)" | PASS | PASS | PASS | FAIL | FAIL | — |
| 'background-image: var(--url-after-gradients)' with data-foo="https://does-not-exist.test/404.png" | PASS | PASS | PASS | PASS | FAIL | — |
| 'background-image: var(--undefined, var(--url-after-gradients))' with data-foo="https://does-not-exist.test/404.png" | PASS | PASS | PASS | PASS | FAIL | — |
| Uncaught JS error | — | — | — | — | — | FAIL |