<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<script src="../../js-test-resources/js-test-pre.js"></script>
</head>
<body onload="test()">
This tests for proper execution order of module scripts with the async attribute.<hr>
<div id="console"></div>
<script type="text/javascript">
var jsTestIsAsync = true;
var log = [];

function debug(msg)
{
    log.push(msg);
}

document.addEventListener("DOMContentLoaded", function() {
    debug('DOMContentLoaded');
}, false);

function test()
{
    var expectedOrderings = [
        [ "async", "external", "inline", "DOMContentLoaded", "slowAsync" ],
        [ "external", "async", "inline", "DOMContentLoaded", "slowAsync" ],
        [ "external", "inline", "async", "DOMContentLoaded", "slowAsync" ],
        [ "external", "inline", "DOMContentLoaded", "async", "slowAsync" ],
    ];
    var results = "PASS";
    if (!expectedOrderings.find((expected) => JSON.stringify(expected) == JSON.stringify(log)))
        results = `FAIL: Expected one of ${JSON.stringify(expectedOrderings)}, Actual=${JSON.stringify(logs)}`;
    document.getElementById("console").innerHTML = results;
    finishJSTest();
}

</script>
<script type="module" src="http://127.0.0.1:8000/misc/resources/slow-async-script.cgi" async="ASYNC"></script>
<script type="module" src="http://127.0.0.1:8000/misc/resources/async-script.js" async="ASYNC"></script>
<script src="http://127.0.0.1:8000/misc/resources/external-script.js"></script>
<script>
debug("inline");
</script>
<script src="../../js-test-resources/js-test-post.js"></script>
</body>
</html>


