<!doctype html>
<meta charset=utf-8>
<link rel=stylesheet href=../include/reset.css>
<title>italic - 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/italic.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>
