<!doctype html>
<meta charset=utf-8>
<link rel=stylesheet href=../include/reset.css>
<title>superscript - HTML editing conformance tests</title>

<p id=timing></p>

<div id=log></div>

<div id=test-container></div>

<script src=../include/implementation.js></script>
<script>var testsJsLibraryOnly = true</script>
<script src=../include/tests.js></script>
<script src=../data/superscript.js></script>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
"use strict";

(function() {
    var startTime = Date.now();

    // Make document.body.innerHTML more tidy by removing unnecessary things.
    [].forEach.call(document.querySelectorAll("script"), function(node) {
        node.parentNode.removeChild(node);
    });

    if (true) {
        // Silly hack: the CSS styling flag should be true, not false, to match
        // expected results.  This is because every group of tests except the
        // last (multitest) sets styleWithCSS automatically, and it sets it
        // first to false and then to true.  Thus it's left at true at the end
        // of each group of tests, so in gentest.html it will be true when
        // starting each group of tests other than the first.  But browsers are
        // supposed to default it to false when the page loads, so flip it.
        try { document.execCommand("styleWithCSS", false, "true") } catch(e) {}
    }

    browserTests.forEach(runConformanceTest);

    document.getElementById("test-container").parentNode
        .removeChild(document.getElementById("test-container"));

    var elapsed = Math.round(Date.now() - startTime)/1000;
    document.getElementById("timing").textContent =
        "Time elapsed: " + Math.floor(elapsed/60) + ":"
        + ((elapsed % 60) < 10 ? "0" : "")
        + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
