Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test has a WPT meta file that expects 6 subtest issues.
- This WPT test may be referenced by the following Test IDs:
- /connection-allowlist/tentative/link_rel_modulepreload.sub.window.html - WPT Dashboard Interop Dashboard
// META: script=/common/get-host-info.sub.js
// META: script=/common/utils.js
// META: script=resources/utils.js
// META: timeout=long
const port = get_host_info().HTTP_PORT_ELIDED;
const SUCCESS = true;
const FAILURE = false;
function modulepreload_test(origin, expectation) {
promise_test(
async t => {
const key = token();
const value = 'hello';
const params = new URLSearchParams();
params.set('key', key);
params.set('value', value);
const link = document.createElement('link');
link.rel = 'modulepreload';
link.href = `${origin}${STORE_URL}?${params.toString()}`;
document.head.appendChild(link);
t.add_cleanup(() => link.remove());
if (expectation === SUCCESS) {
const result = await nextValueFromServer(key);
assert_equals(result, value);
} else {
const result = await Promise.race([
new Promise(r => t.step_timeout(r, 1000)), nextValueFromServer(key)
]);
assert_true(typeof result === 'undefined');
}
},
`Modulepreload to ${origin} ${
expectation === SUCCESS ? 'succeeds' : 'fails'}.`);
}
const test_cases = [
// succeeds, while subdomains fail.
// The pattern we've specified in the header ("*://*.hosts[alt]:*/") will
// match any subdomain of `hosts[alt]` (though not, as it turns out,
// `hosts[alt]` itself.
];
for (let i = 0; i < test_cases.length; i++) {
modulepreload_test(test_cases[i].origin, test_cases[i].expectation);
}