<!DOCTYPE html>
<title>DOMParser: &lt;parsererror> element added on error</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
const xhtml_prologue = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"' +
                       ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n' +
                       '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\n' +
                       '<body>\n',
      xhtml_epilogue = '</body>\n</html>\n';

[
  '<span x:test="testing">1</span>',                // undeclared 'x' namespace prefix
  '< span>2</span>',                                // bad start tag
  '<span :test="testing">3</span>',                 // empty namespace prefix
  '<span><em>4</span></em>',                        // staggered tags
  '<span>5',                                        // missing end </span> tag
  '6</span>',                                       // missing start <span> tag
  '<span>7< /span>',                                // bad end tag
  '<span>8</ span>',                                // bad end tag
  '<span novalue>9</span>',                         // missing attribute value
  '<span ="noattr">10</span>',                      // missing attribute name
  '<span ::="test">11</span>',                      // bad namespace prefix
  '<span xmlns:="urn:x-test:test">12</span>',       // missing namespace prefix
  '<span xmlns:xmlns="">13</span>',                 // invalid namespace prefix
  '<span data-test=testing>14</span>',              // unquoted attribute value
  '15<span',                                        // bad start tag
  '<8:test xmlns:8="urn:x-test:test">16</8:test>',  // invalid namespace prefix
  '<span xmlns:p1 xmlns:p2="urn:x-test:test"/>17',  // missing namespace URI
].forEach(fragment => {
  test(() => {
    var document_string = xhtml_prologue + fragment + xhtml_epilogue;
    var doc = (new DOMParser).parseFromString(document_string, "application/xhtml+xml");
    var parsererrors = doc.getElementsByTagName("parsererror");
    assert_equals(parsererrors.length, 1, 'expecting one parsererror');
  }, document.title + ', ' + fragment);
});
</script>
