Selectors API Test Suite Testrunner by John Resig, tests by John Resig, Disruptive Innovations, W3C CSS Working Group, jQuery JavaScript Library. Show only failing tests. 99.2%: 2147 passed, 17 failed PASS Element supports querySelector PASS Element supports querySelectorAll PASS Element.querySelectorAll Empty String PASS Element.querySelectorAll null PASS Element.querySelectorAll undefined PASS Element.querySelectorAll no value PASS Element.querySelector Empty String PASS Element.querySelector null PASS Element.querySelector undefined PASS Element.querySelector no value PASS Element.querySelectorAll: .target :target PASS Element.querySelectorAll Whitespace Trim: .target :target PASS Element.querySelector: .target :target PASS Element.querySelectorAll: html > body PASS Element.querySelectorAll Whitespace Trim: html > body PASS Element.querySelector: html > body PASS Element.querySelectorAll: .test > .blox1 PASS Element.querySelectorAll Whitespace Trim: .test > .blox1 PASS Element.querySelector: .test > .blox1 PASS Element.querySelectorAll: .blox2[align] PASS Element.querySelectorAll Whitespace Trim: .blox2[align] PASS Element.querySelector: .blox2[align] PASS Element.querySelectorAll: .blox3[align] PASS Element.querySelectorAll Whitespace Trim: .blox3[align] PASS Element.querySelector: .blox3[align] PASS Element.querySelectorAll: .blox4, .blox5 PASS Element.querySelectorAll Whitespace Trim: .blox4, .blox5 PASS Element.querySelector: .blox4, .blox5 PASS Element.querySelectorAll: .blox4[align], .blox5[align] PASS Element.querySelectorAll Whitespace Trim: .blox4[align], .blox5[align] PASS Element.querySelector: .blox4[align], .blox5[align] PASS Element.querySelectorAll: .blox6[align="center"] PASS Element.querySelectorAll Whitespace Trim: .blox6[align="center"] PASS Element.querySelector: .blox6[align="center"] PASS Element.querySelectorAll: .blox6[align="c"] PASS Element.querySelectorAll Whitespace Trim: .blox6[align="c"] PASS Element.querySelector: .blox6[align="c"] PASS Element.querySelectorAll: .blox6[align="centera"] PASS Element.querySelectorAll Whitespace Trim: .blox6[align="centera"] PASS Element.querySelector: .blox6[align="centera"] PASS Element.querySelectorAll: .blox6[foo="\e9"] PASS Element.querySelectorAll Whitespace Trim: .blox6[foo="\e9"] PASS Element.querySelector: .blox6[foo="\e9"] PASS Element.querySelectorAll: .blox6[\_foo="\e9"] PASS Element.querySelectorAll Whitespace Trim: .blox6[\_foo="\e9"] PASS Element.querySelector: .blox6[\_foo="\e9"] PASS Element.querySelectorAll: .blox7[class~="foo"] PASS Element.querySelectorAll Whitespace Trim: .blox7[class~="foo"] PASS Element.querySelector: .blox7[class~="foo"] PASS Element.querySelectorAll: .blox8, .blox9, .blox10 PASS Element.querySelectorAll Whitespace Trim: .blox8, .blox9, .blox10 PASS Element.querySelector: .blox8, .blox9, .blox10 PASS Element.querySelectorAll: .blox8[class~=""] PASS Element.querySelectorAll Whitespace Trim: .blox8[class~=""] PASS Element.querySelector: .blox8[class~=""] PASS Element.querySelectorAll: .blox9[foo~=""] PASS Element.querySelectorAll Whitespace Trim: .blox9[foo~=""] PASS Element.querySelector: .blox9[foo~=""] PASS Element.querySelectorAll: .blox10[foo~="foo"] PASS Element.querySelectorAll Whitespace Trim: .blox10[foo~="foo"] PASS Element.querySelector: .blox10[foo~="foo"] PASS Element.querySelectorAll: .attrStart > .t3 PASS Element.querySelectorAll Whitespace Trim: .attrStart > .t3 PASS Element.querySelector: .attrStart > .t3 PASS Element.querySelectorAll: .attrStart > .t1[class^="unit"] PASS Element.querySelectorAll Whitespace Trim: .attrStart > .t1[class^="unit"] PASS Element.querySelector: .attrStart > .t1[class^="unit"] PASS Element.querySelectorAll: .attrStart > .t2 PASS Element.querySelectorAll Whitespace Trim: .attrStart > .t2 PASS Element.querySelector: .attrStart > .t2 PASS Element.querySelectorAll: .attrStart > .t2[class^="nit"] PASS Element.querySelectorAll Whitespace Trim: .attrStart > .t2[class^="nit"] PASS Element.querySelector: .attrStart > .t2[class^="nit"] PASS Element.querySelectorAll: .attrStart > .t3[align^=""] PASS Element.querySelectorAll Whitespace Trim: .attrStart > .t3[align^=""] PASS Element.querySelector: .attrStart > .t3[align^=""] PASS Element.querySelectorAll: .attrStart > .t4[foo^="\e9"] PASS Element.querySelectorAll Whitespace Trim: .attrStart > .t4[foo^="\e9"] PASS Element.querySelector: .attrStart > .t4[foo^="\e9"] PASS Element.querySelectorAll: .attrEnd > .t3 PASS Element.querySelectorAll Whitespace Trim: .attrEnd > .t3 PASS Element.querySelector: .attrEnd > .t3 PASS Element.querySelectorAll: .attrEnd > .t1[class$="t1"] PASS Element.querySelectorAll Whitespace Trim: .attrEnd > .t1[class$="t1"] PASS Element.querySelector: .attrEnd > .t1[class$="t1"] PASS Element.querySelectorAll: .attrEnd > .t2 PASS Element.querySelectorAll Whitespace Trim: .attrEnd > .t2 PASS Element.querySelector: .attrEnd > .t2 PASS Element.querySelectorAll: .attrEnd > .t2[class$="unit"] PASS Element.querySelectorAll Whitespace Trim: .attrEnd > .t2[class$="unit"] PASS Element.querySelector: .attrEnd > .t2[class$="unit"] PASS Element.querySelectorAll: .attrEnd > .t3[align$=""] PASS Element.querySelectorAll Whitespace Trim: .attrEnd > .t3[align$=""] PASS Element.querySelector: .attrEnd > .t3[align$=""] PASS Element.querySelectorAll: .attrEnd > .t4[foo$="\e9"] PASS Element.querySelectorAll Whitespace Trim: .attrEnd > .t4[foo$="\e9"] PASS Element.querySelector: .attrEnd > .t4[foo$="\e9"] PASS Element.querySelectorAll: .attrMiddle > .t3 PASS Element.querySelectorAll Whitespace Trim: .attrMiddle > .t3 PASS Element.querySelector: .attrMiddle > .t3 PASS Element.querySelectorAll: .attrMiddle > .t1[class*="t t"] PASS Element.querySelectorAll Whitespace Trim: .attrMiddle > .t1[class*="t t"] PASS Element.querySelector: .attrMiddle > .t1[class*="t t"] PASS Element.querySelectorAll: .attrMiddle > .t2 PASS Element.querySelectorAll Whitespace Trim: .attrMiddle > .t2 PASS Element.querySelector: .attrMiddle > .t2 PASS Element.querySelectorAll: .attrMiddle > .t2[class*="a"] PASS Element.querySelectorAll Whitespace Trim: .attrMiddle > .t2[class*="a"] PASS Element.querySelector: .attrMiddle > .t2[class*="a"] PASS Element.querySelectorAll: .attrMiddle > .t3[align*=""] PASS Element.querySelectorAll Whitespace Trim: .attrMiddle > .t3[align*=""] PASS Element.querySelector: .attrMiddle > .t3[align*=""] PASS Element.querySelectorAll: .attrMiddle > .t4[foo*="\e9"] PASS Element.querySelectorAll Whitespace Trim: .attrMiddle > .t4[foo*="\e9"] PASS Element.querySelector: .attrMiddle > .t4[foo*="\e9"] PASS Element.querySelectorAll: .firstChild .unitTest:first-child PASS Element.querySelectorAll Whitespace Trim: .firstChild .unitTest:first-child PASS Element.querySelector: .firstChild .unitTest:first-child PASS Element.querySelectorAll: .blox12:first-child PASS Element.querySelectorAll Whitespace Trim: .blox12:first-child PASS Element.querySelector: .blox12:first-child PASS Element.querySelectorAll: .blox13:first-child PASS Element.querySelectorAll Whitespace Trim: .blox13:first-child PASS Element.querySelector: .blox13:first-child PASS Element.querySelectorAll: .blox12, .blox13 PASS Element.querySelectorAll Whitespace Trim: .blox12, .blox13 PASS Element.querySelector: .blox12, .blox13 PASS Element.querySelectorAll: :root PASS Element.querySelectorAll Whitespace Trim: :root PASS Element.querySelector: :root PASS Element.querySelectorAll: .nthchild1 > :nth-last-child(odd) PASS Element.querySelectorAll Whitespace Trim: .nthchild1 > :nth-last-child(odd) PASS Element.querySelector: .nthchild1 > :nth-last-child(odd) PASS Element.querySelectorAll: .nthchild1 > :nth-child(odd) PASS Element.querySelectorAll Whitespace Trim: .nthchild1 > :nth-child(odd) PASS Element.querySelector: .nthchild1 > :nth-child(odd) PASS Element.querySelectorAll: .nthchild2 > :nth-last-child(even) PASS Element.querySelectorAll Whitespace Trim: .nthchild2 > :nth-last-child(even) PASS Element.querySelector: .nthchild2 > :nth-last-child(even) PASS Element.querySelectorAll: .nthchild2 > :nth-child(even) PASS Element.querySelectorAll Whitespace Trim: .nthchild2 > :nth-child(even) PASS Element.querySelector: .nthchild2 > :nth-child(even) PASS Element.querySelectorAll: .nthchild3 > :nth-child(3n+2) PASS Element.querySelectorAll Whitespace Trim: .nthchild3 > :nth-child(3n+2) PASS Element.querySelector: .nthchild3 > :nth-child(3n+2) PASS Element.querySelectorAll: .nthchild3 > :nth-last-child(3n+1) PASS Element.querySelectorAll Whitespace Trim: .nthchild3 > :nth-last-child(3n+1) PASS Element.querySelector: .nthchild3 > :nth-last-child(3n+1) PASS Element.querySelectorAll: .nthchild3 > :nth-last-child(3n+3) PASS Element.querySelectorAll Whitespace Trim: .nthchild3 > :nth-last-child(3n+3) PASS Element.querySelector: .nthchild3 > :nth-last-child(3n+3) PASS Element.querySelectorAll: .nthoftype1 > div:nth-of-type(odd) PASS Element.querySelectorAll Whitespace Trim: .nthoftype1 > div:nth-of-type(odd) PASS Element.querySelector: .nthoftype1 > div:nth-of-type(odd) PASS Element.querySelectorAll: .nthoftype1 > div:nth-last-of-type(odd) PASS Element.querySelectorAll Whitespace Trim: .nthoftype1 > div:nth-last-of-type(odd) PASS Element.querySelector: .nthoftype1 > div:nth-last-of-type(odd) PASS Element.querySelectorAll: .nthoftype1 > p PASS Element.querySelectorAll Whitespace Trim: .nthoftype1 > p PASS Element.querySelector: .nthoftype1 > p PASS Element.querySelectorAll: .nthoftype2 > div:nth-of-type(even) PASS Element.querySelectorAll Whitespace Trim: .nthoftype2 > div:nth-of-type(even) PASS Element.querySelector: .nthoftype2 > div:nth-of-type(even) PASS Element.querySelectorAll: .nthoftype2 > div:nth-last-of-type(even) PASS Element.querySelectorAll Whitespace Trim: .nthoftype2 > div:nth-last-of-type(even) PASS Element.querySelector: .nthoftype2 > div:nth-last-of-type(even) PASS Element.querySelectorAll: .nthoftype2 > p PASS Element.querySelectorAll Whitespace Trim: .nthoftype2 > p PASS Element.querySelector: .nthoftype2 > p PASS Element.querySelectorAll: .nthoftype3 > div:nth-of-type(3n+1) PASS Element.querySelectorAll Whitespace Trim: .nthoftype3 > div:nth-of-type(3n+1) PASS Element.querySelector: .nthoftype3 > div:nth-of-type(3n+1) PASS Element.querySelectorAll: .nthoftype3 > div:nth-last-of-type(3n+1) PASS Element.querySelectorAll Whitespace Trim: .nthoftype3 > div:nth-last-of-type(3n+1) PASS Element.querySelector: .nthoftype3 > div:nth-last-of-type(3n+1) PASS Element.querySelectorAll: .nthoftype3 > div:nth-last-of-type(3n+2) PASS Element.querySelectorAll Whitespace Trim: .nthoftype3 > div:nth-last-of-type(3n+2) PASS Element.querySelector: .nthoftype3 > div:nth-last-of-type(3n+2) PASS Element.querySelectorAll: .nthoftype3 > p PASS Element.querySelectorAll Whitespace Trim: .nthoftype3 > p PASS Element.querySelector: .nthoftype3 > p PASS Element.querySelectorAll: .blox14:not(span) PASS Element.querySelectorAll Whitespace Trim: .blox14:not(span) PASS Element.querySelector: .blox14:not(span) PASS Element.querySelectorAll: .blox15:not([foo="blox14"]) PASS Element.querySelectorAll Whitespace Trim: .blox15:not([foo="blox14"]) PASS Element.querySelector: .blox15:not([foo="blox14"]) PASS Element.querySelectorAll: .blox16:not(.blox15) PASS Element.querySelectorAll Whitespace Trim: .blox16:not(.blox15) PASS Element.querySelector: .blox16:not(.blox15) PASS Element.querySelectorAll: .blox17:only-of-type PASS Element.querySelectorAll Whitespace Trim: .blox17:only-of-type PASS Element.querySelector: .blox17:only-of-type PASS Element.querySelectorAll: .blox18:only-of-type PASS Element.querySelectorAll Whitespace Trim: .blox18:only-of-type PASS Element.querySelector: .blox18:only-of-type PASS Element.querySelectorAll: .blox18:not(:only-of-type) PASS Element.querySelectorAll Whitespace Trim: .blox18:not(:only-of-type) PASS Element.querySelector: .blox18:not(:only-of-type) PASS Element.querySelectorAll: .lastChild > :last-child PASS Element.querySelectorAll Whitespace Trim: .lastChild > :last-child PASS Element.querySelector: .lastChild > :last-child PASS Element.querySelectorAll: .lastChild > :not(:last-child) PASS Element.querySelectorAll Whitespace Trim: .lastChild > :not(:last-child) PASS Element.querySelector: .lastChild > :not(:last-child) PASS Element.querySelectorAll: .firstOfType > *:first-of-type PASS Element.querySelectorAll Whitespace Trim: .firstOfType > *:first-of-type PASS Element.querySelector: .firstOfType > *:first-of-type PASS Element.querySelectorAll: *.firstOfType > :not(:first-of-type) PASS Element.querySelectorAll Whitespace Trim: *.firstOfType > :not(:first-of-type) PASS Element.querySelector: *.firstOfType > :not(:first-of-type) PASS Element.querySelectorAll: .lastOfType > *:last-of-type PASS Element.querySelectorAll Whitespace Trim: .lastOfType > *:last-of-type PASS Element.querySelector: .lastOfType > *:last-of-type PASS Element.querySelectorAll: *.lastOfType > :not(:last-of-type) PASS Element.querySelectorAll Whitespace Trim: *.lastOfType > :not(:last-of-type) PASS Element.querySelector: *.lastOfType > :not(:last-of-type) PASS Element.querySelectorAll: .onlyChild > *:not(:only-child) PASS Element.querySelectorAll Whitespace Trim: .onlyChild > *:not(:only-child) PASS Element.querySelector: .onlyChild > *:not(:only-child) PASS Element.querySelectorAll: .onlyChild > .unitTest > *:only-child PASS Element.querySelectorAll Whitespace Trim: .onlyChild > .unitTest > *:only-child PASS Element.querySelector: .onlyChild > .unitTest > *:only-child PASS Element.querySelectorAll: .onlyOfType *:only-of-type PASS Element.querySelectorAll Whitespace Trim: .onlyOfType *:only-of-type PASS Element.querySelector: .onlyOfType *:only-of-type PASS Element.querySelectorAll: .onlyOfType *:not(:only-of-type) PASS Element.querySelectorAll Whitespace Trim: .onlyOfType *:not(:only-of-type) PASS Element.querySelector: .onlyOfType *:not(:only-of-type) PASS Element.querySelectorAll: .empty > *.isEmpty:empty PASS Element.querySelectorAll Whitespace Trim: .empty > *.isEmpty:empty PASS Element.querySelector: .empty > *.isEmpty:empty PASS Element.querySelectorAll: .empty > .isNotEmpty PASS Element.querySelectorAll Whitespace Trim: .empty > .isNotEmpty PASS Element.querySelector: .empty > .isNotEmpty PASS Element.querySelectorAll: .empty > .isNotEmpty:empty PASS Element.querySelectorAll Whitespace Trim: .empty > .isNotEmpty:empty PASS Element.querySelector: .empty > .isNotEmpty:empty PASS Element.querySelectorAll: .empty > .isNotEmpty:not(:empty) PASS Element.querySelectorAll Whitespace Trim: .empty > .isNotEmpty:not(:empty) PASS Element.querySelector: .empty > .isNotEmpty:not(:empty) PASS Element.querySelectorAll: .lang :lang(en) PASS Element.querySelectorAll Whitespace Trim: .lang :lang(en) PASS Element.querySelector: .lang :lang(en) PASS Element.querySelectorAll: .lang :lang(fr) PASS Element.querySelectorAll Whitespace Trim: .lang :lang(fr) PASS Element.querySelector: .lang :lang(fr) PASS Element.querySelectorAll: .lang .t1 PASS Element.querySelectorAll Whitespace Trim: .lang .t1 PASS Element.querySelector: .lang .t1 PASS Element.querySelectorAll: .lang .t1:lang(es) PASS Element.querySelectorAll Whitespace Trim: .lang .t1:lang(es) PASS Element.querySelector: .lang .t1:lang(es) PASS Element.querySelectorAll: .lang :lang(es-AR) PASS Element.querySelectorAll Whitespace Trim: .lang :lang(es-AR) PASS Element.querySelector: .lang :lang(es-AR) PASS Element.querySelectorAll: .attrLang .t1 PASS Element.querySelectorAll Whitespace Trim: .attrLang .t1 PASS Element.querySelector: .attrLang .t1 PASS Element.querySelectorAll: .attrLang .t1[lang|="en"] PASS Element.querySelectorAll Whitespace Trim: .attrLang .t1[lang|="en"] PASS Element.querySelector: .attrLang .t1[lang|="en"] PASS Element.querySelectorAll: .attrLang [lang|="fr"] PASS Element.querySelectorAll Whitespace Trim: .attrLang [lang|="fr"] PASS Element.querySelector: .attrLang [lang|="fr"] PASS Element.querySelectorAll: .attrLang .t2[lang|="en"] PASS Element.querySelectorAll Whitespace Trim: .attrLang .t2[lang|="en"] PASS Element.querySelector: .attrLang .t2[lang|="en"] PASS Element.querySelectorAll: .attrLang .t3 PASS Element.querySelectorAll Whitespace Trim: .attrLang .t3 PASS Element.querySelector: .attrLang .t3 PASS Element.querySelectorAll: .attrLang .t3[lang|="es"] PASS Element.querySelectorAll Whitespace Trim: .attrLang .t3[lang|="es"] PASS Element.querySelector: .attrLang .t3[lang|="es"] PASS Element.querySelectorAll: .attrLang [lang|="es-AR"] PASS Element.querySelectorAll Whitespace Trim: .attrLang [lang|="es-AR"] PASS Element.querySelector: .attrLang [lang|="es-AR"] PASS Element.querySelectorAll: .UI .t1:enabled > .unitTest PASS Element.querySelectorAll Whitespace Trim: .UI .t1:enabled > .unitTest PASS Element.querySelector: .UI .t1:enabled > .unitTest PASS Element.querySelectorAll: .UI .t2:disabled > .unitTest PASS Element.querySelectorAll Whitespace Trim: .UI .t2:disabled > .unitTest PASS Element.querySelector: .UI .t2:disabled > .unitTest PASS Element.querySelectorAll: .UI .t3:checked + div PASS Element.querySelectorAll Whitespace Trim: .UI .t3:checked + div PASS Element.querySelector: .UI .t3:checked + div PASS Element.querySelectorAll: .UI .t4:not(:checked) + div PASS Element.querySelectorAll Whitespace Trim: .UI .t4:not(:checked) + div PASS Element.querySelector: .UI .t4:not(:checked) + div PASS Element.querySelectorAll: .tilda .t1 PASS Element.querySelectorAll Whitespace Trim: .tilda .t1 PASS Element.querySelector: .tilda .t1 PASS Element.querySelectorAll: .tilda .t1 ~ .unitTest PASS Element.querySelectorAll Whitespace Trim: .tilda .t1 ~ .unitTest PASS Element.querySelector: .tilda .t1 ~ .unitTest PASS Element.querySelectorAll: .tilda .t1:hover ~ .unitTest PASS Element.querySelectorAll Whitespace Trim: .tilda .t1:hover ~ .unitTest PASS Element.querySelector: .tilda .t1:hover ~ .unitTest PASS Element.querySelectorAll: .plus .t1, .plus .t2 PASS Element.querySelectorAll Whitespace Trim: .plus .t1, .plus .t2 PASS Element.querySelector: .plus .t1, .plus .t2 PASS Element.querySelectorAll: .plus .t1 + .unitTest + .unitTest PASS Element.querySelectorAll Whitespace Trim: .plus .t1 + .unitTest + .unitTest PASS Element.querySelector: .plus .t1 + .unitTest + .unitTest PASS Element.querySelectorAll: .plus .t1:hover + .unitTest + .unitTest PASS Element.querySelectorAll Whitespace Trim: .plus .t1:hover + .unitTest + .unitTest PASS Element.querySelector: .plus .t1:hover + .unitTest + .unitTest FAIL Inside Element: :target selector PASS Inside Element: childhood selector PASS Inside Element: attribute existence selector PASS Inside Element: attribute existence selector with empty string value PASS Inside Element: attribute existence selector with almost identical attribute PASS Inside Element: attribute existence selector with almost identical attribute PASS Inside Element: attribute value selector PASS Inside Element: attribute value selector with an entity in the attribute and an escaped value in the selector PASS Inside Element: attribute value selector with an entity in the attribute, an escaped value in the selector, and a leading underscore in the attribute name PASS Inside Element: [~=] attribute selector PASS Inside Element: [~=] attribute selector looking for empty string PASS Inside Element: [~=] attribute selector looking for empty string in empty attribute PASS Inside Element: [~=] attribute selector looking for 'foo' in 'foobar' PASS Inside Element: [^=] attribute selector PASS Inside Element: [^=] attribute selector PASS Inside Element: [^=] attribute selector looking for empty string PASS Inside Element: [^=] attribute selector looking for é PASS Inside Element: [$=] attribute selector PASS Inside Element: [$=] attribute selector PASS Inside Element: [$=] attribute selector looking for empty string PASS Inside Element: [$=] attribute selector looking for é PASS Inside Element: [*=] attribute selector PASS Inside Element: [*=] attribute selector PASS Inside Element: [*=] attribute selector looking for empty string PASS Inside Element: [*=] attribute selector looking for é PASS Inside Element: :first-child selector PASS Inside Element: :first-child selector should not match non first child PASS Inside Element: :first-child selector should not match non first child PASS Inside Element: negation pseudo-class with argument being an element type selector PASS Inside Element: negation pseudo-class with argument being an attribute selector PASS Inside Element: negation pseudo-class accepts only simple selectors for argument PASS Inside Element: :only-of-type selector PASS Inside Element: negated :only-of-type selector PASS Inside Element: negated :only-of-type selector PASS Inside Element: :nth-child(odd) selector PASS Inside Element: :nth-last-child(odd) selector PASS Inside Element: :nth-child(odd) selector PASS Inside Element: :nth-last-child(odd) selector PASS Inside Element: :nth-child(odd) selector PASS Inside Element: :nth-last-child(odd) selector PASS Inside Element: :nth-last-child(even) selector PASS Inside Element: :nth-child(even) selector PASS Inside Element: :nth-last-child(even) selector PASS Inside Element: :nth-child(even) selector PASS Inside Element: :nth-last-child(even) selector PASS Inside Element: :nth-child(even) selector PASS Inside Element: :nth-last-child(3n+3) selector PASS Inside Element: :nth-child(3n+2) selector PASS Inside Element: :nth-last-child(3n+1) selector PASS Inside Element: :nth-last-child(3n+3) selector PASS Inside Element: :nth-child(3n+2) selector PASS Inside Element: :nth-last-child(3n+1) selector PASS Inside Element: :nth-of-type(odd) selector PASS Inside Element: :nth-* selector PASS Inside Element: :nth-* selector PASS Inside Element: :nth-last-of-type(odd) selector PASS Inside Element: :nth-* selector PASS Inside Element: :nth-of-type(odd) selector PASS Inside Element: :nth-last-of-type(odd) selector PASS Inside Element: :nth-last-of-type(even) selector PASS Inside Element: :nth-* selector PASS Inside Element: :nth-* selector PASS Inside Element: :nth-of-type(even) selector PASS Inside Element: :nth-* selector PASS Inside Element: :nth-last-of-type(even) selector PASS Inside Element: :nth-of-type(even) selector PASS Inside Element: :nth-of-type(3n+1) selector PASS Inside Element: :nth-* selector PASS Inside Element: :nth-* selector PASS Inside Element: :nth-last-of-type(3n+2) selector PASS Inside Element: :nth-* selector PASS Inside Element: :nth-last-of-type(3n+1) selector PASS Inside Element: :nth-of-type(3n+1) selector PASS Inside Element: :nth-* selector PASS Inside Element: :nth-last-of-type(3n+2) selector PASS Inside Element: :nth-last-of-type(3n+1) selector PASS Inside Element: :not(:last-child) selector PASS Inside Element: :last-child selector PASS Inside Element: :first-of-type selector PASS Inside Element: :first-of-type selector PASS Inside Element: :not(:first-of-type) PASS Inside Element: :not(:first-of-type) PASS Inside Element: :not(:last-of-type) PASS Inside Element: :not(:last-of-type) PASS Inside Element: :last-of-type selector PASS Inside Element: :last-of-type selector PASS Inside Element: :only-child where the element is NOT the only child PASS Inside Element: :only-child where the element is the only child PASS Inside Element: :only-child where the element is the only child PASS Inside Element: :only-of-type PASS Inside Element: :only-of-type PASS Inside Element: :only-of-type PASS Inside Element: :not(only-of-type) PASS Inside Element: :empty with empty element PASS Inside Element: :empty but element contains a whitespace PASS Inside Element: :empty and element contains an SGML comment PASS Inside Element: :empty but element contains a SPAN element PASS Inside Element: :empty but element contains an entity reference PASS Inside Element: :lang() where language comes from the document PASS Inside Element: :lang() where language comes from the element PASS Inside Element: :lang() where language comes from the element but is a dialect of the language queried PASS Inside Element: :lang() where language comes from the element but the language queried is a dialect of the element's one so it should not match PASS Inside Element: [|=] where language comes from the document PASS Inside Element: [|=] where language comes from the element PASS Inside Element: [|=] where language comes from the element but is a dialect of the language queried PASS Inside Element: [|=] where language comes from the element but the language queried is a dialect of the element's one so it should not match PASS Inside Element: :enabled pseudo-class PASS Inside Element: :enabled pseudo-class PASS Inside Element: :checked PASS Inside Element: :not(:checked) PASS Inside Element: ~ combinator PASS Inside Element: ~ combinator PASS Inside Element: ~ combinator PASS Inside Element: ~ combinator PASS Inside Element: + combinator PASS Inside Element: + combinator PASS Inside Element: + combinator PASS Element: StaticNodeList PASS Element: StaticNodeList PASS Outside Element: childhood selector PASS Outside Element: attribute existence selector PASS Outside Element: attribute existence selector with empty string value PASS Outside Element: attribute existence selector with almost identical attribute PASS Outside Element: attribute existence selector with almost identical attribute PASS Outside Element: attribute value selector PASS Outside Element: attribute value selector with an entity in the attribute and an escaped value in the selector PASS Outside Element: attribute value selector with an entity in the attribute, an escaped value in the selector, and a leading underscore in the attribute name PASS Outside Element: [~=] attribute selector PASS Outside Element: [~=] attribute selector looking for empty string PASS Outside Element: [~=] attribute selector looking for empty string in empty attribute PASS Outside Element: [~=] attribute selector looking for 'foo' in 'foobar' PASS Outside Element: [^=] attribute selector PASS Outside Element: [^=] attribute selector PASS Outside Element: [^=] attribute selector looking for empty string PASS Outside Element: [^=] attribute selector looking for é PASS Outside Element: [$=] attribute selector PASS Outside Element: [$=] attribute selector PASS Outside Element: [$=] attribute selector looking for empty string PASS Outside Element: [$=] attribute selector looking for é PASS Outside Element: [*=] attribute selector PASS Outside Element: [*=] attribute selector PASS Outside Element: [*=] attribute selector looking for empty string PASS Outside Element: [*=] attribute selector looking for é PASS Outside Element: :first-child selector PASS Outside Element: :first-child selector should not match non first child PASS Outside Element: :first-child selector should not match non first child PASS Outside Element: negation pseudo-class with argument being an element type selector PASS Outside Element: negation pseudo-class with argument being an attribute selector PASS Outside Element: negation pseudo-class accepts only simple selectors for argument PASS Outside Element: :only-of-type selector PASS Outside Element: negated :only-of-type selector PASS Outside Element: negated :only-of-type selector PASS Outside Element: :nth-child(odd) selector PASS Outside Element: :nth-last-child(odd) selector PASS Outside Element: :nth-child(odd) selector PASS Outside Element: :nth-last-child(odd) selector PASS Outside Element: :nth-child(odd) selector PASS Outside Element: :nth-last-child(odd) selector PASS Outside Element: :nth-last-child(even) selector PASS Outside Element: :nth-child(even) selector PASS Outside Element: :nth-last-child(even) selector PASS Outside Element: :nth-child(even) selector PASS Outside Element: :nth-last-child(even) selector PASS Outside Element: :nth-child(even) selector PASS Outside Element: :nth-last-child(3n+3) selector PASS Outside Element: :nth-child(3n+2) selector PASS Outside Element: :nth-last-child(3n+1) selector PASS Outside Element: :nth-last-child(3n+3) selector PASS Outside Element: :nth-child(3n+2) selector PASS Outside Element: :nth-last-child(3n+1) selector PASS Outside Element: :nth-of-type(odd) selector PASS Outside Element: :nth-of-* selector PASS Outside Element: :nth-of-* selector PASS Outside Element: :nth-last-of-type(odd) selector PASS Outside Element: :nth-of-* selector PASS Outside Element: :nth-of-type(odd) selector PASS Outside Element: :nth-last-of-type(odd) selector PASS Outside Element: :nth-last-of-type(even) selector PASS Outside Element: :nth-of-* selector PASS Outside Element: :nth-of-* selector PASS Outside Element: :nth-of-type(even) selector PASS Outside Element: :nth-of-* selector PASS Outside Element: :nth-last-of-type(even) selector PASS Outside Element: :nth-of-type(even) selector PASS Outside Element: :nth-of-type(3n+1) selector PASS Outside Element: :nth-of-* selector PASS Outside Element: :nth-of-* selector PASS Outside Element: :nth-last-of-type(3n+2) selector PASS Outside Element: :nth-of-* selector PASS Outside Element: :nth-last-of-type(3n+1) selector PASS Outside Element: :nth-of-type(3n+1) selector PASS Outside Element: :nth-of-* selector PASS Outside Element: :nth-last-of-type(3n+2) selector PASS Outside Element: :nth-last-of-type(3n+1) selector PASS Outside Element: :not(:last-child) selector PASS Outside Element: :last-child selector PASS Outside Element: :first-of-type selector PASS Outside Element: :first-of-type selector PASS Outside Element: :not(:first-of-type) PASS Outside Element: :not(:first-of-type) PASS Outside Element: :not(:last-of-type) PASS Outside Element: :not(:last-of-type) PASS Outside Element: :last-of-type selector PASS Outside Element: :last-of-type selector PASS Outside Element: :only-child where the element is NOT the only child PASS Outside Element: :only-child where the element is the only child PASS Outside Element: :only-child where the element is the only child PASS Outside Element: :only-of-type PASS Outside Element: :only-of-type PASS Outside Element: :only-of-type PASS Outside Element: :not(only-of-type) PASS Outside Element: :empty with empty element PASS Outside Element: :empty but element contains a whitespace PASS Outside Element: :empty and element contains an SGML comment PASS Outside Element: :empty but element contains a SPAN element PASS Outside Element: :empty but element contains an entity reference PASS Outside Element: :lang() where language comes from the document PASS Outside Element: :lang() where language comes from the element PASS Outside Element: :lang() where language comes from the element but is a dialect of the language queried PASS Outside Element: :lang() where language comes from the element but the language queried is a dialect of the element's one so it should not match PASS Outside Element: [|=] where language comes from the document PASS Outside Element: [|=] where language comes from the element PASS Outside Element: [|=] where language comes from the element but is a dialect of the language queried PASS Outside Element: [|=] where language comes from the element but the language queried is a dialect of the element's one so it should not match PASS Outside Element: :enabled pseudo-class PASS Outside Element: :enabled pseudo-class PASS Outside Element: :checked PASS Outside Element: :not(:checked) PASS Outside Element: ~ combinator PASS Outside Element: ~ combinator PASS Outside Element: ~ combinator PASS Outside Element: ~ combinator PASS Outside Element: + combinator PASS Outside Element: + combinator PASS Outside Element: + combinator PASS Syntax Error: Element.querySelectorAll Empty String PASS Syntax Error: Element.querySelectorAll null PASS Syntax Error: Element.querySelectorAll undefined PASS Syntax Error: Element.querySelectorAll no value PASS Syntax Error: Element.querySelector Empty String PASS Syntax Error: Element.querySelector null PASS Syntax Error: Element.querySelector undefined PASS Syntax Error: Element.querySelector no value FAIL Syntax Error: Element.querySelectorAll: .blox16:not(.blox15[foo="blox14"]) FAIL Syntax Error: Element.querySelector: .blox16:not(.blox15[foo="blox14"]) FAIL Syntax Error: Element.querySelectorAll: div:not(:not(div)) FAIL Syntax Error: Element.querySelector: div:not(:not(div)) PASS Syntax Error: Element.querySelectorAll: div, PASS Syntax Error: Element.querySelector: div, PASS Syntax Error: Element.querySelectorAll: .5cm PASS Syntax Error: Element.querySelector: .5cm PASS Syntax Error: Element.querySelectorAll: foo & address, p PASS Syntax Error: Element.querySelector: foo & address, p PASS Syntax Error: Element.querySelectorAll: [*=test] PASS Syntax Error: Element.querySelector: [*=test] PASS Syntax Error: Element.querySelectorAll: [*|*=test] PASS Syntax Error: Element.querySelector: [*|*=test] PASS Syntax Error: Element.querySelectorAll: div:subject PASS Syntax Error: Element.querySelector: div:subject PASS Syntax Error: Element.querySelectorAll: :canvas PASS Syntax Error: Element.querySelector: :canvas PASS Syntax Error: Element.querySelectorAll: :viewport PASS Syntax Error: Element.querySelector: :viewport PASS Syntax Error: Element.querySelectorAll: :window PASS Syntax Error: Element.querySelector: :window PASS Syntax Error: Element.querySelectorAll: :menu PASS Syntax Error: Element.querySelector: :menu PASS Syntax Error: Element.querySelectorAll: :table PASS Syntax Error: Element.querySelector: :table PASS Syntax Error: Element.querySelectorAll: :select PASS Syntax Error: Element.querySelector: :select PASS Syntax Error: Element.querySelectorAll: ::canvas PASS Syntax Error: Element.querySelector: ::canvas PASS Syntax Error: Element.querySelectorAll: ::viewport PASS Syntax Error: Element.querySelector: ::viewport PASS Syntax Error: Element.querySelectorAll: ::window PASS Syntax Error: Element.querySelector: ::window PASS Syntax Error: Element.querySelectorAll: ::menu PASS Syntax Error: Element.querySelector: ::menu PASS Syntax Error: Element.querySelectorAll: ::table PASS Syntax Error: Element.querySelector: ::table PASS Syntax Error: Element.querySelectorAll: ::select PASS Syntax Error: Element.querySelector: ::select PASS Syntax Error: Element.querySelectorAll: ..test PASS Syntax Error: Element.querySelector: ..test PASS Syntax Error: Element.querySelectorAll: .foo..quux PASS Syntax Error: Element.querySelector: .foo..quux PASS Syntax Error: Element.querySelectorAll: .bar. PASS Syntax Error: Element.querySelector: .bar. PASS Element: Select all PASS Element: Select all elements, no comment nodes PASS Element: :root Selector (:root) PASS Element: :root All Selector PASS Element: Element Selector (#root3 p) PASS Element: Parent Element (#root3 div p) PASS Element: Object/param as context PASS Element: <input name="length"> cannot be found under IE PASS Element: <input name="length"> cannot be found under IE PASS Element: Broken Selector (#root3 [) PASS Element: Broken Selector (#root3 () PASS Element: Broken Selector (#root3 {) PASS Element: Broken Selector (#root3 <) PASS Element: Broken Selector (#root3 ()) PASS Element: Broken Selector (#root3 <>) PASS Element: Broken Selector (#root3 {}) PASS Element: ID Selector w/ Element (#root3 ul#first) PASS Element: ID selector with existing ID descendant (#root3 #firstp #simon1) PASS Element: ID selector with non-existant descendant (#root3 #firstp #foobar) PASS Element: ID selector using UTF8 (#root3 #台北Táiběi) PASS Element: Multiple ID selectors using UTF8 (#root3 #台北Táiběi, #root3 #台北) PASS Element: Descendant ID selector using UTF8 (#root3 div #台北) PASS Element: Child ID selector using UTF8 (#root3 form > #台北) PASS Element: Escaped ID (#root3 #foo\:bar) PASS Element: Escaped ID (#root3 #test\.foo\[5\]bar) PASS Element: Descendant escaped ID (#root3 div #foo\:bar) PASS Element: Descendant escaped ID (#root3 div #test\.foo\[5\]bar) PASS Element: Child escaped ID (#root3 form > #foo\:bar) PASS Element: Child escaped ID (#root3 form > #test\.foo\[5\]bar) PASS Element: ID Selector, child ID present (#root3 #form > #radio1) PASS Element: ID Selector, not an ancestor ID (#root3 #form #first) PASS Element: ID Selector, not a child ID (#root3 #form > #option1a) PASS Element: All Children of ID (#root3 #foo > *) PASS Element: All Children of ID with no children (#root3 #firstUL > *) PASS Element: ID selector with non-existant ancestor (#root3 #asdfasdf #foobar) PASS Element: Class Selector (#root3 .blog) PASS Element: Class Selector (#root3 .blog.link) PASS Element: Class Selector w/ Element (#root3 a.blog) PASS Element: Parent Class Selector (#root3 p .blog) PASS Element: Class selector using UTF8 (#root3 .台北Táiběi) PASS Element: Class selector using UTF8 (#root3 .台北) PASS Element: Class selector using UTF8 (#root3 .台北Táiběi.台北) PASS Element: Class selector using UTF8 (#root3 .台北Táiběi, #root3 .台北) PASS Element: Descendant class selector using UTF8 (#root3 div .台北Táiběi) PASS Element: Child class selector using UTF8 (#root3 form > .台北Táiběi) PASS Element: Escaped Class (#root3 .foo\:bar) PASS Element: Escaped Class (#root3 .test\.foo\[5\]bar) PASS Element: Descendant scaped Class (#root3 div .foo\:bar) PASS Element: Descendant scaped Class (#root3 div .test\.foo\[5\]bar) PASS Element: Child escaped Class (#root3 form > .foo\:bar) PASS Element: Child escaped Class (#root3 form > .test\.foo\[5\]bar) PASS Element: Comma Support (#root3 a.blog, #root3 p) PASS Element: Comma Support (#root3 a.blog , #root3 p) PASS Element: Comma Support (#root3 a.blog , #root3 p) PASS Element: Comma Support (#root3 a.blog, #root3 p) PASS Element: Child (#root3 p > a) PASS Element: Child (#root3 p> a) PASS Element: Child (#root3 p >a) PASS Element: Child (#root3 p>a) PASS Element: Child w/ Class (#root3 p > a.blog) PASS Element: All Children (#root3 code > *) PASS Element: All Grandchildren (#root3 p > * > *) PASS Element: Adjacent (#root3 a + a) PASS Element: Adjacent (#root3 a +a) PASS Element: Adjacent (#root3 a+ a) PASS Element: Adjacent (#root3 a+a) PASS Element: Adjacent (#root3 p + p) PASS Element: Comma, Child, and Adjacent (#root3 a + a, #root3 code > a) PASS Element: First Child (#root3 p:first-child) PASS Element: Nth Child (#root3 p:nth-child(1)) PASS Element: Last Child (#root3 p:last-child) PASS Element: Last Child (#root3 a:last-child) PASS Element: Nth-child (#root3 #main form#form > *:nth-child(2)) PASS Element: Nth-child (#root3 #main form#form > :nth-child(2)) PASS Element: Nth-child (#root3 #form #select1 option:nth-child(3)) PASS Element: Nth-child (#root3 #form #select1 option:nth-child(0n+3)) PASS Element: Nth-child (#root3 #form #select1 option:nth-child(1n+0)) PASS Element: Nth-child (#root3 #form #select1 option:nth-child(1n)) PASS Element: Nth-child (#root3 #form #select1 option:nth-child(n)) PASS Element: Nth-child (#root3 #form #select1 option:nth-child(even)) PASS Element: Nth-child (#root3 #form #select1 option:nth-child(odd)) PASS Element: Nth-child (#root3 #form #select1 option:nth-child(2n)) PASS Element: Nth-child (#root3 #form #select1 option:nth-child(2n+1)) PASS Element: Nth-child (#root3 #form #select1 option:nth-child(3n)) PASS Element: Nth-child (#root3 #form #select1 option:nth-child(3n+1)) PASS Element: Nth-child (#root3 #form #select1 option:nth-child(3n+2)) PASS Element: Nth-child (#root3 #form #select1 option:nth-child(3n+3)) PASS Element: Nth-child (#root3 #form #select1 option:nth-child(3n-1)) PASS Element: Nth-child (#root3 #form #select1 option:nth-child(3n-2)) PASS Element: Nth-child (#root3 #form #select1 option:nth-child(3n-3)) PASS Element: Nth-child (#root3 #form #select1 option:nth-child(3n+0)) PASS Element: Nth-child (#root3 #form #select1 option:nth-child(-n+3)) PASS Element: Attribute Exists (#root3 a[title]) PASS Element: Attribute Exists (#root3 *[title]) PASS Element: Attribute Exists (#root3 [title]) PASS Element: Attribute Equals (#root3 a[rel='bookmark']) PASS Element: Attribute Equals (#root3 a[rel="bookmark"]) PASS Element: Attribute Equals (#root3 a[rel=bookmark]) PASS Element: Multiple Attribute Equals (#root3 #form input[type='hidden'], #root3 #form input[type='radio']) PASS Element: Multiple Attribute Equals (#root3 #form input[type="hidden"], #root3 #form input[type='radio']) PASS Element: Multiple Attribute Equals (#root3 #form input[type=hidden], #root3 #form input[type=radio]) PASS Element: Attribute selector using UTF8 (#root3 span[lang=中文]) PASS Element: Attribute Begins With (#root3 a[href ^= 'http://www']) PASS Element: Attribute Ends With (#root3 a[href $= 'org/']) PASS Element: Attribute Contains (#root3 a[href *= 'google']) PASS Element: Select options via [selected] (#root3 #select1 option[selected]) PASS Element: Select options via [selected] (#root3 #select2 option[selected]) PASS Element: Select options via [selected] (#root3 #select3 option[selected]) PASS Element: Grouped Form Elements (#root3 input[name='foo[bar]']) PASS Element: :not() Existing attribute (#root3 #form select:not([multiple])) PASS Element: :not() Equals attribute (#root3 #form select:not([name=select1])) PASS Element: :not() Equals quoted attribute (#root3 #form select:not([name='select1'])) PASS Element: First Child (#root3 p:first-child) PASS Element: Last Child (#root3 p:last-child) PASS Element: Only Child (#root3 a:only-child) PASS Element: Empty (#root3 ul:empty) PASS Element: Disabled UI Element (#root3 #form input:disabled) PASS Element: Checked UI Element (#root3 #form input:checked) PASS Element: Element Preceded By (#root3 p ~ div) PASS Element: Not (#root3 a.blog:not(.link)) PASS Disconnected Element supports querySelector PASS Disconnected Element supports querySelectorAll PASS Disconnected Element.querySelectorAll Empty String PASS Disconnected Element.querySelectorAll null PASS Disconnected Element.querySelectorAll undefined PASS Disconnected Element.querySelectorAll no value PASS Disconnected Element.querySelector Empty String PASS Disconnected Element.querySelector null PASS Disconnected Element.querySelector undefined PASS Disconnected Element.querySelector no value PASS Disconnected Element.querySelectorAll: .target :target PASS Disconnected Element.querySelectorAll Whitespace Trim: .target :target PASS Disconnected Element.querySelector: .target :target PASS Disconnected Element.querySelectorAll: html > body PASS Disconnected Element.querySelectorAll Whitespace Trim: html > body PASS Disconnected Element.querySelector: html > body PASS Disconnected Element.querySelectorAll: .test > .blox1 PASS Disconnected Element.querySelectorAll Whitespace Trim: .test > .blox1 PASS Disconnected Element.querySelector: .test > .blox1 PASS Disconnected Element.querySelectorAll: .blox2[align] PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox2[align] PASS Disconnected Element.querySelector: .blox2[align] PASS Disconnected Element.querySelectorAll: .blox3[align] PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox3[align] PASS Disconnected Element.querySelector: .blox3[align] PASS Disconnected Element.querySelectorAll: .blox4, .blox5 PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox4, .blox5 PASS Disconnected Element.querySelector: .blox4, .blox5 PASS Disconnected Element.querySelectorAll: .blox4[align], .blox5[align] PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox4[align], .blox5[align] PASS Disconnected Element.querySelector: .blox4[align], .blox5[align] PASS Disconnected Element.querySelectorAll: .blox6[align="center"] PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox6[align="center"] PASS Disconnected Element.querySelector: .blox6[align="center"] PASS Disconnected Element.querySelectorAll: .blox6[align="c"] PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox6[align="c"] PASS Disconnected Element.querySelector: .blox6[align="c"] PASS Disconnected Element.querySelectorAll: .blox6[align="centera"] PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox6[align="centera"] PASS Disconnected Element.querySelector: .blox6[align="centera"] PASS Disconnected Element.querySelectorAll: .blox6[foo="\e9"] PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox6[foo="\e9"] PASS Disconnected Element.querySelector: .blox6[foo="\e9"] PASS Disconnected Element.querySelectorAll: .blox6[\_foo="\e9"] PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox6[\_foo="\e9"] PASS Disconnected Element.querySelector: .blox6[\_foo="\e9"] PASS Disconnected Element.querySelectorAll: .blox7[class~="foo"] PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox7[class~="foo"] PASS Disconnected Element.querySelector: .blox7[class~="foo"] PASS Disconnected Element.querySelectorAll: .blox8, .blox9, .blox10 PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox8, .blox9, .blox10 PASS Disconnected Element.querySelector: .blox8, .blox9, .blox10 PASS Disconnected Element.querySelectorAll: .blox8[class~=""] PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox8[class~=""] PASS Disconnected Element.querySelector: .blox8[class~=""] PASS Disconnected Element.querySelectorAll: .blox9[foo~=""] PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox9[foo~=""] PASS Disconnected Element.querySelector: .blox9[foo~=""] PASS Disconnected Element.querySelectorAll: .blox10[foo~="foo"] PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox10[foo~="foo"] PASS Disconnected Element.querySelector: .blox10[foo~="foo"] PASS Disconnected Element.querySelectorAll: .attrStart > .t3 PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrStart > .t3 PASS Disconnected Element.querySelector: .attrStart > .t3 PASS Disconnected Element.querySelectorAll: .attrStart > .t1[class^="unit"] PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrStart > .t1[class^="unit"] PASS Disconnected Element.querySelector: .attrStart > .t1[class^="unit"] PASS Disconnected Element.querySelectorAll: .attrStart > .t2 PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrStart > .t2 PASS Disconnected Element.querySelector: .attrStart > .t2 PASS Disconnected Element.querySelectorAll: .attrStart > .t2[class^="nit"] PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrStart > .t2[class^="nit"] PASS Disconnected Element.querySelector: .attrStart > .t2[class^="nit"] PASS Disconnected Element.querySelectorAll: .attrStart > .t3[align^=""] PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrStart > .t3[align^=""] PASS Disconnected Element.querySelector: .attrStart > .t3[align^=""] PASS Disconnected Element.querySelectorAll: .attrStart > .t4[foo^="\e9"] PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrStart > .t4[foo^="\e9"] PASS Disconnected Element.querySelector: .attrStart > .t4[foo^="\e9"] PASS Disconnected Element.querySelectorAll: .attrEnd > .t3 PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrEnd > .t3 PASS Disconnected Element.querySelector: .attrEnd > .t3 PASS Disconnected Element.querySelectorAll: .attrEnd > .t1[class$="t1"] PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrEnd > .t1[class$="t1"] PASS Disconnected Element.querySelector: .attrEnd > .t1[class$="t1"] PASS Disconnected Element.querySelectorAll: .attrEnd > .t2 PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrEnd > .t2 PASS Disconnected Element.querySelector: .attrEnd > .t2 PASS Disconnected Element.querySelectorAll: .attrEnd > .t2[class$="unit"] PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrEnd > .t2[class$="unit"] PASS Disconnected Element.querySelector: .attrEnd > .t2[class$="unit"] PASS Disconnected Element.querySelectorAll: .attrEnd > .t3[align$=""] PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrEnd > .t3[align$=""] PASS Disconnected Element.querySelector: .attrEnd > .t3[align$=""] PASS Disconnected Element.querySelectorAll: .attrEnd > .t4[foo$="\e9"] PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrEnd > .t4[foo$="\e9"] PASS Disconnected Element.querySelector: .attrEnd > .t4[foo$="\e9"] PASS Disconnected Element.querySelectorAll: .attrMiddle > .t3 PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrMiddle > .t3 PASS Disconnected Element.querySelector: .attrMiddle > .t3 PASS Disconnected Element.querySelectorAll: .attrMiddle > .t1[class*="t t"] PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrMiddle > .t1[class*="t t"] PASS Disconnected Element.querySelector: .attrMiddle > .t1[class*="t t"] PASS Disconnected Element.querySelectorAll: .attrMiddle > .t2 PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrMiddle > .t2 PASS Disconnected Element.querySelector: .attrMiddle > .t2 PASS Disconnected Element.querySelectorAll: .attrMiddle > .t2[class*="a"] PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrMiddle > .t2[class*="a"] PASS Disconnected Element.querySelector: .attrMiddle > .t2[class*="a"] PASS Disconnected Element.querySelectorAll: .attrMiddle > .t3[align*=""] PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrMiddle > .t3[align*=""] PASS Disconnected Element.querySelector: .attrMiddle > .t3[align*=""] PASS Disconnected Element.querySelectorAll: .attrMiddle > .t4[foo*="\e9"] PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrMiddle > .t4[foo*="\e9"] PASS Disconnected Element.querySelector: .attrMiddle > .t4[foo*="\e9"] PASS Disconnected Element.querySelectorAll: .firstChild .unitTest:first-child PASS Disconnected Element.querySelectorAll Whitespace Trim: .firstChild .unitTest:first-child PASS Disconnected Element.querySelector: .firstChild .unitTest:first-child PASS Disconnected Element.querySelectorAll: .blox12:first-child PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox12:first-child PASS Disconnected Element.querySelector: .blox12:first-child PASS Disconnected Element.querySelectorAll: .blox13:first-child PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox13:first-child PASS Disconnected Element.querySelector: .blox13:first-child PASS Disconnected Element.querySelectorAll: .blox12, .blox13 PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox12, .blox13 PASS Disconnected Element.querySelector: .blox12, .blox13 PASS Disconnected Element.querySelectorAll: :root PASS Disconnected Element.querySelectorAll Whitespace Trim: :root PASS Disconnected Element.querySelector: :root PASS Disconnected Element.querySelectorAll: .nthchild1 > :nth-last-child(odd) PASS Disconnected Element.querySelectorAll Whitespace Trim: .nthchild1 > :nth-last-child(odd) PASS Disconnected Element.querySelector: .nthchild1 > :nth-last-child(odd) PASS Disconnected Element.querySelectorAll: .nthchild1 > :nth-child(odd) PASS Disconnected Element.querySelectorAll Whitespace Trim: .nthchild1 > :nth-child(odd) PASS Disconnected Element.querySelector: .nthchild1 > :nth-child(odd) PASS Disconnected Element.querySelectorAll: .nthchild2 > :nth-last-child(even) PASS Disconnected Element.querySelectorAll Whitespace Trim: .nthchild2 > :nth-last-child(even) PASS Disconnected Element.querySelector: .nthchild2 > :nth-last-child(even) PASS Disconnected Element.querySelectorAll: .nthchild2 > :nth-child(even) PASS Disconnected Element.querySelectorAll Whitespace Trim: .nthchild2 > :nth-child(even) PASS Disconnected Element.querySelector: .nthchild2 > :nth-child(even) PASS Disconnected Element.querySelectorAll: .nthchild3 > :nth-child(3n+2) PASS Disconnected Element.querySelectorAll Whitespace Trim: .nthchild3 > :nth-child(3n+2) PASS Disconnected Element.querySelector: .nthchild3 > :nth-child(3n+2) PASS Disconnected Element.querySelectorAll: .nthchild3 > :nth-last-child(3n+1) PASS Disconnected Element.querySelectorAll Whitespace Trim: .nthchild3 > :nth-last-child(3n+1) PASS Disconnected Element.querySelector: .nthchild3 > :nth-last-child(3n+1) PASS Disconnected Element.querySelectorAll: .nthchild3 > :nth-last-child(3n+3) PASS Disconnected Element.querySelectorAll Whitespace Trim: .nthchild3 > :nth-last-child(3n+3) PASS Disconnected Element.querySelector: .nthchild3 > :nth-last-child(3n+3) PASS Disconnected Element.querySelectorAll: .nthoftype1 > div:nth-of-type(odd) PASS Disconnected Element.querySelectorAll Whitespace Trim: .nthoftype1 > div:nth-of-type(odd) PASS Disconnected Element.querySelector: .nthoftype1 > div:nth-of-type(odd) PASS Disconnected Element.querySelectorAll: .nthoftype1 > div:nth-last-of-type(odd) PASS Disconnected Element.querySelectorAll Whitespace Trim: .nthoftype1 > div:nth-last-of-type(odd) PASS Disconnected Element.querySelector: .nthoftype1 > div:nth-last-of-type(odd) PASS Disconnected Element.querySelectorAll: .nthoftype1 > p PASS Disconnected Element.querySelectorAll Whitespace Trim: .nthoftype1 > p PASS Disconnected Element.querySelector: .nthoftype1 > p PASS Disconnected Element.querySelectorAll: .nthoftype2 > div:nth-of-type(even) PASS Disconnected Element.querySelectorAll Whitespace Trim: .nthoftype2 > div:nth-of-type(even) PASS Disconnected Element.querySelector: .nthoftype2 > div:nth-of-type(even) PASS Disconnected Element.querySelectorAll: .nthoftype2 > div:nth-last-of-type(even) PASS Disconnected Element.querySelectorAll Whitespace Trim: .nthoftype2 > div:nth-last-of-type(even) PASS Disconnected Element.querySelector: .nthoftype2 > div:nth-last-of-type(even) PASS Disconnected Element.querySelectorAll: .nthoftype2 > p PASS Disconnected Element.querySelectorAll Whitespace Trim: .nthoftype2 > p PASS Disconnected Element.querySelector: .nthoftype2 > p PASS Disconnected Element.querySelectorAll: .nthoftype3 > div:nth-of-type(3n+1) PASS Disconnected Element.querySelectorAll Whitespace Trim: .nthoftype3 > div:nth-of-type(3n+1) PASS Disconnected Element.querySelector: .nthoftype3 > div:nth-of-type(3n+1) PASS Disconnected Element.querySelectorAll: .nthoftype3 > div:nth-last-of-type(3n+1) PASS Disconnected Element.querySelectorAll Whitespace Trim: .nthoftype3 > div:nth-last-of-type(3n+1) PASS Disconnected Element.querySelector: .nthoftype3 > div:nth-last-of-type(3n+1) PASS Disconnected Element.querySelectorAll: .nthoftype3 > div:nth-last-of-type(3n+2) PASS Disconnected Element.querySelectorAll Whitespace Trim: .nthoftype3 > div:nth-last-of-type(3n+2) PASS Disconnected Element.querySelector: .nthoftype3 > div:nth-last-of-type(3n+2) PASS Disconnected Element.querySelectorAll: .nthoftype3 > p PASS Disconnected Element.querySelectorAll Whitespace Trim: .nthoftype3 > p PASS Disconnected Element.querySelector: .nthoftype3 > p PASS Disconnected Element.querySelectorAll: .blox14:not(span) PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox14:not(span) PASS Disconnected Element.querySelector: .blox14:not(span) PASS Disconnected Element.querySelectorAll: .blox15:not([foo="blox14"]) PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox15:not([foo="blox14"]) PASS Disconnected Element.querySelector: .blox15:not([foo="blox14"]) PASS Disconnected Element.querySelectorAll: .blox16:not(.blox15) PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox16:not(.blox15) PASS Disconnected Element.querySelector: .blox16:not(.blox15) PASS Disconnected Element.querySelectorAll: .blox17:only-of-type PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox17:only-of-type PASS Disconnected Element.querySelector: .blox17:only-of-type PASS Disconnected Element.querySelectorAll: .blox18:only-of-type PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox18:only-of-type PASS Disconnected Element.querySelector: .blox18:only-of-type PASS Disconnected Element.querySelectorAll: .blox18:not(:only-of-type) PASS Disconnected Element.querySelectorAll Whitespace Trim: .blox18:not(:only-of-type) PASS Disconnected Element.querySelector: .blox18:not(:only-of-type) PASS Disconnected Element.querySelectorAll: .lastChild > :last-child PASS Disconnected Element.querySelectorAll Whitespace Trim: .lastChild > :last-child PASS Disconnected Element.querySelector: .lastChild > :last-child PASS Disconnected Element.querySelectorAll: .lastChild > :not(:last-child) PASS Disconnected Element.querySelectorAll Whitespace Trim: .lastChild > :not(:last-child) PASS Disconnected Element.querySelector: .lastChild > :not(:last-child) PASS Disconnected Element.querySelectorAll: .firstOfType > *:first-of-type PASS Disconnected Element.querySelectorAll Whitespace Trim: .firstOfType > *:first-of-type PASS Disconnected Element.querySelector: .firstOfType > *:first-of-type PASS Disconnected Element.querySelectorAll: *.firstOfType > :not(:first-of-type) PASS Disconnected Element.querySelectorAll Whitespace Trim: *.firstOfType > :not(:first-of-type) PASS Disconnected Element.querySelector: *.firstOfType > :not(:first-of-type) PASS Disconnected Element.querySelectorAll: .lastOfType > *:last-of-type PASS Disconnected Element.querySelectorAll Whitespace Trim: .lastOfType > *:last-of-type PASS Disconnected Element.querySelector: .lastOfType > *:last-of-type PASS Disconnected Element.querySelectorAll: *.lastOfType > :not(:last-of-type) PASS Disconnected Element.querySelectorAll Whitespace Trim: *.lastOfType > :not(:last-of-type) PASS Disconnected Element.querySelector: *.lastOfType > :not(:last-of-type) PASS Disconnected Element.querySelectorAll: .onlyChild > *:not(:only-child) PASS Disconnected Element.querySelectorAll Whitespace Trim: .onlyChild > *:not(:only-child) PASS Disconnected Element.querySelector: .onlyChild > *:not(:only-child) PASS Disconnected Element.querySelectorAll: .onlyChild > .unitTest > *:only-child PASS Disconnected Element.querySelectorAll Whitespace Trim: .onlyChild > .unitTest > *:only-child PASS Disconnected Element.querySelector: .onlyChild > .unitTest > *:only-child PASS Disconnected Element.querySelectorAll: .onlyOfType *:only-of-type PASS Disconnected Element.querySelectorAll Whitespace Trim: .onlyOfType *:only-of-type PASS Disconnected Element.querySelector: .onlyOfType *:only-of-type PASS Disconnected Element.querySelectorAll: .onlyOfType *:not(:only-of-type) PASS Disconnected Element.querySelectorAll Whitespace Trim: .onlyOfType *:not(:only-of-type) PASS Disconnected Element.querySelector: .onlyOfType *:not(:only-of-type) PASS Disconnected Element.querySelectorAll: .empty > *.isEmpty:empty PASS Disconnected Element.querySelectorAll Whitespace Trim: .empty > *.isEmpty:empty PASS Disconnected Element.querySelector: .empty > *.isEmpty:empty PASS Disconnected Element.querySelectorAll: .empty > .isNotEmpty PASS Disconnected Element.querySelectorAll Whitespace Trim: .empty > .isNotEmpty PASS Disconnected Element.querySelector: .empty > .isNotEmpty PASS Disconnected Element.querySelectorAll: .empty > .isNotEmpty:empty PASS Disconnected Element.querySelectorAll Whitespace Trim: .empty > .isNotEmpty:empty PASS Disconnected Element.querySelector: .empty > .isNotEmpty:empty PASS Disconnected Element.querySelectorAll: .empty > .isNotEmpty:not(:empty) PASS Disconnected Element.querySelectorAll Whitespace Trim: .empty > .isNotEmpty:not(:empty) PASS Disconnected Element.querySelector: .empty > .isNotEmpty:not(:empty) PASS Disconnected Element.querySelectorAll: .lang :lang(en) PASS Disconnected Element.querySelectorAll Whitespace Trim: .lang :lang(en) PASS Disconnected Element.querySelector: .lang :lang(en) PASS Disconnected Element.querySelectorAll: .lang :lang(fr) PASS Disconnected Element.querySelectorAll Whitespace Trim: .lang :lang(fr) PASS Disconnected Element.querySelector: .lang :lang(fr) PASS Disconnected Element.querySelectorAll: .lang .t1 PASS Disconnected Element.querySelectorAll Whitespace Trim: .lang .t1 PASS Disconnected Element.querySelector: .lang .t1 PASS Disconnected Element.querySelectorAll: .lang .t1:lang(es) PASS Disconnected Element.querySelectorAll Whitespace Trim: .lang .t1:lang(es) PASS Disconnected Element.querySelector: .lang .t1:lang(es) PASS Disconnected Element.querySelectorAll: .lang :lang(es-AR) PASS Disconnected Element.querySelectorAll Whitespace Trim: .lang :lang(es-AR) PASS Disconnected Element.querySelector: .lang :lang(es-AR) PASS Disconnected Element.querySelectorAll: .attrLang .t1 PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrLang .t1 PASS Disconnected Element.querySelector: .attrLang .t1 PASS Disconnected Element.querySelectorAll: .attrLang .t1[lang|="en"] PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrLang .t1[lang|="en"] PASS Disconnected Element.querySelector: .attrLang .t1[lang|="en"] PASS Disconnected Element.querySelectorAll: .attrLang [lang|="fr"] PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrLang [lang|="fr"] PASS Disconnected Element.querySelector: .attrLang [lang|="fr"] PASS Disconnected Element.querySelectorAll: .attrLang .t2[lang|="en"] PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrLang .t2[lang|="en"] PASS Disconnected Element.querySelector: .attrLang .t2[lang|="en"] PASS Disconnected Element.querySelectorAll: .attrLang .t3 PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrLang .t3 PASS Disconnected Element.querySelector: .attrLang .t3 PASS Disconnected Element.querySelectorAll: .attrLang .t3[lang|="es"] PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrLang .t3[lang|="es"] PASS Disconnected Element.querySelector: .attrLang .t3[lang|="es"] PASS Disconnected Element.querySelectorAll: .attrLang [lang|="es-AR"] PASS Disconnected Element.querySelectorAll Whitespace Trim: .attrLang [lang|="es-AR"] PASS Disconnected Element.querySelector: .attrLang [lang|="es-AR"] PASS Disconnected Element.querySelectorAll: .UI .t1:enabled > .unitTest PASS Disconnected Element.querySelectorAll Whitespace Trim: .UI .t1:enabled > .unitTest PASS Disconnected Element.querySelector: .UI .t1:enabled > .unitTest PASS Disconnected Element.querySelectorAll: .UI .t2:disabled > .unitTest PASS Disconnected Element.querySelectorAll Whitespace Trim: .UI .t2:disabled > .unitTest PASS Disconnected Element.querySelector: .UI .t2:disabled > .unitTest PASS Disconnected Element.querySelectorAll: .UI .t3:checked + div PASS Disconnected Element.querySelectorAll Whitespace Trim: .UI .t3:checked + div PASS Disconnected Element.querySelector: .UI .t3:checked + div PASS Disconnected Element.querySelectorAll: .UI .t4:not(:checked) + div PASS Disconnected Element.querySelectorAll Whitespace Trim: .UI .t4:not(:checked) + div PASS Disconnected Element.querySelector: .UI .t4:not(:checked) + div PASS Disconnected Element.querySelectorAll: .tilda .t1 PASS Disconnected Element.querySelectorAll Whitespace Trim: .tilda .t1 PASS Disconnected Element.querySelector: .tilda .t1 PASS Disconnected Element.querySelectorAll: .tilda .t1 ~ .unitTest PASS Disconnected Element.querySelectorAll Whitespace Trim: .tilda .t1 ~ .unitTest PASS Disconnected Element.querySelector: .tilda .t1 ~ .unitTest PASS Disconnected Element.querySelectorAll: .tilda .t1:hover ~ .unitTest PASS Disconnected Element.querySelectorAll Whitespace Trim: .tilda .t1:hover ~ .unitTest PASS Disconnected Element.querySelector: .tilda .t1:hover ~ .unitTest PASS Disconnected Element.querySelectorAll: .plus .t1, .plus .t2 PASS Disconnected Element.querySelectorAll Whitespace Trim: .plus .t1, .plus .t2 PASS Disconnected Element.querySelector: .plus .t1, .plus .t2 PASS Disconnected Element.querySelectorAll: .plus .t1 + .unitTest + .unitTest PASS Disconnected Element.querySelectorAll Whitespace Trim: .plus .t1 + .unitTest + .unitTest PASS Disconnected Element.querySelector: .plus .t1 + .unitTest + .unitTest PASS Disconnected Element.querySelectorAll: .plus .t1:hover + .unitTest + .unitTest PASS Disconnected Element.querySelectorAll Whitespace Trim: .plus .t1:hover + .unitTest + .unitTest PASS Disconnected Element.querySelector: .plus .t1:hover + .unitTest + .unitTest PASS Disconnected Element: childhood selector PASS Disconnected Element: attribute existence selector PASS Disconnected Element: attribute existence selector with empty string value PASS Disconnected Element: attribute existence selector with almost identical attribute PASS Disconnected Element: attribute existence selector with almost identical attribute PASS Disconnected Element: attribute value selector PASS Disconnected Element: attribute value selector with an entity in the attribute and an escaped value in the selector PASS Disconnected Element: attribute value selector with an entity in the attribute, an escaped value in the selector, and a leading underscore in the attribute name PASS Disconnected Element: [~=] attribute selector PASS Disconnected Element: [~=] attribute selector looking for empty string PASS Disconnected Element: [~=] attribute selector looking for empty string in empty attribute PASS Disconnected Element: [~=] attribute selector looking for 'foo' in 'foobar' PASS Disconnected Element: [^=] attribute selector PASS Disconnected Element: [^=] attribute selector PASS Disconnected Element: [^=] attribute selector looking for empty string PASS Disconnected Element: [^=] attribute selector looking for é PASS Disconnected Element: [$=] attribute selector PASS Disconnected Element: [$=] attribute selector PASS Disconnected Element: [$=] attribute selector looking for empty string PASS Disconnected Element: [$=] attribute selector looking for é PASS Disconnected Element: [*=] attribute selector PASS Disconnected Element: [*=] attribute selector PASS Disconnected Element: [*=] attribute selector looking for empty string PASS Disconnected Element: [*=] attribute selector looking for é PASS Disconnected Element: :first-child selector PASS Disconnected Element: :first-child selector should not match non first child PASS Disconnected Element: :first-child selector should not match non first child PASS Disconnected Element: negation pseudo-class with argument being an element type selector PASS Disconnected Element: negation pseudo-class with argument being an attribute selector PASS Disconnected Element: negation pseudo-class accepts only simple selectors for argument PASS Disconnected Element: :only-of-type selector PASS Disconnected Element: negated :only-of-type selector PASS Disconnected Element: negated :only-of-type selector PASS Disconnected Element: :nth-child(odd) selector PASS Disconnected Element: :nth-last-child(odd) selector PASS Disconnected Element: :nth-child(odd) selector PASS Disconnected Element: :nth-last-child(odd) selector PASS Disconnected Element: :nth-child(odd) selector PASS Disconnected Element: :nth-last-child(odd) selector PASS Disconnected Element: :nth-last-child(even) selector PASS Disconnected Element: :nth-child(even) selector PASS Disconnected Element: :nth-last-child(even) selector PASS Disconnected Element: :nth-child(even) selector PASS Disconnected Element: :nth-last-child(even) selector PASS Disconnected Element: :nth-child(even) selector PASS Disconnected Element: :nth-last-child(3n+3) selector PASS Disconnected Element: :nth-child(3n+2) selector PASS Disconnected Element: :nth-last-child(3n+1) selector PASS Disconnected Element: :nth-last-child(3n+3) selector PASS Disconnected Element: :nth-child(3n+2) selector PASS Disconnected Element: :nth-last-child(3n+1) selector PASS Disconnected Element: :nth-of-type(odd) selector PASS Disconnected Element: :nth-of-* selector PASS Disconnected Element: :nth-of-* selector PASS Disconnected Element: :nth-last-of-type(odd) selector PASS Disconnected Element: :nth-of-* selector PASS Disconnected Element: :nth-of-type(odd) selector PASS Disconnected Element: :nth-last-of-type(odd) selector PASS Disconnected Element: :nth-last-of-type(even) selector PASS Disconnected Element: :nth-of-* selector PASS Disconnected Element: :nth-of-* selector PASS Disconnected Element: :nth-of-type(even) selector PASS Disconnected Element: :nth-of-* selector PASS Disconnected Element: :nth-last-of-type(even) selector PASS Disconnected Element: :nth-of-type(even) selector PASS Disconnected Element: :nth-of-type(3n+1) selector PASS Disconnected Element: :nth-of-* selector PASS Disconnected Element: :nth-of-* selector PASS Disconnected Element: :nth-last-of-type(3n+2) selector PASS Disconnected Element: :nth-of-* selector PASS Disconnected Element: :nth-last-of-type(3n+1) selector PASS Disconnected Element: :nth-of-type(3n+1) selector PASS Disconnected Element: :nth-of-* selector PASS Disconnected Element: :nth-last-of-type(3n+2) selector PASS Disconnected Element: :nth-last-of-type(3n+1) selector PASS Disconnected Element: :not(:last-child) selector PASS Disconnected Element: :last-child selector PASS Disconnected Element: :first-of-type selector PASS Disconnected Element: :first-of-type selector PASS Disconnected Element: :not(:first-of-type) PASS Disconnected Element: :not(:first-of-type) PASS Disconnected Element: :not(:last-of-type) PASS Disconnected Element: :not(:last-of-type) PASS Disconnected Element: :last-of-type selector PASS Disconnected Element: :last-of-type selector PASS Disconnected Element: :only-child where the element is NOT the only child PASS Disconnected Element: :only-child where the element is the only child PASS Disconnected Element: :only-child where the element is the only child PASS Disconnected Element: :only-of-type PASS Disconnected Element: :only-of-type PASS Disconnected Element: :only-of-type PASS Disconnected Element: :not(only-of-type) PASS Disconnected Element: :empty with empty element PASS Disconnected Element: :empty but element contains a whitespace PASS Disconnected Element: :empty and element contains an SGML comment PASS Disconnected Element: :empty but element contains a SPAN element PASS Disconnected Element: :empty but element contains an entity reference PASS Disconnected Element: :lang() where language comes from the element PASS Disconnected Element: :lang() where language comes from the element but is a dialect of the language queried PASS Disconnected Element: :lang() where language comes from the element but the language queried is a dialect of the element's one so it should not match PASS Disconnected Element: [|=] where language comes from the document PASS Disconnected Element: [|=] where language comes from the element PASS Disconnected Element: [|=] where language comes from the element but is a dialect of the language queried PASS Disconnected Element: [|=] where language comes from the element but the language queried is a dialect of the element's one so it should not match PASS Disconnected Element: :enabled pseudo-class PASS Disconnected Element: :enabled pseudo-class PASS Disconnected Element: :checked PASS Disconnected Element: :not(:checked) PASS Disconnected Element: ~ combinator PASS Disconnected Element: ~ combinator PASS Disconnected Element: ~ combinator PASS Disconnected Element: ~ combinator PASS Disconnected Element: + combinator PASS Disconnected Element: + combinator PASS Disconnected Element: + combinator PASS Disconnected Element: StaticNodeList PASS Disconnected Element: StaticNodeList PASS Syntax Error: Disconnected Element.querySelectorAll Empty String PASS Syntax Error: Disconnected Element.querySelectorAll null PASS Syntax Error: Disconnected Element.querySelectorAll undefined PASS Syntax Error: Disconnected Element.querySelectorAll no value PASS Syntax Error: Disconnected Element.querySelector Empty String PASS Syntax Error: Disconnected Element.querySelector null PASS Syntax Error: Disconnected Element.querySelector undefined PASS Syntax Error: Disconnected Element.querySelector no value FAIL Syntax Error: Disconnected Element.querySelectorAll: .blox16:not(.blox15[foo="blox14"]) FAIL Syntax Error: Disconnected Element.querySelector: .blox16:not(.blox15[foo="blox14"]) FAIL Syntax Error: Disconnected Element.querySelectorAll: div:not(:not(div)) FAIL Syntax Error: Disconnected Element.querySelector: div:not(:not(div)) PASS Syntax Error: Disconnected Element.querySelectorAll: div, PASS Syntax Error: Disconnected Element.querySelector: div, PASS Syntax Error: Disconnected Element.querySelectorAll: .5cm PASS Syntax Error: Disconnected Element.querySelector: .5cm PASS Syntax Error: Disconnected Element.querySelectorAll: foo & address, p PASS Syntax Error: Disconnected Element.querySelector: foo & address, p PASS Syntax Error: Disconnected Element.querySelectorAll: [*=test] PASS Syntax Error: Disconnected Element.querySelector: [*=test] PASS Syntax Error: Disconnected Element.querySelectorAll: [*|*=test] PASS Syntax Error: Disconnected Element.querySelector: [*|*=test] PASS Syntax Error: Disconnected Element.querySelectorAll: div:subject PASS Syntax Error: Disconnected Element.querySelector: div:subject PASS Syntax Error: Disconnected Element.querySelectorAll: :canvas PASS Syntax Error: Disconnected Element.querySelector: :canvas PASS Syntax Error: Disconnected Element.querySelectorAll: :viewport PASS Syntax Error: Disconnected Element.querySelector: :viewport PASS Syntax Error: Disconnected Element.querySelectorAll: :window PASS Syntax Error: Disconnected Element.querySelector: :window PASS Syntax Error: Disconnected Element.querySelectorAll: :menu PASS Syntax Error: Disconnected Element.querySelector: :menu PASS Syntax Error: Disconnected Element.querySelectorAll: :table PASS Syntax Error: Disconnected Element.querySelector: :table PASS Syntax Error: Disconnected Element.querySelectorAll: :select PASS Syntax Error: Disconnected Element.querySelector: :select PASS Syntax Error: Disconnected Element.querySelectorAll: ::canvas PASS Syntax Error: Disconnected Element.querySelector: ::canvas PASS Syntax Error: Disconnected Element.querySelectorAll: ::viewport PASS Syntax Error: Disconnected Element.querySelector: ::viewport PASS Syntax Error: Disconnected Element.querySelectorAll: ::window PASS Syntax Error: Disconnected Element.querySelector: ::window PASS Syntax Error: Disconnected Element.querySelectorAll: ::menu PASS Syntax Error: Disconnected Element.querySelector: ::menu PASS Syntax Error: Disconnected Element.querySelectorAll: ::table PASS Syntax Error: Disconnected Element.querySelector: ::table PASS Syntax Error: Disconnected Element.querySelectorAll: ::select PASS Syntax Error: Disconnected Element.querySelector: ::select PASS Syntax Error: Disconnected Element.querySelectorAll: ..test PASS Syntax Error: Disconnected Element.querySelector: ..test PASS Syntax Error: Disconnected Element.querySelectorAll: .foo..quux PASS Syntax Error: Disconnected Element.querySelector: .foo..quux PASS Syntax Error: Disconnected Element.querySelectorAll: .bar. PASS Syntax Error: Disconnected Element.querySelector: .bar. PASS Disconnected Element: Select all PASS Disconnected Element: Select all elements, no comment nodes PASS Disconnected Element: :root Selector (:root) PASS Disconnected Element: :root All Selector (:root *) PASS Disconnected Element: Element Selector (#root3 p) PASS Disconnected Element: Parent Element (#root3 div p) PASS Disconnected Element: Object/param as context PASS Disconnected Element: <input name="length"> cannot be found under IE PASS Disconnected Element: <input name="length"> cannot be found under IE PASS Disconnected Element: Broken Selector (#root3 [) PASS Disconnected Element: Broken Selector (#root3 () PASS Disconnected Element: Broken Selector (#root3 {) PASS Disconnected Element: Broken Selector (#root3 <) PASS Disconnected Element: Broken Selector (#root3 ()) PASS Disconnected Element: Broken Selector (#root3 <>) PASS Disconnected Element: Broken Selector (#root3 {}) PASS Disconnected Element: ID Selector w/ Element (#root3 ul#first) PASS Disconnected Element: ID selector with existing ID descendant (#root3 #firstp #simon1) PASS Disconnected Element: ID selector with non-existant descendant (#root3 #firstp #foobar) PASS Disconnected Element: ID selector using UTF8 (#root3 #台北Táiběi) PASS Disconnected Element: Multiple ID selectors using UTF8 (#root3 #台北Táiběi, #root3 #台北) PASS Disconnected Element: Descendant ID selector using UTF8 (#root3 div #台北) PASS Disconnected Element: Child ID selector using UTF8 (#root3 form > #台北) PASS Disconnected Element: Escaped ID (#root3 #foo\:bar) PASS Disconnected Element: Escaped ID (#root3 #test\.foo\[5\]bar) PASS Disconnected Element: Descendant escaped ID (#root3 div #foo\:bar) PASS Disconnected Element: Descendant escaped ID (#root3 div #test\.foo\[5\]bar) PASS Disconnected Element: Child escaped ID (#root3 form > #foo\:bar) PASS Disconnected Element: Child escaped ID (#root3 form > #test\.foo\[5\]bar) PASS Disconnected Element: ID Selector, child ID present (#root3 #form > #radio1) PASS Disconnected Element: ID Selector, not an ancestor ID (#root3 #form #first) PASS Disconnected Element: ID Selector, not a child ID (#root3 #form > #option1a) PASS Disconnected Element: All Children of ID (#root3 #foo > *) PASS Disconnected Element: All Children of ID with no children (#root3 #firstUL > *) PASS Disconnected Element: ID selector with non-existant ancestor (#root3 #asdfasdf #foobar) PASS Disconnected Element: Class Selector (#root3 .blog) PASS Disconnected Element: Class Selector (#root3 .blog.link) PASS Disconnected Element: Class Selector w/ Element (#root3 a.blog) PASS Disconnected Element: Parent Class Selector (#root3 p .blog) PASS Disconnected Element: Class selector using UTF8 (#root3 .台北Táiběi) PASS Disconnected Element: Class selector using UTF8 (#root3 .台北) PASS Disconnected Element: Class selector using UTF8 (#root3 .台北Táiběi.台北) PASS Disconnected Element: Class selector using UTF8 (#root3 .台北Táiběi, #root3 .台北) PASS Disconnected Element: Descendant class selector using UTF8 (#root3 div .台北Táiběi) PASS Disconnected Element: Child class selector using UTF8 (#root3 form > .台北Táiběi) PASS Disconnected Element: Escaped Class (#root3 .foo\:bar) PASS Disconnected Element: Escaped Class (#root3 .test\.foo\[5\]bar) PASS Disconnected Element: Descendant scaped Class (#root3 div .foo\:bar) PASS Disconnected Element: Descendant scaped Class (#root3 div .test\.foo\[5\]bar) PASS Disconnected Element: Child escaped Class (#root3 form > .foo\:bar) PASS Disconnected Element: Child escaped Class (#root3 form > .test\.foo\[5\]bar) PASS Disconnected Element: Comma Support (#root3 a.blog, #root3 p) PASS Disconnected Element: Comma Support (#root3 a.blog , #root3 p) PASS Disconnected Element: Comma Support (#root3 a.blog , #root3 p) PASS Disconnected Element: Comma Support (#root3 a.blog, #root3 p) PASS Disconnected Element: Child (#root3 p > a) PASS Disconnected Element: Child (#root3 p> a) PASS Disconnected Element: Child (#root3 p >a) PASS Disconnected Element: Child (#root3 p>a) PASS Disconnected Element: Child w/ Class (#root3 p > a.blog) PASS Disconnected Element: All Children (#root3 code > *) PASS Disconnected Element: All Grandchildren (#root3 p > * > *) PASS Disconnected Element: Adjacent (#root3 a + a) PASS Disconnected Element: Adjacent (#root3 a +a) PASS Disconnected Element: Adjacent (#root3 a+ a) PASS Disconnected Element: Adjacent (#root3 a+a) PASS Disconnected Element: Adjacent (#root3 p + p) PASS Disconnected Element: Comma, Child, and Adjacent (#root3 a + a, #root3 code > a) PASS Disconnected Element: First Child (#root3 p:first-child) PASS Disconnected Element: Nth Child (#root3 p:nth-child(1)) PASS Disconnected Element: Last Child (#root3 p:last-child) PASS Disconnected Element: Last Child (#root3 a:last-child) PASS Disconnected Element: Nth-child (#root3 #main form#form > *:nth-child(2)) PASS Disconnected Element: Nth-child (#root3 #main form#form > :nth-child(2)) PASS Disconnected Element: Nth-child (#root3 #form #select1 option:nth-child(3)) PASS Disconnected Element: Nth-child (#root3 #form #select1 option:nth-child(0n+3)) PASS Disconnected Element: Nth-child (#root3 #form #select1 option:nth-child(1n+0)) PASS Disconnected Element: Nth-child (#root3 #form #select1 option:nth-child(1n)) PASS Disconnected Element: Nth-child (#root3 #form #select1 option:nth-child(n)) PASS Disconnected Element: Nth-child (#root3 #form #select1 option:nth-child(even)) PASS Disconnected Element: Nth-child (#root3 #form #select1 option:nth-child(odd)) PASS Disconnected Element: Nth-child (#root3 #form #select1 option:nth-child(2n)) PASS Disconnected Element: Nth-child (#root3 #form #select1 option:nth-child(2n+1)) PASS Disconnected Element: Nth-child (#root3 #form #select1 option:nth-child(3n)) PASS Disconnected Element: Nth-child (#root3 #form #select1 option:nth-child(3n+1)) PASS Disconnected Element: Nth-child (#root3 #form #select1 option:nth-child(3n+2)) PASS Disconnected Element: Nth-child (#root3 #form #select1 option:nth-child(3n+3)) PASS Disconnected Element: Nth-child (#root3 #form #select1 option:nth-child(3n-1)) PASS Disconnected Element: Nth-child (#root3 #form #select1 option:nth-child(3n-2)) PASS Disconnected Element: Nth-child (#root3 #form #select1 option:nth-child(3n-3)) PASS Disconnected Element: Nth-child (#root3 #form #select1 option:nth-child(3n+0)) PASS Disconnected Element: Nth-child (#root3 #form #select1 option:nth-child(-n+3)) PASS Disconnected Element: Attribute Exists (#root3 a[title]) PASS Disconnected Element: Attribute Exists (#root3 *[title]) PASS Disconnected Element: Attribute Exists (#root3 [title]) PASS Disconnected Element: Attribute Equals (#root3 a[rel='bookmark']) PASS Disconnected Element: Attribute Equals (#root3 a[rel="bookmark"]) PASS Disconnected Element: Attribute Equals (#root3 a[rel=bookmark]) PASS Disconnected Element: Multiple Attribute Equals (#root3 #form input[type='hidden'], #root3 #form input[type='radio']) PASS Disconnected Element: Multiple Attribute Equals (#root3 #form input[type="hidden"], #root3 #form input[type='radio']) PASS Disconnected Element: Multiple Attribute Equals (#root3 #form input[type=hidden], #root3 #form input[type=radio]) PASS Disconnected Element: Attribute selector using UTF8 (#root3 span[lang=中文]) PASS Disconnected Element: Attribute Begins With (#root3 a[href ^= 'http://www']) PASS Disconnected Element: Attribute Ends With (#root3 a[href $= 'org/']) PASS Disconnected Element: Attribute Contains (#root3 a[href *= 'google']) PASS Disconnected Element: Select options via [selected] (#root3 #select1 option[selected]) PASS Disconnected Element: Select options via [selected] (#root3 #select2 option[selected]) PASS Disconnected Element: Select options via [selected] (#root3 #select3 option[selected]) PASS Disconnected Element: Grouped Form Elements (#root3 input[name='foo[bar]']) PASS Disconnected Element: :not() Existing attribute (#root3 #form select:not([multiple])) PASS Disconnected Element: :not() Equals attribute (#root3 #form select:not([name=select1])) PASS Disconnected Element: :not() Equals quoted attribute (#root3 #form select:not([name='select1'])) PASS Disconnected Element: First Child (#root3 p:first-child) PASS Disconnected Element: Last Child (#root3 p:last-child) PASS Disconnected Element: Only Child (#root3 a:only-child) PASS Disconnected Element: Empty (#root3 ul:empty) PASS Disconnected Element: Disabled UI Element (#root3 #form input:disabled) PASS Disconnected Element: Checked UI Element (#root3 #form input:checked) PASS Disconnected Element: Element Preceded By (#root3 p ~ div) PASS Disconnected Element: Not (#root3 a.blog:not(.link)) PASS Fragment supports querySelector PASS Fragment supports querySelectorAll PASS Fragment.querySelectorAll Empty String PASS Fragment.querySelectorAll null PASS Fragment.querySelectorAll undefined PASS Fragment.querySelectorAll no value PASS Fragment.querySelector Empty String PASS Fragment.querySelector null PASS Fragment.querySelector undefined PASS Fragment.querySelector no value PASS Fragment.querySelectorAll: .target :target PASS Fragment.querySelectorAll Whitespace Trim: .target :target PASS Fragment.querySelector: .target :target PASS Fragment.querySelectorAll: html > body PASS Fragment.querySelectorAll Whitespace Trim: html > body PASS Fragment.querySelector: html > body PASS Fragment.querySelectorAll: .test > .blox1 PASS Fragment.querySelectorAll Whitespace Trim: .test > .blox1 PASS Fragment.querySelector: .test > .blox1 PASS Fragment.querySelectorAll: .blox2[align] PASS Fragment.querySelectorAll Whitespace Trim: .blox2[align] PASS Fragment.querySelector: .blox2[align] PASS Fragment.querySelectorAll: .blox3[align] PASS Fragment.querySelectorAll Whitespace Trim: .blox3[align] PASS Fragment.querySelector: .blox3[align] PASS Fragment.querySelectorAll: .blox4, .blox5 PASS Fragment.querySelectorAll Whitespace Trim: .blox4, .blox5 PASS Fragment.querySelector: .blox4, .blox5 PASS Fragment.querySelectorAll: .blox4[align], .blox5[align] PASS Fragment.querySelectorAll Whitespace Trim: .blox4[align], .blox5[align] PASS Fragment.querySelector: .blox4[align], .blox5[align] PASS Fragment.querySelectorAll: .blox6[align="center"] PASS Fragment.querySelectorAll Whitespace Trim: .blox6[align="center"] PASS Fragment.querySelector: .blox6[align="center"] PASS Fragment.querySelectorAll: .blox6[align="c"] PASS Fragment.querySelectorAll Whitespace Trim: .blox6[align="c"] PASS Fragment.querySelector: .blox6[align="c"] PASS Fragment.querySelectorAll: .blox6[align="centera"] PASS Fragment.querySelectorAll Whitespace Trim: .blox6[align="centera"] PASS Fragment.querySelector: .blox6[align="centera"] PASS Fragment.querySelectorAll: .blox6[foo="\e9"] PASS Fragment.querySelectorAll Whitespace Trim: .blox6[foo="\e9"] PASS Fragment.querySelector: .blox6[foo="\e9"] PASS Fragment.querySelectorAll: .blox6[\_foo="\e9"] PASS Fragment.querySelectorAll Whitespace Trim: .blox6[\_foo="\e9"] PASS Fragment.querySelector: .blox6[\_foo="\e9"] PASS Fragment.querySelectorAll: .blox7[class~="foo"] PASS Fragment.querySelectorAll Whitespace Trim: .blox7[class~="foo"] PASS Fragment.querySelector: .blox7[class~="foo"] PASS Fragment.querySelectorAll: .blox8, .blox9, .blox10 PASS Fragment.querySelectorAll Whitespace Trim: .blox8, .blox9, .blox10 PASS Fragment.querySelector: .blox8, .blox9, .blox10 PASS Fragment.querySelectorAll: .blox8[class~=""] PASS Fragment.querySelectorAll Whitespace Trim: .blox8[class~=""] PASS Fragment.querySelector: .blox8[class~=""] PASS Fragment.querySelectorAll: .blox9[foo~=""] PASS Fragment.querySelectorAll Whitespace Trim: .blox9[foo~=""] PASS Fragment.querySelector: .blox9[foo~=""] PASS Fragment.querySelectorAll: .blox10[foo~="foo"] PASS Fragment.querySelectorAll Whitespace Trim: .blox10[foo~="foo"] PASS Fragment.querySelector: .blox10[foo~="foo"] PASS Fragment.querySelectorAll: .attrStart > .t3 PASS Fragment.querySelectorAll Whitespace Trim: .attrStart > .t3 PASS Fragment.querySelector: .attrStart > .t3 PASS Fragment.querySelectorAll: .attrStart > .t1[class^="unit"] PASS Fragment.querySelectorAll Whitespace Trim: .attrStart > .t1[class^="unit"] PASS Fragment.querySelector: .attrStart > .t1[class^="unit"] PASS Fragment.querySelectorAll: .attrStart > .t2 PASS Fragment.querySelectorAll Whitespace Trim: .attrStart > .t2 PASS Fragment.querySelector: .attrStart > .t2 PASS Fragment.querySelectorAll: .attrStart > .t2[class^="nit"] PASS Fragment.querySelectorAll Whitespace Trim: .attrStart > .t2[class^="nit"] PASS Fragment.querySelector: .attrStart > .t2[class^="nit"] PASS Fragment.querySelectorAll: .attrStart > .t3[align^=""] PASS Fragment.querySelectorAll Whitespace Trim: .attrStart > .t3[align^=""] PASS Fragment.querySelector: .attrStart > .t3[align^=""] PASS Fragment.querySelectorAll: .attrStart > .t4[foo^="\e9"] PASS Fragment.querySelectorAll Whitespace Trim: .attrStart > .t4[foo^="\e9"] PASS Fragment.querySelector: .attrStart > .t4[foo^="\e9"] PASS Fragment.querySelectorAll: .attrEnd > .t3 PASS Fragment.querySelectorAll Whitespace Trim: .attrEnd > .t3 PASS Fragment.querySelector: .attrEnd > .t3 PASS Fragment.querySelectorAll: .attrEnd > .t1[class$="t1"] PASS Fragment.querySelectorAll Whitespace Trim: .attrEnd > .t1[class$="t1"] PASS Fragment.querySelector: .attrEnd > .t1[class$="t1"] PASS Fragment.querySelectorAll: .attrEnd > .t2 PASS Fragment.querySelectorAll Whitespace Trim: .attrEnd > .t2 PASS Fragment.querySelector: .attrEnd > .t2 PASS Fragment.querySelectorAll: .attrEnd > .t2[class$="unit"] PASS Fragment.querySelectorAll Whitespace Trim: .attrEnd > .t2[class$="unit"] PASS Fragment.querySelector: .attrEnd > .t2[class$="unit"] PASS Fragment.querySelectorAll: .attrEnd > .t3[align$=""] PASS Fragment.querySelectorAll Whitespace Trim: .attrEnd > .t3[align$=""] PASS Fragment.querySelector: .attrEnd > .t3[align$=""] PASS Fragment.querySelectorAll: .attrEnd > .t4[foo$="\e9"] PASS Fragment.querySelectorAll Whitespace Trim: .attrEnd > .t4[foo$="\e9"] PASS Fragment.querySelector: .attrEnd > .t4[foo$="\e9"] PASS Fragment.querySelectorAll: .attrMiddle > .t3 PASS Fragment.querySelectorAll Whitespace Trim: .attrMiddle > .t3 PASS Fragment.querySelector: .attrMiddle > .t3 PASS Fragment.querySelectorAll: .attrMiddle > .t1[class*="t t"] PASS Fragment.querySelectorAll Whitespace Trim: .attrMiddle > .t1[class*="t t"] PASS Fragment.querySelector: .attrMiddle > .t1[class*="t t"] PASS Fragment.querySelectorAll: .attrMiddle > .t2 PASS Fragment.querySelectorAll Whitespace Trim: .attrMiddle > .t2 PASS Fragment.querySelector: .attrMiddle > .t2 PASS Fragment.querySelectorAll: .attrMiddle > .t2[class*="a"] PASS Fragment.querySelectorAll Whitespace Trim: .attrMiddle > .t2[class*="a"] PASS Fragment.querySelector: .attrMiddle > .t2[class*="a"] PASS Fragment.querySelectorAll: .attrMiddle > .t3[align*=""] PASS Fragment.querySelectorAll Whitespace Trim: .attrMiddle > .t3[align*=""] PASS Fragment.querySelector: .attrMiddle > .t3[align*=""] PASS Fragment.querySelectorAll: .attrMiddle > .t4[foo*="\e9"] PASS Fragment.querySelectorAll Whitespace Trim: .attrMiddle > .t4[foo*="\e9"] PASS Fragment.querySelector: .attrMiddle > .t4[foo*="\e9"] PASS Fragment.querySelectorAll: .firstChild .unitTest:first-child PASS Fragment.querySelectorAll Whitespace Trim: .firstChild .unitTest:first-child PASS Fragment.querySelector: .firstChild .unitTest:first-child PASS Fragment.querySelectorAll: .blox12:first-child PASS Fragment.querySelectorAll Whitespace Trim: .blox12:first-child PASS Fragment.querySelector: .blox12:first-child PASS Fragment.querySelectorAll: .blox13:first-child PASS Fragment.querySelectorAll Whitespace Trim: .blox13:first-child PASS Fragment.querySelector: .blox13:first-child PASS Fragment.querySelectorAll: .blox12, .blox13 PASS Fragment.querySelectorAll Whitespace Trim: .blox12, .blox13 PASS Fragment.querySelector: .blox12, .blox13 PASS Fragment.querySelectorAll: :root PASS Fragment.querySelectorAll Whitespace Trim: :root PASS Fragment.querySelector: :root PASS Fragment.querySelectorAll: .nthchild1 > :nth-last-child(odd) PASS Fragment.querySelectorAll Whitespace Trim: .nthchild1 > :nth-last-child(odd) PASS Fragment.querySelector: .nthchild1 > :nth-last-child(odd) PASS Fragment.querySelectorAll: .nthchild1 > :nth-child(odd) PASS Fragment.querySelectorAll Whitespace Trim: .nthchild1 > :nth-child(odd) PASS Fragment.querySelector: .nthchild1 > :nth-child(odd) PASS Fragment.querySelectorAll: .nthchild2 > :nth-last-child(even) PASS Fragment.querySelectorAll Whitespace Trim: .nthchild2 > :nth-last-child(even) PASS Fragment.querySelector: .nthchild2 > :nth-last-child(even) PASS Fragment.querySelectorAll: .nthchild2 > :nth-child(even) PASS Fragment.querySelectorAll Whitespace Trim: .nthchild2 > :nth-child(even) PASS Fragment.querySelector: .nthchild2 > :nth-child(even) PASS Fragment.querySelectorAll: .nthchild3 > :nth-child(3n+2) PASS Fragment.querySelectorAll Whitespace Trim: .nthchild3 > :nth-child(3n+2) PASS Fragment.querySelector: .nthchild3 > :nth-child(3n+2) PASS Fragment.querySelectorAll: .nthchild3 > :nth-last-child(3n+1) PASS Fragment.querySelectorAll Whitespace Trim: .nthchild3 > :nth-last-child(3n+1) PASS Fragment.querySelector: .nthchild3 > :nth-last-child(3n+1) PASS Fragment.querySelectorAll: .nthchild3 > :nth-last-child(3n+3) PASS Fragment.querySelectorAll Whitespace Trim: .nthchild3 > :nth-last-child(3n+3) PASS Fragment.querySelector: .nthchild3 > :nth-last-child(3n+3) PASS Fragment.querySelectorAll: .nthoftype1 > div:nth-of-type(odd) PASS Fragment.querySelectorAll Whitespace Trim: .nthoftype1 > div:nth-of-type(odd) PASS Fragment.querySelector: .nthoftype1 > div:nth-of-type(odd) PASS Fragment.querySelectorAll: .nthoftype1 > div:nth-last-of-type(odd) PASS Fragment.querySelectorAll Whitespace Trim: .nthoftype1 > div:nth-last-of-type(odd) PASS Fragment.querySelector: .nthoftype1 > div:nth-last-of-type(odd) PASS Fragment.querySelectorAll: .nthoftype1 > p PASS Fragment.querySelectorAll Whitespace Trim: .nthoftype1 > p PASS Fragment.querySelector: .nthoftype1 > p PASS Fragment.querySelectorAll: .nthoftype2 > div:nth-of-type(even) PASS Fragment.querySelectorAll Whitespace Trim: .nthoftype2 > div:nth-of-type(even) PASS Fragment.querySelector: .nthoftype2 > div:nth-of-type(even) PASS Fragment.querySelectorAll: .nthoftype2 > div:nth-last-of-type(even) PASS Fragment.querySelectorAll Whitespace Trim: .nthoftype2 > div:nth-last-of-type(even) PASS Fragment.querySelector: .nthoftype2 > div:nth-last-of-type(even) PASS Fragment.querySelectorAll: .nthoftype2 > p PASS Fragment.querySelectorAll Whitespace Trim: .nthoftype2 > p PASS Fragment.querySelector: .nthoftype2 > p PASS Fragment.querySelectorAll: .nthoftype3 > div:nth-of-type(3n+1) PASS Fragment.querySelectorAll Whitespace Trim: .nthoftype3 > div:nth-of-type(3n+1) PASS Fragment.querySelector: .nthoftype3 > div:nth-of-type(3n+1) PASS Fragment.querySelectorAll: .nthoftype3 > div:nth-last-of-type(3n+1) PASS Fragment.querySelectorAll Whitespace Trim: .nthoftype3 > div:nth-last-of-type(3n+1) PASS Fragment.querySelector: .nthoftype3 > div:nth-last-of-type(3n+1) PASS Fragment.querySelectorAll: .nthoftype3 > div:nth-last-of-type(3n+2) PASS Fragment.querySelectorAll Whitespace Trim: .nthoftype3 > div:nth-last-of-type(3n+2) PASS Fragment.querySelector: .nthoftype3 > div:nth-last-of-type(3n+2) PASS Fragment.querySelectorAll: .nthoftype3 > p PASS Fragment.querySelectorAll Whitespace Trim: .nthoftype3 > p PASS Fragment.querySelector: .nthoftype3 > p PASS Fragment.querySelectorAll: .blox14:not(span) PASS Fragment.querySelectorAll Whitespace Trim: .blox14:not(span) PASS Fragment.querySelector: .blox14:not(span) PASS Fragment.querySelectorAll: .blox15:not([foo="blox14"]) PASS Fragment.querySelectorAll Whitespace Trim: .blox15:not([foo="blox14"]) PASS Fragment.querySelector: .blox15:not([foo="blox14"]) PASS Fragment.querySelectorAll: .blox16:not(.blox15) PASS Fragment.querySelectorAll Whitespace Trim: .blox16:not(.blox15) PASS Fragment.querySelector: .blox16:not(.blox15) PASS Fragment.querySelectorAll: .blox17:only-of-type PASS Fragment.querySelectorAll Whitespace Trim: .blox17:only-of-type PASS Fragment.querySelector: .blox17:only-of-type PASS Fragment.querySelectorAll: .blox18:only-of-type PASS Fragment.querySelectorAll Whitespace Trim: .blox18:only-of-type PASS Fragment.querySelector: .blox18:only-of-type PASS Fragment.querySelectorAll: .blox18:not(:only-of-type) PASS Fragment.querySelectorAll Whitespace Trim: .blox18:not(:only-of-type) PASS Fragment.querySelector: .blox18:not(:only-of-type) PASS Fragment.querySelectorAll: .lastChild > :last-child PASS Fragment.querySelectorAll Whitespace Trim: .lastChild > :last-child PASS Fragment.querySelector: .lastChild > :last-child PASS Fragment.querySelectorAll: .lastChild > :not(:last-child) PASS Fragment.querySelectorAll Whitespace Trim: .lastChild > :not(:last-child) PASS Fragment.querySelector: .lastChild > :not(:last-child) PASS Fragment.querySelectorAll: .firstOfType > *:first-of-type PASS Fragment.querySelectorAll Whitespace Trim: .firstOfType > *:first-of-type PASS Fragment.querySelector: .firstOfType > *:first-of-type PASS Fragment.querySelectorAll: *.firstOfType > :not(:first-of-type) PASS Fragment.querySelectorAll Whitespace Trim: *.firstOfType > :not(:first-of-type) PASS Fragment.querySelector: *.firstOfType > :not(:first-of-type) PASS Fragment.querySelectorAll: .lastOfType > *:last-of-type PASS Fragment.querySelectorAll Whitespace Trim: .lastOfType > *:last-of-type PASS Fragment.querySelector: .lastOfType > *:last-of-type PASS Fragment.querySelectorAll: *.lastOfType > :not(:last-of-type) PASS Fragment.querySelectorAll Whitespace Trim: *.lastOfType > :not(:last-of-type) PASS Fragment.querySelector: *.lastOfType > :not(:last-of-type) PASS Fragment.querySelectorAll: .onlyChild > *:not(:only-child) PASS Fragment.querySelectorAll Whitespace Trim: .onlyChild > *:not(:only-child) PASS Fragment.querySelector: .onlyChild > *:not(:only-child) PASS Fragment.querySelectorAll: .onlyChild > .unitTest > *:only-child PASS Fragment.querySelectorAll Whitespace Trim: .onlyChild > .unitTest > *:only-child PASS Fragment.querySelector: .onlyChild > .unitTest > *:only-child PASS Fragment.querySelectorAll: .onlyOfType *:only-of-type PASS Fragment.querySelectorAll Whitespace Trim: .onlyOfType *:only-of-type PASS Fragment.querySelector: .onlyOfType *:only-of-type PASS Fragment.querySelectorAll: .onlyOfType *:not(:only-of-type) PASS Fragment.querySelectorAll Whitespace Trim: .onlyOfType *:not(:only-of-type) PASS Fragment.querySelector: .onlyOfType *:not(:only-of-type) PASS Fragment.querySelectorAll: .empty > *.isEmpty:empty PASS Fragment.querySelectorAll Whitespace Trim: .empty > *.isEmpty:empty PASS Fragment.querySelector: .empty > *.isEmpty:empty PASS Fragment.querySelectorAll: .empty > .isNotEmpty PASS Fragment.querySelectorAll Whitespace Trim: .empty > .isNotEmpty PASS Fragment.querySelector: .empty > .isNotEmpty PASS Fragment.querySelectorAll: .empty > .isNotEmpty:empty PASS Fragment.querySelectorAll Whitespace Trim: .empty > .isNotEmpty:empty PASS Fragment.querySelector: .empty > .isNotEmpty:empty PASS Fragment.querySelectorAll: .empty > .isNotEmpty:not(:empty) PASS Fragment.querySelectorAll Whitespace Trim: .empty > .isNotEmpty:not(:empty) PASS Fragment.querySelector: .empty > .isNotEmpty:not(:empty) PASS Fragment.querySelectorAll: .lang :lang(en) PASS Fragment.querySelectorAll Whitespace Trim: .lang :lang(en) PASS Fragment.querySelector: .lang :lang(en) PASS Fragment.querySelectorAll: .lang :lang(fr) PASS Fragment.querySelectorAll Whitespace Trim: .lang :lang(fr) PASS Fragment.querySelector: .lang :lang(fr) PASS Fragment.querySelectorAll: .lang .t1 PASS Fragment.querySelectorAll Whitespace Trim: .lang .t1 PASS Fragment.querySelector: .lang .t1 PASS Fragment.querySelectorAll: .lang .t1:lang(es) PASS Fragment.querySelectorAll Whitespace Trim: .lang .t1:lang(es) PASS Fragment.querySelector: .lang .t1:lang(es) PASS Fragment.querySelectorAll: .lang :lang(es-AR) PASS Fragment.querySelectorAll Whitespace Trim: .lang :lang(es-AR) PASS Fragment.querySelector: .lang :lang(es-AR) PASS Fragment.querySelectorAll: .attrLang .t1 PASS Fragment.querySelectorAll Whitespace Trim: .attrLang .t1 PASS Fragment.querySelector: .attrLang .t1 PASS Fragment.querySelectorAll: .attrLang .t1[lang|="en"] PASS Fragment.querySelectorAll Whitespace Trim: .attrLang .t1[lang|="en"] PASS Fragment.querySelector: .attrLang .t1[lang|="en"] PASS Fragment.querySelectorAll: .attrLang [lang|="fr"] PASS Fragment.querySelectorAll Whitespace Trim: .attrLang [lang|="fr"] PASS Fragment.querySelector: .attrLang [lang|="fr"] PASS Fragment.querySelectorAll: .attrLang .t2[lang|="en"] PASS Fragment.querySelectorAll Whitespace Trim: .attrLang .t2[lang|="en"] PASS Fragment.querySelector: .attrLang .t2[lang|="en"] PASS Fragment.querySelectorAll: .attrLang .t3 PASS Fragment.querySelectorAll Whitespace Trim: .attrLang .t3 PASS Fragment.querySelector: .attrLang .t3 PASS Fragment.querySelectorAll: .attrLang .t3[lang|="es"] PASS Fragment.querySelectorAll Whitespace Trim: .attrLang .t3[lang|="es"] PASS Fragment.querySelector: .attrLang .t3[lang|="es"] PASS Fragment.querySelectorAll: .attrLang [lang|="es-AR"] PASS Fragment.querySelectorAll Whitespace Trim: .attrLang [lang|="es-AR"] PASS Fragment.querySelector: .attrLang [lang|="es-AR"] PASS Fragment.querySelectorAll: .UI .t1:enabled > .unitTest PASS Fragment.querySelectorAll Whitespace Trim: .UI .t1:enabled > .unitTest PASS Fragment.querySelector: .UI .t1:enabled > .unitTest PASS Fragment.querySelectorAll: .UI .t2:disabled > .unitTest PASS Fragment.querySelectorAll Whitespace Trim: .UI .t2:disabled > .unitTest PASS Fragment.querySelector: .UI .t2:disabled > .unitTest PASS Fragment.querySelectorAll: .UI .t3:checked + div PASS Fragment.querySelectorAll Whitespace Trim: .UI .t3:checked + div PASS Fragment.querySelector: .UI .t3:checked + div PASS Fragment.querySelectorAll: .UI .t4:not(:checked) + div PASS Fragment.querySelectorAll Whitespace Trim: .UI .t4:not(:checked) + div PASS Fragment.querySelector: .UI .t4:not(:checked) + div PASS Fragment.querySelectorAll: .tilda .t1 PASS Fragment.querySelectorAll Whitespace Trim: .tilda .t1 PASS Fragment.querySelector: .tilda .t1 PASS Fragment.querySelectorAll: .tilda .t1 ~ .unitTest PASS Fragment.querySelectorAll Whitespace Trim: .tilda .t1 ~ .unitTest PASS Fragment.querySelector: .tilda .t1 ~ .unitTest PASS Fragment.querySelectorAll: .tilda .t1:hover ~ .unitTest PASS Fragment.querySelectorAll Whitespace Trim: .tilda .t1:hover ~ .unitTest PASS Fragment.querySelector: .tilda .t1:hover ~ .unitTest PASS Fragment.querySelectorAll: .plus .t1, .plus .t2 PASS Fragment.querySelectorAll Whitespace Trim: .plus .t1, .plus .t2 PASS Fragment.querySelector: .plus .t1, .plus .t2 PASS Fragment.querySelectorAll: .plus .t1 + .unitTest + .unitTest PASS Fragment.querySelectorAll Whitespace Trim: .plus .t1 + .unitTest + .unitTest PASS Fragment.querySelector: .plus .t1 + .unitTest + .unitTest PASS Fragment.querySelectorAll: .plus .t1:hover + .unitTest + .unitTest PASS Fragment.querySelectorAll Whitespace Trim: .plus .t1:hover + .unitTest + .unitTest PASS Fragment.querySelector: .plus .t1:hover + .unitTest + .unitTest PASS Syntax Error: Fragment.querySelectorAll Empty String PASS Syntax Error: Fragment.querySelectorAll null PASS Syntax Error: Fragment.querySelectorAll undefined PASS Syntax Error: Fragment.querySelectorAll no value PASS Syntax Error: Fragment.querySelector Empty String PASS Syntax Error: Fragment.querySelector null PASS Syntax Error: Fragment.querySelector undefined PASS Syntax Error: Fragment.querySelector no value FAIL Syntax Error: Fragment.querySelectorAll: .blox16:not(.blox15[foo="blox14"]) FAIL Syntax Error: Fragment.querySelector: .blox16:not(.blox15[foo="blox14"]) FAIL Syntax Error: Fragment.querySelectorAll: div:not(:not(div)) FAIL Syntax Error: Fragment.querySelector: div:not(:not(div)) PASS Syntax Error: Fragment.querySelectorAll: div, PASS Syntax Error: Fragment.querySelector: div, PASS Syntax Error: Fragment.querySelectorAll: .5cm PASS Syntax Error: Fragment.querySelector: .5cm PASS Syntax Error: Fragment.querySelectorAll: foo & address, p PASS Syntax Error: Fragment.querySelector: foo & address, p PASS Syntax Error: Fragment.querySelectorAll: [*=test] PASS Syntax Error: Fragment.querySelector: [*=test] PASS Syntax Error: Fragment.querySelectorAll: [*|*=test] PASS Syntax Error: Fragment.querySelector: [*|*=test] PASS Syntax Error: Fragment.querySelectorAll: div:subject PASS Syntax Error: Fragment.querySelector: div:subject PASS Syntax Error: Fragment.querySelectorAll: :canvas PASS Syntax Error: Fragment.querySelector: :canvas PASS Syntax Error: Fragment.querySelectorAll: :viewport PASS Syntax Error: Fragment.querySelector: :viewport PASS Syntax Error: Fragment.querySelectorAll: :window PASS Syntax Error: Fragment.querySelector: :window PASS Syntax Error: Fragment.querySelectorAll: :menu PASS Syntax Error: Fragment.querySelector: :menu PASS Syntax Error: Fragment.querySelectorAll: :table PASS Syntax Error: Fragment.querySelector: :table PASS Syntax Error: Fragment.querySelectorAll: :select PASS Syntax Error: Fragment.querySelector: :select PASS Syntax Error: Fragment.querySelectorAll: ::canvas PASS Syntax Error: Fragment.querySelector: ::canvas PASS Syntax Error: Fragment.querySelectorAll: ::viewport PASS Syntax Error: Fragment.querySelector: ::viewport PASS Syntax Error: Fragment.querySelectorAll: ::window PASS Syntax Error: Fragment.querySelector: ::window PASS Syntax Error: Fragment.querySelectorAll: ::menu PASS Syntax Error: Fragment.querySelector: ::menu PASS Syntax Error: Fragment.querySelectorAll: ::table PASS Syntax Error: Fragment.querySelector: ::table PASS Syntax Error: Fragment.querySelectorAll: ::select PASS Syntax Error: Fragment.querySelector: ::select PASS Syntax Error: Fragment.querySelectorAll: ..test PASS Syntax Error: Fragment.querySelector: ..test PASS Syntax Error: Fragment.querySelectorAll: .foo..quux PASS Syntax Error: Fragment.querySelector: .foo..quux PASS Syntax Error: Fragment.querySelectorAll: .bar. PASS Syntax Error: Fragment.querySelector: .bar. PASS Fragment: StaticNodeList PASS Fragment: StaticNodeList PASS Document supports querySelector PASS Document supports querySelectorAll PASS Document.querySelectorAll Empty String PASS Document.querySelectorAll null PASS Document.querySelectorAll undefined PASS Document.querySelectorAll no value PASS Document.querySelector Empty String PASS Document.querySelector null PASS Document.querySelector undefined PASS Document.querySelector no value PASS Document.querySelectorAll: .target :target PASS Document.querySelectorAll Whitespace Trim: .target :target PASS Document.querySelector: .target :target PASS Document.querySelectorAll: html > body PASS Document.querySelectorAll Whitespace Trim: html > body PASS Document.querySelector: html > body PASS Document.querySelectorAll: .test > .blox1 PASS Document.querySelectorAll Whitespace Trim: .test > .blox1 PASS Document.querySelector: .test > .blox1 PASS Document.querySelectorAll: .blox2[align] PASS Document.querySelectorAll Whitespace Trim: .blox2[align] PASS Document.querySelector: .blox2[align] PASS Document.querySelectorAll: .blox3[align] PASS Document.querySelectorAll Whitespace Trim: .blox3[align] PASS Document.querySelector: .blox3[align] PASS Document.querySelectorAll: .blox4, .blox5 PASS Document.querySelectorAll Whitespace Trim: .blox4, .blox5 PASS Document.querySelector: .blox4, .blox5 PASS Document.querySelectorAll: .blox4[align], .blox5[align] PASS Document.querySelectorAll Whitespace Trim: .blox4[align], .blox5[align] PASS Document.querySelector: .blox4[align], .blox5[align] PASS Document.querySelectorAll: .blox6[align="center"] PASS Document.querySelectorAll Whitespace Trim: .blox6[align="center"] PASS Document.querySelector: .blox6[align="center"] PASS Document.querySelectorAll: .blox6[align="c"] PASS Document.querySelectorAll Whitespace Trim: .blox6[align="c"] PASS Document.querySelector: .blox6[align="c"] PASS Document.querySelectorAll: .blox6[align="centera"] PASS Document.querySelectorAll Whitespace Trim: .blox6[align="centera"] PASS Document.querySelector: .blox6[align="centera"] PASS Document.querySelectorAll: .blox6[foo="\e9"] PASS Document.querySelectorAll Whitespace Trim: .blox6[foo="\e9"] PASS Document.querySelector: .blox6[foo="\e9"] PASS Document.querySelectorAll: .blox6[\_foo="\e9"] PASS Document.querySelectorAll Whitespace Trim: .blox6[\_foo="\e9"] PASS Document.querySelector: .blox6[\_foo="\e9"] PASS Document.querySelectorAll: .blox7[class~="foo"] PASS Document.querySelectorAll Whitespace Trim: .blox7[class~="foo"] PASS Document.querySelector: .blox7[class~="foo"] PASS Document.querySelectorAll: .blox8, .blox9, .blox10 PASS Document.querySelectorAll Whitespace Trim: .blox8, .blox9, .blox10 PASS Document.querySelector: .blox8, .blox9, .blox10 PASS Document.querySelectorAll: .blox8[class~=""] PASS Document.querySelectorAll Whitespace Trim: .blox8[class~=""] PASS Document.querySelector: .blox8[class~=""] PASS Document.querySelectorAll: .blox9[foo~=""] PASS Document.querySelectorAll Whitespace Trim: .blox9[foo~=""] PASS Document.querySelector: .blox9[foo~=""] PASS Document.querySelectorAll: .blox10[foo~="foo"] PASS Document.querySelectorAll Whitespace Trim: .blox10[foo~="foo"] PASS Document.querySelector: .blox10[foo~="foo"] PASS Document.querySelectorAll: .attrStart > .t3 PASS Document.querySelectorAll Whitespace Trim: .attrStart > .t3 PASS Document.querySelector: .attrStart > .t3 PASS Document.querySelectorAll: .attrStart > .t1[class^="unit"] PASS Document.querySelectorAll Whitespace Trim: .attrStart > .t1[class^="unit"] PASS Document.querySelector: .attrStart > .t1[class^="unit"] PASS Document.querySelectorAll: .attrStart > .t2 PASS Document.querySelectorAll Whitespace Trim: .attrStart > .t2 PASS Document.querySelector: .attrStart > .t2 PASS Document.querySelectorAll: .attrStart > .t2[class^="nit"] PASS Document.querySelectorAll Whitespace Trim: .attrStart > .t2[class^="nit"] PASS Document.querySelector: .attrStart > .t2[class^="nit"] PASS Document.querySelectorAll: .attrStart > .t3[align^=""] PASS Document.querySelectorAll Whitespace Trim: .attrStart > .t3[align^=""] PASS Document.querySelector: .attrStart > .t3[align^=""] PASS Document.querySelectorAll: .attrStart > .t4[foo^="\e9"] PASS Document.querySelectorAll Whitespace Trim: .attrStart > .t4[foo^="\e9"] PASS Document.querySelector: .attrStart > .t4[foo^="\e9"] PASS Document.querySelectorAll: .attrEnd > .t3 PASS Document.querySelectorAll Whitespace Trim: .attrEnd > .t3 PASS Document.querySelector: .attrEnd > .t3 PASS Document.querySelectorAll: .attrEnd > .t1[class$="t1"] PASS Document.querySelectorAll Whitespace Trim: .attrEnd > .t1[class$="t1"] PASS Document.querySelector: .attrEnd > .t1[class$="t1"] PASS Document.querySelectorAll: .attrEnd > .t2 PASS Document.querySelectorAll Whitespace Trim: .attrEnd > .t2 PASS Document.querySelector: .attrEnd > .t2 PASS Document.querySelectorAll: .attrEnd > .t2[class$="unit"] PASS Document.querySelectorAll Whitespace Trim: .attrEnd > .t2[class$="unit"] PASS Document.querySelector: .attrEnd > .t2[class$="unit"] PASS Document.querySelectorAll: .attrEnd > .t3[align$=""] PASS Document.querySelectorAll Whitespace Trim: .attrEnd > .t3[align$=""] PASS Document.querySelector: .attrEnd > .t3[align$=""] PASS Document.querySelectorAll: .attrEnd > .t4[foo$="\e9"] PASS Document.querySelectorAll Whitespace Trim: .attrEnd > .t4[foo$="\e9"] PASS Document.querySelector: .attrEnd > .t4[foo$="\e9"] PASS Document.querySelectorAll: .attrMiddle > .t3 PASS Document.querySelectorAll Whitespace Trim: .attrMiddle > .t3 PASS Document.querySelector: .attrMiddle > .t3 PASS Document.querySelectorAll: .attrMiddle > .t1[class*="t t"] PASS Document.querySelectorAll Whitespace Trim: .attrMiddle > .t1[class*="t t"] PASS Document.querySelector: .attrMiddle > .t1[class*="t t"] PASS Document.querySelectorAll: .attrMiddle > .t2 PASS Document.querySelectorAll Whitespace Trim: .attrMiddle > .t2 PASS Document.querySelector: .attrMiddle > .t2 PASS Document.querySelectorAll: .attrMiddle > .t2[class*="a"] PASS Document.querySelectorAll Whitespace Trim: .attrMiddle > .t2[class*="a"] PASS Document.querySelector: .attrMiddle > .t2[class*="a"] PASS Document.querySelectorAll: .attrMiddle > .t3[align*=""] PASS Document.querySelectorAll Whitespace Trim: .attrMiddle > .t3[align*=""] PASS Document.querySelector: .attrMiddle > .t3[align*=""] PASS Document.querySelectorAll: .attrMiddle > .t4[foo*="\e9"] PASS Document.querySelectorAll Whitespace Trim: .attrMiddle > .t4[foo*="\e9"] PASS Document.querySelector: .attrMiddle > .t4[foo*="\e9"] PASS Document.querySelectorAll: .firstChild .unitTest:first-child PASS Document.querySelectorAll Whitespace Trim: .firstChild .unitTest:first-child PASS Document.querySelector: .firstChild .unitTest:first-child PASS Document.querySelectorAll: .blox12:first-child PASS Document.querySelectorAll Whitespace Trim: .blox12:first-child PASS Document.querySelector: .blox12:first-child PASS Document.querySelectorAll: .blox13:first-child PASS Document.querySelectorAll Whitespace Trim: .blox13:first-child PASS Document.querySelector: .blox13:first-child PASS Document.querySelectorAll: .blox12, .blox13 PASS Document.querySelectorAll Whitespace Trim: .blox12, .blox13 PASS Document.querySelector: .blox12, .blox13 PASS Document.querySelectorAll: :root PASS Document.querySelectorAll Whitespace Trim: :root PASS Document.querySelector: :root PASS Document.querySelectorAll: .nthchild1 > :nth-last-child(odd) PASS Document.querySelectorAll Whitespace Trim: .nthchild1 > :nth-last-child(odd) PASS Document.querySelector: .nthchild1 > :nth-last-child(odd) PASS Document.querySelectorAll: .nthchild1 > :nth-child(odd) PASS Document.querySelectorAll Whitespace Trim: .nthchild1 > :nth-child(odd) PASS Document.querySelector: .nthchild1 > :nth-child(odd) PASS Document.querySelectorAll: .nthchild2 > :nth-last-child(even) PASS Document.querySelectorAll Whitespace Trim: .nthchild2 > :nth-last-child(even) PASS Document.querySelector: .nthchild2 > :nth-last-child(even) PASS Document.querySelectorAll: .nthchild2 > :nth-child(even) PASS Document.querySelectorAll Whitespace Trim: .nthchild2 > :nth-child(even) PASS Document.querySelector: .nthchild2 > :nth-child(even) PASS Document.querySelectorAll: .nthchild3 > :nth-child(3n+2) PASS Document.querySelectorAll Whitespace Trim: .nthchild3 > :nth-child(3n+2) PASS Document.querySelector: .nthchild3 > :nth-child(3n+2) PASS Document.querySelectorAll: .nthchild3 > :nth-last-child(3n+1) PASS Document.querySelectorAll Whitespace Trim: .nthchild3 > :nth-last-child(3n+1) PASS Document.querySelector: .nthchild3 > :nth-last-child(3n+1) PASS Document.querySelectorAll: .nthchild3 > :nth-last-child(3n+3) PASS Document.querySelectorAll Whitespace Trim: .nthchild3 > :nth-last-child(3n+3) PASS Document.querySelector: .nthchild3 > :nth-last-child(3n+3) PASS Document.querySelectorAll: .nthoftype1 > div:nth-of-type(odd) PASS Document.querySelectorAll Whitespace Trim: .nthoftype1 > div:nth-of-type(odd) PASS Document.querySelector: .nthoftype1 > div:nth-of-type(odd) PASS Document.querySelectorAll: .nthoftype1 > div:nth-last-of-type(odd) PASS Document.querySelectorAll Whitespace Trim: .nthoftype1 > div:nth-last-of-type(odd) PASS Document.querySelector: .nthoftype1 > div:nth-last-of-type(odd) PASS Document.querySelectorAll: .nthoftype1 > p PASS Document.querySelectorAll Whitespace Trim: .nthoftype1 > p PASS Document.querySelector: .nthoftype1 > p PASS Document.querySelectorAll: .nthoftype2 > div:nth-of-type(even) PASS Document.querySelectorAll Whitespace Trim: .nthoftype2 > div:nth-of-type(even) PASS Document.querySelector: .nthoftype2 > div:nth-of-type(even) PASS Document.querySelectorAll: .nthoftype2 > div:nth-last-of-type(even) PASS Document.querySelectorAll Whitespace Trim: .nthoftype2 > div:nth-last-of-type(even) PASS Document.querySelector: .nthoftype2 > div:nth-last-of-type(even) PASS Document.querySelectorAll: .nthoftype2 > p PASS Document.querySelectorAll Whitespace Trim: .nthoftype2 > p PASS Document.querySelector: .nthoftype2 > p PASS Document.querySelectorAll: .nthoftype3 > div:nth-of-type(3n+1) PASS Document.querySelectorAll Whitespace Trim: .nthoftype3 > div:nth-of-type(3n+1) PASS Document.querySelector: .nthoftype3 > div:nth-of-type(3n+1) PASS Document.querySelectorAll: .nthoftype3 > div:nth-last-of-type(3n+1) PASS Document.querySelectorAll Whitespace Trim: .nthoftype3 > div:nth-last-of-type(3n+1) PASS Document.querySelector: .nthoftype3 > div:nth-last-of-type(3n+1) PASS Document.querySelectorAll: .nthoftype3 > div:nth-last-of-type(3n+2) PASS Document.querySelectorAll Whitespace Trim: .nthoftype3 > div:nth-last-of-type(3n+2) PASS Document.querySelector: .nthoftype3 > div:nth-last-of-type(3n+2) PASS Document.querySelectorAll: .nthoftype3 > p PASS Document.querySelectorAll Whitespace Trim: .nthoftype3 > p PASS Document.querySelector: .nthoftype3 > p PASS Document.querySelectorAll: .blox14:not(span) PASS Document.querySelectorAll Whitespace Trim: .blox14:not(span) PASS Document.querySelector: .blox14:not(span) PASS Document.querySelectorAll: .blox15:not([foo="blox14"]) PASS Document.querySelectorAll Whitespace Trim: .blox15:not([foo="blox14"]) PASS Document.querySelector: .blox15:not([foo="blox14"]) PASS Document.querySelectorAll: .blox16:not(.blox15) PASS Document.querySelectorAll Whitespace Trim: .blox16:not(.blox15) PASS Document.querySelector: .blox16:not(.blox15) PASS Document.querySelectorAll: .blox17:only-of-type PASS Document.querySelectorAll Whitespace Trim: .blox17:only-of-type PASS Document.querySelector: .blox17:only-of-type PASS Document.querySelectorAll: .blox18:only-of-type PASS Document.querySelectorAll Whitespace Trim: .blox18:only-of-type PASS Document.querySelector: .blox18:only-of-type PASS Document.querySelectorAll: .blox18:not(:only-of-type) PASS Document.querySelectorAll Whitespace Trim: .blox18:not(:only-of-type) PASS Document.querySelector: .blox18:not(:only-of-type) PASS Document.querySelectorAll: .lastChild > :last-child PASS Document.querySelectorAll Whitespace Trim: .lastChild > :last-child PASS Document.querySelector: .lastChild > :last-child PASS Document.querySelectorAll: .lastChild > :not(:last-child) PASS Document.querySelectorAll Whitespace Trim: .lastChild > :not(:last-child) PASS Document.querySelector: .lastChild > :not(:last-child) PASS Document.querySelectorAll: .firstOfType > *:first-of-type PASS Document.querySelectorAll Whitespace Trim: .firstOfType > *:first-of-type PASS Document.querySelector: .firstOfType > *:first-of-type PASS Document.querySelectorAll: *.firstOfType > :not(:first-of-type) PASS Document.querySelectorAll Whitespace Trim: *.firstOfType > :not(:first-of-type) PASS Document.querySelector: *.firstOfType > :not(:first-of-type) PASS Document.querySelectorAll: .lastOfType > *:last-of-type PASS Document.querySelectorAll Whitespace Trim: .lastOfType > *:last-of-type PASS Document.querySelector: .lastOfType > *:last-of-type PASS Document.querySelectorAll: *.lastOfType > :not(:last-of-type) PASS Document.querySelectorAll Whitespace Trim: *.lastOfType > :not(:last-of-type) PASS Document.querySelector: *.lastOfType > :not(:last-of-type) PASS Document.querySelectorAll: .onlyChild > *:not(:only-child) PASS Document.querySelectorAll Whitespace Trim: .onlyChild > *:not(:only-child) PASS Document.querySelector: .onlyChild > *:not(:only-child) PASS Document.querySelectorAll: .onlyChild > .unitTest > *:only-child PASS Document.querySelectorAll Whitespace Trim: .onlyChild > .unitTest > *:only-child PASS Document.querySelector: .onlyChild > .unitTest > *:only-child PASS Document.querySelectorAll: .onlyOfType *:only-of-type PASS Document.querySelectorAll Whitespace Trim: .onlyOfType *:only-of-type PASS Document.querySelector: .onlyOfType *:only-of-type PASS Document.querySelectorAll: .onlyOfType *:not(:only-of-type) PASS Document.querySelectorAll Whitespace Trim: .onlyOfType *:not(:only-of-type) PASS Document.querySelector: .onlyOfType *:not(:only-of-type) PASS Document.querySelectorAll: .empty > *.isEmpty:empty PASS Document.querySelectorAll Whitespace Trim: .empty > *.isEmpty:empty PASS Document.querySelector: .empty > *.isEmpty:empty PASS Document.querySelectorAll: .empty > .isNotEmpty PASS Document.querySelectorAll Whitespace Trim: .empty > .isNotEmpty PASS Document.querySelector: .empty > .isNotEmpty PASS Document.querySelectorAll: .empty > .isNotEmpty:empty PASS Document.querySelectorAll Whitespace Trim: .empty > .isNotEmpty:empty PASS Document.querySelector: .empty > .isNotEmpty:empty PASS Document.querySelectorAll: .empty > .isNotEmpty:not(:empty) PASS Document.querySelectorAll Whitespace Trim: .empty > .isNotEmpty:not(:empty) PASS Document.querySelector: .empty > .isNotEmpty:not(:empty) PASS Document.querySelectorAll: .lang :lang(en) PASS Document.querySelectorAll Whitespace Trim: .lang :lang(en) PASS Document.querySelector: .lang :lang(en) PASS Document.querySelectorAll: .lang :lang(fr) PASS Document.querySelectorAll Whitespace Trim: .lang :lang(fr) PASS Document.querySelector: .lang :lang(fr) PASS Document.querySelectorAll: .lang .t1 PASS Document.querySelectorAll Whitespace Trim: .lang .t1 PASS Document.querySelector: .lang .t1 PASS Document.querySelectorAll: .lang .t1:lang(es) PASS Document.querySelectorAll Whitespace Trim: .lang .t1:lang(es) PASS Document.querySelector: .lang .t1:lang(es) PASS Document.querySelectorAll: .lang :lang(es-AR) PASS Document.querySelectorAll Whitespace Trim: .lang :lang(es-AR) PASS Document.querySelector: .lang :lang(es-AR) PASS Document.querySelectorAll: .attrLang .t1 PASS Document.querySelectorAll Whitespace Trim: .attrLang .t1 PASS Document.querySelector: .attrLang .t1 PASS Document.querySelectorAll: .attrLang .t1[lang|="en"] PASS Document.querySelectorAll Whitespace Trim: .attrLang .t1[lang|="en"] PASS Document.querySelector: .attrLang .t1[lang|="en"] PASS Document.querySelectorAll: .attrLang [lang|="fr"] PASS Document.querySelectorAll Whitespace Trim: .attrLang [lang|="fr"] PASS Document.querySelector: .attrLang [lang|="fr"] PASS Document.querySelectorAll: .attrLang .t2[lang|="en"] PASS Document.querySelectorAll Whitespace Trim: .attrLang .t2[lang|="en"] PASS Document.querySelector: .attrLang .t2[lang|="en"] PASS Document.querySelectorAll: .attrLang .t3 PASS Document.querySelectorAll Whitespace Trim: .attrLang .t3 PASS Document.querySelector: .attrLang .t3 PASS Document.querySelectorAll: .attrLang .t3[lang|="es"] PASS Document.querySelectorAll Whitespace Trim: .attrLang .t3[lang|="es"] PASS Document.querySelector: .attrLang .t3[lang|="es"] PASS Document.querySelectorAll: .attrLang [lang|="es-AR"] PASS Document.querySelectorAll Whitespace Trim: .attrLang [lang|="es-AR"] PASS Document.querySelector: .attrLang [lang|="es-AR"] PASS Document.querySelectorAll: .UI .t1:enabled > .unitTest PASS Document.querySelectorAll Whitespace Trim: .UI .t1:enabled > .unitTest PASS Document.querySelector: .UI .t1:enabled > .unitTest PASS Document.querySelectorAll: .UI .t2:disabled > .unitTest PASS Document.querySelectorAll Whitespace Trim: .UI .t2:disabled > .unitTest PASS Document.querySelector: .UI .t2:disabled > .unitTest PASS Document.querySelectorAll: .UI .t3:checked + div PASS Document.querySelectorAll Whitespace Trim: .UI .t3:checked + div PASS Document.querySelector: .UI .t3:checked + div PASS Document.querySelectorAll: .UI .t4:not(:checked) + div PASS Document.querySelectorAll Whitespace Trim: .UI .t4:not(:checked) + div PASS Document.querySelector: .UI .t4:not(:checked) + div PASS Document.querySelectorAll: .tilda .t1 PASS Document.querySelectorAll Whitespace Trim: .tilda .t1 PASS Document.querySelector: .tilda .t1 PASS Document.querySelectorAll: .tilda .t1 ~ .unitTest PASS Document.querySelectorAll Whitespace Trim: .tilda .t1 ~ .unitTest PASS Document.querySelector: .tilda .t1 ~ .unitTest PASS Document.querySelectorAll: .tilda .t1:hover ~ .unitTest PASS Document.querySelectorAll Whitespace Trim: .tilda .t1:hover ~ .unitTest PASS Document.querySelector: .tilda .t1:hover ~ .unitTest PASS Document.querySelectorAll: .plus .t1, .plus .t2 PASS Document.querySelectorAll Whitespace Trim: .plus .t1, .plus .t2 PASS Document.querySelector: .plus .t1, .plus .t2 PASS Document.querySelectorAll: .plus .t1 + .unitTest + .unitTest PASS Document.querySelectorAll Whitespace Trim: .plus .t1 + .unitTest + .unitTest PASS Document.querySelector: .plus .t1 + .unitTest + .unitTest PASS Document.querySelectorAll: .plus .t1:hover + .unitTest + .unitTest PASS Document.querySelectorAll Whitespace Trim: .plus .t1:hover + .unitTest + .unitTest PASS Document.querySelector: .plus .t1:hover + .unitTest + .unitTest PASS Syntax Error: Document.querySelectorAll Empty String PASS Syntax Error: Document.querySelectorAll null PASS Syntax Error: Document.querySelectorAll undefined PASS Syntax Error: Document.querySelectorAll no value PASS Syntax Error: Document.querySelector Empty String PASS Syntax Error: Document.querySelector null PASS Syntax Error: Document.querySelector undefined PASS Syntax Error: Document.querySelector no value FAIL Syntax Error: Document.querySelectorAll: .blox16:not(.blox15[foo="blox14"]) FAIL Syntax Error: Document.querySelector: .blox16:not(.blox15[foo="blox14"]) FAIL Syntax Error: Document.querySelectorAll: div:not(:not(div)) FAIL Syntax Error: Document.querySelector: div:not(:not(div)) PASS Syntax Error: Document.querySelectorAll: div, PASS Syntax Error: Document.querySelector: div, PASS Syntax Error: Document.querySelectorAll: .5cm PASS Syntax Error: Document.querySelector: .5cm PASS Syntax Error: Document.querySelectorAll: foo & address, p PASS Syntax Error: Document.querySelector: foo & address, p PASS Syntax Error: Document.querySelectorAll: [*=test] PASS Syntax Error: Document.querySelector: [*=test] PASS Syntax Error: Document.querySelectorAll: [*|*=test] PASS Syntax Error: Document.querySelector: [*|*=test] PASS Syntax Error: Document.querySelectorAll: div:subject PASS Syntax Error: Document.querySelector: div:subject PASS Syntax Error: Document.querySelectorAll: :canvas PASS Syntax Error: Document.querySelector: :canvas PASS Syntax Error: Document.querySelectorAll: :viewport PASS Syntax Error: Document.querySelector: :viewport PASS Syntax Error: Document.querySelectorAll: :window PASS Syntax Error: Document.querySelector: :window PASS Syntax Error: Document.querySelectorAll: :menu PASS Syntax Error: Document.querySelector: :menu PASS Syntax Error: Document.querySelectorAll: :table PASS Syntax Error: Document.querySelector: :table PASS Syntax Error: Document.querySelectorAll: :select PASS Syntax Error: Document.querySelector: :select PASS Syntax Error: Document.querySelectorAll: ::canvas PASS Syntax Error: Document.querySelector: ::canvas PASS Syntax Error: Document.querySelectorAll: ::viewport PASS Syntax Error: Document.querySelector: ::viewport PASS Syntax Error: Document.querySelectorAll: ::window PASS Syntax Error: Document.querySelector: ::window PASS Syntax Error: Document.querySelectorAll: ::menu PASS Syntax Error: Document.querySelector: ::menu PASS Syntax Error: Document.querySelectorAll: ::table PASS Syntax Error: Document.querySelector: ::table PASS Syntax Error: Document.querySelectorAll: ::select PASS Syntax Error: Document.querySelector: ::select PASS Syntax Error: Document.querySelectorAll: ..test PASS Syntax Error: Document.querySelector: ..test PASS Syntax Error: Document.querySelectorAll: .foo..quux PASS Syntax Error: Document.querySelector: .foo..quux PASS Syntax Error: Document.querySelectorAll: .bar. PASS Syntax Error: Document.querySelector: .bar. PASS Document: Select all PASS Document: Select all elements, no comment nodes PASS Document: :root Selector (:root) PASS Document: :root All Selector PASS Document: Element Selector (#root3 p) PASS Document: Element Selector (body) PASS Document: Element Selector (html) PASS Document: Parent Element (#root3 div p) PASS Document: Object/param as context PASS Document: <input name="length"> cannot be found under IE PASS Document: <input name="length"> cannot be found under IE PASS Document: Broken Selector (#root3 [) PASS Document: Broken Selector (#root3 () PASS Document: Broken Selector (#root3 {) PASS Document: Broken Selector (#root3 <) PASS Document: Broken Selector (#root3 ()) PASS Document: Broken Selector (#root3 <>) PASS Document: Broken Selector (#root3 {}) PASS Document: ID Selector (#body) PASS Document: ID Selector w/ Element (body#body) PASS Document: ID Selector w/ Element (#root3 ul#first) PASS Document: ID selector with existing ID descendant (#root3 #firstp #simon1) PASS Document: ID selector with non-existant descendant (#root3 #firstp #foobar) PASS Document: ID selector using UTF8 (#root3 #台北Táiběi) PASS Document: Multiple ID selectors using UTF8 (#root3 #台北Táiběi, #root3 #台北) PASS Document: Descendant ID selector using UTF8 (#root3 div #台北) PASS Document: Child ID selector using UTF8 (#root3 form > #台北) PASS Document: Escaped ID (#root3 #foo\:bar) PASS Document: Escaped ID (#root3 #test\.foo\[5\]bar) PASS Document: Descendant escaped ID (#root3 div #foo\:bar) PASS Document: Descendant escaped ID (#root3 div #test\.foo\[5\]bar) PASS Document: Child escaped ID (#root3 form > #foo\:bar) PASS Document: Child escaped ID (#root3 form > #test\.foo\[5\]bar) PASS Document: ID Selector, child ID present (#root3 #form > #radio1) PASS Document: ID Selector, not an ancestor ID (#root3 #form #first) PASS Document: ID Selector, not a child ID (#root3 #form > #option1a) PASS Document: All Children of ID (#root3 #foo > *) PASS Document: All Children of ID with no children (#root3 #firstUL > *) PASS Document: ID selector with non-existant ancestor (#root3 #asdfasdf #foobar) PASS Document: Class Selector (#root3 .blog) PASS Document: Class Selector (#root3 .blog.link) PASS Document: Class Selector w/ Element (#root3 a.blog) PASS Document: Parent Class Selector (#root3 p .blog) PASS Document: Class selector using UTF8 (#root3 .台北Táiběi) PASS Document: Class selector using UTF8 (#root3 .台北) PASS Document: Class selector using UTF8 (#root3 .台北Táiběi.台北) PASS Document: Class selector using UTF8 (#root3 .台北Táiběi, #root3 .台北) PASS Document: Descendant class selector using UTF8 (#root3 div .台北Táiběi) PASS Document: Child class selector using UTF8 (#root3 form > .台北Táiběi) PASS Document: Escaped Class (#root3 .foo\:bar) PASS Document: Escaped Class (#root3 .test\.foo\[5\]bar) PASS Document: Descendant scaped Class (#root3 div .foo\:bar) PASS Document: Descendant scaped Class (#root3 div .test\.foo\[5\]bar) PASS Document: Child escaped Class (#root3 form > .foo\:bar) PASS Document: Child escaped Class (#root3 form > .test\.foo\[5\]bar) PASS Document: Comma Support (#root3 a.blog, #root3 p) PASS Document: Comma Support (#root3 a.blog , #root3 p) PASS Document: Comma Support (#root3 a.blog , #root3 p) PASS Document: Comma Support (#root3 a.blog, #root3 p) PASS Document: Child (#root3 p > a) PASS Document: Child (#root3 p> a) PASS Document: Child (#root3 p >a) PASS Document: Child (#root3 p>a) PASS Document: Child w/ Class (#root3 p > a.blog) PASS Document: All Children (#root3 code > *) PASS Document: All Grandchildren (#root3 p > * > *) PASS Document: Adjacent (#root3 a + a) PASS Document: Adjacent (#root3 a +a) PASS Document: Adjacent (#root3 a+ a) PASS Document: Adjacent (#root3 a+a) PASS Document: Adjacent (#root3 p + p) PASS Document: Comma, Child, and Adjacent (#root3 a + a, #root3 code > a) PASS Document: First Child (#root3 p:first-child) PASS Document: Nth Child (#root3 p:nth-child(1)) PASS Document: Last Child (#root3 p:last-child) PASS Document: Last Child (#root3 a:last-child) PASS Document: Nth-child (#root3 #main form#form > *:nth-child(2)) PASS Document: Nth-child (#root3 #main form#form > :nth-child(2)) PASS Document: Nth-child (#root3 #form #select1 option:nth-child(3)) PASS Document: Nth-child (#root3 #form #select1 option:nth-child(0n+3)) PASS Document: Nth-child (#root3 #form #select1 option:nth-child(1n+0)) PASS Document: Nth-child (#root3 #form #select1 option:nth-child(1n)) PASS Document: Nth-child (#root3 #form #select1 option:nth-child(n)) PASS Document: Nth-child (#root3 #form #select1 option:nth-child(even)) PASS Document: Nth-child (#root3 #form #select1 option:nth-child(odd)) PASS Document: Nth-child (#root3 #form #select1 option:nth-child(2n)) PASS Document: Nth-child (#root3 #form #select1 option:nth-child(2n+1)) PASS Document: Nth-child (#root3 #form #select1 option:nth-child(3n)) PASS Document: Nth-child (#root3 #form #select1 option:nth-child(3n+1)) PASS Document: Nth-child (#root3 #form #select1 option:nth-child(3n+2)) PASS Document: Nth-child (#root3 #form #select1 option:nth-child(3n+3)) PASS Document: Nth-child (#root3 #form #select1 option:nth-child(3n-1)) PASS Document: Nth-child (#root3 #form #select1 option:nth-child(3n-2)) PASS Document: Nth-child (#root3 #form #select1 option:nth-child(3n-3)) PASS Document: Nth-child (#root3 #form #select1 option:nth-child(3n+0)) PASS Document: Nth-child (#root3 #form #select1 option:nth-child(-n+3)) PASS Document: Attribute Exists (#root3 a[title]) PASS Document: Attribute Exists (#root3 *[title]) PASS Document: Attribute Exists (#root3 [title]) PASS Document: Attribute Equals (#root3 a[rel='bookmark']) PASS Document: Attribute Equals (#root3 a[rel="bookmark"]) PASS Document: Attribute Equals (#root3 a[rel=bookmark]) PASS Document: Multiple Attribute Equals (#root3 #form input[type='hidden'], #root3 #form input[type='radio']) PASS Document: Multiple Attribute Equals (#root3 #form input[type="hidden"], #root3 #form input[type='radio']) PASS Document: Multiple Attribute Equals (#root3 #form input[type=hidden], #root3 #form input[type=radio]) PASS Document: Attribute selector using UTF8 (#root3 span[lang=中文]) PASS Document: Attribute Begins With (#root3 a[href ^= 'http://www']) PASS Document: Attribute Ends With (#root3 a[href $= 'org/']) PASS Document: Attribute Contains (#root3 a[href *= 'google']) PASS Document: Select options via [selected] (#root3 #select1 option[selected]) PASS Document: Select options via [selected] (#root3 #select2 option[selected]) PASS Document: Select options via [selected] (#root3 #select3 option[selected]) PASS Document: Grouped Form Elements (#root3 input[name='foo[bar]']) PASS Document: :not() Existing attribute (#root3 #form select:not([multiple])) PASS Document: :not() Equals attribute (#root3 #form select:not([name=select1])) PASS Document: :not() Equals quoted attribute (#root3 #form select:not([name='select1'])) PASS Document: First Child (#root3 p:first-child) PASS Document: Last Child (#root3 p:last-child) PASS Document: Only Child (#root3 a:only-child) PASS Document: Empty (#root3 ul:empty) PASS Document: Disabled UI Element (#root3 #form input:disabled) PASS Document: Checked UI Element (#root3 #form input:checked) PASS Document: Element Preceded By (#root3 p ~ div) PASS Document: Not (#root3 a.blog:not(.link)) PASS Document: StaticNodeList PASS Document: StaticNodeList