blob: 56b53693ddbafd1f5b4970f951776383226e5f0a [file] [log] [blame]
This test requires JavaScript.
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-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-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-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-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 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"]
FAIL Document.querySelectorAll: Attribute value selector, matching align attribute with value, unclosed bracket: #attr-value [align="center" The string did not match the expected pattern.
FAIL Document.querySelector: Attribute value selector, matching align attribute with value, unclosed bracket: #attr-value [align="center" The string did not match the expected pattern.
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 link elements with href attributes: #head :link, #head :visited
PASS Document.querySelector: :link and :visited pseudo-class selectors, matching link elements with href attributes: #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, matching all disabled form controls: #pseudo-ui :disabled
PASS Document.querySelector: :enabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :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: :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 \r
#descendant-div2
PASS Document.querySelector: Descendant combinator, whitespace characters: #descendant \r
#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 \r
> \r
#child-div2
PASS Document.querySelector: Child combinator, surrounded by whitespace: #child-div1 \r
> \r
#child-div2
PASS Document.querySelectorAll: Child combinator, whitespace after: #child-div1> \r
#child-div2
PASS Document.querySelector: Child combinator, whitespace after: #child-div1> \r
#child-div2
PASS Document.querySelectorAll: Child combinator, whitespace before: #child-div1 \r
>#child-div2
PASS Document.querySelector: Child combinator, whitespace before: #child-div1 \r
>#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 \r
+ \r
#adjacent-p3
PASS Document.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 \r
+ \r
#adjacent-p3
PASS Document.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+ \r
#adjacent-p3
PASS Document.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+ \r
#adjacent-p3
PASS Document.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2 \r
+#adjacent-p3
PASS Document.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2 \r
+#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 \r
~ \r
#sibling-p3
PASS Document.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2 \r
~ \r
#sibling-p3
PASS Document.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~ \r
#sibling-p3
PASS Document.querySelector: General sibling combinator, whitespace after: #sibling-p2~ \r
#sibling-p3
PASS Document.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2 \r
~#sibling-p3
PASS Document.querySelector: General sibling combinator, whitespace before: #sibling-p2 \r
~#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 \r
, \r
#group strong
PASS Document.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em \r
, \r
#group strong
PASS Document.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em, \r
#group strong
PASS Document.querySelector: Syntax, group of selectors separator, whitespace after: #group em, \r
#group strong
PASS Document.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em \r
,#group strong
PASS Document.querySelector: Syntax, group of selectors separator, whitespace before: #group em \r
,#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 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"]
FAIL Detached Element.querySelectorAll: Attribute value selector, matching align attribute with value, unclosed bracket: #attr-value [align="center" The string did not match the expected pattern.
FAIL Detached Element.querySelector: Attribute value selector, matching align attribute with value, unclosed bracket: #attr-value [align="center" The string did not match the expected pattern.
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, matching all disabled form controls: #pseudo-ui :disabled
PASS Detached Element.querySelector: :enabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :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: :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 \r
#descendant-div2
PASS Detached Element.querySelector: Descendant combinator, whitespace characters: #descendant \r
#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 \r
> \r
#child-div2
PASS Detached Element.querySelector: Child combinator, surrounded by whitespace: #child-div1 \r
> \r
#child-div2
PASS Detached Element.querySelectorAll: Child combinator, whitespace after: #child-div1> \r
#child-div2
PASS Detached Element.querySelector: Child combinator, whitespace after: #child-div1> \r
#child-div2
PASS Detached Element.querySelectorAll: Child combinator, whitespace before: #child-div1 \r
>#child-div2
PASS Detached Element.querySelector: Child combinator, whitespace before: #child-div1 \r
>#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 \r
+ \r
#adjacent-p3
PASS Detached Element.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 \r
+ \r
#adjacent-p3
PASS Detached Element.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+ \r
#adjacent-p3
PASS Detached Element.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+ \r
#adjacent-p3
PASS Detached Element.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2 \r
+#adjacent-p3
PASS Detached Element.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2 \r
+#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 \r
~ \r
#sibling-p3
PASS Detached Element.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2 \r
~ \r
#sibling-p3
PASS Detached Element.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~ \r
#sibling-p3
PASS Detached Element.querySelector: General sibling combinator, whitespace after: #sibling-p2~ \r
#sibling-p3
PASS Detached Element.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2 \r
~#sibling-p3
PASS Detached Element.querySelector: General sibling combinator, whitespace before: #sibling-p2 \r
~#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 \r
, \r
#group strong
PASS Detached Element.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em \r
, \r
#group strong
PASS Detached Element.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em, \r
#group strong
PASS Detached Element.querySelector: Syntax, group of selectors separator, whitespace after: #group em, \r
#group strong
PASS Detached Element.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em \r
,#group strong
PASS Detached Element.querySelector: Syntax, group of selectors separator, whitespace before: #group em \r
,#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 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"]
FAIL Fragment.querySelectorAll: Attribute value selector, matching align attribute with value, unclosed bracket: #attr-value [align="center" The string did not match the expected pattern.
FAIL Fragment.querySelector: Attribute value selector, matching align attribute with value, unclosed bracket: #attr-value [align="center" The string did not match the expected pattern.
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, matching all disabled form controls: #pseudo-ui :disabled
PASS Fragment.querySelector: :enabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :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: :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 \r
#descendant-div2
PASS Fragment.querySelector: Descendant combinator, whitespace characters: #descendant \r
#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 \r
> \r
#child-div2
PASS Fragment.querySelector: Child combinator, surrounded by whitespace: #child-div1 \r
> \r
#child-div2
PASS Fragment.querySelectorAll: Child combinator, whitespace after: #child-div1> \r
#child-div2
PASS Fragment.querySelector: Child combinator, whitespace after: #child-div1> \r
#child-div2
PASS Fragment.querySelectorAll: Child combinator, whitespace before: #child-div1 \r
>#child-div2
PASS Fragment.querySelector: Child combinator, whitespace before: #child-div1 \r
>#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 \r
+ \r
#adjacent-p3
PASS Fragment.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 \r
+ \r
#adjacent-p3
PASS Fragment.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+ \r
#adjacent-p3
PASS Fragment.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+ \r
#adjacent-p3
PASS Fragment.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2 \r
+#adjacent-p3
PASS Fragment.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2 \r
+#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 \r
~ \r
#sibling-p3
PASS Fragment.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2 \r
~ \r
#sibling-p3
PASS Fragment.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~ \r
#sibling-p3
PASS Fragment.querySelector: General sibling combinator, whitespace after: #sibling-p2~ \r
#sibling-p3
PASS Fragment.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2 \r
~#sibling-p3
PASS Fragment.querySelector: General sibling combinator, whitespace before: #sibling-p2 \r
~#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 \r
, \r
#group strong
PASS Fragment.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em \r
, \r
#group strong
PASS Fragment.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em, \r
#group strong
PASS Fragment.querySelector: Syntax, group of selectors separator, whitespace after: #group em, \r
#group strong
PASS Fragment.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em \r
,#group strong
PASS Fragment.querySelector: Syntax, group of selectors separator, whitespace before: #group em \r
,#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 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"]
FAIL In-document Element.querySelectorAll: Attribute value selector, matching align attribute with value, unclosed bracket: #attr-value [align="center" The string did not match the expected pattern.
FAIL In-document Element.querySelector: Attribute value selector, matching align attribute with value, unclosed bracket: #attr-value [align="center" The string did not match the expected pattern.
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, matching all disabled form controls: #pseudo-ui :disabled
PASS In-document Element.querySelector: :enabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :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: :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 \r
#descendant-div2
PASS In-document Element.querySelector: Descendant combinator, whitespace characters: #descendant \r
#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 \r
> \r
#child-div2
PASS In-document Element.querySelector: Child combinator, surrounded by whitespace: #child-div1 \r
> \r
#child-div2
PASS In-document Element.querySelectorAll: Child combinator, whitespace after: #child-div1> \r
#child-div2
PASS In-document Element.querySelector: Child combinator, whitespace after: #child-div1> \r
#child-div2
PASS In-document Element.querySelectorAll: Child combinator, whitespace before: #child-div1 \r
>#child-div2
PASS In-document Element.querySelector: Child combinator, whitespace before: #child-div1 \r
>#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 \r
+ \r
#adjacent-p3
PASS In-document Element.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 \r
+ \r
#adjacent-p3
PASS In-document Element.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+ \r
#adjacent-p3
PASS In-document Element.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+ \r
#adjacent-p3
PASS In-document Element.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2 \r
+#adjacent-p3
PASS In-document Element.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2 \r
+#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 \r
~ \r
#sibling-p3
PASS In-document Element.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2 \r
~ \r
#sibling-p3
PASS In-document Element.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~ \r
#sibling-p3
PASS In-document Element.querySelector: General sibling combinator, whitespace after: #sibling-p2~ \r
#sibling-p3
PASS In-document Element.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2 \r
~#sibling-p3
PASS In-document Element.querySelector: General sibling combinator, whitespace before: #sibling-p2 \r
~#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 \r
, \r
#group strong
PASS In-document Element.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em \r
, \r
#group strong
PASS In-document Element.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em, \r
#group strong
PASS In-document Element.querySelector: Syntax, group of selectors separator, whitespace after: #group em, \r
#group strong
PASS In-document Element.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em \r
,#group strong
PASS In-document Element.querySelector: Syntax, group of selectors separator, whitespace before: #group em \r
,#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