<style>
    .c2:after { float: left; content: "A"; }
</style>
PASS, if the script does not cause a crash or ASSERT failure
<script>
    function endTest(childSpan) {
        childSpan.appendChild(divToInsert);
        if (window.testRunner)
            testRunner.notifyDone();
    }
    function startTest() {
        quoteNode = document.createElement('q');
        document.documentElement.appendChild(quoteNode);
        divToInsert = document.createElement('div');
        parentSpan = document.createElement('span');
        parentSpan.setAttribute('class', 'c2');
        childSpan = document.createElement('span');
        parentSpan.appendChild(childSpan);
        document.documentElement.appendChild(parentSpan);
        setTimeout('endTest(childSpan);', 50);
        if (window.testRunner) {
            testRunner.waitUntilDone();
            testRunner.dumpAsText();
        }
    }
    window.onload = startTest;
</script>
