summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/execution-timing/050.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/html/semantics/scripting-1/the-script-element/execution-timing/050.html')
-rw-r--r--testing/web-platform/tests/html/semantics/scripting-1/the-script-element/execution-timing/050.html50
1 files changed, 50 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/execution-timing/050.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/execution-timing/050.html
new file mode 100644
index 0000000000..a400749f18
--- /dev/null
+++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/execution-timing/050.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html><head>
+ <title> scheduler: adding external script that removes all scripts from document</title>
+ <meta name="timeout" content="long">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="testlib/testlib.js"></script>
+</head>
+<body>
+
+ <div id="log">FAILED (This TC requires JavaScript enabled)</div>
+
+ <script>log('inline script #1');
+ var script=testlib.addScript('', { src:'scripts/include-5.js' }, document.getElementsByTagName('head')[0], false );
+ // caching might affect whether the below script runs or not. Adding Math.random() makes the test a bit more predictable? :-p
+ var script=testlib.addScript('', { src:'scripts/include-1.js?pipe=trickle(d1)&'+Math.random() }, document.getElementsByTagName('head')[0], false );
+ log('end script #1');
+ </script>
+ <script src="scripts/include-2.js?pipe=trickle(d4)"></script>
+ <script type="text/javascript">
+ var t = async_test()
+
+ function test() {
+ // Per-spec, non-blocking/async scripts can execute at any time.
+ // Therefore, there are two possibilities for the script order here.
+ // 1. inline script first, followed by include-5 (async), then
+ // external script #1 (slow async) and finally external #2
+ // (inline).
+ // 2. inline script, external '2, 'include 5', then include-1.
+ assert_array_equals(eventOrder.slice(0, 2), [
+ 'inline script #1', 'end script #1'
+ ]);
+ if (eventOrder[2] == 'include-5 before removing scripts') {
+ assert_array_equals(eventOrder.slice(3), [
+ 'include-5 after removing scripts', 'external script #1',
+ 'external script #2'
+ ]);
+ } else {
+ assert_array_equals(eventOrder.slice(2), ['external script #2',
+ 'include-5 before removing scripts',
+ 'include-5 after removing scripts',
+ 'external script #1'
+ ]);
+ }
+ t.done();
+ }
+ onload = t.step_func(test)
+ </script>
+
+</body></html>