summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script.html
diff options
context:
space:
mode:
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.html63
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>