WPT
wpt / preload / modulepreload.html
Spec: https://w3c.github.io/preload/ ↗
Runs: Chrome 155.0.8039.0 (wpt@a4fcd77aa, 2026-09-03) | Firefox 157.0a1 (wpt@cc4d45aa0, 2026-09-03) | Safari 251 preview (wpt@5ce815a83, 2026-08-27) | Ladybird 1.0-a9df8 (wpt@47d833bbc, 2026-09-03) | 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 | 49/55 | 40/55 | 43/55 | 54/55 | 35/55 | NOT RUN |
| Subtest | Chrome | Firefox | Safari | Ladybird | Servo | Blitz |
|---|---|---|---|---|---|---|
| link rel=modulepreload with script shares a cache with <script> tags | PASS | PASS | PASS | PASS | FAIL | — |
| same-origin link rel=modulepreload crossorigin=anonymous | PASS | PASS | PASS | PASS | FAIL | — |
| same-origin link rel=modulepreload crossorigin=use-credentials | PASS | PASS | PASS | PASS | FAIL | — |
| cross-origin link rel=modulepreload | PASS | PASS | PASS | PASS | PASS | — |
| cross-origin link rel=modulepreload crossorigin=anonymous | PASS | PASS | PASS | PASS | PASS | — |
| cross-origin link rel=modulepreload crossorigin=use-credentials | PASS | PASS | PASS | PASS | PASS | — |
| link rel=modulepreload with submodules | PASS | PASS | PASS | PASS | FAIL | — |
| link rel=modulepreload with bad href attribute | PASS | PASS | PASS | PASS | PASS | — |
| link rel=modulepreload as=script | PASS | PASS | PASS | PASS | PASS | — |
| link rel=modulepreload with non-script-like as= value (image) | PASS | PASS | PASS | PASS | PASS | — |
| link rel=modulepreload with non-script-like as= value (xslt) | PASS | PASS | FAIL | PASS | PASS | — |
| link rel=modulepreload with non-style as= value (style) | PASS | PASS | PASS | PASS | FAIL | — |
| link rel=modulepreload with non-JSON as= value (JSON) | PASS | PASS | FAIL | PASS | PASS | — |
| link rel=modulepreload with integrity match | PASS | PASS | PASS | PASS | PASS | — |
| link rel=modulepreload with integrity match2 | PASS | PASS | PASS | PASS | PASS | — |
| link rel=modulepreload with integrity mismatch | PASS | PASS | FAIL | PASS | PASS | — |
| link rel=modulepreload with integrity mismatch2 | PASS | PASS | FAIL | PASS | PASS | — |
| link rel=modulepreload with invalid integrity | PASS | PASS | PASS | FAIL | PASS | — |
| multiple link rel=modulepreload with child module before parent | PASS | PASS | PASS | PASS | FAIL | — |
| link rel=modulepreload with empty href and invalid as= value | PASS | PASS | FAIL | PASS | PASS | — |
| link rel=modulepreload and script with non-matching crossorigin values | PASS | PASS | PASS | PASS | PASS | — |
| link rel=modulepreload and script with non-matching crossorigin values2 | PASS | PASS | PASS | PASS | PASS | — |
| link rel=modulepreload and non-module script | PASS | PASS | PASS | PASS | PASS | — |
| link rel=modulepreload with script doesn't re-fetch when imported | PASS | PASS | PASS | PASS | PASS | — |
| link rel=modulepreload for a script module with syntax error will still load | PASS | PASS | PASS | PASS | PASS | — |
| link rel=modulepreload for a script module with network error | PASS | PASS | PASS | PASS | PASS | — |
| link rel=modulepreload with script and matching media | PASS | PASS | PASS | PASS | PASS | — |
| link rel=modulepreload with script and non-matching media | PASS | PASS | PASS | PASS | FAIL | — |
| link rel=modulepreload with script and empty media | PASS | PASS | PASS | PASS | PASS | — |
| link rel=modulepreload with script and empty href | PASS | PASS | PASS | PASS | PASS | — |
| multiple script link rel=modulepreload with same href | PASS | PASS | PASS | PASS | PASS | — |
| link rel=modulepreload with style doesn't re-fetch when imported | PASS | FAIL | FAIL | PASS | FAIL | — |
| link rel=modulepreload for a style module with syntax error will still load | PASS | FAIL | FAIL | PASS | FAIL | — |
| link rel=modulepreload for a style module with network error | PASS | PASS | PASS | PASS | PASS | — |
| link rel=modulepreload with style and matching media | PASS | FAIL | FAIL | PASS | FAIL | — |
| link rel=modulepreload with style and non-matching media | PASS | PASS | FAIL | PASS | FAIL | — |
| link rel=modulepreload with style and empty media | PASS | FAIL | FAIL | PASS | FAIL | — |
| link rel=modulepreload with style and empty href | PASS | PASS | FAIL | PASS | PASS | — |
| multiple style link rel=modulepreload with same href | PASS | FAIL | FAIL | PASS | FAIL | — |
| link rel=modulepreload with json doesn't re-fetch when imported | PASS | FAIL | PASS | PASS | PASS | — |
| link rel=modulepreload for a json module with syntax error will still load | PASS | FAIL | PASS | PASS | PASS | — |
| link rel=modulepreload for a json module with network error | PASS | PASS | PASS | PASS | PASS | — |
| link rel=modulepreload with json and matching media | PASS | FAIL | PASS | PASS | PASS | — |
| link rel=modulepreload with json and non-matching media | PASS | PASS | PASS | PASS | FAIL | — |
| link rel=modulepreload with json and empty media | PASS | FAIL | PASS | PASS | PASS | — |
| link rel=modulepreload with json and empty href | PASS | PASS | PASS | PASS | PASS | — |
| multiple json link rel=modulepreload with same href | PASS | FAIL | PASS | PASS | PASS | — |
| link rel=modulepreload with text doesn't re-fetch when imported | FAIL | FAIL | PASS | PASS | FAIL | — |
| link rel=modulepreload for a text module with syntax error will still load | FAIL | FAIL | PASS | PASS | FAIL | — |
| link rel=modulepreload for a text module with network error | PASS | PASS | PASS | PASS | PASS | — |
| link rel=modulepreload with text and matching media | FAIL | FAIL | PASS | PASS | FAIL | — |
| link rel=modulepreload with text and non-matching media | FAIL | PASS | PASS | PASS | FAIL | — |
| link rel=modulepreload with text and empty media | FAIL | FAIL | PASS | PASS | FAIL | — |
| link rel=modulepreload with text and empty href | PASS | PASS | PASS | PASS | PASS | — |
| multiple text link rel=modulepreload with same href | FAIL | FAIL | PASS | PASS | FAIL | — |