Harness status: OK

Found 1975 tests

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