blob: f000178842b95570537b5354e87a14056c9d296f [file] [log] [blame]
<!DOCTYPE html>
<title>import(): error cases occuring during fetching</title>
<link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script type="module">
const cases = [
["wrong MIME type", "../errorhandling-wrongMimetype.js?pipe=header(Content-Type,text/plain)"],
["wrong MIME type of a dependency", "../errorhandling-wrongMimetype-import.js"],
["404", "../resources/404-but-js.asis"],
["404 of a dependency", "../resources/imports-404-but-js.js"],
["500", "../resources/500-but-js.asis"],
["500 of a dependency", "../resources/imports-500-but-js.js"],
["cross-origin module (without CORS)", "http://{{domains[www2]}}:{{ports[http][0]}}/html/semantics/scripting-1/the-script-element/module/imports-a.js"],
["cross-origin module dependency (without CORS)", "../resources/imports-b-cross-origin.sub.js"]
];
for (const [label, specifier] of cases) {
promise_test(t => {
return promise_rejects_js(t, TypeError, import(specifier));
}, "import() must reject when there is a " + label);
promise_test(async t => {
// The use of ?x is used to separate tests so they don't interfere with each other.
// (However, it shouldn't matter anyway, in a spec-compliant implementation.)
const suffix = (specifier.includes("?") ? "&" : "?") + "x";
const promise1 = import(specifier + suffix);
const promise2 = import(specifier + suffix);
await promise_rejects_js(t, TypeError, promise1, "It must reject the first time");
await promise_rejects_js(t, TypeError, promise2, "It must reject the second time");
const error1 = await promise1.catch(e => e);
const error2 = await promise2.catch(e => e);
assert_not_equals(error1, error2, "The error objects must be different");
}, "import() must reject with a different error object for each import when there is a " + label);
}
</script>