<!DOCTYPE html>
<html>
<style>
      #el1 {
        margin: 1px;
      }
      #el1:nth-last-child(2n) {
        display: table-header-group;
      } 
      #el2:first-child {
        display: inline-table;
      }
      #el2:nth-last-child(2n) {
        -webkit-appearance:discrete-capacity-level-indicator;
      }
      #el2 {
        display: table-header-group;
      } 
      #el4 {
        visibility: collapse;
      }
      #el5:nth-last-child(2n) {
        -webkit-appearance:discrete-capacity-level-indicator;
      }
      #el5 {
        display: table-header-group;
      } 
      #el6 {
        -webkit-border-after: solid;
        float: left;
      }
      #el6:last-of-type {
        content: "B";
      }
      #el7::before {
        content: "A";
</style>
<body>
    <script>
    onload = function() {
        el0=document.createElement('div')
        document.body.appendChild(el0)
        el0.appendChild(document.createElement('li'))
        el1=document.createElement('canvas')
        el1.setAttribute('id','el1')
        document.body.appendChild(el1)
        el2=document.createElement('canvas')
        el2.setAttribute('id','el2')
        document.body.appendChild(el2)
        el3=document.createElement('meter')
        document.body.appendChild(el3)
        el4=document.createElement('div')
        el4.setAttribute('id','el4')
        document.body.appendChild(el4)
        el5=document.createElement('canvas')
        el5.setAttribute('id','el5')
        document.body.appendChild(el5)
        el5.appendChild(document.createTextNode('A'))
        el6=document.createElement('span')
        el6.setAttribute('id','el6')
        document.body.appendChild(el6)
        document.body.appendChild(document.createElement('span'))
        el7=document.createElement('div')
        el7.setAttribute('id','el7')
        document.body.appendChild(el7)
        document.designMode='on'
        window.getSelection().setBaseAndExtent(el3, 1, el3, 1)
        document.execCommand('InsertLineBreak')
        document.execCommand('selectall')
        document.execCommand('strikethrough')
        document.execCommand('FormatBlock', false, '<'+'pre>')
	document.execCommand('Undo')

        document.body.innerHTML = "PASS if no crash or assert in debug";

        if (window.testRunner) testRunner.dumpAsText();
    }
    </script>
</body>
</html>
