{"tests": [ {"description":"< in attribute name", "input":"", "output":["ParseError", ["StartTag", "z", {"z": "z=z"}]]}, {"description":"= attribute", "input":"", "output":["ParseError", ["StartTag", "z", {"=": ""}]]}, {"description":"== attribute", "input":"", "output":["ParseError", ["StartTag", "z", {"=": ""}]]}, {"description":"=== attribute", "input":"", "output":["ParseError", "ParseError", ["StartTag", "z", {"=": "="}]]}, {"description":"==== attribute", "input":"", "output":["ParseError", "ParseError", "ParseError", ["StartTag", "z", {"=": "=="}]]}, {"description":"Allowed \" after ampersand in attribute value", "input":"", "output":[["StartTag", "z", {"z": "&"}]]}, {"description":"Non-allowed ' after ampersand in attribute value", "input":"", "output":["ParseError", ["StartTag", "z", {"z": "&'"}]]}, {"description":"Allowed ' after ampersand in attribute value", "input":"", "output":[["StartTag", "z", {"z": "&"}]]}, {"description":"Non-allowed \" after ampersand in attribute value", "input":"", "output":["ParseError", ["StartTag", "z", {"z": "&\""}]]}, {"description":"Attribute name starting with \"", "input":"", "output":["ParseError", ["StartTag", "foo", {"\"": "bar"}]]}, {"description":"Attribute name starting with '", "input":"", "output":["ParseError", ["StartTag", "foo", {"'": "bar"}]]}, {"description":"Attribute name containing \"", "input":"", "output":["ParseError", ["StartTag", "foo", {"a\"b": "bar"}]]}, {"description":"Attribute name containing '", "input":"", "output":["ParseError", ["StartTag", "foo", {"a'b": "bar"}]]}, {"description":"Unquoted attribute value containing '", "input":"", "output":["ParseError", ["StartTag", "foo", {"a": "b'c"}]]}, {"description":"Unquoted attribute value containing \"", "input":"", "output":["ParseError", ["StartTag", "foo", {"a": "b\"c"}]]}, {"description":"Double-quoted attribute value not followed by whitespace", "input":"", "output":["ParseError", ["StartTag", "foo", {"a": "b", "c": ""}]]}, {"description":"Single-quoted attribute value not followed by whitespace", "input":"", "output":["ParseError", ["StartTag", "foo", {"a": "b", "c": ""}]]}, {"description":"Quoted attribute followed by permitted /", "input":"
", "output":[["StartTag", "br", {"a": "b"}]]}, {"description":"Quoted attribute followed by non-permitted /", "input":"", "output":["ParseError", ["StartTag", "bar", {"a": "b"}]]}, {"description":"CR EOF after doctype name", "input":"", "output":[["StartTag", "x", {}]]}, {"description":"Uppercase end tag name", "input":"", "output":[["EndTag", "x"]]}, {"description":"Uppercase attribute name", "input":"", "output":[["StartTag", "x", { "x":"" }]]}, {"description":"Tag/attribute name case edge values", "input":"", "output":[["StartTag", "x@az[`az{", { "@az[`az{":"" }]]}, {"description":"Duplicate different-case attributes", "input":"", "output":["ParseError", "ParseError", ["StartTag", "x", { "x":"1" }]]}, {"description":"Uppercase close tag attributes", "input":"", "output":["ParseError", ["EndTag", "x"]]}, {"description":"Duplicate close tag attributes", "input":"", "output":["ParseError", "ParseError", ["EndTag", "x"]]}, {"description":"Permitted slash", "input":"
", "output":[["StartTag", "br", {}]]}, {"description":"Non-permitted slash", "input":"", "output":["ParseError", ["StartTag", "xr", {}]]}, {"description":"Permitted slash but in close tag", "input":"
", "output":["ParseError", ["EndTag", "br"]]}, {"description":"Doctype public case-sensitivity (1)", "input":"", "output":[["DOCTYPE", "HtMl", "AbC", "XyZ", true]]}, {"description":"Doctype public case-sensitivity (2)", "input":"", "output":[["DOCTYPE", "hTmL", "aBc", "xYz", true]]}, {"description":"Doctype system case-sensitivity (1)", "input":"", "output":[["DOCTYPE", "HtMl", null, "XyZ", true]]}, {"description":"Doctype system case-sensitivity (2)", "input":"", "output":[["DOCTYPE", "hTmL", null, "xYz", true]]}, {"description":"U+0000 in lookahead region after non-matching character", "input":"\u0000", "output":["ParseError", ["Comment", "doc"], "ParseError", ["Character", "\uFFFD"]], "ignoreErrorOrder":true}, {"description":"U+0000 in lookahead region", "input":"", "output":["ParseError", ["DOCTYPE", "html", null, null, false]]}, {"description":"Doctype publi", "input":"", "output":["ParseError", ["DOCTYPE", "html", null, null, false]]}, {"description":"Doctype sys", "input":"