diff options
Diffstat (limited to 'testing/web-platform/tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script.html')
-rw-r--r-- | testing/web-platform/tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script.html | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script.html new file mode 100644 index 0000000000..25de796830 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script.html @@ -0,0 +1,63 @@ +<!DOCTYPE html> +<html> +<head> +<title>External classic scripts with nomodule content attribute must not run</title> +<link rel="author" title="Yusuke Suzuki" href="mailto:utatane.tea@gmail.com"> +<link rel="author" title="Ryosuke Niwa" href="mailto:rniwa@webkit.org"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<!-- Load this script synchronously to ensure test cases below can load it in 200ms --> +<script src="resources/set-script-executed.js"></script> +</head> +<body> +<script> +let supportsNoModule = "noModule" in document.getElementsByTagName("script")[0]; + +waitForLoadEvent = new Promise((resolve) => { + window.onload = resolve; +}); + +promise_test(() => { + window.executed = false; + let loaded = false; + let errored = false; + + let script = document.createElement('script'); + + script.src = './resources/set-script-executed.js'; + script.onload = () => loaded = true; + script.onerror = () => errored = true; + script.noModule = false; + document.body.appendChild(script); + + return waitForLoadEvent.then(() => { + assert_true(supportsNoModule); + assert_true(executed); + assert_true(loaded); + assert_false(errored); + }); +}, 'An asynchronously loaded classic script with noModule set to false must run'); + +promise_test(() => { + window.executed = false; + let loaded = false; + let errored = false; + + let script = document.createElement('script'); + script.src = './resources/set-script-executed.js'; + script.onload = () => loaded = true; + script.onerror = () => errored = true; + script.noModule = true; + document.body.appendChild(script); + + return waitForLoadEvent.then(() => { + assert_true(supportsNoModule); + assert_false(executed); + assert_false(loaded); + assert_false(errored); + }); +}, 'An asynchronously loaded classic script with noModule set to true must not run'); + +</script> +</body> +</html> |