<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.layoutTestController)
            layoutTestController.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.layoutTestController) {
            layoutTestController.waitUntilDone();
            layoutTestController.dumpAsText();
        }
    }
    window.onload = startTest;
</script>
