<!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 {
        border-block-end: 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, 0, el3, 0)
        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>
