<!DOCTYPE html><!-- webkit-test-runner [ experimental:WebAnimationsCSSIntegrationEnabled=false ] -->
<style>
    .test { 
        -webkit-transition: width 30s; 
    }
    .test:nth-child(2n) { 
        width: calc(-8em + 59%);
    }
</style>

This tests transitioning of elements containing a calc expression. The test passes if it does not crash.

<script>
    if (window.testRunner) {
        testRunner.dumpAsText();        
        testRunner.waitUntilDone(); 
    }

    elementA = document.createElement('a');
    document.documentElement.appendChild(elementA);
    elementQ = document.createElement('q');
    document.documentElement.appendChild(elementQ);
    elementStrong = document.createElement('strong');
    document.documentElement.appendChild(elementStrong);
    elementFieldSet = document.createElement('fieldset');
    elementFieldSet.setAttribute('class', 'test');
    document.documentElement.appendChild(elementFieldSet);
    elementSection = document.createElement('section');
    
    function boom() {
        try {
            elementSection.appendChild(elementQ); 
        } catch (e) {            
        }
        if (window.testRunner) 
            testRunner.notifyDone(); 
    }
    
    setTimeout(boom, 1);
</script>
