Harness status: OK Found 1975 tests 1975 Pass Pass Selectors-API Test Suite: HTML Pass Document supports querySelector Pass Document supports querySelectorAll Pass Document.querySelectorAll returns NodeList instance Pass Detached Element supports querySelector Pass Detached Element supports querySelectorAll Pass Detached Element.querySelectorAll returns NodeList instance Pass Fragment supports querySelector Pass Fragment supports querySelectorAll Pass Fragment.querySelectorAll returns NodeList instance Pass In-document Element supports querySelector Pass In-document Element supports querySelectorAll Pass In-document Element.querySelectorAll returns NodeList instance Pass Document.querySelectorAll null Pass Document.querySelectorAll undefined Pass Document.querySelectorAll no parameter Pass Document.querySelector null Pass Document.querySelector undefined Pass Document.querySelector no parameter Pass Document.querySelectorAll tree order Pass Detached Element.querySelectorAll null Pass Detached Element.querySelectorAll undefined Pass Detached Element.querySelectorAll no parameter Pass Detached Element.querySelector null Pass Detached Element.querySelector undefined Pass Detached Element.querySelector no parameter Pass Detached Element.querySelectorAll tree order Pass Fragment.querySelectorAll null Pass Fragment.querySelectorAll undefined Pass Fragment.querySelectorAll no parameter Pass Fragment.querySelector null Pass Fragment.querySelector undefined Pass Fragment.querySelector no parameter Pass Fragment.querySelectorAll tree order Pass In-document Element.querySelectorAll null Pass In-document Element.querySelectorAll undefined Pass In-document Element.querySelectorAll no parameter Pass In-document Element.querySelector null Pass In-document Element.querySelector undefined Pass In-document Element.querySelector no parameter Pass In-document Element.querySelectorAll tree order Pass Document: static NodeList Pass Document: new NodeList Pass Detached Element: static NodeList Pass Detached Element: new NodeList Pass Fragment: static NodeList Pass Fragment: new NodeList Pass In-document Element: static NodeList Pass In-document Element: new NodeList Pass Document.querySelector: Empty String: Pass Document.querySelectorAll: Empty String: Pass Document.querySelector: Invalid character: [ Pass Document.querySelectorAll: Invalid character: [ Pass Document.querySelector: Invalid character: ] Pass Document.querySelectorAll: Invalid character: ] Pass Document.querySelector: Invalid character: ( Pass Document.querySelectorAll: Invalid character: ( Pass Document.querySelector: Invalid character: ) Pass Document.querySelectorAll: Invalid character: ) Pass Document.querySelector: Invalid character: { Pass Document.querySelectorAll: Invalid character: { Pass Document.querySelector: Invalid character: } Pass Document.querySelectorAll: Invalid character: } Pass Document.querySelector: Invalid character: < Pass Document.querySelectorAll: Invalid character: < Pass Document.querySelector: Invalid character: > Pass Document.querySelectorAll: Invalid character: > Pass Document.querySelector: Invalid ID: # Pass Document.querySelectorAll: Invalid ID: # Pass Document.querySelector: Invalid group of selectors: div, Pass Document.querySelectorAll: Invalid group of selectors: div, Pass Document.querySelector: Invalid class: . Pass Document.querySelectorAll: Invalid class: . Pass Document.querySelector: Invalid class: .5cm Pass Document.querySelectorAll: Invalid class: .5cm Pass Document.querySelector: Invalid class: ..test Pass Document.querySelectorAll: Invalid class: ..test Pass Document.querySelector: Invalid class: .foo..quux Pass Document.querySelectorAll: Invalid class: .foo..quux Pass Document.querySelector: Invalid class: .bar. Pass Document.querySelectorAll: Invalid class: .bar. Pass Document.querySelector: Invalid combinator: div % address, p Pass Document.querySelectorAll: Invalid combinator: div % address, p Pass Document.querySelector: Invalid combinator: div ++ address, p Pass Document.querySelectorAll: Invalid combinator: div ++ address, p Pass Document.querySelector: Invalid combinator: div ~~ address, p Pass Document.querySelectorAll: Invalid combinator: div ~~ address, p Pass Document.querySelector: Invalid [att=value] selector: [*=test] Pass Document.querySelectorAll: Invalid [att=value] selector: [*=test] Pass Document.querySelector: Invalid [att=value] selector: [*|*=test] Pass Document.querySelectorAll: Invalid [att=value] selector: [*|*=test] Pass Document.querySelector: Invalid [att=value] selector: [class= space unquoted ] Pass Document.querySelectorAll: Invalid [att=value] selector: [class= space unquoted ] Pass Document.querySelector: Unknown pseudo-class: div:example Pass Document.querySelectorAll: Unknown pseudo-class: div:example Pass Document.querySelector: Unknown pseudo-class: :example Pass Document.querySelectorAll: Unknown pseudo-class: :example Pass Document.querySelector: Unknown pseudo-class: div:linkexample Pass Document.querySelectorAll: Unknown pseudo-class: div:linkexample Pass Document.querySelector: Unknown pseudo-element: div::example Pass Document.querySelectorAll: Unknown pseudo-element: div::example Pass Document.querySelector: Unknown pseudo-element: ::example Pass Document.querySelectorAll: Unknown pseudo-element: ::example Pass Document.querySelector: Invalid pseudo-element: :::before Pass Document.querySelectorAll: Invalid pseudo-element: :::before Pass Document.querySelector: Invalid pseudo-element: :: before Pass Document.querySelectorAll: Invalid pseudo-element: :: before Pass Document.querySelector: Undeclared namespace: ns|div Pass Document.querySelectorAll: Undeclared namespace: ns|div Pass Document.querySelector: Undeclared namespace: :not(ns|div) Pass Document.querySelectorAll: Undeclared namespace: :not(ns|div) Pass Document.querySelector: Invalid namespace: ^|div Pass Document.querySelectorAll: Invalid namespace: ^|div Pass Document.querySelector: Invalid namespace: $|div Pass Document.querySelectorAll: Invalid namespace: $|div Pass Document.querySelector: Relative selector: >* Pass Document.querySelectorAll: Relative selector: >* Pass Detached Element.querySelector: Empty String: Pass Detached Element.querySelectorAll: Empty String: Pass Detached Element.querySelector: Invalid character: [ Pass Detached Element.querySelectorAll: Invalid character: [ Pass Detached Element.querySelector: Invalid character: ] Pass Detached Element.querySelectorAll: Invalid character: ] Pass Detached Element.querySelector: Invalid character: ( Pass Detached Element.querySelectorAll: Invalid character: ( Pass Detached Element.querySelector: Invalid character: ) Pass Detached Element.querySelectorAll: Invalid character: ) Pass Detached Element.querySelector: Invalid character: { Pass Detached Element.querySelectorAll: Invalid character: { Pass Detached Element.querySelector: Invalid character: } Pass Detached Element.querySelectorAll: Invalid character: } Pass Detached Element.querySelector: Invalid character: < Pass Detached Element.querySelectorAll: Invalid character: < Pass Detached Element.querySelector: Invalid character: > Pass Detached Element.querySelectorAll: Invalid character: > Pass Detached Element.querySelector: Invalid ID: # Pass Detached Element.querySelectorAll: Invalid ID: # Pass Detached Element.querySelector: Invalid group of selectors: div, Pass Detached Element.querySelectorAll: Invalid group of selectors: div, Pass Detached Element.querySelector: Invalid class: . Pass Detached Element.querySelectorAll: Invalid class: . Pass Detached Element.querySelector: Invalid class: .5cm Pass Detached Element.querySelectorAll: Invalid class: .5cm Pass Detached Element.querySelector: Invalid class: ..test Pass Detached Element.querySelectorAll: Invalid class: ..test Pass Detached Element.querySelector: Invalid class: .foo..quux Pass Detached Element.querySelectorAll: Invalid class: .foo..quux Pass Detached Element.querySelector: Invalid class: .bar. Pass Detached Element.querySelectorAll: Invalid class: .bar. Pass Detached Element.querySelector: Invalid combinator: div % address, p Pass Detached Element.querySelectorAll: Invalid combinator: div % address, p Pass Detached Element.querySelector: Invalid combinator: div ++ address, p Pass Detached Element.querySelectorAll: Invalid combinator: div ++ address, p Pass Detached Element.querySelector: Invalid combinator: div ~~ address, p Pass Detached Element.querySelectorAll: Invalid combinator: div ~~ address, p Pass Detached Element.querySelector: Invalid [att=value] selector: [*=test] Pass Detached Element.querySelectorAll: Invalid [att=value] selector: [*=test] Pass Detached Element.querySelector: Invalid [att=value] selector: [*|*=test] Pass Detached Element.querySelectorAll: Invalid [att=value] selector: [*|*=test] Pass Detached Element.querySelector: Invalid [att=value] selector: [class= space unquoted ] Pass Detached Element.querySelectorAll: Invalid [att=value] selector: [class= space unquoted ] Pass Detached Element.querySelector: Unknown pseudo-class: div:example Pass Detached Element.querySelectorAll: Unknown pseudo-class: div:example Pass Detached Element.querySelector: Unknown pseudo-class: :example Pass Detached Element.querySelectorAll: Unknown pseudo-class: :example Pass Detached Element.querySelector: Unknown pseudo-class: div:linkexample Pass Detached Element.querySelectorAll: Unknown pseudo-class: div:linkexample Pass Detached Element.querySelector: Unknown pseudo-element: div::example Pass Detached Element.querySelectorAll: Unknown pseudo-element: div::example Pass Detached Element.querySelector: Unknown pseudo-element: ::example Pass Detached Element.querySelectorAll: Unknown pseudo-element: ::example Pass Detached Element.querySelector: Invalid pseudo-element: :::before Pass Detached Element.querySelectorAll: Invalid pseudo-element: :::before Pass Detached Element.querySelector: Invalid pseudo-element: :: before Pass Detached Element.querySelectorAll: Invalid pseudo-element: :: before Pass Detached Element.querySelector: Undeclared namespace: ns|div Pass Detached Element.querySelectorAll: Undeclared namespace: ns|div Pass Detached Element.querySelector: Undeclared namespace: :not(ns|div) Pass Detached Element.querySelectorAll: Undeclared namespace: :not(ns|div) Pass Detached Element.querySelector: Invalid namespace: ^|div Pass Detached Element.querySelectorAll: Invalid namespace: ^|div Pass Detached Element.querySelector: Invalid namespace: $|div Pass Detached Element.querySelectorAll: Invalid namespace: $|div Pass Detached Element.querySelector: Relative selector: >* Pass Detached Element.querySelectorAll: Relative selector: >* Pass Fragment.querySelector: Empty String: Pass Fragment.querySelectorAll: Empty String: Pass Fragment.querySelector: Invalid character: [ Pass Fragment.querySelectorAll: Invalid character: [ Pass Fragment.querySelector: Invalid character: ] Pass Fragment.querySelectorAll: Invalid character: ] Pass Fragment.querySelector: Invalid character: ( Pass Fragment.querySelectorAll: Invalid character: ( Pass Fragment.querySelector: Invalid character: ) Pass Fragment.querySelectorAll: Invalid character: ) Pass Fragment.querySelector: Invalid character: { Pass Fragment.querySelectorAll: Invalid character: { Pass Fragment.querySelector: Invalid character: } Pass Fragment.querySelectorAll: Invalid character: } Pass Fragment.querySelector: Invalid character: < Pass Fragment.querySelectorAll: Invalid character: < Pass Fragment.querySelector: Invalid character: > Pass Fragment.querySelectorAll: Invalid character: > Pass Fragment.querySelector: Invalid ID: # Pass Fragment.querySelectorAll: Invalid ID: # Pass Fragment.querySelector: Invalid group of selectors: div, Pass Fragment.querySelectorAll: Invalid group of selectors: div, Pass Fragment.querySelector: Invalid class: . Pass Fragment.querySelectorAll: Invalid class: . Pass Fragment.querySelector: Invalid class: .5cm Pass Fragment.querySelectorAll: Invalid class: .5cm Pass Fragment.querySelector: Invalid class: ..test Pass Fragment.querySelectorAll: Invalid class: ..test Pass Fragment.querySelector: Invalid class: .foo..quux Pass Fragment.querySelectorAll: Invalid class: .foo..quux Pass Fragment.querySelector: Invalid class: .bar. Pass Fragment.querySelectorAll: Invalid class: .bar. Pass Fragment.querySelector: Invalid combinator: div % address, p Pass Fragment.querySelectorAll: Invalid combinator: div % address, p Pass Fragment.querySelector: Invalid combinator: div ++ address, p Pass Fragment.querySelectorAll: Invalid combinator: div ++ address, p Pass Fragment.querySelector: Invalid combinator: div ~~ address, p Pass Fragment.querySelectorAll: Invalid combinator: div ~~ address, p Pass Fragment.querySelector: Invalid [att=value] selector: [*=test] Pass Fragment.querySelectorAll: Invalid [att=value] selector: [*=test] Pass Fragment.querySelector: Invalid [att=value] selector: [*|*=test] Pass Fragment.querySelectorAll: Invalid [att=value] selector: [*|*=test] Pass Fragment.querySelector: Invalid [att=value] selector: [class= space unquoted ] Pass Fragment.querySelectorAll: Invalid [att=value] selector: [class= space unquoted ] Pass Fragment.querySelector: Unknown pseudo-class: div:example Pass Fragment.querySelectorAll: Unknown pseudo-class: div:example Pass Fragment.querySelector: Unknown pseudo-class: :example Pass Fragment.querySelectorAll: Unknown pseudo-class: :example Pass Fragment.querySelector: Unknown pseudo-class: div:linkexample Pass Fragment.querySelectorAll: Unknown pseudo-class: div:linkexample Pass Fragment.querySelector: Unknown pseudo-element: div::example Pass Fragment.querySelectorAll: Unknown pseudo-element: div::example Pass Fragment.querySelector: Unknown pseudo-element: ::example Pass Fragment.querySelectorAll: Unknown pseudo-element: ::example Pass Fragment.querySelector: Invalid pseudo-element: :::before Pass Fragment.querySelectorAll: Invalid pseudo-element: :::before Pass Fragment.querySelector: Invalid pseudo-element: :: before Pass Fragment.querySelectorAll: Invalid pseudo-element: :: before Pass Fragment.querySelector: Undeclared namespace: ns|div Pass Fragment.querySelectorAll: Undeclared namespace: ns|div Pass Fragment.querySelector: Undeclared namespace: :not(ns|div) Pass Fragment.querySelectorAll: Undeclared namespace: :not(ns|div) Pass Fragment.querySelector: Invalid namespace: ^|div Pass Fragment.querySelectorAll: Invalid namespace: ^|div Pass Fragment.querySelector: Invalid namespace: $|div Pass Fragment.querySelectorAll: Invalid namespace: $|div Pass Fragment.querySelector: Relative selector: >* Pass Fragment.querySelectorAll: Relative selector: >* Pass In-document Element.querySelector: Empty String: Pass In-document Element.querySelectorAll: Empty String: Pass In-document Element.querySelector: Invalid character: [ Pass In-document Element.querySelectorAll: Invalid character: [ Pass In-document Element.querySelector: Invalid character: ] Pass In-document Element.querySelectorAll: Invalid character: ] Pass In-document Element.querySelector: Invalid character: ( Pass In-document Element.querySelectorAll: Invalid character: ( Pass In-document Element.querySelector: Invalid character: ) Pass In-document Element.querySelectorAll: Invalid character: ) Pass In-document Element.querySelector: Invalid character: { Pass In-document Element.querySelectorAll: Invalid character: { Pass In-document Element.querySelector: Invalid character: } Pass In-document Element.querySelectorAll: Invalid character: } Pass In-document Element.querySelector: Invalid character: < Pass In-document Element.querySelectorAll: Invalid character: < Pass In-document Element.querySelector: Invalid character: > Pass In-document Element.querySelectorAll: Invalid character: > Pass In-document Element.querySelector: Invalid ID: # Pass In-document Element.querySelectorAll: Invalid ID: # Pass In-document Element.querySelector: Invalid group of selectors: div, Pass In-document Element.querySelectorAll: Invalid group of selectors: div, Pass In-document Element.querySelector: Invalid class: . Pass In-document Element.querySelectorAll: Invalid class: . Pass In-document Element.querySelector: Invalid class: .5cm Pass In-document Element.querySelectorAll: Invalid class: .5cm Pass In-document Element.querySelector: Invalid class: ..test Pass In-document Element.querySelectorAll: Invalid class: ..test Pass In-document Element.querySelector: Invalid class: .foo..quux Pass In-document Element.querySelectorAll: Invalid class: .foo..quux Pass In-document Element.querySelector: Invalid class: .bar. Pass In-document Element.querySelectorAll: Invalid class: .bar. Pass In-document Element.querySelector: Invalid combinator: div % address, p Pass In-document Element.querySelectorAll: Invalid combinator: div % address, p Pass In-document Element.querySelector: Invalid combinator: div ++ address, p Pass In-document Element.querySelectorAll: Invalid combinator: div ++ address, p Pass In-document Element.querySelector: Invalid combinator: div ~~ address, p Pass In-document Element.querySelectorAll: Invalid combinator: div ~~ address, p Pass In-document Element.querySelector: Invalid [att=value] selector: [*=test] Pass In-document Element.querySelectorAll: Invalid [att=value] selector: [*=test] Pass In-document Element.querySelector: Invalid [att=value] selector: [*|*=test] Pass In-document Element.querySelectorAll: Invalid [att=value] selector: [*|*=test] Pass In-document Element.querySelector: Invalid [att=value] selector: [class= space unquoted ] Pass In-document Element.querySelectorAll: Invalid [att=value] selector: [class= space unquoted ] Pass In-document Element.querySelector: Unknown pseudo-class: div:example Pass In-document Element.querySelectorAll: Unknown pseudo-class: div:example Pass In-document Element.querySelector: Unknown pseudo-class: :example Pass In-document Element.querySelectorAll: Unknown pseudo-class: :example Pass In-document Element.querySelector: Unknown pseudo-class: div:linkexample Pass In-document Element.querySelectorAll: Unknown pseudo-class: div:linkexample Pass In-document Element.querySelector: Unknown pseudo-element: div::example Pass In-document Element.querySelectorAll: Unknown pseudo-element: div::example Pass In-document Element.querySelector: Unknown pseudo-element: ::example Pass In-document Element.querySelectorAll: Unknown pseudo-element: ::example Pass In-document Element.querySelector: Invalid pseudo-element: :::before Pass In-document Element.querySelectorAll: Invalid pseudo-element: :::before Pass In-document Element.querySelector: Invalid pseudo-element: :: before Pass In-document Element.querySelectorAll: Invalid pseudo-element: :: before Pass In-document Element.querySelector: Undeclared namespace: ns|div Pass In-document Element.querySelectorAll: Undeclared namespace: ns|div Pass In-document Element.querySelector: Undeclared namespace: :not(ns|div) Pass In-document Element.querySelectorAll: Undeclared namespace: :not(ns|div) Pass In-document Element.querySelector: Invalid namespace: ^|div Pass In-document Element.querySelectorAll: Invalid namespace: ^|div Pass In-document Element.querySelector: Invalid namespace: $|div Pass In-document Element.querySelectorAll: Invalid namespace: $|div Pass In-document Element.querySelector: Relative selector: >* Pass In-document Element.querySelectorAll: Relative selector: >* Pass Empty Element.querySelector: Empty String: Pass Empty Element.querySelectorAll: Empty String: Pass Empty Element.querySelector: Invalid character: [ Pass Empty Element.querySelectorAll: Invalid character: [ Pass Empty Element.querySelector: Invalid character: ] Pass Empty Element.querySelectorAll: Invalid character: ] Pass Empty Element.querySelector: Invalid character: ( Pass Empty Element.querySelectorAll: Invalid character: ( Pass Empty Element.querySelector: Invalid character: ) Pass Empty Element.querySelectorAll: Invalid character: ) Pass Empty Element.querySelector: Invalid character: { Pass Empty Element.querySelectorAll: Invalid character: { Pass Empty Element.querySelector: Invalid character: } Pass Empty Element.querySelectorAll: Invalid character: } Pass Empty Element.querySelector: Invalid character: < Pass Empty Element.querySelectorAll: Invalid character: < Pass Empty Element.querySelector: Invalid character: > Pass Empty Element.querySelectorAll: Invalid character: > Pass Empty Element.querySelector: Invalid ID: # Pass Empty Element.querySelectorAll: Invalid ID: # Pass Empty Element.querySelector: Invalid group of selectors: div, Pass Empty Element.querySelectorAll: Invalid group of selectors: div, Pass Empty Element.querySelector: Invalid class: . Pass Empty Element.querySelectorAll: Invalid class: . Pass Empty Element.querySelector: Invalid class: .5cm Pass Empty Element.querySelectorAll: Invalid class: .5cm Pass Empty Element.querySelector: Invalid class: ..test Pass Empty Element.querySelectorAll: Invalid class: ..test Pass Empty Element.querySelector: Invalid class: .foo..quux Pass Empty Element.querySelectorAll: Invalid class: .foo..quux Pass Empty Element.querySelector: Invalid class: .bar. Pass Empty Element.querySelectorAll: Invalid class: .bar. Pass Empty Element.querySelector: Invalid combinator: div % address, p Pass Empty Element.querySelectorAll: Invalid combinator: div % address, p Pass Empty Element.querySelector: Invalid combinator: div ++ address, p Pass Empty Element.querySelectorAll: Invalid combinator: div ++ address, p Pass Empty Element.querySelector: Invalid combinator: div ~~ address, p Pass Empty Element.querySelectorAll: Invalid combinator: div ~~ address, p Pass Empty Element.querySelector: Invalid [att=value] selector: [*=test] Pass Empty Element.querySelectorAll: Invalid [att=value] selector: [*=test] Pass Empty Element.querySelector: Invalid [att=value] selector: [*|*=test] Pass Empty Element.querySelectorAll: Invalid [att=value] selector: [*|*=test] Pass Empty Element.querySelector: Invalid [att=value] selector: [class= space unquoted ] Pass Empty Element.querySelectorAll: Invalid [att=value] selector: [class= space unquoted ] Pass Empty Element.querySelector: Unknown pseudo-class: div:example Pass Empty Element.querySelectorAll: Unknown pseudo-class: div:example Pass Empty Element.querySelector: Unknown pseudo-class: :example Pass Empty Element.querySelectorAll: Unknown pseudo-class: :example Pass Empty Element.querySelector: Unknown pseudo-class: div:linkexample Pass Empty Element.querySelectorAll: Unknown pseudo-class: div:linkexample Pass Empty Element.querySelector: Unknown pseudo-element: div::example Pass Empty Element.querySelectorAll: Unknown pseudo-element: div::example Pass Empty Element.querySelector: Unknown pseudo-element: ::example Pass Empty Element.querySelectorAll: Unknown pseudo-element: ::example Pass Empty Element.querySelector: Invalid pseudo-element: :::before Pass Empty Element.querySelectorAll: Invalid pseudo-element: :::before Pass Empty Element.querySelector: Invalid pseudo-element: :: before Pass Empty Element.querySelectorAll: Invalid pseudo-element: :: before Pass Empty Element.querySelector: Undeclared namespace: ns|div Pass Empty Element.querySelectorAll: Undeclared namespace: ns|div Pass Empty Element.querySelector: Undeclared namespace: :not(ns|div) Pass Empty Element.querySelectorAll: Undeclared namespace: :not(ns|div) Pass Empty Element.querySelector: Invalid namespace: ^|div Pass Empty Element.querySelectorAll: Invalid namespace: ^|div Pass Empty Element.querySelector: Invalid namespace: $|div Pass Empty Element.querySelectorAll: Invalid namespace: $|div Pass Empty Element.querySelector: Relative selector: >* Pass Empty Element.querySelectorAll: Relative selector: >* Pass Document.querySelectorAll: Type selector, matching html element: html Pass Document.querySelector: Type selector, matching html element: html Pass Document.querySelectorAll: Type selector, matching body element: body Pass Document.querySelector: Type selector, matching body element: body Pass Document.querySelectorAll: Universal selector, matching all children of element with specified ID: #universal>* Pass Document.querySelector: Universal selector, matching all children of element with specified ID: #universal>* Pass Document.querySelectorAll: Universal selector, matching all grandchildren of element with specified ID: #universal>*>* Pass Document.querySelector: Universal selector, matching all grandchildren of element with specified ID: #universal>*>* Pass Document.querySelectorAll: Universal selector, matching all children of empty element with specified ID: #empty>* Pass Document.querySelector: Universal selector, matching all children of empty element with specified ID: #empty>* Pass Document.querySelectorAll: Universal selector, matching all descendants of element with specified ID: #universal * Pass Document.querySelector: Universal selector, matching all descendants of element with specified ID: #universal * Pass Document.querySelectorAll: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] Pass Document.querySelector: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] Pass Document.querySelectorAll: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] Pass Document.querySelector: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] Pass Document.querySelectorAll: Attribute presence selector, matching title attribute, case insensitivity: #attr-presence [*|TiTlE] Pass Document.querySelector: Attribute presence selector, matching title attribute, case insensitivity: #attr-presence [*|TiTlE] Pass Document.querySelectorAll: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] Pass Document.querySelector: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] Pass Document.querySelectorAll: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] Pass Document.querySelector: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] Pass Document.querySelectorAll: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] Pass Document.querySelector: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] Pass Document.querySelectorAll: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] Pass Document.querySelector: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] Pass Document.querySelectorAll: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] Pass Document.querySelector: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] Pass Document.querySelectorAll: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] Pass Document.querySelector: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] Pass Document.querySelectorAll: Attribute value selector, matching align attribute with value: #attr-value [align="center"] Pass Document.querySelector: Attribute value selector, matching align attribute with value: #attr-value [align="center"] Pass Document.querySelectorAll: Attribute value selector, matching align attribute with value, unclosed bracket: #attr-value [align="center" Pass Document.querySelector: Attribute value selector, matching align attribute with value, unclosed bracket: #attr-value [align="center" Pass Document.querySelectorAll: Attribute value selector, matching align attribute with empty value: #attr-value [align=""] Pass Document.querySelector: Attribute value selector, matching align attribute with empty value: #attr-value [align=""] Pass Document.querySelectorAll: Attribute value selector, not matching align attribute with partial value: #attr-value [align="c"] Pass Document.querySelector: Attribute value selector, not matching align attribute with partial value: #attr-value [align="c"] Pass Document.querySelectorAll: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align="centera"] Pass Document.querySelector: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align="centera"] Pass Document.querySelectorAll: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value="\e9"] Pass Document.querySelector: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value="\e9"] Pass Document.querySelectorAll: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo="\e9"] Pass Document.querySelector: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo="\e9"] Pass Document.querySelectorAll: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] Pass Document.querySelector: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] Pass Document.querySelectorAll: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type="hidden"],#attr-value input[type='radio'] Pass Document.querySelector: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type="hidden"],#attr-value input[type='radio'] Pass Document.querySelectorAll: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] Pass Document.querySelector: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] Pass Document.querySelectorAll: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] Pass Document.querySelector: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] Pass Document.querySelectorAll: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~="div1"] Pass Document.querySelector: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~="div1"] Pass Document.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=""] Pass Document.querySelector: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=""] Pass Document.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~="div"] Pass Document.querySelector: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~="div"] Pass Document.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~="\0000e9"] Pass Document.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~="\0000e9"] Pass Document.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~="\e9"] Pass Document.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~="\e9"] Pass Document.querySelectorAll: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'], #attr-whitespace a[rel~='nofollow'] Pass Document.querySelector: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'], #attr-whitespace a[rel~='nofollow'] Pass Document.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~="bookmark"],#attr-whitespace a[rel~='nofollow'] Pass Document.querySelector: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~="bookmark"],#attr-whitespace a[rel~='nofollow'] Pass Document.querySelectorAll: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark], #attr-whitespace a[rel~=nofollow] Pass Document.querySelector: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark], #attr-whitespace a[rel~=nofollow] Pass Document.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~="book mark"] Pass Document.querySelector: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~="book mark"] Pass Document.querySelectorAll: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] Pass Document.querySelector: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] Pass Document.querySelectorAll: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|="en"] Pass Document.querySelector: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|="en"] Pass Document.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|="fr"] Pass Document.querySelector: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|="fr"] Pass Document.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|="en"] Pass Document.querySelector: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|="en"] Pass Document.querySelectorAll: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|="es-AR"] Pass Document.querySelector: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|="es-AR"] Pass Document.querySelectorAll: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^="http://www"] Pass Document.querySelector: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^="http://www"] Pass Document.querySelectorAll: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^="en-"] Pass Document.querySelector: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^="en-"] Pass Document.querySelectorAll: Attribute begins with selector, not matching class attribute with empty value: #attr-begins [class^=""] Pass Document.querySelector: Attribute begins with selector, not matching class attribute with empty value: #attr-begins [class^=""] Pass Document.querySelectorAll: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] Pass Document.querySelector: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] Pass Document.querySelectorAll: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] Pass Document.querySelector: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] Pass Document.querySelectorAll: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=" apple"] Pass Document.querySelector: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=" apple"] Pass Document.querySelectorAll: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] Pass Document.querySelector: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] Pass Document.querySelectorAll: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=".org"] Pass Document.querySelector: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=".org"] Pass Document.querySelectorAll: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$="-CH"] Pass Document.querySelector: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$="-CH"] Pass Document.querySelectorAll: Attribute ends with selector, not matching class attribute with empty value: #attr-ends [class$=""] Pass Document.querySelector: Attribute ends with selector, not matching class attribute with empty value: #attr-ends [class$=""] Pass Document.querySelectorAll: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] Pass Document.querySelector: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] Pass Document.querySelectorAll: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] Pass Document.querySelector: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] Pass Document.querySelectorAll: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$="apple "] Pass Document.querySelector: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$="apple "] Pass Document.querySelectorAll: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] Pass Document.querySelector: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] Pass Document.querySelectorAll: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*="http://www"] Pass Document.querySelector: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*="http://www"] Pass Document.querySelectorAll: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=".org"] Pass Document.querySelector: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=".org"] Pass Document.querySelectorAll: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=".example."] Pass Document.querySelector: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=".example."] Pass Document.querySelectorAll: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*="en-"] Pass Document.querySelector: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*="en-"] Pass Document.querySelectorAll: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*="-CH"] Pass Document.querySelector: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*="-CH"] Pass Document.querySelectorAll: Attribute contains selector, not matching class attribute with empty value: #attr-contains [class*=""] Pass Document.querySelector: Attribute contains selector, not matching class attribute with empty value: #attr-contains [class*=""] Pass Document.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] Pass Document.querySelector: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] Pass Document.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] Pass Document.querySelector: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] Pass Document.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] Pass Document.querySelector: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] Pass Document.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=" apple"] Pass Document.querySelector: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=" apple"] Pass Document.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*="orange "] Pass Document.querySelector: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*="orange "] Pass Document.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*="ple banana ora"] Pass Document.querySelector: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*="ple banana ora"] Pass Document.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] Pass Document.querySelector: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] Pass Document.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] Pass Document.querySelector: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] Pass Document.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] Pass Document.querySelector: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] Pass Document.querySelectorAll: :root pseudo-class selector, matching document root element: :root Pass Document.querySelector: :root pseudo-class selector, matching document root element: :root Pass Document.querySelectorAll: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) Pass Document.querySelector: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) Pass Document.querySelectorAll: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) Pass Document.querySelector: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) Pass Document.querySelectorAll: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) Pass Document.querySelector: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) Pass Document.querySelectorAll: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) Pass Document.querySelector: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) Pass Document.querySelectorAll: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) Pass Document.querySelector: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) Pass Document.querySelectorAll: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) Pass Document.querySelector: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) Pass Document.querySelectorAll: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) Pass Document.querySelector: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) Pass Document.querySelectorAll: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) Pass Document.querySelector: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) Pass Document.querySelectorAll: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) Pass Document.querySelector: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) Pass Document.querySelectorAll: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) Pass Document.querySelector: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) Pass Document.querySelectorAll: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) Pass Document.querySelector: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) Pass Document.querySelectorAll: :nth-last-of-type selector, matching the third last em element: #pseudo-nth-p1 em:nth-last-of-type(3) Pass Document.querySelector: :nth-last-of-type selector, matching the third last em element: #pseudo-nth-p1 em:nth-last-of-type(3) Pass Document.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) Pass Document.querySelector: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) Pass Document.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) Pass Document.querySelector: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) Pass Document.querySelectorAll: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type Pass Document.querySelector: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type Pass Document.querySelectorAll: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type Pass Document.querySelector: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type Pass Document.querySelectorAll: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type Pass Document.querySelector: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type Pass Document.querySelectorAll: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type Pass Document.querySelector: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type Pass Document.querySelectorAll: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type Pass Document.querySelector: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type Pass Document.querySelectorAll: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type Pass Document.querySelector: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type Pass Document.querySelectorAll: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child Pass Document.querySelector: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child Pass Document.querySelectorAll: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child Pass Document.querySelector: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child Pass Document.querySelectorAll: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child Pass Document.querySelector: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child Pass Document.querySelectorAll: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child Pass Document.querySelector: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child Pass Document.querySelectorAll: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child Pass Document.querySelector: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child Pass Document.querySelectorAll: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child Pass Document.querySelector: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child Pass Document.querySelectorAll: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child Pass Document.querySelector: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child Pass Document.querySelectorAll: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child Pass Document.querySelector: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child Pass Document.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type Pass Document.querySelector: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type Pass Document.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type Pass Document.querySelector: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type Pass Document.querySelectorAll: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty Pass Document.querySelector: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty Pass Document.querySelectorAll: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty Pass Document.querySelector: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty Pass Document.querySelectorAll: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited Pass Document.querySelector: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited Pass Document.querySelectorAll: :link and :visited pseudo-class selectors, matching no elements: #head :link, #head :visited Pass Document.querySelector: :link and :visited pseudo-class selectors, matching no elements: #head :link, #head :visited Pass Document.querySelectorAll: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target Pass Document.querySelector: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target Pass Document.querySelectorAll: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en) Pass Document.querySelector: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en) Pass Document.querySelectorAll: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) Pass Document.querySelector: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) Pass Document.querySelectorAll: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) Pass Document.querySelector: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) Pass Document.querySelectorAll: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) Pass Document.querySelector: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) Pass Document.querySelectorAll: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled Pass Document.querySelector: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled Pass Document.querySelectorAll: :enabled pseudo-class selector, not matching link elements: #pseudo-link :enabled Pass Document.querySelector: :enabled pseudo-class selector, not matching link elements: #pseudo-link :enabled Pass Document.querySelectorAll: :disabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled Pass Document.querySelector: :disabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled Pass Document.querySelectorAll: :disabled pseudo-class selector, not matching link elements: #pseudo-link :disabled Pass Document.querySelector: :disabled pseudo-class selector, not matching link elements: #pseudo-link :disabled Pass Document.querySelectorAll: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked Pass Document.querySelector: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked Pass Document.querySelectorAll: :not pseudo-class selector, matching : #not>:not(div) Pass Document.querySelector: :not pseudo-class selector, matching : #not>:not(div) Pass Document.querySelectorAll: :not pseudo-class selector, matching : #not * :not(:first-child) Pass Document.querySelector: :not pseudo-class selector, matching : #not * :not(:first-child) Pass Document.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*) Pass Document.querySelector: :not pseudo-class selector, matching nothing: :not(*) Pass Document.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*|*) Pass Document.querySelector: :not pseudo-class selector, matching nothing: :not(*|*) Pass Document.querySelectorAll: :not pseudo-class selector argument surrounded by spaces, matching : #not>:not( div ) Pass Document.querySelector: :not pseudo-class selector argument surrounded by spaces, matching : #not>:not( div ) Pass Document.querySelectorAll: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line Pass Document.querySelector: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line Pass Document.querySelectorAll: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line Pass Document.querySelector: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line Pass Document.querySelectorAll: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter Pass Document.querySelector: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter Pass Document.querySelectorAll: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter Pass Document.querySelector: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter Pass Document.querySelectorAll: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before Pass Document.querySelector: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before Pass Document.querySelectorAll: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before Pass Document.querySelector: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before Pass Document.querySelectorAll: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after Pass Document.querySelector: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after Pass Document.querySelectorAll: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after Pass Document.querySelector: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after Pass Document.querySelectorAll: Class selector, matching element with specified class: .class-p Pass Document.querySelector: Class selector, matching element with specified class: .class-p Pass Document.querySelectorAll: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana Pass Document.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana Pass Document.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange Pass Document.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange Pass Document.querySelectorAll: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi Pass Document.querySelector: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi Pass Document.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 Pass Document.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 Pass Document.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 Pass Document.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 Pass Document.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar Pass Document.querySelector: Class selector, matching element with class with escaped character: .foo\:bar Pass Document.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar Pass Document.querySelector: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar Pass Document.querySelectorAll: ID selector, matching element with specified id: #id #id-div1 Pass Document.querySelector: ID selector, matching element with specified id: #id #id-div1 Pass Document.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div1 Pass Document.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div1 Pass Document.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div2 Pass Document.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div2 Pass Document.querySelectorAll: ID Selector, chained, with type selector: div#id-div1, div#id-div2 Pass Document.querySelector: ID Selector, chained, with type selector: div#id-div1, div#id-div2 Pass Document.querySelectorAll: ID selector, not matching non-existent descendant: #id #none Pass Document.querySelector: ID selector, not matching non-existent descendant: #id #none Pass Document.querySelectorAll: ID selector, not matching non-existent ancestor: #none #id-div1 Pass Document.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 Pass Document.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate Pass Document.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate Pass Document.querySelectorAll: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi Pass Document.querySelector: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi Pass Document.querySelectorAll: ID selector, matching id value using non-ASCII characters (2): #台北 Pass Document.querySelector: ID selector, matching id value using non-ASCII characters (2): #台北 Pass Document.querySelectorAll: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 Pass Document.querySelector: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 Pass Document.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar Pass Document.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar Pass Document.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar Pass Document.querySelector: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar Pass Document.querySelectorAll: Namespace selector, matching element with any namespace: #any-namespace *|div Pass Document.querySelector: Namespace selector, matching element with any namespace: #any-namespace *|div Pass Document.querySelectorAll: Namespace selector, matching div elements in no namespace only: #no-namespace |div Pass Document.querySelector: Namespace selector, matching div elements in no namespace only: #no-namespace |div Pass Document.querySelectorAll: Namespace selector, matching any elements in no namespace only: #no-namespace |* Pass Document.querySelector: Namespace selector, matching any elements in no namespace only: #no-namespace |* Pass Document.querySelectorAll: Descendant combinator, matching element that is a descendant of an element with id: #descendant div Pass Document.querySelector: Descendant combinator, matching element that is a descendant of an element with id: #descendant div Pass Document.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: body #descendant-div1 Pass Document.querySelector: Descendant combinator, matching element with id that is a descendant of an element: body #descendant-div1 Pass Document.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 Pass Document.querySelector: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 Pass Document.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 Pass Document.querySelector: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 Pass Document.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 Pass Document.querySelector: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 Pass Document.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 Pass Document.querySelector: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 Pass Document.querySelectorAll: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 Pass Document.querySelector: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 Pass Document.querySelectorAll: Descendant combinator, whitespace characters: #descendant #descendant-div2 Pass Document.querySelector: Descendant combinator, whitespace characters: #descendant #descendant-div2 Pass Document.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child>div Pass Document.querySelector: Child combinator, matching element that is a child of an element with id: #child>div Pass Document.querySelectorAll: Child combinator, matching element with id that is a child of an element: div>#child-div1 Pass Document.querySelector: Child combinator, matching element with id that is a child of an element: div>#child-div1 Pass Document.querySelectorAll: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 Pass Document.querySelector: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 Pass Document.querySelectorAll: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 Pass Document.querySelector: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 Pass Document.querySelectorAll: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 Pass Document.querySelector: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 Pass Document.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 Pass Document.querySelector: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 Pass Document.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 Pass Document.querySelector: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 Pass Document.querySelectorAll: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 Pass Document.querySelector: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 Pass Document.querySelectorAll: Child combinator, surrounded by whitespace: #child-div1 > #child-div2 Pass Document.querySelector: Child combinator, surrounded by whitespace: #child-div1 > #child-div2 Pass Document.querySelectorAll: Child combinator, whitespace after: #child-div1> #child-div2 Pass Document.querySelector: Child combinator, whitespace after: #child-div1> #child-div2 Pass Document.querySelectorAll: Child combinator, whitespace before: #child-div1 >#child-div2 Pass Document.querySelector: Child combinator, whitespace before: #child-div1 >#child-div2 Pass Document.querySelectorAll: Child combinator, no whitespace: #child-div1>#child-div2 Pass Document.querySelector: Child combinator, no whitespace: #child-div1>#child-div2 Pass Document.querySelectorAll: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div Pass Document.querySelector: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div Pass Document.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 Pass Document.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 Pass Document.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 Pass Document.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 Pass Document.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 Pass Document.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 Pass Document.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 Pass Document.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 Pass Document.querySelectorAll: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p Pass Document.querySelector: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p Pass Document.querySelectorAll: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 Pass Document.querySelector: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 Pass Document.querySelectorAll: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 + #adjacent-p3 Pass Document.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 + #adjacent-p3 Pass Document.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+ #adjacent-p3 Pass Document.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+ #adjacent-p3 Pass Document.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2 +#adjacent-p3 Pass Document.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2 +#adjacent-p3 Pass Document.querySelectorAll: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 Pass Document.querySelector: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 Pass Document.querySelectorAll: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div Pass Document.querySelector: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div Pass Document.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 Pass Document.querySelector: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 Pass Document.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 Pass Document.querySelector: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 Pass Document.querySelectorAll: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div Pass Document.querySelector: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div Pass Document.querySelectorAll: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p Pass Document.querySelector: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p Pass Document.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div Pass Document.querySelector: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div Pass Document.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 Pass Document.querySelector: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 Pass Document.querySelectorAll: General sibling combinator, surrounded by whitespace: #sibling-p2 ~ #sibling-p3 Pass Document.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2 ~ #sibling-p3 Pass Document.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~ #sibling-p3 Pass Document.querySelector: General sibling combinator, whitespace after: #sibling-p2~ #sibling-p3 Pass Document.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2 ~#sibling-p3 Pass Document.querySelector: General sibling combinator, whitespace before: #sibling-p2 ~#sibling-p3 Pass Document.querySelectorAll: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 Pass Document.querySelector: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 Pass Document.querySelectorAll: Syntax, group of selectors separator, surrounded by whitespace: #group em , #group strong Pass Document.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em , #group strong Pass Document.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em, #group strong Pass Document.querySelector: Syntax, group of selectors separator, whitespace after: #group em, #group strong Pass Document.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em ,#group strong Pass Document.querySelector: Syntax, group of selectors separator, whitespace before: #group em ,#group strong Pass Document.querySelectorAll: Syntax, group of selectors separator, no whitespace: #group em,#group strong Pass Document.querySelector: Syntax, group of selectors separator, no whitespace: #group em,#group strong Pass Document.querySelectorAll: Slotted selector: ::slotted(foo) Pass Document.querySelector: Slotted selector: ::slotted(foo) Pass Document.querySelectorAll: Slotted selector (no matching closing paren): ::slotted(foo Pass Document.querySelector: Slotted selector (no matching closing paren): ::slotted(foo Pass Detached Element.querySelectorAll: Type selector, matching html element: html Pass Detached Element.querySelector: Type selector, matching html element: html Pass Detached Element.querySelectorAll: Type selector, matching body element: body Pass Detached Element.querySelector: Type selector, matching body element: body Pass Detached Element.querySelectorAll: Universal selector, matching all children of element with specified ID: #universal>* Pass Detached Element.querySelector: Universal selector, matching all children of element with specified ID: #universal>* Pass Detached Element.querySelectorAll: Universal selector, matching all grandchildren of element with specified ID: #universal>*>* Pass Detached Element.querySelector: Universal selector, matching all grandchildren of element with specified ID: #universal>*>* Pass Detached Element.querySelectorAll: Universal selector, matching all children of empty element with specified ID: #empty>* Pass Detached Element.querySelector: Universal selector, matching all children of empty element with specified ID: #empty>* Pass Detached Element.querySelectorAll: Universal selector, matching all descendants of element with specified ID: #universal * Pass Detached Element.querySelector: Universal selector, matching all descendants of element with specified ID: #universal * Pass Detached Element.querySelectorAll: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] Pass Detached Element.querySelector: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] Pass Detached Element.querySelectorAll: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] Pass Detached Element.querySelector: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] Pass Detached Element.querySelectorAll: Attribute presence selector, matching title attribute, case insensitivity: #attr-presence [*|TiTlE] Pass Detached Element.querySelector: Attribute presence selector, matching title attribute, case insensitivity: #attr-presence [*|TiTlE] Pass Detached Element.querySelectorAll: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] Pass Detached Element.querySelector: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] Pass Detached Element.querySelectorAll: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] Pass Detached Element.querySelector: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] Pass Detached Element.querySelectorAll: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] Pass Detached Element.querySelector: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] Pass Detached Element.querySelectorAll: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] Pass Detached Element.querySelector: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] Pass Detached Element.querySelectorAll: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] Pass Detached Element.querySelector: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] Pass Detached Element.querySelectorAll: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] Pass Detached Element.querySelector: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] Pass Detached Element.querySelectorAll: Attribute value selector, matching align attribute with value: #attr-value [align="center"] Pass Detached Element.querySelector: Attribute value selector, matching align attribute with value: #attr-value [align="center"] Pass Detached Element.querySelectorAll: Attribute value selector, matching align attribute with value, unclosed bracket: #attr-value [align="center" Pass Detached Element.querySelector: Attribute value selector, matching align attribute with value, unclosed bracket: #attr-value [align="center" Pass Detached Element.querySelectorAll: Attribute value selector, matching align attribute with empty value: #attr-value [align=""] Pass Detached Element.querySelector: Attribute value selector, matching align attribute with empty value: #attr-value [align=""] Pass Detached Element.querySelectorAll: Attribute value selector, not matching align attribute with partial value: #attr-value [align="c"] Pass Detached Element.querySelector: Attribute value selector, not matching align attribute with partial value: #attr-value [align="c"] Pass Detached Element.querySelectorAll: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align="centera"] Pass Detached Element.querySelector: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align="centera"] Pass Detached Element.querySelectorAll: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value="\e9"] Pass Detached Element.querySelector: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value="\e9"] Pass Detached Element.querySelectorAll: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo="\e9"] Pass Detached Element.querySelector: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo="\e9"] Pass Detached Element.querySelectorAll: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] Pass Detached Element.querySelector: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] Pass Detached Element.querySelectorAll: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type="hidden"],#attr-value input[type='radio'] Pass Detached Element.querySelector: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type="hidden"],#attr-value input[type='radio'] Pass Detached Element.querySelectorAll: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] Pass Detached Element.querySelector: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] Pass Detached Element.querySelectorAll: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] Pass Detached Element.querySelector: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] Pass Detached Element.querySelectorAll: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~="div1"] Pass Detached Element.querySelector: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~="div1"] Pass Detached Element.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=""] Pass Detached Element.querySelector: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=""] Pass Detached Element.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~="div"] Pass Detached Element.querySelector: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~="div"] Pass Detached Element.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~="\0000e9"] Pass Detached Element.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~="\0000e9"] Pass Detached Element.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~="\e9"] Pass Detached Element.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~="\e9"] Pass Detached Element.querySelectorAll: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'], #attr-whitespace a[rel~='nofollow'] Pass Detached Element.querySelector: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'], #attr-whitespace a[rel~='nofollow'] Pass Detached Element.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~="bookmark"],#attr-whitespace a[rel~='nofollow'] Pass Detached Element.querySelector: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~="bookmark"],#attr-whitespace a[rel~='nofollow'] Pass Detached Element.querySelectorAll: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark], #attr-whitespace a[rel~=nofollow] Pass Detached Element.querySelector: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark], #attr-whitespace a[rel~=nofollow] Pass Detached Element.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~="book mark"] Pass Detached Element.querySelector: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~="book mark"] Pass Detached Element.querySelectorAll: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] Pass Detached Element.querySelector: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] Pass Detached Element.querySelectorAll: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|="en"] Pass Detached Element.querySelector: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|="en"] Pass Detached Element.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|="fr"] Pass Detached Element.querySelector: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|="fr"] Pass Detached Element.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|="en"] Pass Detached Element.querySelector: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|="en"] Pass Detached Element.querySelectorAll: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|="es-AR"] Pass Detached Element.querySelector: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|="es-AR"] Pass Detached Element.querySelectorAll: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^="http://www"] Pass Detached Element.querySelector: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^="http://www"] Pass Detached Element.querySelectorAll: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^="en-"] Pass Detached Element.querySelector: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^="en-"] Pass Detached Element.querySelectorAll: Attribute begins with selector, not matching class attribute with empty value: #attr-begins [class^=""] Pass Detached Element.querySelector: Attribute begins with selector, not matching class attribute with empty value: #attr-begins [class^=""] Pass Detached Element.querySelectorAll: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] Pass Detached Element.querySelector: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] Pass Detached Element.querySelectorAll: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] Pass Detached Element.querySelector: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] Pass Detached Element.querySelectorAll: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=" apple"] Pass Detached Element.querySelector: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=" apple"] Pass Detached Element.querySelectorAll: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] Pass Detached Element.querySelector: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] Pass Detached Element.querySelectorAll: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=".org"] Pass Detached Element.querySelector: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=".org"] Pass Detached Element.querySelectorAll: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$="-CH"] Pass Detached Element.querySelector: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$="-CH"] Pass Detached Element.querySelectorAll: Attribute ends with selector, not matching class attribute with empty value: #attr-ends [class$=""] Pass Detached Element.querySelector: Attribute ends with selector, not matching class attribute with empty value: #attr-ends [class$=""] Pass Detached Element.querySelectorAll: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] Pass Detached Element.querySelector: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] Pass Detached Element.querySelectorAll: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] Pass Detached Element.querySelector: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] Pass Detached Element.querySelectorAll: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$="apple "] Pass Detached Element.querySelector: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$="apple "] Pass Detached Element.querySelectorAll: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] Pass Detached Element.querySelector: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] Pass Detached Element.querySelectorAll: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*="http://www"] Pass Detached Element.querySelector: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*="http://www"] Pass Detached Element.querySelectorAll: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=".org"] Pass Detached Element.querySelector: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=".org"] Pass Detached Element.querySelectorAll: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=".example."] Pass Detached Element.querySelector: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=".example."] Pass Detached Element.querySelectorAll: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*="en-"] Pass Detached Element.querySelector: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*="en-"] Pass Detached Element.querySelectorAll: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*="-CH"] Pass Detached Element.querySelector: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*="-CH"] Pass Detached Element.querySelectorAll: Attribute contains selector, not matching class attribute with empty value: #attr-contains [class*=""] Pass Detached Element.querySelector: Attribute contains selector, not matching class attribute with empty value: #attr-contains [class*=""] Pass Detached Element.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] Pass Detached Element.querySelector: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] Pass Detached Element.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] Pass Detached Element.querySelector: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] Pass Detached Element.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] Pass Detached Element.querySelector: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] Pass Detached Element.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=" apple"] Pass Detached Element.querySelector: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=" apple"] Pass Detached Element.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*="orange "] Pass Detached Element.querySelector: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*="orange "] Pass Detached Element.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*="ple banana ora"] Pass Detached Element.querySelector: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*="ple banana ora"] Pass Detached Element.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] Pass Detached Element.querySelector: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] Pass Detached Element.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] Pass Detached Element.querySelector: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] Pass Detached Element.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] Pass Detached Element.querySelector: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] Pass Detached Element.querySelectorAll: :root pseudo-class selector, not matching document root element: :root Pass Detached Element.querySelector: :root pseudo-class selector, not matching document root element: :root Pass Detached Element.querySelectorAll: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) Pass Detached Element.querySelector: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) Pass Detached Element.querySelectorAll: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) Pass Detached Element.querySelector: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) Pass Detached Element.querySelectorAll: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) Pass Detached Element.querySelector: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) Pass Detached Element.querySelectorAll: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) Pass Detached Element.querySelector: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) Pass Detached Element.querySelectorAll: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) Pass Detached Element.querySelector: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) Pass Detached Element.querySelectorAll: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) Pass Detached Element.querySelector: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) Pass Detached Element.querySelectorAll: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) Pass Detached Element.querySelector: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) Pass Detached Element.querySelectorAll: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) Pass Detached Element.querySelector: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) Pass Detached Element.querySelectorAll: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) Pass Detached Element.querySelector: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) Pass Detached Element.querySelectorAll: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) Pass Detached Element.querySelector: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) Pass Detached Element.querySelectorAll: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) Pass Detached Element.querySelector: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) Pass Detached Element.querySelectorAll: :nth-last-of-type selector, matching the third last em element: #pseudo-nth-p1 em:nth-last-of-type(3) Pass Detached Element.querySelector: :nth-last-of-type selector, matching the third last em element: #pseudo-nth-p1 em:nth-last-of-type(3) Pass Detached Element.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) Pass Detached Element.querySelector: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) Pass Detached Element.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) Pass Detached Element.querySelector: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) Pass Detached Element.querySelectorAll: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type Pass Detached Element.querySelector: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type Pass Detached Element.querySelectorAll: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type Pass Detached Element.querySelector: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type Pass Detached Element.querySelectorAll: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type Pass Detached Element.querySelector: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type Pass Detached Element.querySelectorAll: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type Pass Detached Element.querySelector: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type Pass Detached Element.querySelectorAll: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type Pass Detached Element.querySelector: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type Pass Detached Element.querySelectorAll: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type Pass Detached Element.querySelector: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type Pass Detached Element.querySelectorAll: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child Pass Detached Element.querySelector: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child Pass Detached Element.querySelectorAll: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child Pass Detached Element.querySelector: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child Pass Detached Element.querySelectorAll: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child Pass Detached Element.querySelector: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child Pass Detached Element.querySelectorAll: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child Pass Detached Element.querySelector: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child Pass Detached Element.querySelectorAll: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child Pass Detached Element.querySelector: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child Pass Detached Element.querySelectorAll: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child Pass Detached Element.querySelector: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child Pass Detached Element.querySelectorAll: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child Pass Detached Element.querySelector: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child Pass Detached Element.querySelectorAll: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child Pass Detached Element.querySelector: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child Pass Detached Element.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type Pass Detached Element.querySelector: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type Pass Detached Element.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type Pass Detached Element.querySelector: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type Pass Detached Element.querySelectorAll: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty Pass Detached Element.querySelector: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty Pass Detached Element.querySelectorAll: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty Pass Detached Element.querySelector: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty Pass Detached Element.querySelectorAll: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited Pass Detached Element.querySelector: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited Pass Detached Element.querySelectorAll: :link and :visited pseudo-class selectors, not matching link elements with href attributes: #head :link, #head :visited Pass Detached Element.querySelector: :link and :visited pseudo-class selectors, not matching link elements with href attributes: #head :link, #head :visited Pass Detached Element.querySelectorAll: :link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing: :link:visited Pass Detached Element.querySelector: :link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing: :link:visited Pass Detached Element.querySelectorAll: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target Pass Detached Element.querySelector: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target Pass Detached Element.querySelectorAll: :lang pseudo-class selector, not matching element with no inherited language: #pseudo-lang-div1:lang(en) Pass Detached Element.querySelector: :lang pseudo-class selector, not matching element with no inherited language: #pseudo-lang-div1:lang(en) Pass Detached Element.querySelectorAll: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) Pass Detached Element.querySelector: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) Pass Detached Element.querySelectorAll: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) Pass Detached Element.querySelector: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) Pass Detached Element.querySelectorAll: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) Pass Detached Element.querySelector: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) Pass Detached Element.querySelectorAll: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled Pass Detached Element.querySelector: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled Pass Detached Element.querySelectorAll: :enabled pseudo-class selector, not matching link elements: #pseudo-link :enabled Pass Detached Element.querySelector: :enabled pseudo-class selector, not matching link elements: #pseudo-link :enabled Pass Detached Element.querySelectorAll: :disabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled Pass Detached Element.querySelector: :disabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled Pass Detached Element.querySelectorAll: :disabled pseudo-class selector, not matching link elements: #pseudo-link :disabled Pass Detached Element.querySelector: :disabled pseudo-class selector, not matching link elements: #pseudo-link :disabled Pass Detached Element.querySelectorAll: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked Pass Detached Element.querySelector: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked Pass Detached Element.querySelectorAll: :not pseudo-class selector, matching : #not>:not(div) Pass Detached Element.querySelector: :not pseudo-class selector, matching : #not>:not(div) Pass Detached Element.querySelectorAll: :not pseudo-class selector, matching : #not * :not(:first-child) Pass Detached Element.querySelector: :not pseudo-class selector, matching : #not * :not(:first-child) Pass Detached Element.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*) Pass Detached Element.querySelector: :not pseudo-class selector, matching nothing: :not(*) Pass Detached Element.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*|*) Pass Detached Element.querySelector: :not pseudo-class selector, matching nothing: :not(*|*) Pass Detached Element.querySelectorAll: :not pseudo-class selector argument surrounded by spaces, matching : #not>:not( div ) Pass Detached Element.querySelector: :not pseudo-class selector argument surrounded by spaces, matching : #not>:not( div ) Pass Detached Element.querySelectorAll: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line Pass Detached Element.querySelector: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line Pass Detached Element.querySelectorAll: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line Pass Detached Element.querySelector: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line Pass Detached Element.querySelectorAll: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter Pass Detached Element.querySelector: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter Pass Detached Element.querySelectorAll: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter Pass Detached Element.querySelector: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter Pass Detached Element.querySelectorAll: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before Pass Detached Element.querySelector: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before Pass Detached Element.querySelectorAll: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before Pass Detached Element.querySelector: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before Pass Detached Element.querySelectorAll: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after Pass Detached Element.querySelector: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after Pass Detached Element.querySelectorAll: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after Pass Detached Element.querySelector: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after Pass Detached Element.querySelectorAll: Class selector, matching element with specified class: .class-p Pass Detached Element.querySelector: Class selector, matching element with specified class: .class-p Pass Detached Element.querySelectorAll: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana Pass Detached Element.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana Pass Detached Element.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange Pass Detached Element.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange Pass Detached Element.querySelectorAll: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi Pass Detached Element.querySelector: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi Pass Detached Element.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 Pass Detached Element.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 Pass Detached Element.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 Pass Detached Element.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 Pass Detached Element.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar Pass Detached Element.querySelector: Class selector, matching element with class with escaped character: .foo\:bar Pass Detached Element.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar Pass Detached Element.querySelector: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar Pass Detached Element.querySelectorAll: ID selector, matching element with specified id: #id #id-div1 Pass Detached Element.querySelector: ID selector, matching element with specified id: #id #id-div1 Pass Detached Element.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div1 Pass Detached Element.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div1 Pass Detached Element.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div2 Pass Detached Element.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div2 Pass Detached Element.querySelectorAll: ID Selector, chained, with type selector: div#id-div1, div#id-div2 Pass Detached Element.querySelector: ID Selector, chained, with type selector: div#id-div1, div#id-div2 Pass Detached Element.querySelectorAll: ID selector, not matching non-existent descendant: #id #none Pass Detached Element.querySelector: ID selector, not matching non-existent descendant: #id #none Pass Detached Element.querySelectorAll: ID selector, not matching non-existent ancestor: #none #id-div1 Pass Detached Element.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 Pass Detached Element.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate Pass Detached Element.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate Pass Detached Element.querySelectorAll: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi Pass Detached Element.querySelector: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi Pass Detached Element.querySelectorAll: ID selector, matching id value using non-ASCII characters (2): #台北 Pass Detached Element.querySelector: ID selector, matching id value using non-ASCII characters (2): #台北 Pass Detached Element.querySelectorAll: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 Pass Detached Element.querySelector: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 Pass Detached Element.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar Pass Detached Element.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar Pass Detached Element.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar Pass Detached Element.querySelector: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar Pass Detached Element.querySelectorAll: Namespace selector, matching element with any namespace: #any-namespace *|div Pass Detached Element.querySelector: Namespace selector, matching element with any namespace: #any-namespace *|div Pass Detached Element.querySelectorAll: Namespace selector, matching div elements in no namespace only: #no-namespace |div Pass Detached Element.querySelector: Namespace selector, matching div elements in no namespace only: #no-namespace |div Pass Detached Element.querySelectorAll: Namespace selector, matching any elements in no namespace only: #no-namespace |* Pass Detached Element.querySelector: Namespace selector, matching any elements in no namespace only: #no-namespace |* Pass Detached Element.querySelectorAll: Descendant combinator, matching element that is a descendant of an element with id: #descendant div Pass Detached Element.querySelector: Descendant combinator, matching element that is a descendant of an element with id: #descendant div Pass Detached Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 Pass Detached Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 Pass Detached Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 Pass Detached Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 Pass Detached Element.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 Pass Detached Element.querySelector: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 Pass Detached Element.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 Pass Detached Element.querySelector: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 Pass Detached Element.querySelectorAll: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 Pass Detached Element.querySelector: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 Pass Detached Element.querySelectorAll: Descendant combinator, whitespace characters: #descendant #descendant-div2 Pass Detached Element.querySelector: Descendant combinator, whitespace characters: #descendant #descendant-div2 Pass Detached Element.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child>div Pass Detached Element.querySelector: Child combinator, matching element that is a child of an element with id: #child>div Pass Detached Element.querySelectorAll: Child combinator, matching element with id that is a child of an element: div>#child-div1 Pass Detached Element.querySelector: Child combinator, matching element with id that is a child of an element: div>#child-div1 Pass Detached Element.querySelectorAll: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 Pass Detached Element.querySelector: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 Pass Detached Element.querySelectorAll: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 Pass Detached Element.querySelector: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 Pass Detached Element.querySelectorAll: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 Pass Detached Element.querySelector: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 Pass Detached Element.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 Pass Detached Element.querySelector: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 Pass Detached Element.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 Pass Detached Element.querySelector: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 Pass Detached Element.querySelectorAll: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 Pass Detached Element.querySelector: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 Pass Detached Element.querySelectorAll: Child combinator, surrounded by whitespace: #child-div1 > #child-div2 Pass Detached Element.querySelector: Child combinator, surrounded by whitespace: #child-div1 > #child-div2 Pass Detached Element.querySelectorAll: Child combinator, whitespace after: #child-div1> #child-div2 Pass Detached Element.querySelector: Child combinator, whitespace after: #child-div1> #child-div2 Pass Detached Element.querySelectorAll: Child combinator, whitespace before: #child-div1 >#child-div2 Pass Detached Element.querySelector: Child combinator, whitespace before: #child-div1 >#child-div2 Pass Detached Element.querySelectorAll: Child combinator, no whitespace: #child-div1>#child-div2 Pass Detached Element.querySelector: Child combinator, no whitespace: #child-div1>#child-div2 Pass Detached Element.querySelectorAll: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div Pass Detached Element.querySelector: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div Pass Detached Element.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 Pass Detached Element.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 Pass Detached Element.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 Pass Detached Element.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 Pass Detached Element.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 Pass Detached Element.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 Pass Detached Element.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 Pass Detached Element.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 Pass Detached Element.querySelectorAll: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p Pass Detached Element.querySelector: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p Pass Detached Element.querySelectorAll: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 Pass Detached Element.querySelector: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 Pass Detached Element.querySelectorAll: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 + #adjacent-p3 Pass Detached Element.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 + #adjacent-p3 Pass Detached Element.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+ #adjacent-p3 Pass Detached Element.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+ #adjacent-p3 Pass Detached Element.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2 +#adjacent-p3 Pass Detached Element.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2 +#adjacent-p3 Pass Detached Element.querySelectorAll: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 Pass Detached Element.querySelector: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 Pass Detached Element.querySelectorAll: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div Pass Detached Element.querySelector: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div Pass Detached Element.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 Pass Detached Element.querySelector: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 Pass Detached Element.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 Pass Detached Element.querySelector: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 Pass Detached Element.querySelectorAll: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div Pass Detached Element.querySelector: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div Pass Detached Element.querySelectorAll: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p Pass Detached Element.querySelector: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p Pass Detached Element.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div Pass Detached Element.querySelector: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div Pass Detached Element.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 Pass Detached Element.querySelector: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 Pass Detached Element.querySelectorAll: General sibling combinator, surrounded by whitespace: #sibling-p2 ~ #sibling-p3 Pass Detached Element.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2 ~ #sibling-p3 Pass Detached Element.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~ #sibling-p3 Pass Detached Element.querySelector: General sibling combinator, whitespace after: #sibling-p2~ #sibling-p3 Pass Detached Element.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2 ~#sibling-p3 Pass Detached Element.querySelector: General sibling combinator, whitespace before: #sibling-p2 ~#sibling-p3 Pass Detached Element.querySelectorAll: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 Pass Detached Element.querySelector: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 Pass Detached Element.querySelectorAll: Syntax, group of selectors separator, surrounded by whitespace: #group em , #group strong Pass Detached Element.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em , #group strong Pass Detached Element.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em, #group strong Pass Detached Element.querySelector: Syntax, group of selectors separator, whitespace after: #group em, #group strong Pass Detached Element.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em ,#group strong Pass Detached Element.querySelector: Syntax, group of selectors separator, whitespace before: #group em ,#group strong Pass Detached Element.querySelectorAll: Syntax, group of selectors separator, no whitespace: #group em,#group strong Pass Detached Element.querySelector: Syntax, group of selectors separator, no whitespace: #group em,#group strong Pass Detached Element.querySelectorAll: Slotted selector: ::slotted(foo) Pass Detached Element.querySelector: Slotted selector: ::slotted(foo) Pass Detached Element.querySelectorAll: Slotted selector (no matching closing paren): ::slotted(foo Pass Detached Element.querySelector: Slotted selector (no matching closing paren): ::slotted(foo Pass Fragment.querySelectorAll: Type selector, matching html element: html Pass Fragment.querySelector: Type selector, matching html element: html Pass Fragment.querySelectorAll: Type selector, matching body element: body Pass Fragment.querySelector: Type selector, matching body element: body Pass Fragment.querySelectorAll: Universal selector, matching all children of element with specified ID: #universal>* Pass Fragment.querySelector: Universal selector, matching all children of element with specified ID: #universal>* Pass Fragment.querySelectorAll: Universal selector, matching all grandchildren of element with specified ID: #universal>*>* Pass Fragment.querySelector: Universal selector, matching all grandchildren of element with specified ID: #universal>*>* Pass Fragment.querySelectorAll: Universal selector, matching all children of empty element with specified ID: #empty>* Pass Fragment.querySelector: Universal selector, matching all children of empty element with specified ID: #empty>* Pass Fragment.querySelectorAll: Universal selector, matching all descendants of element with specified ID: #universal * Pass Fragment.querySelector: Universal selector, matching all descendants of element with specified ID: #universal * Pass Fragment.querySelectorAll: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] Pass Fragment.querySelector: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] Pass Fragment.querySelectorAll: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] Pass Fragment.querySelector: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] Pass Fragment.querySelectorAll: Attribute presence selector, matching title attribute, case insensitivity: #attr-presence [*|TiTlE] Pass Fragment.querySelector: Attribute presence selector, matching title attribute, case insensitivity: #attr-presence [*|TiTlE] Pass Fragment.querySelectorAll: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] Pass Fragment.querySelector: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] Pass Fragment.querySelectorAll: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] Pass Fragment.querySelector: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] Pass Fragment.querySelectorAll: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] Pass Fragment.querySelector: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] Pass Fragment.querySelectorAll: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] Pass Fragment.querySelector: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] Pass Fragment.querySelectorAll: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] Pass Fragment.querySelector: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] Pass Fragment.querySelectorAll: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] Pass Fragment.querySelector: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] Pass Fragment.querySelectorAll: Attribute value selector, matching align attribute with value: #attr-value [align="center"] Pass Fragment.querySelector: Attribute value selector, matching align attribute with value: #attr-value [align="center"] Pass Fragment.querySelectorAll: Attribute value selector, matching align attribute with value, unclosed bracket: #attr-value [align="center" Pass Fragment.querySelector: Attribute value selector, matching align attribute with value, unclosed bracket: #attr-value [align="center" Pass Fragment.querySelectorAll: Attribute value selector, matching align attribute with empty value: #attr-value [align=""] Pass Fragment.querySelector: Attribute value selector, matching align attribute with empty value: #attr-value [align=""] Pass Fragment.querySelectorAll: Attribute value selector, not matching align attribute with partial value: #attr-value [align="c"] Pass Fragment.querySelector: Attribute value selector, not matching align attribute with partial value: #attr-value [align="c"] Pass Fragment.querySelectorAll: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align="centera"] Pass Fragment.querySelector: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align="centera"] Pass Fragment.querySelectorAll: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value="\e9"] Pass Fragment.querySelector: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value="\e9"] Pass Fragment.querySelectorAll: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo="\e9"] Pass Fragment.querySelector: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo="\e9"] Pass Fragment.querySelectorAll: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] Pass Fragment.querySelector: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] Pass Fragment.querySelectorAll: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type="hidden"],#attr-value input[type='radio'] Pass Fragment.querySelector: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type="hidden"],#attr-value input[type='radio'] Pass Fragment.querySelectorAll: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] Pass Fragment.querySelector: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] Pass Fragment.querySelectorAll: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] Pass Fragment.querySelector: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] Pass Fragment.querySelectorAll: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~="div1"] Pass Fragment.querySelector: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~="div1"] Pass Fragment.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=""] Pass Fragment.querySelector: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=""] Pass Fragment.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~="div"] Pass Fragment.querySelector: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~="div"] Pass Fragment.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~="\0000e9"] Pass Fragment.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~="\0000e9"] Pass Fragment.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~="\e9"] Pass Fragment.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~="\e9"] Pass Fragment.querySelectorAll: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'], #attr-whitespace a[rel~='nofollow'] Pass Fragment.querySelector: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'], #attr-whitespace a[rel~='nofollow'] Pass Fragment.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~="bookmark"],#attr-whitespace a[rel~='nofollow'] Pass Fragment.querySelector: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~="bookmark"],#attr-whitespace a[rel~='nofollow'] Pass Fragment.querySelectorAll: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark], #attr-whitespace a[rel~=nofollow] Pass Fragment.querySelector: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark], #attr-whitespace a[rel~=nofollow] Pass Fragment.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~="book mark"] Pass Fragment.querySelector: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~="book mark"] Pass Fragment.querySelectorAll: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] Pass Fragment.querySelector: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] Pass Fragment.querySelectorAll: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|="en"] Pass Fragment.querySelector: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|="en"] Pass Fragment.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|="fr"] Pass Fragment.querySelector: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|="fr"] Pass Fragment.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|="en"] Pass Fragment.querySelector: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|="en"] Pass Fragment.querySelectorAll: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|="es-AR"] Pass Fragment.querySelector: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|="es-AR"] Pass Fragment.querySelectorAll: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^="http://www"] Pass Fragment.querySelector: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^="http://www"] Pass Fragment.querySelectorAll: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^="en-"] Pass Fragment.querySelector: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^="en-"] Pass Fragment.querySelectorAll: Attribute begins with selector, not matching class attribute with empty value: #attr-begins [class^=""] Pass Fragment.querySelector: Attribute begins with selector, not matching class attribute with empty value: #attr-begins [class^=""] Pass Fragment.querySelectorAll: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] Pass Fragment.querySelector: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] Pass Fragment.querySelectorAll: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] Pass Fragment.querySelector: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] Pass Fragment.querySelectorAll: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=" apple"] Pass Fragment.querySelector: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=" apple"] Pass Fragment.querySelectorAll: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] Pass Fragment.querySelector: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] Pass Fragment.querySelectorAll: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=".org"] Pass Fragment.querySelector: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=".org"] Pass Fragment.querySelectorAll: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$="-CH"] Pass Fragment.querySelector: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$="-CH"] Pass Fragment.querySelectorAll: Attribute ends with selector, not matching class attribute with empty value: #attr-ends [class$=""] Pass Fragment.querySelector: Attribute ends with selector, not matching class attribute with empty value: #attr-ends [class$=""] Pass Fragment.querySelectorAll: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] Pass Fragment.querySelector: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] Pass Fragment.querySelectorAll: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] Pass Fragment.querySelector: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] Pass Fragment.querySelectorAll: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$="apple "] Pass Fragment.querySelector: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$="apple "] Pass Fragment.querySelectorAll: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] Pass Fragment.querySelector: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] Pass Fragment.querySelectorAll: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*="http://www"] Pass Fragment.querySelector: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*="http://www"] Pass Fragment.querySelectorAll: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=".org"] Pass Fragment.querySelector: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=".org"] Pass Fragment.querySelectorAll: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=".example."] Pass Fragment.querySelector: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=".example."] Pass Fragment.querySelectorAll: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*="en-"] Pass Fragment.querySelector: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*="en-"] Pass Fragment.querySelectorAll: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*="-CH"] Pass Fragment.querySelector: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*="-CH"] Pass Fragment.querySelectorAll: Attribute contains selector, not matching class attribute with empty value: #attr-contains [class*=""] Pass Fragment.querySelector: Attribute contains selector, not matching class attribute with empty value: #attr-contains [class*=""] Pass Fragment.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] Pass Fragment.querySelector: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] Pass Fragment.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] Pass Fragment.querySelector: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] Pass Fragment.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] Pass Fragment.querySelector: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] Pass Fragment.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=" apple"] Pass Fragment.querySelector: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=" apple"] Pass Fragment.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*="orange "] Pass Fragment.querySelector: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*="orange "] Pass Fragment.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*="ple banana ora"] Pass Fragment.querySelector: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*="ple banana ora"] Pass Fragment.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] Pass Fragment.querySelector: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] Pass Fragment.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] Pass Fragment.querySelector: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] Pass Fragment.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] Pass Fragment.querySelector: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] Pass Fragment.querySelectorAll: :root pseudo-class selector, not matching document root element: :root Pass Fragment.querySelector: :root pseudo-class selector, not matching document root element: :root Pass Fragment.querySelectorAll: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) Pass Fragment.querySelector: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) Pass Fragment.querySelectorAll: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) Pass Fragment.querySelector: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) Pass Fragment.querySelectorAll: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) Pass Fragment.querySelector: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) Pass Fragment.querySelectorAll: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) Pass Fragment.querySelector: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) Pass Fragment.querySelectorAll: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) Pass Fragment.querySelector: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) Pass Fragment.querySelectorAll: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) Pass Fragment.querySelector: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) Pass Fragment.querySelectorAll: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) Pass Fragment.querySelector: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) Pass Fragment.querySelectorAll: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) Pass Fragment.querySelector: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) Pass Fragment.querySelectorAll: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) Pass Fragment.querySelector: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) Pass Fragment.querySelectorAll: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) Pass Fragment.querySelector: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) Pass Fragment.querySelectorAll: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) Pass Fragment.querySelector: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) Pass Fragment.querySelectorAll: :nth-last-of-type selector, matching the third last em element: #pseudo-nth-p1 em:nth-last-of-type(3) Pass Fragment.querySelector: :nth-last-of-type selector, matching the third last em element: #pseudo-nth-p1 em:nth-last-of-type(3) Pass Fragment.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) Pass Fragment.querySelector: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) Pass Fragment.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) Pass Fragment.querySelector: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) Pass Fragment.querySelectorAll: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type Pass Fragment.querySelector: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type Pass Fragment.querySelectorAll: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type Pass Fragment.querySelector: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type Pass Fragment.querySelectorAll: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type Pass Fragment.querySelector: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type Pass Fragment.querySelectorAll: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type Pass Fragment.querySelector: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type Pass Fragment.querySelectorAll: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type Pass Fragment.querySelector: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type Pass Fragment.querySelectorAll: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type Pass Fragment.querySelector: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type Pass Fragment.querySelectorAll: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child Pass Fragment.querySelector: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child Pass Fragment.querySelectorAll: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child Pass Fragment.querySelector: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child Pass Fragment.querySelectorAll: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child Pass Fragment.querySelector: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child Pass Fragment.querySelectorAll: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child Pass Fragment.querySelector: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child Pass Fragment.querySelectorAll: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child Pass Fragment.querySelector: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child Pass Fragment.querySelectorAll: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child Pass Fragment.querySelector: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child Pass Fragment.querySelectorAll: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child Pass Fragment.querySelector: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child Pass Fragment.querySelectorAll: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child Pass Fragment.querySelector: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child Pass Fragment.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type Pass Fragment.querySelector: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type Pass Fragment.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type Pass Fragment.querySelector: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type Pass Fragment.querySelectorAll: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty Pass Fragment.querySelector: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty Pass Fragment.querySelectorAll: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty Pass Fragment.querySelector: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty Pass Fragment.querySelectorAll: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited Pass Fragment.querySelector: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited Pass Fragment.querySelectorAll: :link and :visited pseudo-class selectors, not matching link elements with href attributes: #head :link, #head :visited Pass Fragment.querySelector: :link and :visited pseudo-class selectors, not matching link elements with href attributes: #head :link, #head :visited Pass Fragment.querySelectorAll: :link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing: :link:visited Pass Fragment.querySelector: :link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing: :link:visited Pass Fragment.querySelectorAll: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target Pass Fragment.querySelector: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target Pass Fragment.querySelectorAll: :lang pseudo-class selector, not matching element with no inherited language: #pseudo-lang-div1:lang(en) Pass Fragment.querySelector: :lang pseudo-class selector, not matching element with no inherited language: #pseudo-lang-div1:lang(en) Pass Fragment.querySelectorAll: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) Pass Fragment.querySelector: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) Pass Fragment.querySelectorAll: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) Pass Fragment.querySelector: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) Pass Fragment.querySelectorAll: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) Pass Fragment.querySelector: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) Pass Fragment.querySelectorAll: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled Pass Fragment.querySelector: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled Pass Fragment.querySelectorAll: :enabled pseudo-class selector, not matching link elements: #pseudo-link :enabled Pass Fragment.querySelector: :enabled pseudo-class selector, not matching link elements: #pseudo-link :enabled Pass Fragment.querySelectorAll: :disabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled Pass Fragment.querySelector: :disabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled Pass Fragment.querySelectorAll: :disabled pseudo-class selector, not matching link elements: #pseudo-link :disabled Pass Fragment.querySelector: :disabled pseudo-class selector, not matching link elements: #pseudo-link :disabled Pass Fragment.querySelectorAll: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked Pass Fragment.querySelector: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked Pass Fragment.querySelectorAll: :not pseudo-class selector, matching : #not>:not(div) Pass Fragment.querySelector: :not pseudo-class selector, matching : #not>:not(div) Pass Fragment.querySelectorAll: :not pseudo-class selector, matching : #not * :not(:first-child) Pass Fragment.querySelector: :not pseudo-class selector, matching : #not * :not(:first-child) Pass Fragment.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*) Pass Fragment.querySelector: :not pseudo-class selector, matching nothing: :not(*) Pass Fragment.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*|*) Pass Fragment.querySelector: :not pseudo-class selector, matching nothing: :not(*|*) Pass Fragment.querySelectorAll: :not pseudo-class selector argument surrounded by spaces, matching : #not>:not( div ) Pass Fragment.querySelector: :not pseudo-class selector argument surrounded by spaces, matching : #not>:not( div ) Pass Fragment.querySelectorAll: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line Pass Fragment.querySelector: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line Pass Fragment.querySelectorAll: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line Pass Fragment.querySelector: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line Pass Fragment.querySelectorAll: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter Pass Fragment.querySelector: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter Pass Fragment.querySelectorAll: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter Pass Fragment.querySelector: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter Pass Fragment.querySelectorAll: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before Pass Fragment.querySelector: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before Pass Fragment.querySelectorAll: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before Pass Fragment.querySelector: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before Pass Fragment.querySelectorAll: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after Pass Fragment.querySelector: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after Pass Fragment.querySelectorAll: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after Pass Fragment.querySelector: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after Pass Fragment.querySelectorAll: Class selector, matching element with specified class: .class-p Pass Fragment.querySelector: Class selector, matching element with specified class: .class-p Pass Fragment.querySelectorAll: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana Pass Fragment.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana Pass Fragment.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange Pass Fragment.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange Pass Fragment.querySelectorAll: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi Pass Fragment.querySelector: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi Pass Fragment.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 Pass Fragment.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 Pass Fragment.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 Pass Fragment.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 Pass Fragment.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar Pass Fragment.querySelector: Class selector, matching element with class with escaped character: .foo\:bar Pass Fragment.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar Pass Fragment.querySelector: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar Pass Fragment.querySelectorAll: ID selector, matching element with specified id: #id #id-div1 Pass Fragment.querySelector: ID selector, matching element with specified id: #id #id-div1 Pass Fragment.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div1 Pass Fragment.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div1 Pass Fragment.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div2 Pass Fragment.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div2 Pass Fragment.querySelectorAll: ID Selector, chained, with type selector: div#id-div1, div#id-div2 Pass Fragment.querySelector: ID Selector, chained, with type selector: div#id-div1, div#id-div2 Pass Fragment.querySelectorAll: ID selector, not matching non-existent descendant: #id #none Pass Fragment.querySelector: ID selector, not matching non-existent descendant: #id #none Pass Fragment.querySelectorAll: ID selector, not matching non-existent ancestor: #none #id-div1 Pass Fragment.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 Pass Fragment.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate Pass Fragment.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate Pass Fragment.querySelectorAll: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi Pass Fragment.querySelector: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi Pass Fragment.querySelectorAll: ID selector, matching id value using non-ASCII characters (2): #台北 Pass Fragment.querySelector: ID selector, matching id value using non-ASCII characters (2): #台北 Pass Fragment.querySelectorAll: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 Pass Fragment.querySelector: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 Pass Fragment.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar Pass Fragment.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar Pass Fragment.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar Pass Fragment.querySelector: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar Pass Fragment.querySelectorAll: Namespace selector, matching element with any namespace: #any-namespace *|div Pass Fragment.querySelector: Namespace selector, matching element with any namespace: #any-namespace *|div Pass Fragment.querySelectorAll: Namespace selector, matching div elements in no namespace only: #no-namespace |div Pass Fragment.querySelector: Namespace selector, matching div elements in no namespace only: #no-namespace |div Pass Fragment.querySelectorAll: Namespace selector, matching any elements in no namespace only: #no-namespace |* Pass Fragment.querySelector: Namespace selector, matching any elements in no namespace only: #no-namespace |* Pass Fragment.querySelectorAll: Descendant combinator, matching element that is a descendant of an element with id: #descendant div Pass Fragment.querySelector: Descendant combinator, matching element that is a descendant of an element with id: #descendant div Pass Fragment.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 Pass Fragment.querySelector: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 Pass Fragment.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 Pass Fragment.querySelector: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 Pass Fragment.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 Pass Fragment.querySelector: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 Pass Fragment.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 Pass Fragment.querySelector: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 Pass Fragment.querySelectorAll: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 Pass Fragment.querySelector: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 Pass Fragment.querySelectorAll: Descendant combinator, whitespace characters: #descendant #descendant-div2 Pass Fragment.querySelector: Descendant combinator, whitespace characters: #descendant #descendant-div2 Pass Fragment.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child>div Pass Fragment.querySelector: Child combinator, matching element that is a child of an element with id: #child>div Pass Fragment.querySelectorAll: Child combinator, matching element with id that is a child of an element: div>#child-div1 Pass Fragment.querySelector: Child combinator, matching element with id that is a child of an element: div>#child-div1 Pass Fragment.querySelectorAll: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 Pass Fragment.querySelector: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 Pass Fragment.querySelectorAll: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 Pass Fragment.querySelector: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 Pass Fragment.querySelectorAll: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 Pass Fragment.querySelector: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 Pass Fragment.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 Pass Fragment.querySelector: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 Pass Fragment.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 Pass Fragment.querySelector: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 Pass Fragment.querySelectorAll: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 Pass Fragment.querySelector: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 Pass Fragment.querySelectorAll: Child combinator, surrounded by whitespace: #child-div1 > #child-div2 Pass Fragment.querySelector: Child combinator, surrounded by whitespace: #child-div1 > #child-div2 Pass Fragment.querySelectorAll: Child combinator, whitespace after: #child-div1> #child-div2 Pass Fragment.querySelector: Child combinator, whitespace after: #child-div1> #child-div2 Pass Fragment.querySelectorAll: Child combinator, whitespace before: #child-div1 >#child-div2 Pass Fragment.querySelector: Child combinator, whitespace before: #child-div1 >#child-div2 Pass Fragment.querySelectorAll: Child combinator, no whitespace: #child-div1>#child-div2 Pass Fragment.querySelector: Child combinator, no whitespace: #child-div1>#child-div2 Pass Fragment.querySelectorAll: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div Pass Fragment.querySelector: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div Pass Fragment.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 Pass Fragment.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 Pass Fragment.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 Pass Fragment.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 Pass Fragment.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 Pass Fragment.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 Pass Fragment.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 Pass Fragment.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 Pass Fragment.querySelectorAll: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p Pass Fragment.querySelector: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p Pass Fragment.querySelectorAll: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 Pass Fragment.querySelector: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 Pass Fragment.querySelectorAll: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 + #adjacent-p3 Pass Fragment.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 + #adjacent-p3 Pass Fragment.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+ #adjacent-p3 Pass Fragment.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+ #adjacent-p3 Pass Fragment.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2 +#adjacent-p3 Pass Fragment.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2 +#adjacent-p3 Pass Fragment.querySelectorAll: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 Pass Fragment.querySelector: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 Pass Fragment.querySelectorAll: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div Pass Fragment.querySelector: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div Pass Fragment.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 Pass Fragment.querySelector: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 Pass Fragment.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 Pass Fragment.querySelector: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 Pass Fragment.querySelectorAll: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div Pass Fragment.querySelector: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div Pass Fragment.querySelectorAll: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p Pass Fragment.querySelector: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p Pass Fragment.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div Pass Fragment.querySelector: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div Pass Fragment.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 Pass Fragment.querySelector: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 Pass Fragment.querySelectorAll: General sibling combinator, surrounded by whitespace: #sibling-p2 ~ #sibling-p3 Pass Fragment.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2 ~ #sibling-p3 Pass Fragment.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~ #sibling-p3 Pass Fragment.querySelector: General sibling combinator, whitespace after: #sibling-p2~ #sibling-p3 Pass Fragment.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2 ~#sibling-p3 Pass Fragment.querySelector: General sibling combinator, whitespace before: #sibling-p2 ~#sibling-p3 Pass Fragment.querySelectorAll: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 Pass Fragment.querySelector: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 Pass Fragment.querySelectorAll: Syntax, group of selectors separator, surrounded by whitespace: #group em , #group strong Pass Fragment.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em , #group strong Pass Fragment.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em, #group strong Pass Fragment.querySelector: Syntax, group of selectors separator, whitespace after: #group em, #group strong Pass Fragment.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em ,#group strong Pass Fragment.querySelector: Syntax, group of selectors separator, whitespace before: #group em ,#group strong Pass Fragment.querySelectorAll: Syntax, group of selectors separator, no whitespace: #group em,#group strong Pass Fragment.querySelector: Syntax, group of selectors separator, no whitespace: #group em,#group strong Pass Fragment.querySelectorAll: Slotted selector: ::slotted(foo) Pass Fragment.querySelector: Slotted selector: ::slotted(foo) Pass Fragment.querySelectorAll: Slotted selector (no matching closing paren): ::slotted(foo Pass Fragment.querySelector: Slotted selector (no matching closing paren): ::slotted(foo Pass In-document Element.querySelectorAll: Type selector, matching html element: html Pass In-document Element.querySelector: Type selector, matching html element: html Pass In-document Element.querySelectorAll: Type selector, matching body element: body Pass In-document Element.querySelector: Type selector, matching body element: body Pass In-document Element.querySelectorAll: Universal selector, matching all children of element with specified ID: #universal>* Pass In-document Element.querySelector: Universal selector, matching all children of element with specified ID: #universal>* Pass In-document Element.querySelectorAll: Universal selector, matching all grandchildren of element with specified ID: #universal>*>* Pass In-document Element.querySelector: Universal selector, matching all grandchildren of element with specified ID: #universal>*>* Pass In-document Element.querySelectorAll: Universal selector, matching all children of empty element with specified ID: #empty>* Pass In-document Element.querySelector: Universal selector, matching all children of empty element with specified ID: #empty>* Pass In-document Element.querySelectorAll: Universal selector, matching all descendants of element with specified ID: #universal * Pass In-document Element.querySelector: Universal selector, matching all descendants of element with specified ID: #universal * Pass In-document Element.querySelectorAll: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] Pass In-document Element.querySelector: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] Pass In-document Element.querySelectorAll: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] Pass In-document Element.querySelector: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] Pass In-document Element.querySelectorAll: Attribute presence selector, matching title attribute, case insensitivity: #attr-presence [*|TiTlE] Pass In-document Element.querySelector: Attribute presence selector, matching title attribute, case insensitivity: #attr-presence [*|TiTlE] Pass In-document Element.querySelectorAll: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] Pass In-document Element.querySelector: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] Pass In-document Element.querySelectorAll: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] Pass In-document Element.querySelector: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] Pass In-document Element.querySelectorAll: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] Pass In-document Element.querySelector: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] Pass In-document Element.querySelectorAll: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] Pass In-document Element.querySelector: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] Pass In-document Element.querySelectorAll: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] Pass In-document Element.querySelector: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] Pass In-document Element.querySelectorAll: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] Pass In-document Element.querySelector: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] Pass In-document Element.querySelectorAll: Attribute value selector, matching align attribute with value: #attr-value [align="center"] Pass In-document Element.querySelector: Attribute value selector, matching align attribute with value: #attr-value [align="center"] Pass In-document Element.querySelectorAll: Attribute value selector, matching align attribute with value, unclosed bracket: #attr-value [align="center" Pass In-document Element.querySelector: Attribute value selector, matching align attribute with value, unclosed bracket: #attr-value [align="center" Pass In-document Element.querySelectorAll: Attribute value selector, matching align attribute with empty value: #attr-value [align=""] Pass In-document Element.querySelector: Attribute value selector, matching align attribute with empty value: #attr-value [align=""] Pass In-document Element.querySelectorAll: Attribute value selector, not matching align attribute with partial value: #attr-value [align="c"] Pass In-document Element.querySelector: Attribute value selector, not matching align attribute with partial value: #attr-value [align="c"] Pass In-document Element.querySelectorAll: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align="centera"] Pass In-document Element.querySelector: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align="centera"] Pass In-document Element.querySelectorAll: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value="\e9"] Pass In-document Element.querySelector: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value="\e9"] Pass In-document Element.querySelectorAll: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo="\e9"] Pass In-document Element.querySelector: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo="\e9"] Pass In-document Element.querySelectorAll: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] Pass In-document Element.querySelector: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] Pass In-document Element.querySelectorAll: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type="hidden"],#attr-value input[type='radio'] Pass In-document Element.querySelector: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type="hidden"],#attr-value input[type='radio'] Pass In-document Element.querySelectorAll: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] Pass In-document Element.querySelector: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] Pass In-document Element.querySelectorAll: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] Pass In-document Element.querySelector: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] Pass In-document Element.querySelectorAll: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~="div1"] Pass In-document Element.querySelector: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~="div1"] Pass In-document Element.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=""] Pass In-document Element.querySelector: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=""] Pass In-document Element.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~="div"] Pass In-document Element.querySelector: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~="div"] Pass In-document Element.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~="\0000e9"] Pass In-document Element.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~="\0000e9"] Pass In-document Element.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~="\e9"] Pass In-document Element.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~="\e9"] Pass In-document Element.querySelectorAll: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'], #attr-whitespace a[rel~='nofollow'] Pass In-document Element.querySelector: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'], #attr-whitespace a[rel~='nofollow'] Pass In-document Element.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~="bookmark"],#attr-whitespace a[rel~='nofollow'] Pass In-document Element.querySelector: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~="bookmark"],#attr-whitespace a[rel~='nofollow'] Pass In-document Element.querySelectorAll: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark], #attr-whitespace a[rel~=nofollow] Pass In-document Element.querySelector: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark], #attr-whitespace a[rel~=nofollow] Pass In-document Element.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~="book mark"] Pass In-document Element.querySelector: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~="book mark"] Pass In-document Element.querySelectorAll: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] Pass In-document Element.querySelector: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] Pass In-document Element.querySelectorAll: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|="en"] Pass In-document Element.querySelector: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|="en"] Pass In-document Element.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|="fr"] Pass In-document Element.querySelector: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|="fr"] Pass In-document Element.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|="en"] Pass In-document Element.querySelector: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|="en"] Pass In-document Element.querySelectorAll: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|="es-AR"] Pass In-document Element.querySelector: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|="es-AR"] Pass In-document Element.querySelectorAll: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^="http://www"] Pass In-document Element.querySelector: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^="http://www"] Pass In-document Element.querySelectorAll: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^="en-"] Pass In-document Element.querySelector: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^="en-"] Pass In-document Element.querySelectorAll: Attribute begins with selector, not matching class attribute with empty value: #attr-begins [class^=""] Pass In-document Element.querySelector: Attribute begins with selector, not matching class attribute with empty value: #attr-begins [class^=""] Pass In-document Element.querySelectorAll: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] Pass In-document Element.querySelector: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] Pass In-document Element.querySelectorAll: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] Pass In-document Element.querySelector: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] Pass In-document Element.querySelectorAll: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=" apple"] Pass In-document Element.querySelector: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=" apple"] Pass In-document Element.querySelectorAll: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] Pass In-document Element.querySelector: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] Pass In-document Element.querySelectorAll: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=".org"] Pass In-document Element.querySelector: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=".org"] Pass In-document Element.querySelectorAll: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$="-CH"] Pass In-document Element.querySelector: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$="-CH"] Pass In-document Element.querySelectorAll: Attribute ends with selector, not matching class attribute with empty value: #attr-ends [class$=""] Pass In-document Element.querySelector: Attribute ends with selector, not matching class attribute with empty value: #attr-ends [class$=""] Pass In-document Element.querySelectorAll: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] Pass In-document Element.querySelector: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] Pass In-document Element.querySelectorAll: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] Pass In-document Element.querySelector: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] Pass In-document Element.querySelectorAll: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$="apple "] Pass In-document Element.querySelector: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$="apple "] Pass In-document Element.querySelectorAll: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] Pass In-document Element.querySelector: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] Pass In-document Element.querySelectorAll: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*="http://www"] Pass In-document Element.querySelector: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*="http://www"] Pass In-document Element.querySelectorAll: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=".org"] Pass In-document Element.querySelector: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=".org"] Pass In-document Element.querySelectorAll: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=".example."] Pass In-document Element.querySelector: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=".example."] Pass In-document Element.querySelectorAll: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*="en-"] Pass In-document Element.querySelector: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*="en-"] Pass In-document Element.querySelectorAll: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*="-CH"] Pass In-document Element.querySelector: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*="-CH"] Pass In-document Element.querySelectorAll: Attribute contains selector, not matching class attribute with empty value: #attr-contains [class*=""] Pass In-document Element.querySelector: Attribute contains selector, not matching class attribute with empty value: #attr-contains [class*=""] Pass In-document Element.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] Pass In-document Element.querySelector: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] Pass In-document Element.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] Pass In-document Element.querySelector: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] Pass In-document Element.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] Pass In-document Element.querySelector: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] Pass In-document Element.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=" apple"] Pass In-document Element.querySelector: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=" apple"] Pass In-document Element.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*="orange "] Pass In-document Element.querySelector: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*="orange "] Pass In-document Element.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*="ple banana ora"] Pass In-document Element.querySelector: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*="ple banana ora"] Pass In-document Element.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] Pass In-document Element.querySelector: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] Pass In-document Element.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] Pass In-document Element.querySelector: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] Pass In-document Element.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] Pass In-document Element.querySelector: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] Pass In-document Element.querySelectorAll: :root pseudo-class selector, not matching document root element: :root Pass In-document Element.querySelector: :root pseudo-class selector, not matching document root element: :root Pass In-document Element.querySelectorAll: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) Pass In-document Element.querySelector: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) Pass In-document Element.querySelectorAll: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) Pass In-document Element.querySelector: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) Pass In-document Element.querySelectorAll: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) Pass In-document Element.querySelector: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) Pass In-document Element.querySelectorAll: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) Pass In-document Element.querySelector: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) Pass In-document Element.querySelectorAll: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) Pass In-document Element.querySelector: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) Pass In-document Element.querySelectorAll: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) Pass In-document Element.querySelector: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) Pass In-document Element.querySelectorAll: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) Pass In-document Element.querySelector: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) Pass In-document Element.querySelectorAll: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) Pass In-document Element.querySelector: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) Pass In-document Element.querySelectorAll: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) Pass In-document Element.querySelector: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) Pass In-document Element.querySelectorAll: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) Pass In-document Element.querySelector: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) Pass In-document Element.querySelectorAll: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) Pass In-document Element.querySelector: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) Pass In-document Element.querySelectorAll: :nth-last-of-type selector, matching the third last em element: #pseudo-nth-p1 em:nth-last-of-type(3) Pass In-document Element.querySelector: :nth-last-of-type selector, matching the third last em element: #pseudo-nth-p1 em:nth-last-of-type(3) Pass In-document Element.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) Pass In-document Element.querySelector: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) Pass In-document Element.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) Pass In-document Element.querySelector: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) Pass In-document Element.querySelectorAll: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type Pass In-document Element.querySelector: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type Pass In-document Element.querySelectorAll: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type Pass In-document Element.querySelector: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type Pass In-document Element.querySelectorAll: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type Pass In-document Element.querySelector: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type Pass In-document Element.querySelectorAll: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type Pass In-document Element.querySelector: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type Pass In-document Element.querySelectorAll: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type Pass In-document Element.querySelector: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type Pass In-document Element.querySelectorAll: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type Pass In-document Element.querySelector: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type Pass In-document Element.querySelectorAll: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child Pass In-document Element.querySelector: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child Pass In-document Element.querySelectorAll: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child Pass In-document Element.querySelector: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child Pass In-document Element.querySelectorAll: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child Pass In-document Element.querySelector: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child Pass In-document Element.querySelectorAll: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child Pass In-document Element.querySelector: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child Pass In-document Element.querySelectorAll: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child Pass In-document Element.querySelector: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child Pass In-document Element.querySelectorAll: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child Pass In-document Element.querySelector: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child Pass In-document Element.querySelectorAll: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child Pass In-document Element.querySelector: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child Pass In-document Element.querySelectorAll: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child Pass In-document Element.querySelector: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child Pass In-document Element.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type Pass In-document Element.querySelector: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type Pass In-document Element.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type Pass In-document Element.querySelector: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type Pass In-document Element.querySelectorAll: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty Pass In-document Element.querySelector: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty Pass In-document Element.querySelectorAll: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty Pass In-document Element.querySelector: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty Pass In-document Element.querySelectorAll: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited Pass In-document Element.querySelector: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited Pass In-document Element.querySelectorAll: :link and :visited pseudo-class selectors, not matching link elements with href attributes: #head :link, #head :visited Pass In-document Element.querySelector: :link and :visited pseudo-class selectors, not matching link elements with href attributes: #head :link, #head :visited Pass In-document Element.querySelectorAll: :link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing: :link:visited Pass In-document Element.querySelector: :link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing: :link:visited Pass In-document Element.querySelectorAll: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target Pass In-document Element.querySelector: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target Pass In-document Element.querySelectorAll: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en) Pass In-document Element.querySelector: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en) Pass In-document Element.querySelectorAll: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) Pass In-document Element.querySelector: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) Pass In-document Element.querySelectorAll: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) Pass In-document Element.querySelector: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) Pass In-document Element.querySelectorAll: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) Pass In-document Element.querySelector: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) Pass In-document Element.querySelectorAll: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled Pass In-document Element.querySelector: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled Pass In-document Element.querySelectorAll: :enabled pseudo-class selector, not matching link elements: #pseudo-link :enabled Pass In-document Element.querySelector: :enabled pseudo-class selector, not matching link elements: #pseudo-link :enabled Pass In-document Element.querySelectorAll: :disabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled Pass In-document Element.querySelector: :disabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled Pass In-document Element.querySelectorAll: :disabled pseudo-class selector, not matching link elements: #pseudo-link :disabled Pass In-document Element.querySelector: :disabled pseudo-class selector, not matching link elements: #pseudo-link :disabled Pass In-document Element.querySelectorAll: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked Pass In-document Element.querySelector: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked Pass In-document Element.querySelectorAll: :not pseudo-class selector, matching : #not>:not(div) Pass In-document Element.querySelector: :not pseudo-class selector, matching : #not>:not(div) Pass In-document Element.querySelectorAll: :not pseudo-class selector, matching : #not * :not(:first-child) Pass In-document Element.querySelector: :not pseudo-class selector, matching : #not * :not(:first-child) Pass In-document Element.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*) Pass In-document Element.querySelector: :not pseudo-class selector, matching nothing: :not(*) Pass In-document Element.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*|*) Pass In-document Element.querySelector: :not pseudo-class selector, matching nothing: :not(*|*) Pass In-document Element.querySelectorAll: :not pseudo-class selector argument surrounded by spaces, matching : #not>:not( div ) Pass In-document Element.querySelector: :not pseudo-class selector argument surrounded by spaces, matching : #not>:not( div ) Pass In-document Element.querySelectorAll: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line Pass In-document Element.querySelector: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line Pass In-document Element.querySelectorAll: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line Pass In-document Element.querySelector: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line Pass In-document Element.querySelectorAll: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter Pass In-document Element.querySelector: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter Pass In-document Element.querySelectorAll: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter Pass In-document Element.querySelector: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter Pass In-document Element.querySelectorAll: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before Pass In-document Element.querySelector: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before Pass In-document Element.querySelectorAll: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before Pass In-document Element.querySelector: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before Pass In-document Element.querySelectorAll: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after Pass In-document Element.querySelector: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after Pass In-document Element.querySelectorAll: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after Pass In-document Element.querySelector: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after Pass In-document Element.querySelectorAll: Class selector, matching element with specified class: .class-p Pass In-document Element.querySelector: Class selector, matching element with specified class: .class-p Pass In-document Element.querySelectorAll: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana Pass In-document Element.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana Pass In-document Element.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange Pass In-document Element.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange Pass In-document Element.querySelectorAll: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi Pass In-document Element.querySelector: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi Pass In-document Element.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 Pass In-document Element.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 Pass In-document Element.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 Pass In-document Element.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 Pass In-document Element.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar Pass In-document Element.querySelector: Class selector, matching element with class with escaped character: .foo\:bar Pass In-document Element.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar Pass In-document Element.querySelector: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar Pass In-document Element.querySelectorAll: ID selector, matching element with specified id: #id #id-div1 Pass In-document Element.querySelector: ID selector, matching element with specified id: #id #id-div1 Pass In-document Element.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div1 Pass In-document Element.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div1 Pass In-document Element.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div2 Pass In-document Element.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div2 Pass In-document Element.querySelectorAll: ID Selector, chained, with type selector: div#id-div1, div#id-div2 Pass In-document Element.querySelector: ID Selector, chained, with type selector: div#id-div1, div#id-div2 Pass In-document Element.querySelectorAll: ID selector, not matching non-existent descendant: #id #none Pass In-document Element.querySelector: ID selector, not matching non-existent descendant: #id #none Pass In-document Element.querySelectorAll: ID selector, not matching non-existent ancestor: #none #id-div1 Pass In-document Element.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 Pass In-document Element.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate Pass In-document Element.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate Pass In-document Element.querySelectorAll: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi Pass In-document Element.querySelector: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi Pass In-document Element.querySelectorAll: ID selector, matching id value using non-ASCII characters (2): #台北 Pass In-document Element.querySelector: ID selector, matching id value using non-ASCII characters (2): #台北 Pass In-document Element.querySelectorAll: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 Pass In-document Element.querySelector: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 Pass In-document Element.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar Pass In-document Element.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar Pass In-document Element.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar Pass In-document Element.querySelector: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar Pass In-document Element.querySelectorAll: Namespace selector, matching element with any namespace: #any-namespace *|div Pass In-document Element.querySelector: Namespace selector, matching element with any namespace: #any-namespace *|div Pass In-document Element.querySelectorAll: Namespace selector, matching div elements in no namespace only: #no-namespace |div Pass In-document Element.querySelector: Namespace selector, matching div elements in no namespace only: #no-namespace |div Pass In-document Element.querySelectorAll: Namespace selector, matching any elements in no namespace only: #no-namespace |* Pass In-document Element.querySelector: Namespace selector, matching any elements in no namespace only: #no-namespace |* Pass In-document Element.querySelectorAll: Descendant combinator, matching element that is a descendant of an element with id: #descendant div Pass In-document Element.querySelector: Descendant combinator, matching element that is a descendant of an element with id: #descendant div Pass In-document Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: body #descendant-div1 Pass In-document Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element: body #descendant-div1 Pass In-document Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 Pass In-document Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 Pass In-document Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 Pass In-document Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 Pass In-document Element.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 Pass In-document Element.querySelector: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 Pass In-document Element.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 Pass In-document Element.querySelector: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 Pass In-document Element.querySelectorAll: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 Pass In-document Element.querySelector: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 Pass In-document Element.querySelectorAll: Descendant combinator, whitespace characters: #descendant #descendant-div2 Pass In-document Element.querySelector: Descendant combinator, whitespace characters: #descendant #descendant-div2 Pass In-document Element.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child>div Pass In-document Element.querySelector: Child combinator, matching element that is a child of an element with id: #child>div Pass In-document Element.querySelectorAll: Child combinator, matching element with id that is a child of an element: div>#child-div1 Pass In-document Element.querySelector: Child combinator, matching element with id that is a child of an element: div>#child-div1 Pass In-document Element.querySelectorAll: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 Pass In-document Element.querySelector: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 Pass In-document Element.querySelectorAll: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 Pass In-document Element.querySelector: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 Pass In-document Element.querySelectorAll: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 Pass In-document Element.querySelector: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 Pass In-document Element.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 Pass In-document Element.querySelector: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 Pass In-document Element.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 Pass In-document Element.querySelector: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 Pass In-document Element.querySelectorAll: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 Pass In-document Element.querySelector: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 Pass In-document Element.querySelectorAll: Child combinator, surrounded by whitespace: #child-div1 > #child-div2 Pass In-document Element.querySelector: Child combinator, surrounded by whitespace: #child-div1 > #child-div2 Pass In-document Element.querySelectorAll: Child combinator, whitespace after: #child-div1> #child-div2 Pass In-document Element.querySelector: Child combinator, whitespace after: #child-div1> #child-div2 Pass In-document Element.querySelectorAll: Child combinator, whitespace before: #child-div1 >#child-div2 Pass In-document Element.querySelector: Child combinator, whitespace before: #child-div1 >#child-div2 Pass In-document Element.querySelectorAll: Child combinator, no whitespace: #child-div1>#child-div2 Pass In-document Element.querySelector: Child combinator, no whitespace: #child-div1>#child-div2 Pass In-document Element.querySelectorAll: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div Pass In-document Element.querySelector: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div Pass In-document Element.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 Pass In-document Element.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 Pass In-document Element.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 Pass In-document Element.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 Pass In-document Element.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 Pass In-document Element.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 Pass In-document Element.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 Pass In-document Element.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 Pass In-document Element.querySelectorAll: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p Pass In-document Element.querySelector: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p Pass In-document Element.querySelectorAll: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 Pass In-document Element.querySelector: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 Pass In-document Element.querySelectorAll: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 + #adjacent-p3 Pass In-document Element.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 + #adjacent-p3 Pass In-document Element.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+ #adjacent-p3 Pass In-document Element.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+ #adjacent-p3 Pass In-document Element.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2 +#adjacent-p3 Pass In-document Element.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2 +#adjacent-p3 Pass In-document Element.querySelectorAll: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 Pass In-document Element.querySelector: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 Pass In-document Element.querySelectorAll: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div Pass In-document Element.querySelector: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div Pass In-document Element.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 Pass In-document Element.querySelector: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 Pass In-document Element.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 Pass In-document Element.querySelector: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 Pass In-document Element.querySelectorAll: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div Pass In-document Element.querySelector: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div Pass In-document Element.querySelectorAll: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p Pass In-document Element.querySelector: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p Pass In-document Element.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div Pass In-document Element.querySelector: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div Pass In-document Element.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 Pass In-document Element.querySelector: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 Pass In-document Element.querySelectorAll: General sibling combinator, surrounded by whitespace: #sibling-p2 ~ #sibling-p3 Pass In-document Element.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2 ~ #sibling-p3 Pass In-document Element.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~ #sibling-p3 Pass In-document Element.querySelector: General sibling combinator, whitespace after: #sibling-p2~ #sibling-p3 Pass In-document Element.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2 ~#sibling-p3 Pass In-document Element.querySelector: General sibling combinator, whitespace before: #sibling-p2 ~#sibling-p3 Pass In-document Element.querySelectorAll: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 Pass In-document Element.querySelector: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 Pass In-document Element.querySelectorAll: Syntax, group of selectors separator, surrounded by whitespace: #group em , #group strong Pass In-document Element.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em , #group strong Pass In-document Element.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em, #group strong Pass In-document Element.querySelector: Syntax, group of selectors separator, whitespace after: #group em, #group strong Pass In-document Element.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em ,#group strong Pass In-document Element.querySelector: Syntax, group of selectors separator, whitespace before: #group em ,#group strong Pass In-document Element.querySelectorAll: Syntax, group of selectors separator, no whitespace: #group em,#group strong Pass In-document Element.querySelector: Syntax, group of selectors separator, no whitespace: #group em,#group strong Pass In-document Element.querySelectorAll: Slotted selector: ::slotted(foo) Pass In-document Element.querySelector: Slotted selector: ::slotted(foo) Pass In-document Element.querySelectorAll: Slotted selector (no matching closing paren): ::slotted(foo Pass In-document Element.querySelector: Slotted selector (no matching closing paren): ::slotted(foo