diff --git a/Tests/LibWeb/TestConfig.ini b/Tests/LibWeb/TestConfig.ini index 9ba1cad76d1..610b69ec9ca 100644 --- a/Tests/LibWeb/TestConfig.ini +++ b/Tests/LibWeb/TestConfig.ini @@ -29,10 +29,6 @@ Text/input/Worker/Worker-module.html Text/input/Worker/Worker-performance.html Text/input/Worker/Worker-postMessage-transfer.html -; Too slow for GCC CI -Text/input/wpt-import/css/css-flexbox/abspos/position-absolute-001.html -Text/input/wpt-import/html/rendering/pixel-length-attributes.html - ; Skipped due to assertion failures Text/input/wpt-import/html/syntax/parsing/html5lib_entities01.html Text/input/wpt-import/html/syntax/parsing/html5lib_plain-text-unsafe.html @@ -165,15 +161,3 @@ Text/input/wpt-import/css/css-backgrounds/animations/discrete-no-interpolation.h ; https://github.com/LadybirdBrowser/ladybird/issues/2314 Text/input/test-http-test-server.html - -; Too slow for CI -Text/input/wpt-import/dom/nodes/ParentNode-querySelector-All.html -Text/input/wpt-import/html/rendering/replaced-elements/svg-embedded-sizing/svg-in-object-fixed.html -Text/input/wpt-import/html/rendering/replaced-elements/svg-embedded-sizing/svg-in-object-auto.html -Text/input/wpt-import/html/rendering/replaced-elements/svg-embedded-sizing/svg-in-object-percentage.html -Text/input/wpt-import/html/rendering/replaced-elements/svg-embedded-sizing/svg-in-iframe-fixed.html -Text/input/wpt-import/html/rendering/replaced-elements/svg-embedded-sizing/svg-in-iframe-auto.html -Text/input/wpt-import/html/rendering/replaced-elements/svg-embedded-sizing/svg-in-iframe-percentage.html - -; https://github.com/LadybirdBrowser/ladybird/issues/2659 -Text/input/wpt-import/css/cssom/serialize-values.html diff --git a/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/abspos/position-absolute-001.txt b/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/abspos/position-absolute-001.txt index e88775f3a72..6a5d7c4fe7f 100644 --- a/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/abspos/position-absolute-001.txt +++ b/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/abspos/position-absolute-001.txt @@ -1,131 +1,126 @@ -Summary - Harness status: OK -Rerun - Found 120 tests 42 Pass 78 Fail -Details -Result Test Name MessagePass .flexbox 1 -Pass .flexbox 2 -Pass .flexbox 3 -Pass .flexbox 4 -Pass .flexbox 5 -Pass .flexbox 6 -Pass .flexbox 7 -Pass .flexbox 8 -Pass .flexbox 9 -Pass .flexbox 10 -Pass .flexbox 11 -Pass .flexbox 12 -Pass .flexbox 13 -Pass .flexbox 14 -Pass .flexbox 15 -Fail .flexbox 16 -Fail .flexbox 17 -Fail .flexbox 18 -Fail .flexbox 19 -Fail .flexbox 20 -Pass .flexbox 21 -Pass .flexbox 22 -Pass .flexbox 23 -Pass .flexbox 24 -Pass .flexbox 25 -Pass .flexbox 26 -Pass .flexbox 27 -Pass .flexbox 28 -Pass .flexbox 29 -Pass .flexbox 30 -Pass .flexbox 31 -Pass .flexbox 32 -Pass .flexbox 33 -Pass .flexbox 34 -Pass .flexbox 35 -Fail .flexbox 36 -Fail .flexbox 37 -Fail .flexbox 38 -Fail .flexbox 39 -Fail .flexbox 40 -Fail .flexbox 41 -Fail .flexbox 42 -Fail .flexbox 43 -Fail .flexbox 44 -Fail .flexbox 45 -Fail .flexbox 46 -Fail .flexbox 47 -Fail .flexbox 48 -Fail .flexbox 49 -Fail .flexbox 50 -Fail .flexbox 51 -Fail .flexbox 52 -Fail .flexbox 53 -Fail .flexbox 54 -Fail .flexbox 55 -Fail .flexbox 56 -Pass .flexbox 57 -Fail .flexbox 58 -Fail .flexbox 59 -Fail .flexbox 60 -Fail .flexbox 61 -Fail .flexbox 62 -Fail .flexbox 63 -Fail .flexbox 64 -Fail .flexbox 65 -Fail .flexbox 66 -Fail .flexbox 67 -Fail .flexbox 68 -Fail .flexbox 69 -Fail .flexbox 70 -Fail .flexbox 71 -Fail .flexbox 72 -Fail .flexbox 73 -Fail .flexbox 74 -Fail .flexbox 75 -Pass .flexbox 76 -Fail .flexbox 77 -Fail .flexbox 78 -Pass .flexbox 79 -Fail .flexbox 80 -Pass .flexbox 81 -Fail .flexbox 82 -Fail .flexbox 83 -Pass .flexbox 84 -Fail .flexbox 85 -Fail .flexbox 86 -Pass .flexbox 87 -Fail .flexbox 88 -Fail .flexbox 89 -Fail .flexbox 90 -Pass .flexbox 91 -Fail .flexbox 92 -Fail .flexbox 93 -Pass .flexbox 94 -Fail .flexbox 95 -Fail .flexbox 96 -Fail .flexbox 97 -Fail .flexbox 98 -Fail .flexbox 99 -Fail .flexbox 100 -Fail .flexbox 101 -Pass .flexbox 102 -Fail .flexbox 103 -Fail .flexbox 104 -Fail .flexbox 105 -Pass .flexbox 106 -Fail .flexbox 107 -Fail .flexbox 108 -Pass .flexbox 109 -Fail .flexbox 110 -Fail .flexbox 111 -Pass .flexbox 112 -Fail .flexbox 113 -Fail .flexbox 114 -Fail .flexbox 115 -Fail .flexbox 116 -Fail .flexbox 117 -Fail .flexbox 118 -Fail .flexbox 119 -Fail .flexbox 120 \ No newline at end of file +Pass .flexbox 1 +Pass .flexbox 2 +Pass .flexbox 3 +Pass .flexbox 4 +Pass .flexbox 5 +Pass .flexbox 6 +Pass .flexbox 7 +Pass .flexbox 8 +Pass .flexbox 9 +Pass .flexbox 10 +Pass .flexbox 11 +Pass .flexbox 12 +Pass .flexbox 13 +Pass .flexbox 14 +Pass .flexbox 15 +Fail .flexbox 16 +Fail .flexbox 17 +Fail .flexbox 18 +Fail .flexbox 19 +Fail .flexbox 20 +Pass .flexbox 21 +Pass .flexbox 22 +Pass .flexbox 23 +Pass .flexbox 24 +Pass .flexbox 25 +Pass .flexbox 26 +Pass .flexbox 27 +Pass .flexbox 28 +Pass .flexbox 29 +Pass .flexbox 30 +Pass .flexbox 31 +Pass .flexbox 32 +Pass .flexbox 33 +Pass .flexbox 34 +Pass .flexbox 35 +Fail .flexbox 36 +Fail .flexbox 37 +Fail .flexbox 38 +Fail .flexbox 39 +Fail .flexbox 40 +Fail .flexbox 41 +Fail .flexbox 42 +Fail .flexbox 43 +Fail .flexbox 44 +Fail .flexbox 45 +Fail .flexbox 46 +Fail .flexbox 47 +Fail .flexbox 48 +Fail .flexbox 49 +Fail .flexbox 50 +Fail .flexbox 51 +Fail .flexbox 52 +Fail .flexbox 53 +Fail .flexbox 54 +Fail .flexbox 55 +Fail .flexbox 56 +Pass .flexbox 57 +Fail .flexbox 58 +Fail .flexbox 59 +Fail .flexbox 60 +Fail .flexbox 61 +Fail .flexbox 62 +Fail .flexbox 63 +Fail .flexbox 64 +Fail .flexbox 65 +Fail .flexbox 66 +Fail .flexbox 67 +Fail .flexbox 68 +Fail .flexbox 69 +Fail .flexbox 70 +Fail .flexbox 71 +Fail .flexbox 72 +Fail .flexbox 73 +Fail .flexbox 74 +Fail .flexbox 75 +Pass .flexbox 76 +Fail .flexbox 77 +Fail .flexbox 78 +Pass .flexbox 79 +Fail .flexbox 80 +Pass .flexbox 81 +Fail .flexbox 82 +Fail .flexbox 83 +Pass .flexbox 84 +Fail .flexbox 85 +Fail .flexbox 86 +Pass .flexbox 87 +Fail .flexbox 88 +Fail .flexbox 89 +Fail .flexbox 90 +Pass .flexbox 91 +Fail .flexbox 92 +Fail .flexbox 93 +Pass .flexbox 94 +Fail .flexbox 95 +Fail .flexbox 96 +Fail .flexbox 97 +Fail .flexbox 98 +Fail .flexbox 99 +Fail .flexbox 100 +Fail .flexbox 101 +Pass .flexbox 102 +Fail .flexbox 103 +Fail .flexbox 104 +Fail .flexbox 105 +Pass .flexbox 106 +Fail .flexbox 107 +Fail .flexbox 108 +Pass .flexbox 109 +Fail .flexbox 110 +Fail .flexbox 111 +Pass .flexbox 112 +Fail .flexbox 113 +Fail .flexbox 114 +Fail .flexbox 115 +Fail .flexbox 116 +Fail .flexbox 117 +Fail .flexbox 118 +Fail .flexbox 119 +Fail .flexbox 120 \ No newline at end of file diff --git a/Tests/LibWeb/Text/expected/wpt-import/css/cssom/serialize-values.txt b/Tests/LibWeb/Text/expected/wpt-import/css/cssom/serialize-values.txt index 4aaae3173c5..a7b5f000635 100644 --- a/Tests/LibWeb/Text/expected/wpt-import/css/cssom/serialize-values.txt +++ b/Tests/LibWeb/Text/expected/wpt-import/css/cssom/serialize-values.txt @@ -1,698 +1,693 @@ -Summary - Harness status: OK -Rerun - Found 687 tests -478 Pass -209 Fail -Details -Result Test Name MessagePass background-attachment: scroll -Pass background-attachment: fixed -Pass background-attachment: inherit -Pass background-color: black -Pass background-color: red -Pass background-color: rgb(50, 75, 100) -Fail background-color: rgba(5, 7, 10, 0.5) -Pass background-color: transparent -Pass background-color: inherit -Pass background-image: url("http://localhost/") -Pass background-image: url(http://localhost/) -Pass background-image: none -Pass background-image: inherit -Fail background-position: 5% 5% -Fail background-position: 5% .5% -Fail background-position: 5% -5% -Fail background-position: 5% -.5% -Fail background-position: 5% 0px -Fail background-position: 5% 1px -Fail background-position: 5% .1em -Fail background-position: 5% -0px -Fail background-position: 5% -1px -Fail background-position: 5% -.1em -Fail background-position: 5% top -Fail background-position: 5% center -Fail background-position: 5% bottom -Fail background-position: .5% 5% -Fail background-position: .5% .5% -Fail background-position: .5% -5% -Fail background-position: .5% -.5% -Fail background-position: .5% 0px -Fail background-position: .5% 1px -Fail background-position: .5% .1em -Fail background-position: .5% -0px -Fail background-position: .5% -1px -Fail background-position: .5% -.1em -Fail background-position: .5% top -Fail background-position: .5% center -Fail background-position: .5% bottom -Fail background-position: -5% 5% -Fail background-position: -5% .5% -Fail background-position: -5% -5% -Fail background-position: -5% -.5% -Fail background-position: -5% 0px -Fail background-position: -5% 1px -Fail background-position: -5% .1em -Fail background-position: -5% -0px -Fail background-position: -5% -1px -Fail background-position: -5% -.1em -Fail background-position: -5% top -Fail background-position: -5% center -Fail background-position: -5% bottom -Fail background-position: -.5% 5% -Fail background-position: -.5% .5% -Fail background-position: -.5% -5% -Fail background-position: -.5% -.5% -Fail background-position: -.5% 0px -Fail background-position: -.5% 1px -Fail background-position: -.5% .1em -Fail background-position: -.5% -0px -Fail background-position: -.5% -1px -Fail background-position: -.5% -.1em -Fail background-position: -.5% top -Fail background-position: -.5% center -Fail background-position: -.5% bottom -Fail background-position: 0px 5% -Fail background-position: 0px .5% -Fail background-position: 0px -5% -Fail background-position: 0px -.5% -Fail background-position: 0px 0px -Fail background-position: 0px 1px -Fail background-position: 0px .1em -Fail background-position: 0px -0px -Fail background-position: 0px -1px -Fail background-position: 0px -.1em -Fail background-position: 0px top -Fail background-position: 0px center -Fail background-position: 0px bottom -Fail background-position: 1px 5% -Fail background-position: 1px .5% -Fail background-position: 1px -5% -Fail background-position: 1px -.5% -Fail background-position: 1px 0px -Fail background-position: 1px 1px -Fail background-position: 1px .1em -Fail background-position: 1px -0px -Fail background-position: 1px -1px -Fail background-position: 1px -.1em -Fail background-position: 1px top -Fail background-position: 1px center -Fail background-position: 1px bottom -Fail background-position: .1em 5% -Fail background-position: .1em .5% -Fail background-position: .1em -5% -Fail background-position: .1em -.5% -Fail background-position: .1em 0px -Fail background-position: .1em 1px -Fail background-position: .1em .1em -Fail background-position: .1em -0px -Fail background-position: .1em -1px -Fail background-position: .1em -.1em -Fail background-position: .1em top -Fail background-position: .1em center -Fail background-position: .1em bottom -Fail background-position: -0px 5% -Fail background-position: -0px .5% -Fail background-position: -0px -5% -Fail background-position: -0px -.5% -Fail background-position: -0px 0px -Fail background-position: -0px 1px -Fail background-position: -0px .1em -Fail background-position: -0px -0px -Fail background-position: -0px -1px -Fail background-position: -0px -.1em -Fail background-position: -0px top -Fail background-position: -0px center -Fail background-position: -0px bottom -Fail background-position: -1px 5% -Fail background-position: -1px .5% -Fail background-position: -1px -5% -Fail background-position: -1px -.5% -Fail background-position: -1px 0px -Fail background-position: -1px 1px -Fail background-position: -1px .1em -Fail background-position: -1px -0px -Fail background-position: -1px -1px -Fail background-position: -1px -.1em -Fail background-position: -1px top -Fail background-position: -1px center -Fail background-position: -1px bottom -Fail background-position: -.1em 5% -Fail background-position: -.1em .5% -Fail background-position: -.1em -5% -Fail background-position: -.1em -.5% -Fail background-position: -.1em 0px -Fail background-position: -.1em 1px -Fail background-position: -.1em .1em -Fail background-position: -.1em -0px -Fail background-position: -.1em -1px -Fail background-position: -.1em -.1em -Fail background-position: -.1em top -Fail background-position: -.1em center -Fail background-position: -.1em bottom -Fail background-position: left 5% -Fail background-position: left .5% -Fail background-position: left -5% -Fail background-position: left -.5% -Fail background-position: left 0px -Fail background-position: left 1px -Fail background-position: left .1em -Fail background-position: left -0px -Fail background-position: left -1px -Fail background-position: left -.1em -Fail background-position: left top -Fail background-position: left center -Fail background-position: left bottom -Fail background-position: center 5% -Fail background-position: center .5% -Fail background-position: center -5% -Fail background-position: center -.5% -Fail background-position: center 0px -Fail background-position: center 1px -Fail background-position: center .1em -Fail background-position: center -0px -Fail background-position: center -1px -Fail background-position: center -.1em -Fail background-position: center top -Fail background-position: center center -Fail background-position: center bottom -Fail background-position: right 5% -Fail background-position: right .5% -Fail background-position: right -5% -Fail background-position: right -.5% -Fail background-position: right 0px -Fail background-position: right 1px -Fail background-position: right .1em -Fail background-position: right -0px -Fail background-position: right -1px -Fail background-position: right -.1em -Fail background-position: right top -Fail background-position: right center -Fail background-position: right bottom -Pass background-position: inherit -Pass background-repeat: repeat -Pass background-repeat: repeat-x -Pass background-repeat: repeat-y -Pass background-repeat: no-repeat -Pass background-repeat: inherit -Pass border-collapse: collapse -Pass border-collapse: separate -Pass border-collapse: inherit -Pass border-spacing: 0px -Pass border-spacing: 1px -Pass border-spacing: .1em -Pass border-spacing: inherit -Pass border-top-color: black -Pass border-top-color: red -Pass border-top-color: rgb(50, 75, 100) -Fail border-top-color: rgba(5, 7, 10, 0.5) -Pass border-top-color: transparent -Pass border-top-color: inherit -Pass border-right-color: black -Pass border-right-color: red -Pass border-right-color: rgb(50, 75, 100) -Fail border-right-color: rgba(5, 7, 10, 0.5) -Pass border-right-color: transparent -Pass border-right-color: inherit -Pass border-bottom-color: black -Pass border-bottom-color: red -Pass border-bottom-color: rgb(50, 75, 100) -Fail border-bottom-color: rgba(5, 7, 10, 0.5) -Pass border-bottom-color: transparent -Pass border-bottom-color: inherit -Pass border-left-color: black -Pass border-left-color: red -Pass border-left-color: rgb(50, 75, 100) -Fail border-left-color: rgba(5, 7, 10, 0.5) -Pass border-left-color: transparent -Pass border-left-color: inherit -Pass border-top-style: none -Pass border-top-style: hidden -Pass border-top-style: dotted -Pass border-top-style: dashed -Pass border-top-style: solid -Pass border-top-style: double -Pass border-top-style: groove -Pass border-top-style: ridge -Pass border-top-style: inset -Pass border-top-style: outset -Pass border-top-style: inherit -Pass border-right-style: none -Pass border-right-style: hidden -Pass border-right-style: dotted -Pass border-right-style: dashed -Pass border-right-style: solid -Pass border-right-style: double -Pass border-right-style: groove -Pass border-right-style: ridge -Pass border-right-style: inset -Pass border-right-style: outset -Pass border-right-style: inherit -Pass border-bottom-style: none -Pass border-bottom-style: hidden -Pass border-bottom-style: dotted -Pass border-bottom-style: dashed -Pass border-bottom-style: solid -Pass border-bottom-style: double -Pass border-bottom-style: groove -Pass border-bottom-style: ridge -Pass border-bottom-style: inset -Pass border-bottom-style: outset -Pass border-bottom-style: inherit -Pass border-left-style: none -Pass border-left-style: hidden -Pass border-left-style: dotted -Pass border-left-style: dashed -Pass border-left-style: solid -Pass border-left-style: double -Pass border-left-style: groove -Pass border-left-style: ridge -Pass border-left-style: inset -Pass border-left-style: outset -Pass border-left-style: inherit -Pass border-top-width: thin -Pass border-top-width: medium -Pass border-top-width: thick -Pass border-top-width: 0px -Pass border-top-width: 1px -Pass border-top-width: .1em -Pass border-top-width: inherit -Pass border-right-width: thin -Pass border-right-width: medium -Pass border-right-width: thick -Pass border-right-width: 0px -Pass border-right-width: 1px -Pass border-right-width: .1em -Pass border-right-width: inherit -Pass border-bottom-width: thin -Pass border-bottom-width: medium -Pass border-bottom-width: thick -Pass border-bottom-width: 0px -Pass border-bottom-width: 1px -Pass border-bottom-width: .1em -Pass border-bottom-width: inherit -Pass border-left-width: thin -Pass border-left-width: medium -Pass border-left-width: thick -Pass border-left-width: 0px -Pass border-left-width: 1px -Pass border-left-width: .1em -Pass border-left-width: inherit -Pass bottom: 0px -Pass bottom: 1px -Pass bottom: .1em -Pass bottom: 5% -Pass bottom: .5% -Pass bottom: auto -Pass bottom: inherit -Pass caption-side: top -Pass caption-side: bottom -Pass caption-side: inherit -Pass clear: none -Pass clear: left -Pass clear: right -Pass clear: both -Pass clear: inherit -Pass clip: rect(1em, auto, 0.5px, 2000em) -Pass clip: auto -Pass clip: inherit -Pass color: black -Pass color: red -Pass color: rgb(50, 75, 100) -Fail color: rgba(5, 7, 10, 0.5) -Pass color: inherit -Pass content: normal -Pass content: none -Pass content: "string" -Pass content: 'string' -Fail content: url("http://localhost/") -Fail content: url(http://localhost/) -Pass content: counter(par-num) -Pass content: counter(par-num, decimal) -Pass content: counter(par-num, upper-roman) -Pass content: attr(foo-bar) -Pass content: attr(foo_bar) -Fail content: attr(|bar) -Fail content: attr( |bar ) -Pass content: attr(foo-bar, "fallback") -Pass content: attr(foo_bar, "fallback") -Fail content: attr(|bar, "fallback") -Fail content: attr(foo, "") -Fail content: attr( |foo , "" ) -Pass content: inherit -Pass cursor: auto -Pass cursor: crosshair -Pass cursor: default -Pass cursor: pointer -Pass cursor: move -Pass cursor: e-resize -Pass cursor: ne-resize -Pass cursor: nw-resize -Pass cursor: n-resize -Pass cursor: se-resize -Pass cursor: sw-resize -Pass cursor: s-resize -Pass cursor: w-resize -Pass cursor: text -Pass cursor: wait -Pass cursor: help -Pass cursor: progress -Pass cursor: inherit -Pass direction: ltr -Pass direction: rtl -Pass direction: inherit -Pass display: inline -Pass display: block -Pass display: list-item -Pass display: inline-block -Pass display: table -Pass display: inline-table -Pass display: table-row-group -Pass display: table-header-group -Pass display: table-footer-group -Pass display: table-row -Pass display: table-column-group -Pass display: table-column -Pass display: table-cell -Pass display: table-caption -Pass display: none -Pass display: inherit -Fail empty-cells: show -Fail empty-cells: hide -Fail empty-cells: inherit -Pass float: left -Pass float: right -Pass float: none -Pass float: inherit -Pass font-family: Arial -Pass font-family: 'Lucida Grande' -Pass font-family: serif -Pass font-family: sans-serif -Pass font-family: inherit -Pass font-size: xx-small -Pass font-size: x-small -Pass font-size: small -Pass font-size: medium -Pass font-size: large -Pass font-size: x-large -Pass font-size: xx-large -Pass font-size: larger -Pass font-size: smaller -Pass font-size: 0px -Pass font-size: 1px -Pass font-size: .1em -Pass font-size: 5% -Pass font-size: .5% -Pass font-size: inherit -Pass font-style: normal -Pass font-style: italic -Pass font-style: oblique -Pass font-style: inherit -Pass font-variant: normal -Pass font-variant: small-caps -Pass font-variant: inherit -Pass font-weight: normal -Pass font-weight: bold -Pass font-weight: bolder -Pass font-weight: lighter -Pass font-weight: 100 -Pass font-weight: 200 -Pass font-weight: 300 -Pass font-weight: 400 -Pass font-weight: 500 -Pass font-weight: 600 -Pass font-weight: 700 -Pass font-weight: 800 -Pass font-weight: 900 -Pass font-weight: inherit -Pass height: 0px -Pass height: 1px -Pass height: .1em -Pass height: 5% -Pass height: .5% -Pass height: auto -Pass height: inherit -Pass left: 0px -Pass left: 1px -Pass left: .1em -Pass left: 5% -Pass left: .5% -Pass left: auto -Pass left: inherit -Pass letter-spacing: normal -Pass letter-spacing: 0px -Pass letter-spacing: 1px -Pass letter-spacing: .1em -Pass letter-spacing: inherit -Pass line-height: normal -Pass line-height: 0 -Pass line-height: -0 -Pass line-height: 1000 -Pass line-height: 0.9 -Pass line-height: 0px -Pass line-height: 1px -Pass line-height: .1em -Pass line-height: 5% -Pass line-height: .5% -Pass line-height: inherit -Pass list-style-image: url("http://localhost/") -Pass list-style-image: url(http://localhost/) -Pass list-style-image: none -Pass list-style-image: inherit -Pass list-style-position: inside -Pass list-style-position: outside -Pass list-style-position: inherit -Pass list-style-type: disc -Pass list-style-type: circle -Pass list-style-type: square -Pass list-style-type: disclosure-open -Pass list-style-type: disclosure-closed -Pass list-style-type: decimal -Pass list-style-type: decimal-leading-zero -Pass list-style-type: lower-roman -Pass list-style-type: upper-roman -Fail list-style-type: lower-greek -Pass list-style-type: lower-latin -Pass list-style-type: upper-latin -Fail list-style-type: armenian -Fail list-style-type: georgian -Pass list-style-type: lower-alpha -Pass list-style-type: upper-alpha -Pass list-style-type: none -Pass list-style-type: inherit -Pass margin-right: 0px -Pass margin-right: 1px -Pass margin-right: .1em -Pass margin-right: 5% -Pass margin-right: .5% -Pass margin-right: auto -Pass margin-right: inherit -Pass margin-left: 0px -Pass margin-left: 1px -Pass margin-left: .1em -Pass margin-left: 5% -Pass margin-left: .5% -Pass margin-left: auto -Pass margin-left: inherit -Pass margin-top: 0px -Pass margin-top: 1px -Pass margin-top: .1em -Pass margin-top: 5% -Pass margin-top: .5% -Pass margin-top: auto -Pass margin-top: inherit -Pass margin-bottom: 0px -Pass margin-bottom: 1px -Pass margin-bottom: .1em -Pass margin-bottom: 5% -Pass margin-bottom: .5% -Pass margin-bottom: auto -Pass margin-bottom: inherit -Pass max-height: 0px -Pass max-height: 1px -Pass max-height: .1em -Pass max-height: 5% -Pass max-height: .5% -Pass max-height: none -Pass max-height: inherit -Pass max-width: 0px -Pass max-width: 1px -Pass max-width: .1em -Pass max-width: 5% -Pass max-width: .5% -Pass max-width: none -Pass max-width: inherit -Pass min-height: 0px -Pass min-height: 1px -Pass min-height: .1em -Pass min-height: 5% -Pass min-height: .5% -Pass min-height: inherit -Pass min-width: 0px -Pass min-width: 1px -Pass min-width: .1em -Pass min-width: 5% -Pass min-width: .5% -Pass min-width: inherit -Fail orphans: 101 -Fail orphans: inherit -Pass outline-color: black -Pass outline-color: red -Pass outline-color: rgb(50, 75, 100) -Fail outline-color: rgba(5, 7, 10, 0.5) -Fail outline-color: invert -Pass outline-color: inherit -Pass outline-style: none -Pass outline-style: dotted -Pass outline-style: dashed -Pass outline-style: solid -Pass outline-style: double -Pass outline-style: groove -Pass outline-style: ridge -Pass outline-style: inset -Pass outline-style: outset -Pass outline-style: inherit -Pass outline-width: thin -Pass outline-width: medium -Pass outline-width: thick -Pass outline-width: 0px -Pass outline-width: 1px -Pass outline-width: .1em -Pass outline-width: inherit -Pass overflow: visible -Pass overflow: hidden -Pass overflow: scroll -Pass overflow: auto -Pass overflow: inherit -Pass padding-top: 0px -Pass padding-top: 1px -Pass padding-top: .1em -Pass padding-top: 5% -Pass padding-top: .5% -Pass padding-top: inherit -Pass padding-right: 0px -Pass padding-right: 1px -Pass padding-right: .1em -Pass padding-right: 5% -Pass padding-right: .5% -Pass padding-right: inherit -Pass padding-bottom: 0px -Pass padding-bottom: 1px -Pass padding-bottom: .1em -Pass padding-bottom: 5% -Pass padding-bottom: .5% -Pass padding-bottom: inherit -Pass padding-left: 0px -Pass padding-left: 1px -Pass padding-left: .1em -Pass padding-left: 5% -Pass padding-left: .5% -Pass padding-left: inherit -Fail page-break-after: auto -Fail page-break-after: always -Fail page-break-after: avoid -Fail page-break-after: left -Fail page-break-after: right -Fail page-break-after: inherit -Fail page-break-before: auto -Fail page-break-before: always -Fail page-break-before: avoid -Fail page-break-before: left -Fail page-break-before: right -Fail page-break-before: inherit -Fail page-break-inside: avoid -Fail page-break-inside: auto -Fail page-break-inside: inherit -Pass position: static -Pass position: relative -Pass position: absolute -Pass position: fixed -Pass position: inherit -Pass right: 0px -Pass right: 1px -Pass right: .1em -Pass right: 5% -Pass right: .5% -Pass right: auto -Pass right: inherit -Pass table-layout: auto -Pass table-layout: fixed -Pass table-layout: inherit -Pass text-align: left -Pass text-align: right -Pass text-align: center -Pass text-align: justify -Pass text-align: inherit -Pass text-decoration: none -Pass text-decoration: underline -Pass text-decoration: overline -Pass text-decoration: line-through -Pass text-decoration: blink -Pass text-decoration: inherit -Pass text-indent: 0px -Pass text-indent: 1px -Pass text-indent: .1em -Pass text-indent: 5% -Pass text-indent: .5% -Pass text-indent: inherit -Pass text-transform: capitalize -Pass text-transform: uppercase -Pass text-transform: lowercase -Pass text-transform: none -Pass text-transform: inherit -Pass top: 0px -Pass top: 1px -Pass top: .1em -Pass top: 5% -Pass top: .5% -Pass top: auto -Pass top: inherit -Pass unicode-bidi: normal -Pass unicode-bidi: embed -Pass unicode-bidi: bidi-override -Pass unicode-bidi: inherit -Pass vertical-align: baseline -Pass vertical-align: sub -Pass vertical-align: super -Pass vertical-align: top -Pass vertical-align: text-top -Pass vertical-align: middle -Pass vertical-align: bottom -Pass vertical-align: text-bottom -Pass vertical-align: 5% -Pass vertical-align: .5% -Pass vertical-align: 0px -Pass vertical-align: 1px -Pass vertical-align: .1em -Pass vertical-align: inherit -Pass visibility: visible -Pass visibility: hidden -Pass visibility: collapse -Pass visibility: inherit -Pass white-space: normal -Pass white-space: pre -Pass white-space: nowrap -Pass white-space: pre-wrap -Pass white-space: pre-line -Pass white-space: inherit -Fail widows: 101 -Fail widows: inherit -Pass width: 0px -Pass width: 1px -Pass width: .1em -Pass width: 5% -Pass width: .5% -Pass width: auto -Pass width: inherit -Pass word-spacing: normal -Pass word-spacing: 0px -Pass word-spacing: 1px -Pass word-spacing: .1em -Pass word-spacing: inherit -Pass z-index: auto -Pass z-index: 0 -Pass z-index: 101 -Pass z-index: -51 -Pass z-index: inherit \ No newline at end of file +485 Pass +202 Fail +Pass background-attachment: scroll +Pass background-attachment: fixed +Pass background-attachment: inherit +Pass background-color: black +Pass background-color: red +Pass background-color: rgb(50, 75, 100) +Pass background-color: rgba(5, 7, 10, 0.5) +Pass background-color: transparent +Pass background-color: inherit +Pass background-image: url("http://localhost/") +Pass background-image: url(http://localhost/) +Pass background-image: none +Pass background-image: inherit +Fail background-position: 5% 5% +Fail background-position: 5% .5% +Fail background-position: 5% -5% +Fail background-position: 5% -.5% +Fail background-position: 5% 0px +Fail background-position: 5% 1px +Fail background-position: 5% .1em +Fail background-position: 5% -0px +Fail background-position: 5% -1px +Fail background-position: 5% -.1em +Fail background-position: 5% top +Fail background-position: 5% center +Fail background-position: 5% bottom +Fail background-position: .5% 5% +Fail background-position: .5% .5% +Fail background-position: .5% -5% +Fail background-position: .5% -.5% +Fail background-position: .5% 0px +Fail background-position: .5% 1px +Fail background-position: .5% .1em +Fail background-position: .5% -0px +Fail background-position: .5% -1px +Fail background-position: .5% -.1em +Fail background-position: .5% top +Fail background-position: .5% center +Fail background-position: .5% bottom +Fail background-position: -5% 5% +Fail background-position: -5% .5% +Fail background-position: -5% -5% +Fail background-position: -5% -.5% +Fail background-position: -5% 0px +Fail background-position: -5% 1px +Fail background-position: -5% .1em +Fail background-position: -5% -0px +Fail background-position: -5% -1px +Fail background-position: -5% -.1em +Fail background-position: -5% top +Fail background-position: -5% center +Fail background-position: -5% bottom +Fail background-position: -.5% 5% +Fail background-position: -.5% .5% +Fail background-position: -.5% -5% +Fail background-position: -.5% -.5% +Fail background-position: -.5% 0px +Fail background-position: -.5% 1px +Fail background-position: -.5% .1em +Fail background-position: -.5% -0px +Fail background-position: -.5% -1px +Fail background-position: -.5% -.1em +Fail background-position: -.5% top +Fail background-position: -.5% center +Fail background-position: -.5% bottom +Fail background-position: 0px 5% +Fail background-position: 0px .5% +Fail background-position: 0px -5% +Fail background-position: 0px -.5% +Fail background-position: 0px 0px +Fail background-position: 0px 1px +Fail background-position: 0px .1em +Fail background-position: 0px -0px +Fail background-position: 0px -1px +Fail background-position: 0px -.1em +Fail background-position: 0px top +Fail background-position: 0px center +Fail background-position: 0px bottom +Fail background-position: 1px 5% +Fail background-position: 1px .5% +Fail background-position: 1px -5% +Fail background-position: 1px -.5% +Fail background-position: 1px 0px +Fail background-position: 1px 1px +Fail background-position: 1px .1em +Fail background-position: 1px -0px +Fail background-position: 1px -1px +Fail background-position: 1px -.1em +Fail background-position: 1px top +Fail background-position: 1px center +Fail background-position: 1px bottom +Fail background-position: .1em 5% +Fail background-position: .1em .5% +Fail background-position: .1em -5% +Fail background-position: .1em -.5% +Fail background-position: .1em 0px +Fail background-position: .1em 1px +Fail background-position: .1em .1em +Fail background-position: .1em -0px +Fail background-position: .1em -1px +Fail background-position: .1em -.1em +Fail background-position: .1em top +Fail background-position: .1em center +Fail background-position: .1em bottom +Fail background-position: -0px 5% +Fail background-position: -0px .5% +Fail background-position: -0px -5% +Fail background-position: -0px -.5% +Fail background-position: -0px 0px +Fail background-position: -0px 1px +Fail background-position: -0px .1em +Fail background-position: -0px -0px +Fail background-position: -0px -1px +Fail background-position: -0px -.1em +Fail background-position: -0px top +Fail background-position: -0px center +Fail background-position: -0px bottom +Fail background-position: -1px 5% +Fail background-position: -1px .5% +Fail background-position: -1px -5% +Fail background-position: -1px -.5% +Fail background-position: -1px 0px +Fail background-position: -1px 1px +Fail background-position: -1px .1em +Fail background-position: -1px -0px +Fail background-position: -1px -1px +Fail background-position: -1px -.1em +Fail background-position: -1px top +Fail background-position: -1px center +Fail background-position: -1px bottom +Fail background-position: -.1em 5% +Fail background-position: -.1em .5% +Fail background-position: -.1em -5% +Fail background-position: -.1em -.5% +Fail background-position: -.1em 0px +Fail background-position: -.1em 1px +Fail background-position: -.1em .1em +Fail background-position: -.1em -0px +Fail background-position: -.1em -1px +Fail background-position: -.1em -.1em +Fail background-position: -.1em top +Fail background-position: -.1em center +Fail background-position: -.1em bottom +Fail background-position: left 5% +Fail background-position: left .5% +Fail background-position: left -5% +Fail background-position: left -.5% +Fail background-position: left 0px +Fail background-position: left 1px +Fail background-position: left .1em +Fail background-position: left -0px +Fail background-position: left -1px +Fail background-position: left -.1em +Fail background-position: left top +Fail background-position: left center +Fail background-position: left bottom +Fail background-position: center 5% +Fail background-position: center .5% +Fail background-position: center -5% +Fail background-position: center -.5% +Fail background-position: center 0px +Fail background-position: center 1px +Fail background-position: center .1em +Fail background-position: center -0px +Fail background-position: center -1px +Fail background-position: center -.1em +Fail background-position: center top +Fail background-position: center center +Fail background-position: center bottom +Fail background-position: right 5% +Fail background-position: right .5% +Fail background-position: right -5% +Fail background-position: right -.5% +Fail background-position: right 0px +Fail background-position: right 1px +Fail background-position: right .1em +Fail background-position: right -0px +Fail background-position: right -1px +Fail background-position: right -.1em +Fail background-position: right top +Fail background-position: right center +Fail background-position: right bottom +Pass background-position: inherit +Pass background-repeat: repeat +Pass background-repeat: repeat-x +Pass background-repeat: repeat-y +Pass background-repeat: no-repeat +Pass background-repeat: inherit +Pass border-collapse: collapse +Pass border-collapse: separate +Pass border-collapse: inherit +Pass border-spacing: 0px +Pass border-spacing: 1px +Pass border-spacing: .1em +Pass border-spacing: inherit +Pass border-top-color: black +Pass border-top-color: red +Pass border-top-color: rgb(50, 75, 100) +Pass border-top-color: rgba(5, 7, 10, 0.5) +Pass border-top-color: transparent +Pass border-top-color: inherit +Pass border-right-color: black +Pass border-right-color: red +Pass border-right-color: rgb(50, 75, 100) +Pass border-right-color: rgba(5, 7, 10, 0.5) +Pass border-right-color: transparent +Pass border-right-color: inherit +Pass border-bottom-color: black +Pass border-bottom-color: red +Pass border-bottom-color: rgb(50, 75, 100) +Pass border-bottom-color: rgba(5, 7, 10, 0.5) +Pass border-bottom-color: transparent +Pass border-bottom-color: inherit +Pass border-left-color: black +Pass border-left-color: red +Pass border-left-color: rgb(50, 75, 100) +Pass border-left-color: rgba(5, 7, 10, 0.5) +Pass border-left-color: transparent +Pass border-left-color: inherit +Pass border-top-style: none +Pass border-top-style: hidden +Pass border-top-style: dotted +Pass border-top-style: dashed +Pass border-top-style: solid +Pass border-top-style: double +Pass border-top-style: groove +Pass border-top-style: ridge +Pass border-top-style: inset +Pass border-top-style: outset +Pass border-top-style: inherit +Pass border-right-style: none +Pass border-right-style: hidden +Pass border-right-style: dotted +Pass border-right-style: dashed +Pass border-right-style: solid +Pass border-right-style: double +Pass border-right-style: groove +Pass border-right-style: ridge +Pass border-right-style: inset +Pass border-right-style: outset +Pass border-right-style: inherit +Pass border-bottom-style: none +Pass border-bottom-style: hidden +Pass border-bottom-style: dotted +Pass border-bottom-style: dashed +Pass border-bottom-style: solid +Pass border-bottom-style: double +Pass border-bottom-style: groove +Pass border-bottom-style: ridge +Pass border-bottom-style: inset +Pass border-bottom-style: outset +Pass border-bottom-style: inherit +Pass border-left-style: none +Pass border-left-style: hidden +Pass border-left-style: dotted +Pass border-left-style: dashed +Pass border-left-style: solid +Pass border-left-style: double +Pass border-left-style: groove +Pass border-left-style: ridge +Pass border-left-style: inset +Pass border-left-style: outset +Pass border-left-style: inherit +Pass border-top-width: thin +Pass border-top-width: medium +Pass border-top-width: thick +Pass border-top-width: 0px +Pass border-top-width: 1px +Pass border-top-width: .1em +Pass border-top-width: inherit +Pass border-right-width: thin +Pass border-right-width: medium +Pass border-right-width: thick +Pass border-right-width: 0px +Pass border-right-width: 1px +Pass border-right-width: .1em +Pass border-right-width: inherit +Pass border-bottom-width: thin +Pass border-bottom-width: medium +Pass border-bottom-width: thick +Pass border-bottom-width: 0px +Pass border-bottom-width: 1px +Pass border-bottom-width: .1em +Pass border-bottom-width: inherit +Pass border-left-width: thin +Pass border-left-width: medium +Pass border-left-width: thick +Pass border-left-width: 0px +Pass border-left-width: 1px +Pass border-left-width: .1em +Pass border-left-width: inherit +Pass bottom: 0px +Pass bottom: 1px +Pass bottom: .1em +Pass bottom: 5% +Pass bottom: .5% +Pass bottom: auto +Pass bottom: inherit +Pass caption-side: top +Pass caption-side: bottom +Pass caption-side: inherit +Pass clear: none +Pass clear: left +Pass clear: right +Pass clear: both +Pass clear: inherit +Pass clip: rect(1em, auto, 0.5px, 2000em) +Pass clip: auto +Pass clip: inherit +Pass color: black +Pass color: red +Pass color: rgb(50, 75, 100) +Pass color: rgba(5, 7, 10, 0.5) +Pass color: inherit +Pass content: normal +Pass content: none +Pass content: "string" +Pass content: 'string' +Fail content: url("http://localhost/") +Fail content: url(http://localhost/) +Pass content: counter(par-num) +Pass content: counter(par-num, decimal) +Pass content: counter(par-num, upper-roman) +Pass content: attr(foo-bar) +Pass content: attr(foo_bar) +Fail content: attr(|bar) +Fail content: attr( |bar ) +Pass content: attr(foo-bar, "fallback") +Pass content: attr(foo_bar, "fallback") +Fail content: attr(|bar, "fallback") +Fail content: attr(foo, "") +Fail content: attr( |foo , "" ) +Pass content: inherit +Pass cursor: auto +Pass cursor: crosshair +Pass cursor: default +Pass cursor: pointer +Pass cursor: move +Pass cursor: e-resize +Pass cursor: ne-resize +Pass cursor: nw-resize +Pass cursor: n-resize +Pass cursor: se-resize +Pass cursor: sw-resize +Pass cursor: s-resize +Pass cursor: w-resize +Pass cursor: text +Pass cursor: wait +Pass cursor: help +Pass cursor: progress +Pass cursor: inherit +Pass direction: ltr +Pass direction: rtl +Pass direction: inherit +Pass display: inline +Pass display: block +Pass display: list-item +Pass display: inline-block +Pass display: table +Pass display: inline-table +Pass display: table-row-group +Pass display: table-header-group +Pass display: table-footer-group +Pass display: table-row +Pass display: table-column-group +Pass display: table-column +Pass display: table-cell +Pass display: table-caption +Pass display: none +Pass display: inherit +Fail empty-cells: show +Fail empty-cells: hide +Fail empty-cells: inherit +Pass float: left +Pass float: right +Pass float: none +Pass float: inherit +Pass font-family: Arial +Pass font-family: 'Lucida Grande' +Pass font-family: serif +Pass font-family: sans-serif +Pass font-family: inherit +Pass font-size: xx-small +Pass font-size: x-small +Pass font-size: small +Pass font-size: medium +Pass font-size: large +Pass font-size: x-large +Pass font-size: xx-large +Pass font-size: larger +Pass font-size: smaller +Pass font-size: 0px +Pass font-size: 1px +Pass font-size: .1em +Pass font-size: 5% +Pass font-size: .5% +Pass font-size: inherit +Pass font-style: normal +Pass font-style: italic +Pass font-style: oblique +Pass font-style: inherit +Pass font-variant: normal +Pass font-variant: small-caps +Pass font-variant: inherit +Pass font-weight: normal +Pass font-weight: bold +Pass font-weight: bolder +Pass font-weight: lighter +Pass font-weight: 100 +Pass font-weight: 200 +Pass font-weight: 300 +Pass font-weight: 400 +Pass font-weight: 500 +Pass font-weight: 600 +Pass font-weight: 700 +Pass font-weight: 800 +Pass font-weight: 900 +Pass font-weight: inherit +Pass height: 0px +Pass height: 1px +Pass height: .1em +Pass height: 5% +Pass height: .5% +Pass height: auto +Pass height: inherit +Pass left: 0px +Pass left: 1px +Pass left: .1em +Pass left: 5% +Pass left: .5% +Pass left: auto +Pass left: inherit +Pass letter-spacing: normal +Pass letter-spacing: 0px +Pass letter-spacing: 1px +Pass letter-spacing: .1em +Pass letter-spacing: inherit +Pass line-height: normal +Pass line-height: 0 +Pass line-height: -0 +Pass line-height: 1000 +Pass line-height: 0.9 +Pass line-height: 0px +Pass line-height: 1px +Pass line-height: .1em +Pass line-height: 5% +Pass line-height: .5% +Pass line-height: inherit +Pass list-style-image: url("http://localhost/") +Pass list-style-image: url(http://localhost/) +Pass list-style-image: none +Pass list-style-image: inherit +Pass list-style-position: inside +Pass list-style-position: outside +Pass list-style-position: inherit +Pass list-style-type: disc +Pass list-style-type: circle +Pass list-style-type: square +Pass list-style-type: disclosure-open +Pass list-style-type: disclosure-closed +Pass list-style-type: decimal +Pass list-style-type: decimal-leading-zero +Pass list-style-type: lower-roman +Pass list-style-type: upper-roman +Fail list-style-type: lower-greek +Pass list-style-type: lower-latin +Pass list-style-type: upper-latin +Fail list-style-type: armenian +Fail list-style-type: georgian +Pass list-style-type: lower-alpha +Pass list-style-type: upper-alpha +Pass list-style-type: none +Pass list-style-type: inherit +Pass margin-right: 0px +Pass margin-right: 1px +Pass margin-right: .1em +Pass margin-right: 5% +Pass margin-right: .5% +Pass margin-right: auto +Pass margin-right: inherit +Pass margin-left: 0px +Pass margin-left: 1px +Pass margin-left: .1em +Pass margin-left: 5% +Pass margin-left: .5% +Pass margin-left: auto +Pass margin-left: inherit +Pass margin-top: 0px +Pass margin-top: 1px +Pass margin-top: .1em +Pass margin-top: 5% +Pass margin-top: .5% +Pass margin-top: auto +Pass margin-top: inherit +Pass margin-bottom: 0px +Pass margin-bottom: 1px +Pass margin-bottom: .1em +Pass margin-bottom: 5% +Pass margin-bottom: .5% +Pass margin-bottom: auto +Pass margin-bottom: inherit +Pass max-height: 0px +Pass max-height: 1px +Pass max-height: .1em +Pass max-height: 5% +Pass max-height: .5% +Pass max-height: none +Pass max-height: inherit +Pass max-width: 0px +Pass max-width: 1px +Pass max-width: .1em +Pass max-width: 5% +Pass max-width: .5% +Pass max-width: none +Pass max-width: inherit +Pass min-height: 0px +Pass min-height: 1px +Pass min-height: .1em +Pass min-height: 5% +Pass min-height: .5% +Pass min-height: inherit +Pass min-width: 0px +Pass min-width: 1px +Pass min-width: .1em +Pass min-width: 5% +Pass min-width: .5% +Pass min-width: inherit +Fail orphans: 101 +Fail orphans: inherit +Pass outline-color: black +Pass outline-color: red +Pass outline-color: rgb(50, 75, 100) +Pass outline-color: rgba(5, 7, 10, 0.5) +Fail outline-color: invert +Pass outline-color: inherit +Pass outline-style: none +Pass outline-style: dotted +Pass outline-style: dashed +Pass outline-style: solid +Pass outline-style: double +Pass outline-style: groove +Pass outline-style: ridge +Pass outline-style: inset +Pass outline-style: outset +Pass outline-style: inherit +Pass outline-width: thin +Pass outline-width: medium +Pass outline-width: thick +Pass outline-width: 0px +Pass outline-width: 1px +Pass outline-width: .1em +Pass outline-width: inherit +Pass overflow: visible +Pass overflow: hidden +Pass overflow: scroll +Pass overflow: auto +Pass overflow: inherit +Pass padding-top: 0px +Pass padding-top: 1px +Pass padding-top: .1em +Pass padding-top: 5% +Pass padding-top: .5% +Pass padding-top: inherit +Pass padding-right: 0px +Pass padding-right: 1px +Pass padding-right: .1em +Pass padding-right: 5% +Pass padding-right: .5% +Pass padding-right: inherit +Pass padding-bottom: 0px +Pass padding-bottom: 1px +Pass padding-bottom: .1em +Pass padding-bottom: 5% +Pass padding-bottom: .5% +Pass padding-bottom: inherit +Pass padding-left: 0px +Pass padding-left: 1px +Pass padding-left: .1em +Pass padding-left: 5% +Pass padding-left: .5% +Pass padding-left: inherit +Fail page-break-after: auto +Fail page-break-after: always +Fail page-break-after: avoid +Fail page-break-after: left +Fail page-break-after: right +Fail page-break-after: inherit +Fail page-break-before: auto +Fail page-break-before: always +Fail page-break-before: avoid +Fail page-break-before: left +Fail page-break-before: right +Fail page-break-before: inherit +Fail page-break-inside: avoid +Fail page-break-inside: auto +Fail page-break-inside: inherit +Pass position: static +Pass position: relative +Pass position: absolute +Pass position: fixed +Pass position: inherit +Pass right: 0px +Pass right: 1px +Pass right: .1em +Pass right: 5% +Pass right: .5% +Pass right: auto +Pass right: inherit +Pass table-layout: auto +Pass table-layout: fixed +Pass table-layout: inherit +Pass text-align: left +Pass text-align: right +Pass text-align: center +Pass text-align: justify +Pass text-align: inherit +Pass text-decoration: none +Pass text-decoration: underline +Pass text-decoration: overline +Pass text-decoration: line-through +Pass text-decoration: blink +Pass text-decoration: inherit +Pass text-indent: 0px +Pass text-indent: 1px +Pass text-indent: .1em +Pass text-indent: 5% +Pass text-indent: .5% +Pass text-indent: inherit +Pass text-transform: capitalize +Pass text-transform: uppercase +Pass text-transform: lowercase +Pass text-transform: none +Pass text-transform: inherit +Pass top: 0px +Pass top: 1px +Pass top: .1em +Pass top: 5% +Pass top: .5% +Pass top: auto +Pass top: inherit +Pass unicode-bidi: normal +Pass unicode-bidi: embed +Pass unicode-bidi: bidi-override +Pass unicode-bidi: inherit +Pass vertical-align: baseline +Pass vertical-align: sub +Pass vertical-align: super +Pass vertical-align: top +Pass vertical-align: text-top +Pass vertical-align: middle +Pass vertical-align: bottom +Pass vertical-align: text-bottom +Pass vertical-align: 5% +Pass vertical-align: .5% +Pass vertical-align: 0px +Pass vertical-align: 1px +Pass vertical-align: .1em +Pass vertical-align: inherit +Pass visibility: visible +Pass visibility: hidden +Pass visibility: collapse +Pass visibility: inherit +Pass white-space: normal +Pass white-space: pre +Pass white-space: nowrap +Pass white-space: pre-wrap +Pass white-space: pre-line +Pass white-space: inherit +Fail widows: 101 +Fail widows: inherit +Pass width: 0px +Pass width: 1px +Pass width: .1em +Pass width: 5% +Pass width: .5% +Pass width: auto +Pass width: inherit +Pass word-spacing: normal +Pass word-spacing: 0px +Pass word-spacing: 1px +Pass word-spacing: .1em +Pass word-spacing: inherit +Pass z-index: auto +Pass z-index: 0 +Pass z-index: 101 +Pass z-index: -51 +Pass z-index: inherit \ No newline at end of file diff --git a/Tests/LibWeb/Text/expected/wpt-import/dom/nodes/ParentNode-querySelector-All.txt b/Tests/LibWeb/Text/expected/wpt-import/dom/nodes/ParentNode-querySelector-All.txt index 73e79a57076..58b8a586545 100644 --- a/Tests/LibWeb/Text/expected/wpt-import/dom/nodes/ParentNode-querySelector-All.txt +++ b/Tests/LibWeb/Text/expected/wpt-import/dom/nodes/ParentNode-querySelector-All.txt @@ -1,1986 +1,2117 @@ -Summary - Harness status: OK -Rerun - Found 1975 tests 1955 Pass 20 Fail -Details -Result Test Name MessagePass 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 -Fail Document.querySelectorAll: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target -Fail Document.querySelector: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target -Pass Document.querySelectorAll: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en) -Pass Document.querySelector: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en) -Pass Document.querySelectorAll: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) -Pass Document.querySelector: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) -Pass Document.querySelectorAll: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) -Pass Document.querySelector: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) -Pass Document.querySelectorAll: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) -Pass Document.querySelector: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) -Pass Document.querySelectorAll: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled -Pass Document.querySelector: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled -Pass Document.querySelectorAll: :enabled pseudo-class selector, not matching link elements: #pseudo-link :enabled -Pass Document.querySelector: :enabled pseudo-class selector, not matching link elements: #pseudo-link :enabled -Pass Document.querySelectorAll: :disabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled -Pass Document.querySelector: :disabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled -Pass Document.querySelectorAll: :disabled pseudo-class selector, not matching link elements: #pseudo-link :disabled -Pass Document.querySelector: :disabled pseudo-class selector, not matching link elements: #pseudo-link :disabled -Pass Document.querySelectorAll: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked -Pass Document.querySelector: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked -Pass Document.querySelectorAll: :not pseudo-class selector, matching : #not>:not(div) -Pass Document.querySelector: :not pseudo-class selector, matching : #not>:not(div) -Pass Document.querySelectorAll: :not pseudo-class selector, matching : #not * :not(:first-child) -Pass Document.querySelector: :not pseudo-class selector, matching : #not * :not(:first-child) -Pass Document.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*) -Pass Document.querySelector: :not pseudo-class selector, matching nothing: :not(*) -Pass Document.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*|*) -Pass Document.querySelector: :not pseudo-class selector, matching nothing: :not(*|*) -Pass Document.querySelectorAll: :not pseudo-class selector argument surrounded by spaces, matching : #not>:not( div ) -Pass Document.querySelector: :not pseudo-class selector argument surrounded by spaces, matching : #not>:not( div ) -Pass Document.querySelectorAll: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line -Pass Document.querySelector: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line -Pass Document.querySelectorAll: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line -Pass Document.querySelector: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line -Pass Document.querySelectorAll: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter -Pass Document.querySelector: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter -Pass Document.querySelectorAll: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter -Pass Document.querySelector: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter -Pass Document.querySelectorAll: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before -Pass Document.querySelector: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before -Pass Document.querySelectorAll: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before -Pass Document.querySelector: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before -Pass Document.querySelectorAll: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after -Pass Document.querySelector: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after -Pass Document.querySelectorAll: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after -Pass Document.querySelector: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after -Pass Document.querySelectorAll: Class selector, matching element with specified class: .class-p -Pass Document.querySelector: Class selector, matching element with specified class: .class-p -Pass Document.querySelectorAll: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana -Pass Document.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana -Pass Document.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange -Pass Document.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange -Pass Document.querySelectorAll: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi -Pass Document.querySelector: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi -Pass Document.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 -Pass Document.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 -Pass Document.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 -Pass Document.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 -Pass Document.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar -Pass Document.querySelector: Class selector, matching element with class with escaped character: .foo\:bar -Pass Document.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar -Pass Document.querySelector: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar -Pass Document.querySelectorAll: ID selector, matching element with specified id: #id #id-div1 -Pass Document.querySelector: ID selector, matching element with specified id: #id #id-div1 -Pass Document.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div1 -Pass Document.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div1 -Pass Document.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div2 -Pass Document.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div2 -Pass Document.querySelectorAll: ID Selector, chained, with type selector: div#id-div1, div#id-div2 -Pass Document.querySelector: ID Selector, chained, with type selector: div#id-div1, div#id-div2 -Pass Document.querySelectorAll: ID selector, not matching non-existent descendant: #id #none -Pass Document.querySelector: ID selector, not matching non-existent descendant: #id #none -Pass Document.querySelectorAll: ID selector, not matching non-existent ancestor: #none #id-div1 -Pass Document.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 -Pass Document.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate -Pass Document.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate -Pass Document.querySelectorAll: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi -Pass Document.querySelector: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi -Pass Document.querySelectorAll: ID selector, matching id value using non-ASCII characters (2): #台北 -Pass Document.querySelector: ID selector, matching id value using non-ASCII characters (2): #台北 -Pass Document.querySelectorAll: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 -Pass Document.querySelector: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 -Pass Document.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar -Pass Document.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar -Pass Document.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar -Pass Document.querySelector: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar -Pass Document.querySelectorAll: Namespace selector, matching element with any namespace: #any-namespace *|div -Pass Document.querySelector: Namespace selector, matching element with any namespace: #any-namespace *|div -Pass Document.querySelectorAll: Namespace selector, matching div elements in no namespace only: #no-namespace |div -Pass Document.querySelector: Namespace selector, matching div elements in no namespace only: #no-namespace |div -Pass Document.querySelectorAll: Namespace selector, matching any elements in no namespace only: #no-namespace |* -Pass Document.querySelector: Namespace selector, matching any elements in no namespace only: #no-namespace |* -Pass Document.querySelectorAll: Descendant combinator, matching element that is a descendant of an element with id: #descendant div -Pass Document.querySelector: Descendant combinator, matching element that is a descendant of an element with id: #descendant div -Pass Document.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: body #descendant-div1 -Pass Document.querySelector: Descendant combinator, matching element with id that is a descendant of an element: body #descendant-div1 -Pass Document.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 -Pass Document.querySelector: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 -Pass Document.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 -Pass Document.querySelector: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 -Pass Document.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 -Pass Document.querySelector: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 -Pass Document.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 -Pass Document.querySelector: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 -Pass Document.querySelectorAll: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 -Pass Document.querySelector: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 -Pass Document.querySelectorAll: Descendant combinator, whitespace characters: #descendant #descendant-div2 -Pass Document.querySelector: Descendant combinator, whitespace characters: #descendant #descendant-div2 -Pass Document.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child>div -Pass Document.querySelector: Child combinator, matching element that is a child of an element with id: #child>div -Pass Document.querySelectorAll: Child combinator, matching element with id that is a child of an element: div>#child-div1 -Pass Document.querySelector: Child combinator, matching element with id that is a child of an element: div>#child-div1 -Pass Document.querySelectorAll: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 -Pass Document.querySelector: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 -Pass Document.querySelectorAll: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 -Pass Document.querySelector: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 -Pass Document.querySelectorAll: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 -Pass Document.querySelector: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 -Pass Document.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 -Pass Document.querySelector: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 -Pass Document.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 -Pass Document.querySelector: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 -Pass Document.querySelectorAll: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 -Pass Document.querySelector: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 -Pass Document.querySelectorAll: Child combinator, surrounded by whitespace: #child-div1 > #child-div2 -Pass Document.querySelector: Child combinator, surrounded by whitespace: #child-div1 > #child-div2 -Pass Document.querySelectorAll: Child combinator, whitespace after: #child-div1> #child-div2 -Pass Document.querySelector: Child combinator, whitespace after: #child-div1> #child-div2 -Pass Document.querySelectorAll: Child combinator, whitespace before: #child-div1 >#child-div2 -Pass Document.querySelector: Child combinator, whitespace before: #child-div1 >#child-div2 -Pass Document.querySelectorAll: Child combinator, no whitespace: #child-div1>#child-div2 -Pass Document.querySelector: Child combinator, no whitespace: #child-div1>#child-div2 -Pass Document.querySelectorAll: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div -Pass Document.querySelector: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div -Pass Document.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 -Pass Document.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 -Pass Document.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 -Pass Document.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 -Pass Document.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 -Pass Document.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 -Pass Document.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 -Pass Document.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 -Pass Document.querySelectorAll: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p -Pass Document.querySelector: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p -Pass Document.querySelectorAll: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 -Pass Document.querySelector: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 -Pass Document.querySelectorAll: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 + #adjacent-p3 -Pass Document.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 + #adjacent-p3 -Pass Document.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+ #adjacent-p3 -Pass Document.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+ #adjacent-p3 -Pass Document.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2 +#adjacent-p3 -Pass Document.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2 +#adjacent-p3 -Pass Document.querySelectorAll: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 -Pass Document.querySelector: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 -Pass Document.querySelectorAll: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div -Pass Document.querySelector: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div -Pass Document.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 -Pass Document.querySelector: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 -Pass Document.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 -Pass Document.querySelector: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 -Pass Document.querySelectorAll: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div -Pass Document.querySelector: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div -Pass Document.querySelectorAll: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p -Pass Document.querySelector: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p -Pass Document.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div -Pass Document.querySelector: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div -Pass Document.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 -Pass Document.querySelector: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 -Pass Document.querySelectorAll: General sibling combinator, surrounded by whitespace: #sibling-p2 ~ #sibling-p3 -Pass Document.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2 ~ #sibling-p3 -Pass Document.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~ #sibling-p3 -Pass Document.querySelector: General sibling combinator, whitespace after: #sibling-p2~ #sibling-p3 -Pass Document.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2 ~#sibling-p3 -Pass Document.querySelector: General sibling combinator, whitespace before: #sibling-p2 ~#sibling-p3 -Pass Document.querySelectorAll: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 -Pass Document.querySelector: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 -Pass Document.querySelectorAll: Syntax, group of selectors separator, surrounded by whitespace: #group em , #group strong -Pass Document.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em , #group strong -Pass Document.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em, #group strong -Pass Document.querySelector: Syntax, group of selectors separator, whitespace after: #group em, #group strong -Pass Document.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em ,#group strong -Pass Document.querySelector: Syntax, group of selectors separator, whitespace before: #group em ,#group strong -Pass Document.querySelectorAll: Syntax, group of selectors separator, no whitespace: #group em,#group strong -Pass Document.querySelector: Syntax, group of selectors separator, no whitespace: #group em,#group strong -Fail Document.querySelectorAll: Slotted selector: ::slotted(foo) Failed to parse selector -Fail Document.querySelector: Slotted selector: ::slotted(foo) Failed to parse selector -Fail Document.querySelectorAll: Slotted selector (no matching closing paren): ::slotted(foo Failed to parse selector -Fail Document.querySelector: Slotted selector (no matching closing paren): ::slotted(foo Failed to parse selector -Pass Detached Element.querySelectorAll: Type selector, matching html element: html -Pass Detached Element.querySelector: Type selector, matching html element: html -Pass Detached Element.querySelectorAll: Type selector, matching body element: body -Pass Detached Element.querySelector: Type selector, matching body element: body -Pass Detached Element.querySelectorAll: Universal selector, matching all children of element with specified ID: #universal>* -Pass Detached Element.querySelector: Universal selector, matching all children of element with specified ID: #universal>* -Pass Detached Element.querySelectorAll: Universal selector, matching all grandchildren of element with specified ID: #universal>*>* -Pass Detached Element.querySelector: Universal selector, matching all grandchildren of element with specified ID: #universal>*>* -Pass Detached Element.querySelectorAll: Universal selector, matching all children of empty element with specified ID: #empty>* -Pass Detached Element.querySelector: Universal selector, matching all children of empty element with specified ID: #empty>* -Pass Detached Element.querySelectorAll: Universal selector, matching all descendants of element with specified ID: #universal * -Pass Detached Element.querySelector: Universal selector, matching all descendants of element with specified ID: #universal * -Pass Detached Element.querySelectorAll: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] -Pass Detached Element.querySelector: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] -Pass Detached Element.querySelectorAll: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] -Pass Detached Element.querySelector: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] -Pass Detached Element.querySelectorAll: Attribute presence selector, matching title attribute, case insensitivity: #attr-presence [*|TiTlE] -Pass Detached Element.querySelector: Attribute presence selector, matching title attribute, case insensitivity: #attr-presence [*|TiTlE] -Pass Detached Element.querySelectorAll: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] -Pass Detached Element.querySelector: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] -Pass Detached Element.querySelectorAll: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] -Pass Detached Element.querySelector: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] -Pass Detached Element.querySelectorAll: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] -Pass Detached Element.querySelector: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] -Pass Detached Element.querySelectorAll: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] -Pass Detached Element.querySelector: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] -Pass Detached Element.querySelectorAll: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] -Pass Detached Element.querySelector: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] -Pass Detached Element.querySelectorAll: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] -Pass Detached Element.querySelector: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] -Pass Detached Element.querySelectorAll: Attribute value selector, matching align attribute with value: #attr-value [align="center"] -Pass Detached Element.querySelector: Attribute value selector, matching align attribute with value: #attr-value [align="center"] -Pass Detached Element.querySelectorAll: Attribute value selector, matching align attribute with value, unclosed bracket: #attr-value [align="center" -Pass Detached Element.querySelector: Attribute value selector, matching align attribute with value, unclosed bracket: #attr-value [align="center" -Pass Detached Element.querySelectorAll: Attribute value selector, matching align attribute with empty value: #attr-value [align=""] -Pass Detached Element.querySelector: Attribute value selector, matching align attribute with empty value: #attr-value [align=""] -Pass Detached Element.querySelectorAll: Attribute value selector, not matching align attribute with partial value: #attr-value [align="c"] -Pass Detached Element.querySelector: Attribute value selector, not matching align attribute with partial value: #attr-value [align="c"] -Pass Detached Element.querySelectorAll: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align="centera"] -Pass Detached Element.querySelector: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align="centera"] -Pass Detached Element.querySelectorAll: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value="\e9"] -Pass Detached Element.querySelector: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value="\e9"] -Pass Detached Element.querySelectorAll: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo="\e9"] -Pass Detached Element.querySelector: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo="\e9"] -Pass Detached Element.querySelectorAll: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] -Pass Detached Element.querySelector: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] -Pass Detached Element.querySelectorAll: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type="hidden"],#attr-value input[type='radio'] -Pass Detached Element.querySelector: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type="hidden"],#attr-value input[type='radio'] -Pass Detached Element.querySelectorAll: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] -Pass Detached Element.querySelector: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] -Pass Detached Element.querySelectorAll: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] -Pass Detached Element.querySelector: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] -Pass Detached Element.querySelectorAll: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~="div1"] -Pass Detached Element.querySelector: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~="div1"] -Pass Detached Element.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=""] -Pass Detached Element.querySelector: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=""] -Pass Detached Element.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~="div"] -Pass Detached Element.querySelector: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~="div"] -Pass Detached Element.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~="\0000e9"] -Pass Detached Element.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~="\0000e9"] -Pass Detached Element.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~="\e9"] -Pass Detached Element.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~="\e9"] -Pass Detached Element.querySelectorAll: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'], #attr-whitespace a[rel~='nofollow'] -Pass Detached Element.querySelector: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'], #attr-whitespace a[rel~='nofollow'] -Pass Detached Element.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~="bookmark"],#attr-whitespace a[rel~='nofollow'] -Pass Detached Element.querySelector: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~="bookmark"],#attr-whitespace a[rel~='nofollow'] -Pass Detached Element.querySelectorAll: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark], #attr-whitespace a[rel~=nofollow] -Pass Detached Element.querySelector: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark], #attr-whitespace a[rel~=nofollow] -Pass Detached Element.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~="book mark"] -Pass Detached Element.querySelector: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~="book mark"] -Pass Detached Element.querySelectorAll: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] -Pass Detached Element.querySelector: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] -Pass Detached Element.querySelectorAll: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|="en"] -Pass Detached Element.querySelector: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|="en"] -Pass Detached Element.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|="fr"] -Pass Detached Element.querySelector: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|="fr"] -Pass Detached Element.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|="en"] -Pass Detached Element.querySelector: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|="en"] -Pass Detached Element.querySelectorAll: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|="es-AR"] -Pass Detached Element.querySelector: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|="es-AR"] -Pass Detached Element.querySelectorAll: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^="http://www"] -Pass Detached Element.querySelector: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^="http://www"] -Pass Detached Element.querySelectorAll: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^="en-"] -Pass Detached Element.querySelector: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^="en-"] -Pass Detached Element.querySelectorAll: Attribute begins with selector, not matching class attribute with empty value: #attr-begins [class^=""] -Pass Detached Element.querySelector: Attribute begins with selector, not matching class attribute with empty value: #attr-begins [class^=""] -Pass Detached Element.querySelectorAll: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] -Pass Detached Element.querySelector: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] -Pass Detached Element.querySelectorAll: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] -Pass Detached Element.querySelector: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] -Pass Detached Element.querySelectorAll: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=" apple"] -Pass Detached Element.querySelector: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=" apple"] -Pass Detached Element.querySelectorAll: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] -Pass Detached Element.querySelector: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] -Pass Detached Element.querySelectorAll: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=".org"] -Pass Detached Element.querySelector: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=".org"] -Pass Detached Element.querySelectorAll: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$="-CH"] -Pass Detached Element.querySelector: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$="-CH"] -Pass Detached Element.querySelectorAll: Attribute ends with selector, not matching class attribute with empty value: #attr-ends [class$=""] -Pass Detached Element.querySelector: Attribute ends with selector, not matching class attribute with empty value: #attr-ends [class$=""] -Pass Detached Element.querySelectorAll: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] -Pass Detached Element.querySelector: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] -Pass Detached Element.querySelectorAll: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] -Pass Detached Element.querySelector: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] -Pass Detached Element.querySelectorAll: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$="apple "] -Pass Detached Element.querySelector: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$="apple "] -Pass Detached Element.querySelectorAll: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] -Pass Detached Element.querySelector: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] -Pass Detached Element.querySelectorAll: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*="http://www"] -Pass Detached Element.querySelector: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*="http://www"] -Pass Detached Element.querySelectorAll: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=".org"] -Pass Detached Element.querySelector: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=".org"] -Pass Detached Element.querySelectorAll: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=".example."] -Pass Detached Element.querySelector: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=".example."] -Pass Detached Element.querySelectorAll: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*="en-"] -Pass Detached Element.querySelector: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*="en-"] -Pass Detached Element.querySelectorAll: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*="-CH"] -Pass Detached Element.querySelector: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*="-CH"] -Pass Detached Element.querySelectorAll: Attribute contains selector, not matching class attribute with empty value: #attr-contains [class*=""] -Pass Detached Element.querySelector: Attribute contains selector, not matching class attribute with empty value: #attr-contains [class*=""] -Pass Detached Element.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] -Pass Detached Element.querySelector: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] -Pass Detached Element.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] -Pass Detached Element.querySelector: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] -Pass Detached Element.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] -Pass Detached Element.querySelector: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] -Pass Detached Element.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=" apple"] -Pass Detached Element.querySelector: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=" apple"] -Pass Detached Element.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*="orange "] -Pass Detached Element.querySelector: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*="orange "] -Pass Detached Element.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*="ple banana ora"] -Pass Detached Element.querySelector: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*="ple banana ora"] -Pass Detached Element.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] -Pass Detached Element.querySelector: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] -Pass Detached Element.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] -Pass Detached Element.querySelector: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] -Pass Detached Element.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] -Pass Detached Element.querySelector: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] -Pass Detached Element.querySelectorAll: :root pseudo-class selector, not matching document root element: :root -Pass Detached Element.querySelector: :root pseudo-class selector, not matching document root element: :root -Pass Detached Element.querySelectorAll: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) -Pass Detached Element.querySelector: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) -Pass Detached Element.querySelectorAll: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) -Pass Detached Element.querySelector: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) -Pass Detached Element.querySelectorAll: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) -Pass Detached Element.querySelector: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) -Pass Detached Element.querySelectorAll: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) -Pass Detached Element.querySelector: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) -Pass Detached Element.querySelectorAll: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) -Pass Detached Element.querySelector: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) -Pass Detached Element.querySelectorAll: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) -Pass Detached Element.querySelector: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) -Pass Detached Element.querySelectorAll: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) -Pass Detached Element.querySelector: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) -Pass Detached Element.querySelectorAll: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) -Pass Detached Element.querySelector: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) -Pass Detached Element.querySelectorAll: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) -Pass Detached Element.querySelector: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) -Pass Detached Element.querySelectorAll: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) -Pass Detached Element.querySelector: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) -Pass Detached Element.querySelectorAll: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) -Pass Detached Element.querySelector: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) -Pass Detached Element.querySelectorAll: :nth-last-of-type selector, matching the third last em element: #pseudo-nth-p1 em:nth-last-of-type(3) -Pass Detached Element.querySelector: :nth-last-of-type selector, matching the third last em element: #pseudo-nth-p1 em:nth-last-of-type(3) -Pass Detached Element.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) -Pass Detached Element.querySelector: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) -Pass Detached Element.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) -Pass Detached Element.querySelector: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) -Pass Detached Element.querySelectorAll: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type -Pass Detached Element.querySelector: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type -Pass Detached Element.querySelectorAll: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type -Pass Detached Element.querySelector: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type -Pass Detached Element.querySelectorAll: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type -Pass Detached Element.querySelector: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type -Pass Detached Element.querySelectorAll: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type -Pass Detached Element.querySelector: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type -Pass Detached Element.querySelectorAll: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type -Pass Detached Element.querySelector: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type -Pass Detached Element.querySelectorAll: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type -Pass Detached Element.querySelector: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type -Pass Detached Element.querySelectorAll: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child -Pass Detached Element.querySelector: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child -Pass Detached Element.querySelectorAll: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child -Pass Detached Element.querySelector: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child -Pass Detached Element.querySelectorAll: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child -Pass Detached Element.querySelector: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child -Pass Detached Element.querySelectorAll: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child -Pass Detached Element.querySelector: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child -Pass Detached Element.querySelectorAll: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child -Pass Detached Element.querySelector: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child -Pass Detached Element.querySelectorAll: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child -Pass Detached Element.querySelector: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child -Pass Detached Element.querySelectorAll: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child -Pass Detached Element.querySelector: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child -Pass Detached Element.querySelectorAll: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child -Pass Detached Element.querySelector: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child -Pass Detached Element.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type -Pass Detached Element.querySelector: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type -Pass Detached Element.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type -Pass Detached Element.querySelector: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type -Pass Detached Element.querySelectorAll: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty -Pass Detached Element.querySelector: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty -Pass Detached Element.querySelectorAll: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty -Pass Detached Element.querySelector: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty -Pass Detached Element.querySelectorAll: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited -Pass Detached Element.querySelector: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited -Pass Detached Element.querySelectorAll: :link and :visited pseudo-class selectors, not matching link elements with href attributes: #head :link, #head :visited -Pass Detached Element.querySelector: :link and :visited pseudo-class selectors, not matching link elements with href attributes: #head :link, #head :visited -Pass Detached Element.querySelectorAll: :link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing: :link:visited -Pass Detached Element.querySelector: :link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing: :link:visited -Pass Detached Element.querySelectorAll: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target -Pass Detached Element.querySelector: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target -Pass Detached Element.querySelectorAll: :lang pseudo-class selector, not matching element with no inherited language: #pseudo-lang-div1:lang(en) -Pass Detached Element.querySelector: :lang pseudo-class selector, not matching element with no inherited language: #pseudo-lang-div1:lang(en) -Pass Detached Element.querySelectorAll: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) -Pass Detached Element.querySelector: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) -Pass Detached Element.querySelectorAll: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) -Pass Detached Element.querySelector: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) -Pass Detached Element.querySelectorAll: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) -Pass Detached Element.querySelector: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) -Pass Detached Element.querySelectorAll: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled -Pass Detached Element.querySelector: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled -Pass Detached Element.querySelectorAll: :enabled pseudo-class selector, not matching link elements: #pseudo-link :enabled -Pass Detached Element.querySelector: :enabled pseudo-class selector, not matching link elements: #pseudo-link :enabled -Pass Detached Element.querySelectorAll: :disabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled -Pass Detached Element.querySelector: :disabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled -Pass Detached Element.querySelectorAll: :disabled pseudo-class selector, not matching link elements: #pseudo-link :disabled -Pass Detached Element.querySelector: :disabled pseudo-class selector, not matching link elements: #pseudo-link :disabled -Pass Detached Element.querySelectorAll: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked -Pass Detached Element.querySelector: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked -Pass Detached Element.querySelectorAll: :not pseudo-class selector, matching : #not>:not(div) -Pass Detached Element.querySelector: :not pseudo-class selector, matching : #not>:not(div) -Pass Detached Element.querySelectorAll: :not pseudo-class selector, matching : #not * :not(:first-child) -Pass Detached Element.querySelector: :not pseudo-class selector, matching : #not * :not(:first-child) -Pass Detached Element.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*) -Pass Detached Element.querySelector: :not pseudo-class selector, matching nothing: :not(*) -Pass Detached Element.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*|*) -Pass Detached Element.querySelector: :not pseudo-class selector, matching nothing: :not(*|*) -Pass Detached Element.querySelectorAll: :not pseudo-class selector argument surrounded by spaces, matching : #not>:not( div ) -Pass Detached Element.querySelector: :not pseudo-class selector argument surrounded by spaces, matching : #not>:not( div ) -Pass Detached Element.querySelectorAll: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line -Pass Detached Element.querySelector: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line -Pass Detached Element.querySelectorAll: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line -Pass Detached Element.querySelector: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line -Pass Detached Element.querySelectorAll: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter -Pass Detached Element.querySelector: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter -Pass Detached Element.querySelectorAll: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter -Pass Detached Element.querySelector: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter -Pass Detached Element.querySelectorAll: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before -Pass Detached Element.querySelector: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before -Pass Detached Element.querySelectorAll: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before -Pass Detached Element.querySelector: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before -Pass Detached Element.querySelectorAll: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after -Pass Detached Element.querySelector: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after -Pass Detached Element.querySelectorAll: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after -Pass Detached Element.querySelector: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after -Pass Detached Element.querySelectorAll: Class selector, matching element with specified class: .class-p -Pass Detached Element.querySelector: Class selector, matching element with specified class: .class-p -Pass Detached Element.querySelectorAll: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana -Pass Detached Element.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana -Pass Detached Element.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange -Pass Detached Element.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange -Pass Detached Element.querySelectorAll: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi -Pass Detached Element.querySelector: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi -Pass Detached Element.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 -Pass Detached Element.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 -Pass Detached Element.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 -Pass Detached Element.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 -Pass Detached Element.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar -Pass Detached Element.querySelector: Class selector, matching element with class with escaped character: .foo\:bar -Pass Detached Element.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar -Pass Detached Element.querySelector: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar -Pass Detached Element.querySelectorAll: ID selector, matching element with specified id: #id #id-div1 -Pass Detached Element.querySelector: ID selector, matching element with specified id: #id #id-div1 -Pass Detached Element.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div1 -Pass Detached Element.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div1 -Pass Detached Element.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div2 -Pass Detached Element.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div2 -Pass Detached Element.querySelectorAll: ID Selector, chained, with type selector: div#id-div1, div#id-div2 -Pass Detached Element.querySelector: ID Selector, chained, with type selector: div#id-div1, div#id-div2 -Pass Detached Element.querySelectorAll: ID selector, not matching non-existent descendant: #id #none -Pass Detached Element.querySelector: ID selector, not matching non-existent descendant: #id #none -Pass Detached Element.querySelectorAll: ID selector, not matching non-existent ancestor: #none #id-div1 -Pass Detached Element.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 -Pass Detached Element.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate -Pass Detached Element.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate -Pass Detached Element.querySelectorAll: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi -Pass Detached Element.querySelector: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi -Pass Detached Element.querySelectorAll: ID selector, matching id value using non-ASCII characters (2): #台北 -Pass Detached Element.querySelector: ID selector, matching id value using non-ASCII characters (2): #台北 -Pass Detached Element.querySelectorAll: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 -Pass Detached Element.querySelector: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 -Pass Detached Element.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar -Pass Detached Element.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar -Pass Detached Element.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar -Pass Detached Element.querySelector: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar -Pass Detached Element.querySelectorAll: Namespace selector, matching element with any namespace: #any-namespace *|div -Pass Detached Element.querySelector: Namespace selector, matching element with any namespace: #any-namespace *|div -Pass Detached Element.querySelectorAll: Namespace selector, matching div elements in no namespace only: #no-namespace |div -Pass Detached Element.querySelector: Namespace selector, matching div elements in no namespace only: #no-namespace |div -Pass Detached Element.querySelectorAll: Namespace selector, matching any elements in no namespace only: #no-namespace |* -Pass Detached Element.querySelector: Namespace selector, matching any elements in no namespace only: #no-namespace |* -Pass Detached Element.querySelectorAll: Descendant combinator, matching element that is a descendant of an element with id: #descendant div -Pass Detached Element.querySelector: Descendant combinator, matching element that is a descendant of an element with id: #descendant div -Pass Detached Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 -Pass Detached Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 -Pass Detached Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 -Pass Detached Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 -Pass Detached Element.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 -Pass Detached Element.querySelector: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 -Pass Detached Element.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 -Pass Detached Element.querySelector: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 -Pass Detached Element.querySelectorAll: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 -Pass Detached Element.querySelector: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 -Pass Detached Element.querySelectorAll: Descendant combinator, whitespace characters: #descendant #descendant-div2 -Pass Detached Element.querySelector: Descendant combinator, whitespace characters: #descendant #descendant-div2 -Pass Detached Element.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child>div -Pass Detached Element.querySelector: Child combinator, matching element that is a child of an element with id: #child>div -Pass Detached Element.querySelectorAll: Child combinator, matching element with id that is a child of an element: div>#child-div1 -Pass Detached Element.querySelector: Child combinator, matching element with id that is a child of an element: div>#child-div1 -Pass Detached Element.querySelectorAll: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 -Pass Detached Element.querySelector: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 -Pass Detached Element.querySelectorAll: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 -Pass Detached Element.querySelector: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 -Pass Detached Element.querySelectorAll: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 -Pass Detached Element.querySelector: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 -Pass Detached Element.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 -Pass Detached Element.querySelector: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 -Pass Detached Element.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 -Pass Detached Element.querySelector: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 -Pass Detached Element.querySelectorAll: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 -Pass Detached Element.querySelector: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 -Pass Detached Element.querySelectorAll: Child combinator, surrounded by whitespace: #child-div1 > #child-div2 -Pass Detached Element.querySelector: Child combinator, surrounded by whitespace: #child-div1 > #child-div2 -Pass Detached Element.querySelectorAll: Child combinator, whitespace after: #child-div1> #child-div2 -Pass Detached Element.querySelector: Child combinator, whitespace after: #child-div1> #child-div2 -Pass Detached Element.querySelectorAll: Child combinator, whitespace before: #child-div1 >#child-div2 -Pass Detached Element.querySelector: Child combinator, whitespace before: #child-div1 >#child-div2 -Pass Detached Element.querySelectorAll: Child combinator, no whitespace: #child-div1>#child-div2 -Pass Detached Element.querySelector: Child combinator, no whitespace: #child-div1>#child-div2 -Pass Detached Element.querySelectorAll: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div -Pass Detached Element.querySelector: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div -Pass Detached Element.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 -Pass Detached Element.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 -Pass Detached Element.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 -Pass Detached Element.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 -Pass Detached Element.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 -Pass Detached Element.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 -Pass Detached Element.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 -Pass Detached Element.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 -Pass Detached Element.querySelectorAll: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p -Pass Detached Element.querySelector: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p -Pass Detached Element.querySelectorAll: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 -Pass Detached Element.querySelector: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 -Pass Detached Element.querySelectorAll: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 + #adjacent-p3 -Pass Detached Element.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 + #adjacent-p3 -Pass Detached Element.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+ #adjacent-p3 -Pass Detached Element.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+ #adjacent-p3 -Pass Detached Element.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2 +#adjacent-p3 -Pass Detached Element.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2 +#adjacent-p3 -Pass Detached Element.querySelectorAll: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 -Pass Detached Element.querySelector: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 -Pass Detached Element.querySelectorAll: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div -Pass Detached Element.querySelector: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div -Pass Detached Element.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 -Pass Detached Element.querySelector: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 -Pass Detached Element.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 -Pass Detached Element.querySelector: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 -Pass Detached Element.querySelectorAll: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div -Pass Detached Element.querySelector: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div -Pass Detached Element.querySelectorAll: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p -Pass Detached Element.querySelector: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p -Pass Detached Element.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div -Pass Detached Element.querySelector: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div -Pass Detached Element.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 -Pass Detached Element.querySelector: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 -Pass Detached Element.querySelectorAll: General sibling combinator, surrounded by whitespace: #sibling-p2 ~ #sibling-p3 -Pass Detached Element.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2 ~ #sibling-p3 -Pass Detached Element.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~ #sibling-p3 -Pass Detached Element.querySelector: General sibling combinator, whitespace after: #sibling-p2~ #sibling-p3 -Pass Detached Element.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2 ~#sibling-p3 -Pass Detached Element.querySelector: General sibling combinator, whitespace before: #sibling-p2 ~#sibling-p3 -Pass Detached Element.querySelectorAll: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 -Pass Detached Element.querySelector: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 -Pass Detached Element.querySelectorAll: Syntax, group of selectors separator, surrounded by whitespace: #group em , #group strong -Pass Detached Element.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em , #group strong -Pass Detached Element.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em, #group strong -Pass Detached Element.querySelector: Syntax, group of selectors separator, whitespace after: #group em, #group strong -Pass Detached Element.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em ,#group strong -Pass Detached Element.querySelector: Syntax, group of selectors separator, whitespace before: #group em ,#group strong -Pass Detached Element.querySelectorAll: Syntax, group of selectors separator, no whitespace: #group em,#group strong -Pass Detached Element.querySelector: Syntax, group of selectors separator, no whitespace: #group em,#group strong -Fail Detached Element.querySelectorAll: Slotted selector: ::slotted(foo) Failed to parse selector -Fail Detached Element.querySelector: Slotted selector: ::slotted(foo) Failed to parse selector -Fail Detached Element.querySelectorAll: Slotted selector (no matching closing paren): ::slotted(foo Failed to parse selector -Fail Detached Element.querySelector: Slotted selector (no matching closing paren): ::slotted(foo Failed to parse selector -Pass Fragment.querySelectorAll: Type selector, matching html element: html -Pass Fragment.querySelector: Type selector, matching html element: html -Pass Fragment.querySelectorAll: Type selector, matching body element: body -Pass Fragment.querySelector: Type selector, matching body element: body -Pass Fragment.querySelectorAll: Universal selector, matching all children of element with specified ID: #universal>* -Pass Fragment.querySelector: Universal selector, matching all children of element with specified ID: #universal>* -Pass Fragment.querySelectorAll: Universal selector, matching all grandchildren of element with specified ID: #universal>*>* -Pass Fragment.querySelector: Universal selector, matching all grandchildren of element with specified ID: #universal>*>* -Pass Fragment.querySelectorAll: Universal selector, matching all children of empty element with specified ID: #empty>* -Pass Fragment.querySelector: Universal selector, matching all children of empty element with specified ID: #empty>* -Pass Fragment.querySelectorAll: Universal selector, matching all descendants of element with specified ID: #universal * -Pass Fragment.querySelector: Universal selector, matching all descendants of element with specified ID: #universal * -Pass Fragment.querySelectorAll: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] -Pass Fragment.querySelector: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] -Pass Fragment.querySelectorAll: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] -Pass Fragment.querySelector: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] -Pass Fragment.querySelectorAll: Attribute presence selector, matching title attribute, case insensitivity: #attr-presence [*|TiTlE] -Pass Fragment.querySelector: Attribute presence selector, matching title attribute, case insensitivity: #attr-presence [*|TiTlE] -Pass Fragment.querySelectorAll: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] -Pass Fragment.querySelector: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] -Pass Fragment.querySelectorAll: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] -Pass Fragment.querySelector: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] -Pass Fragment.querySelectorAll: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] -Pass Fragment.querySelector: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] -Pass Fragment.querySelectorAll: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] -Pass Fragment.querySelector: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] -Pass Fragment.querySelectorAll: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] -Pass Fragment.querySelector: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] -Pass Fragment.querySelectorAll: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] -Pass Fragment.querySelector: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] -Pass Fragment.querySelectorAll: Attribute value selector, matching align attribute with value: #attr-value [align="center"] -Pass Fragment.querySelector: Attribute value selector, matching align attribute with value: #attr-value [align="center"] -Pass Fragment.querySelectorAll: Attribute value selector, matching align attribute with value, unclosed bracket: #attr-value [align="center" -Pass Fragment.querySelector: Attribute value selector, matching align attribute with value, unclosed bracket: #attr-value [align="center" -Pass Fragment.querySelectorAll: Attribute value selector, matching align attribute with empty value: #attr-value [align=""] -Pass Fragment.querySelector: Attribute value selector, matching align attribute with empty value: #attr-value [align=""] -Pass Fragment.querySelectorAll: Attribute value selector, not matching align attribute with partial value: #attr-value [align="c"] -Pass Fragment.querySelector: Attribute value selector, not matching align attribute with partial value: #attr-value [align="c"] -Pass Fragment.querySelectorAll: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align="centera"] -Pass Fragment.querySelector: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align="centera"] -Pass Fragment.querySelectorAll: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value="\e9"] -Pass Fragment.querySelector: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value="\e9"] -Pass Fragment.querySelectorAll: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo="\e9"] -Pass Fragment.querySelector: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo="\e9"] -Pass Fragment.querySelectorAll: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] -Pass Fragment.querySelector: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] -Pass Fragment.querySelectorAll: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type="hidden"],#attr-value input[type='radio'] -Pass Fragment.querySelector: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type="hidden"],#attr-value input[type='radio'] -Pass Fragment.querySelectorAll: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] -Pass Fragment.querySelector: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] -Pass Fragment.querySelectorAll: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] -Pass Fragment.querySelector: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] -Pass Fragment.querySelectorAll: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~="div1"] -Pass Fragment.querySelector: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~="div1"] -Pass Fragment.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=""] -Pass Fragment.querySelector: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=""] -Pass Fragment.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~="div"] -Pass Fragment.querySelector: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~="div"] -Pass Fragment.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~="\0000e9"] -Pass Fragment.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~="\0000e9"] -Pass Fragment.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~="\e9"] -Pass Fragment.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~="\e9"] -Pass Fragment.querySelectorAll: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'], #attr-whitespace a[rel~='nofollow'] -Pass Fragment.querySelector: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'], #attr-whitespace a[rel~='nofollow'] -Pass Fragment.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~="bookmark"],#attr-whitespace a[rel~='nofollow'] -Pass Fragment.querySelector: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~="bookmark"],#attr-whitespace a[rel~='nofollow'] -Pass Fragment.querySelectorAll: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark], #attr-whitespace a[rel~=nofollow] -Pass Fragment.querySelector: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark], #attr-whitespace a[rel~=nofollow] -Pass Fragment.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~="book mark"] -Pass Fragment.querySelector: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~="book mark"] -Pass Fragment.querySelectorAll: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] -Pass Fragment.querySelector: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] -Pass Fragment.querySelectorAll: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|="en"] -Pass Fragment.querySelector: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|="en"] -Pass Fragment.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|="fr"] -Pass Fragment.querySelector: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|="fr"] -Pass Fragment.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|="en"] -Pass Fragment.querySelector: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|="en"] -Pass Fragment.querySelectorAll: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|="es-AR"] -Pass Fragment.querySelector: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|="es-AR"] -Pass Fragment.querySelectorAll: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^="http://www"] -Pass Fragment.querySelector: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^="http://www"] -Pass Fragment.querySelectorAll: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^="en-"] -Pass Fragment.querySelector: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^="en-"] -Pass Fragment.querySelectorAll: Attribute begins with selector, not matching class attribute with empty value: #attr-begins [class^=""] -Pass Fragment.querySelector: Attribute begins with selector, not matching class attribute with empty value: #attr-begins [class^=""] -Pass Fragment.querySelectorAll: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] -Pass Fragment.querySelector: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] -Pass Fragment.querySelectorAll: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] -Pass Fragment.querySelector: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] -Pass Fragment.querySelectorAll: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=" apple"] -Pass Fragment.querySelector: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=" apple"] -Pass Fragment.querySelectorAll: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] -Pass Fragment.querySelector: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] -Pass Fragment.querySelectorAll: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=".org"] -Pass Fragment.querySelector: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=".org"] -Pass Fragment.querySelectorAll: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$="-CH"] -Pass Fragment.querySelector: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$="-CH"] -Pass Fragment.querySelectorAll: Attribute ends with selector, not matching class attribute with empty value: #attr-ends [class$=""] -Pass Fragment.querySelector: Attribute ends with selector, not matching class attribute with empty value: #attr-ends [class$=""] -Pass Fragment.querySelectorAll: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] -Pass Fragment.querySelector: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] -Pass Fragment.querySelectorAll: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] -Pass Fragment.querySelector: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] -Pass Fragment.querySelectorAll: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$="apple "] -Pass Fragment.querySelector: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$="apple "] -Pass Fragment.querySelectorAll: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] -Pass Fragment.querySelector: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] -Pass Fragment.querySelectorAll: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*="http://www"] -Pass Fragment.querySelector: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*="http://www"] -Pass Fragment.querySelectorAll: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=".org"] -Pass Fragment.querySelector: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=".org"] -Pass Fragment.querySelectorAll: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=".example."] -Pass Fragment.querySelector: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=".example."] -Pass Fragment.querySelectorAll: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*="en-"] -Pass Fragment.querySelector: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*="en-"] -Pass Fragment.querySelectorAll: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*="-CH"] -Pass Fragment.querySelector: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*="-CH"] -Pass Fragment.querySelectorAll: Attribute contains selector, not matching class attribute with empty value: #attr-contains [class*=""] -Pass Fragment.querySelector: Attribute contains selector, not matching class attribute with empty value: #attr-contains [class*=""] -Pass Fragment.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] -Pass Fragment.querySelector: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] -Pass Fragment.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] -Pass Fragment.querySelector: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] -Pass Fragment.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] -Pass Fragment.querySelector: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] -Pass Fragment.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=" apple"] -Pass Fragment.querySelector: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=" apple"] -Pass Fragment.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*="orange "] -Pass Fragment.querySelector: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*="orange "] -Pass Fragment.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*="ple banana ora"] -Pass Fragment.querySelector: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*="ple banana ora"] -Pass Fragment.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] -Pass Fragment.querySelector: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] -Pass Fragment.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] -Pass Fragment.querySelector: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] -Pass Fragment.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] -Pass Fragment.querySelector: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] -Pass Fragment.querySelectorAll: :root pseudo-class selector, not matching document root element: :root -Pass Fragment.querySelector: :root pseudo-class selector, not matching document root element: :root -Pass Fragment.querySelectorAll: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) -Pass Fragment.querySelector: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) -Pass Fragment.querySelectorAll: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) -Pass Fragment.querySelector: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) -Pass Fragment.querySelectorAll: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) -Pass Fragment.querySelector: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) -Pass Fragment.querySelectorAll: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) -Pass Fragment.querySelector: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) -Pass Fragment.querySelectorAll: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) -Pass Fragment.querySelector: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) -Pass Fragment.querySelectorAll: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) -Pass Fragment.querySelector: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) -Pass Fragment.querySelectorAll: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) -Pass Fragment.querySelector: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) -Pass Fragment.querySelectorAll: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) -Pass Fragment.querySelector: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) -Pass Fragment.querySelectorAll: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) -Pass Fragment.querySelector: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) -Pass Fragment.querySelectorAll: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) -Pass Fragment.querySelector: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) -Pass Fragment.querySelectorAll: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) -Pass Fragment.querySelector: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) -Pass Fragment.querySelectorAll: :nth-last-of-type selector, matching the third last em element: #pseudo-nth-p1 em:nth-last-of-type(3) -Pass Fragment.querySelector: :nth-last-of-type selector, matching the third last em element: #pseudo-nth-p1 em:nth-last-of-type(3) -Pass Fragment.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) -Pass Fragment.querySelector: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) -Pass Fragment.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) -Pass Fragment.querySelector: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) -Pass Fragment.querySelectorAll: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type -Pass Fragment.querySelector: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type -Pass Fragment.querySelectorAll: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type -Pass Fragment.querySelector: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type -Pass Fragment.querySelectorAll: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type -Pass Fragment.querySelector: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type -Pass Fragment.querySelectorAll: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type -Pass Fragment.querySelector: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type -Pass Fragment.querySelectorAll: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type -Pass Fragment.querySelector: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type -Pass Fragment.querySelectorAll: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type -Pass Fragment.querySelector: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type -Pass Fragment.querySelectorAll: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child -Pass Fragment.querySelector: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child -Pass Fragment.querySelectorAll: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child -Pass Fragment.querySelector: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child -Pass Fragment.querySelectorAll: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child -Pass Fragment.querySelector: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child -Pass Fragment.querySelectorAll: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child -Pass Fragment.querySelector: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child -Pass Fragment.querySelectorAll: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child -Pass Fragment.querySelector: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child -Pass Fragment.querySelectorAll: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child -Pass Fragment.querySelector: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child -Pass Fragment.querySelectorAll: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child -Pass Fragment.querySelector: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child -Pass Fragment.querySelectorAll: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child -Pass Fragment.querySelector: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child -Pass Fragment.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type -Pass Fragment.querySelector: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type -Pass Fragment.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type -Pass Fragment.querySelector: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type -Pass Fragment.querySelectorAll: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty -Pass Fragment.querySelector: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty -Pass Fragment.querySelectorAll: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty -Pass Fragment.querySelector: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty -Pass Fragment.querySelectorAll: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited -Pass Fragment.querySelector: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited -Pass Fragment.querySelectorAll: :link and :visited pseudo-class selectors, not matching link elements with href attributes: #head :link, #head :visited -Pass Fragment.querySelector: :link and :visited pseudo-class selectors, not matching link elements with href attributes: #head :link, #head :visited -Pass Fragment.querySelectorAll: :link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing: :link:visited -Pass Fragment.querySelector: :link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing: :link:visited -Pass Fragment.querySelectorAll: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target -Pass Fragment.querySelector: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target -Pass Fragment.querySelectorAll: :lang pseudo-class selector, not matching element with no inherited language: #pseudo-lang-div1:lang(en) -Pass Fragment.querySelector: :lang pseudo-class selector, not matching element with no inherited language: #pseudo-lang-div1:lang(en) -Pass Fragment.querySelectorAll: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) -Pass Fragment.querySelector: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) -Pass Fragment.querySelectorAll: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) -Pass Fragment.querySelector: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) -Pass Fragment.querySelectorAll: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) -Pass Fragment.querySelector: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) -Pass Fragment.querySelectorAll: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled -Pass Fragment.querySelector: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled -Pass Fragment.querySelectorAll: :enabled pseudo-class selector, not matching link elements: #pseudo-link :enabled -Pass Fragment.querySelector: :enabled pseudo-class selector, not matching link elements: #pseudo-link :enabled -Pass Fragment.querySelectorAll: :disabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled -Pass Fragment.querySelector: :disabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled -Pass Fragment.querySelectorAll: :disabled pseudo-class selector, not matching link elements: #pseudo-link :disabled -Pass Fragment.querySelector: :disabled pseudo-class selector, not matching link elements: #pseudo-link :disabled -Pass Fragment.querySelectorAll: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked -Pass Fragment.querySelector: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked -Pass Fragment.querySelectorAll: :not pseudo-class selector, matching : #not>:not(div) -Pass Fragment.querySelector: :not pseudo-class selector, matching : #not>:not(div) -Pass Fragment.querySelectorAll: :not pseudo-class selector, matching : #not * :not(:first-child) -Pass Fragment.querySelector: :not pseudo-class selector, matching : #not * :not(:first-child) -Pass Fragment.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*) -Pass Fragment.querySelector: :not pseudo-class selector, matching nothing: :not(*) -Pass Fragment.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*|*) -Pass Fragment.querySelector: :not pseudo-class selector, matching nothing: :not(*|*) -Pass Fragment.querySelectorAll: :not pseudo-class selector argument surrounded by spaces, matching : #not>:not( div ) -Pass Fragment.querySelector: :not pseudo-class selector argument surrounded by spaces, matching : #not>:not( div ) -Pass Fragment.querySelectorAll: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line -Pass Fragment.querySelector: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line -Pass Fragment.querySelectorAll: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line -Pass Fragment.querySelector: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line -Pass Fragment.querySelectorAll: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter -Pass Fragment.querySelector: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter -Pass Fragment.querySelectorAll: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter -Pass Fragment.querySelector: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter -Pass Fragment.querySelectorAll: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before -Pass Fragment.querySelector: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before -Pass Fragment.querySelectorAll: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before -Pass Fragment.querySelector: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before -Pass Fragment.querySelectorAll: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after -Pass Fragment.querySelector: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after -Pass Fragment.querySelectorAll: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after -Pass Fragment.querySelector: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after -Pass Fragment.querySelectorAll: Class selector, matching element with specified class: .class-p -Pass Fragment.querySelector: Class selector, matching element with specified class: .class-p -Pass Fragment.querySelectorAll: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana -Pass Fragment.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana -Pass Fragment.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange -Pass Fragment.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange -Pass Fragment.querySelectorAll: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi -Pass Fragment.querySelector: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi -Pass Fragment.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 -Pass Fragment.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 -Pass Fragment.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 -Pass Fragment.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 -Pass Fragment.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar -Pass Fragment.querySelector: Class selector, matching element with class with escaped character: .foo\:bar -Pass Fragment.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar -Pass Fragment.querySelector: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar -Pass Fragment.querySelectorAll: ID selector, matching element with specified id: #id #id-div1 -Pass Fragment.querySelector: ID selector, matching element with specified id: #id #id-div1 -Pass Fragment.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div1 -Pass Fragment.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div1 -Pass Fragment.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div2 -Pass Fragment.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div2 -Pass Fragment.querySelectorAll: ID Selector, chained, with type selector: div#id-div1, div#id-div2 -Pass Fragment.querySelector: ID Selector, chained, with type selector: div#id-div1, div#id-div2 -Pass Fragment.querySelectorAll: ID selector, not matching non-existent descendant: #id #none -Pass Fragment.querySelector: ID selector, not matching non-existent descendant: #id #none -Pass Fragment.querySelectorAll: ID selector, not matching non-existent ancestor: #none #id-div1 -Pass Fragment.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 -Pass Fragment.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate -Pass Fragment.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate -Pass Fragment.querySelectorAll: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi -Pass Fragment.querySelector: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi -Pass Fragment.querySelectorAll: ID selector, matching id value using non-ASCII characters (2): #台北 -Pass Fragment.querySelector: ID selector, matching id value using non-ASCII characters (2): #台北 -Pass Fragment.querySelectorAll: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 -Pass Fragment.querySelector: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 -Pass Fragment.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar -Pass Fragment.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar -Pass Fragment.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar -Pass Fragment.querySelector: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar -Pass Fragment.querySelectorAll: Namespace selector, matching element with any namespace: #any-namespace *|div -Pass Fragment.querySelector: Namespace selector, matching element with any namespace: #any-namespace *|div -Pass Fragment.querySelectorAll: Namespace selector, matching div elements in no namespace only: #no-namespace |div -Pass Fragment.querySelector: Namespace selector, matching div elements in no namespace only: #no-namespace |div -Pass Fragment.querySelectorAll: Namespace selector, matching any elements in no namespace only: #no-namespace |* -Pass Fragment.querySelector: Namespace selector, matching any elements in no namespace only: #no-namespace |* -Pass Fragment.querySelectorAll: Descendant combinator, matching element that is a descendant of an element with id: #descendant div -Pass Fragment.querySelector: Descendant combinator, matching element that is a descendant of an element with id: #descendant div -Pass Fragment.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 -Pass Fragment.querySelector: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 -Pass Fragment.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 -Pass Fragment.querySelector: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 -Pass Fragment.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 -Pass Fragment.querySelector: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 -Pass Fragment.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 -Pass Fragment.querySelector: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 -Pass Fragment.querySelectorAll: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 -Pass Fragment.querySelector: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 -Pass Fragment.querySelectorAll: Descendant combinator, whitespace characters: #descendant #descendant-div2 -Pass Fragment.querySelector: Descendant combinator, whitespace characters: #descendant #descendant-div2 -Pass Fragment.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child>div -Pass Fragment.querySelector: Child combinator, matching element that is a child of an element with id: #child>div -Pass Fragment.querySelectorAll: Child combinator, matching element with id that is a child of an element: div>#child-div1 -Pass Fragment.querySelector: Child combinator, matching element with id that is a child of an element: div>#child-div1 -Pass Fragment.querySelectorAll: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 -Pass Fragment.querySelector: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 -Pass Fragment.querySelectorAll: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 -Pass Fragment.querySelector: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 -Pass Fragment.querySelectorAll: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 -Pass Fragment.querySelector: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 -Pass Fragment.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 -Pass Fragment.querySelector: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 -Pass Fragment.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 -Pass Fragment.querySelector: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 -Pass Fragment.querySelectorAll: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 -Pass Fragment.querySelector: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 -Pass Fragment.querySelectorAll: Child combinator, surrounded by whitespace: #child-div1 > #child-div2 -Pass Fragment.querySelector: Child combinator, surrounded by whitespace: #child-div1 > #child-div2 -Pass Fragment.querySelectorAll: Child combinator, whitespace after: #child-div1> #child-div2 -Pass Fragment.querySelector: Child combinator, whitespace after: #child-div1> #child-div2 -Pass Fragment.querySelectorAll: Child combinator, whitespace before: #child-div1 >#child-div2 -Pass Fragment.querySelector: Child combinator, whitespace before: #child-div1 >#child-div2 -Pass Fragment.querySelectorAll: Child combinator, no whitespace: #child-div1>#child-div2 -Pass Fragment.querySelector: Child combinator, no whitespace: #child-div1>#child-div2 -Pass Fragment.querySelectorAll: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div -Pass Fragment.querySelector: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div -Pass Fragment.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 -Pass Fragment.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 -Pass Fragment.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 -Pass Fragment.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 -Pass Fragment.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 -Pass Fragment.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 -Pass Fragment.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 -Pass Fragment.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 -Pass Fragment.querySelectorAll: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p -Pass Fragment.querySelector: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p -Pass Fragment.querySelectorAll: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 -Pass Fragment.querySelector: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 -Pass Fragment.querySelectorAll: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 + #adjacent-p3 -Pass Fragment.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 + #adjacent-p3 -Pass Fragment.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+ #adjacent-p3 -Pass Fragment.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+ #adjacent-p3 -Pass Fragment.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2 +#adjacent-p3 -Pass Fragment.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2 +#adjacent-p3 -Pass Fragment.querySelectorAll: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 -Pass Fragment.querySelector: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 -Pass Fragment.querySelectorAll: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div -Pass Fragment.querySelector: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div -Pass Fragment.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 -Pass Fragment.querySelector: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 -Pass Fragment.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 -Pass Fragment.querySelector: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 -Pass Fragment.querySelectorAll: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div -Pass Fragment.querySelector: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div -Pass Fragment.querySelectorAll: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p -Pass Fragment.querySelector: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p -Pass Fragment.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div -Pass Fragment.querySelector: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div -Pass Fragment.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 -Pass Fragment.querySelector: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 -Pass Fragment.querySelectorAll: General sibling combinator, surrounded by whitespace: #sibling-p2 ~ #sibling-p3 -Pass Fragment.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2 ~ #sibling-p3 -Pass Fragment.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~ #sibling-p3 -Pass Fragment.querySelector: General sibling combinator, whitespace after: #sibling-p2~ #sibling-p3 -Pass Fragment.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2 ~#sibling-p3 -Pass Fragment.querySelector: General sibling combinator, whitespace before: #sibling-p2 ~#sibling-p3 -Pass Fragment.querySelectorAll: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 -Pass Fragment.querySelector: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 -Pass Fragment.querySelectorAll: Syntax, group of selectors separator, surrounded by whitespace: #group em , #group strong -Pass Fragment.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em , #group strong -Pass Fragment.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em, #group strong -Pass Fragment.querySelector: Syntax, group of selectors separator, whitespace after: #group em, #group strong -Pass Fragment.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em ,#group strong -Pass Fragment.querySelector: Syntax, group of selectors separator, whitespace before: #group em ,#group strong -Pass Fragment.querySelectorAll: Syntax, group of selectors separator, no whitespace: #group em,#group strong -Pass Fragment.querySelector: Syntax, group of selectors separator, no whitespace: #group em,#group strong -Fail Fragment.querySelectorAll: Slotted selector: ::slotted(foo) Failed to parse selector -Fail Fragment.querySelector: Slotted selector: ::slotted(foo) Failed to parse selector -Fail Fragment.querySelectorAll: Slotted selector (no matching closing paren): ::slotted(foo Failed to parse selector -Fail Fragment.querySelector: Slotted selector (no matching closing paren): ::slotted(foo Failed to parse selector -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 -Fail In-document Element.querySelectorAll: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target -Fail In-document Element.querySelector: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target -Pass In-document Element.querySelectorAll: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en) -Pass In-document Element.querySelector: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en) -Pass In-document Element.querySelectorAll: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) -Pass In-document Element.querySelector: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) -Pass In-document Element.querySelectorAll: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) -Pass In-document Element.querySelector: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) -Pass In-document Element.querySelectorAll: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) -Pass In-document Element.querySelector: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) -Pass In-document Element.querySelectorAll: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled -Pass In-document Element.querySelector: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled -Pass In-document Element.querySelectorAll: :enabled pseudo-class selector, not matching link elements: #pseudo-link :enabled -Pass In-document Element.querySelector: :enabled pseudo-class selector, not matching link elements: #pseudo-link :enabled -Pass In-document Element.querySelectorAll: :disabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled -Pass In-document Element.querySelector: :disabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled -Pass In-document Element.querySelectorAll: :disabled pseudo-class selector, not matching link elements: #pseudo-link :disabled -Pass In-document Element.querySelector: :disabled pseudo-class selector, not matching link elements: #pseudo-link :disabled -Pass In-document Element.querySelectorAll: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked -Pass In-document Element.querySelector: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked -Pass In-document Element.querySelectorAll: :not pseudo-class selector, matching : #not>:not(div) -Pass In-document Element.querySelector: :not pseudo-class selector, matching : #not>:not(div) -Pass In-document Element.querySelectorAll: :not pseudo-class selector, matching : #not * :not(:first-child) -Pass In-document Element.querySelector: :not pseudo-class selector, matching : #not * :not(:first-child) -Pass In-document Element.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*) -Pass In-document Element.querySelector: :not pseudo-class selector, matching nothing: :not(*) -Pass In-document Element.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*|*) -Pass In-document Element.querySelector: :not pseudo-class selector, matching nothing: :not(*|*) -Pass In-document Element.querySelectorAll: :not pseudo-class selector argument surrounded by spaces, matching : #not>:not( div ) -Pass In-document Element.querySelector: :not pseudo-class selector argument surrounded by spaces, matching : #not>:not( div ) -Pass In-document Element.querySelectorAll: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line -Pass In-document Element.querySelector: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line -Pass In-document Element.querySelectorAll: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line -Pass In-document Element.querySelector: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line -Pass In-document Element.querySelectorAll: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter -Pass In-document Element.querySelector: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter -Pass In-document Element.querySelectorAll: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter -Pass In-document Element.querySelector: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter -Pass In-document Element.querySelectorAll: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before -Pass In-document Element.querySelector: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before -Pass In-document Element.querySelectorAll: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before -Pass In-document Element.querySelector: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before -Pass In-document Element.querySelectorAll: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after -Pass In-document Element.querySelector: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after -Pass In-document Element.querySelectorAll: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after -Pass In-document Element.querySelector: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after -Pass In-document Element.querySelectorAll: Class selector, matching element with specified class: .class-p -Pass In-document Element.querySelector: Class selector, matching element with specified class: .class-p -Pass In-document Element.querySelectorAll: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana -Pass In-document Element.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana -Pass In-document Element.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange -Pass In-document Element.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange -Pass In-document Element.querySelectorAll: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi -Pass In-document Element.querySelector: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi -Pass In-document Element.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 -Pass In-document Element.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 -Pass In-document Element.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 -Pass In-document Element.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 -Pass In-document Element.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar -Pass In-document Element.querySelector: Class selector, matching element with class with escaped character: .foo\:bar -Pass In-document Element.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar -Pass In-document Element.querySelector: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar -Pass In-document Element.querySelectorAll: ID selector, matching element with specified id: #id #id-div1 -Pass In-document Element.querySelector: ID selector, matching element with specified id: #id #id-div1 -Pass In-document Element.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div1 -Pass In-document Element.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div1 -Pass In-document Element.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div2 -Pass In-document Element.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div2 -Pass In-document Element.querySelectorAll: ID Selector, chained, with type selector: div#id-div1, div#id-div2 -Pass In-document Element.querySelector: ID Selector, chained, with type selector: div#id-div1, div#id-div2 -Pass In-document Element.querySelectorAll: ID selector, not matching non-existent descendant: #id #none -Pass In-document Element.querySelector: ID selector, not matching non-existent descendant: #id #none -Pass In-document Element.querySelectorAll: ID selector, not matching non-existent ancestor: #none #id-div1 -Pass In-document Element.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 -Pass In-document Element.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate -Pass In-document Element.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate -Pass In-document Element.querySelectorAll: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi -Pass In-document Element.querySelector: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi -Pass In-document Element.querySelectorAll: ID selector, matching id value using non-ASCII characters (2): #台北 -Pass In-document Element.querySelector: ID selector, matching id value using non-ASCII characters (2): #台北 -Pass In-document Element.querySelectorAll: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 -Pass In-document Element.querySelector: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 -Pass In-document Element.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar -Pass In-document Element.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar -Pass In-document Element.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar -Pass In-document Element.querySelector: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar -Pass In-document Element.querySelectorAll: Namespace selector, matching element with any namespace: #any-namespace *|div -Pass In-document Element.querySelector: Namespace selector, matching element with any namespace: #any-namespace *|div -Pass In-document Element.querySelectorAll: Namespace selector, matching div elements in no namespace only: #no-namespace |div -Pass In-document Element.querySelector: Namespace selector, matching div elements in no namespace only: #no-namespace |div -Pass In-document Element.querySelectorAll: Namespace selector, matching any elements in no namespace only: #no-namespace |* -Pass In-document Element.querySelector: Namespace selector, matching any elements in no namespace only: #no-namespace |* -Pass In-document Element.querySelectorAll: Descendant combinator, matching element that is a descendant of an element with id: #descendant div -Pass In-document Element.querySelector: Descendant combinator, matching element that is a descendant of an element with id: #descendant div -Pass In-document Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: body #descendant-div1 -Pass In-document Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element: body #descendant-div1 -Pass In-document Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 -Pass In-document Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 -Pass In-document Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 -Pass In-document Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 -Pass In-document Element.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 -Pass In-document Element.querySelector: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 -Pass In-document Element.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 -Pass In-document Element.querySelector: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 -Pass In-document Element.querySelectorAll: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 -Pass In-document Element.querySelector: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 -Pass In-document Element.querySelectorAll: Descendant combinator, whitespace characters: #descendant #descendant-div2 -Pass In-document Element.querySelector: Descendant combinator, whitespace characters: #descendant #descendant-div2 -Pass In-document Element.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child>div -Pass In-document Element.querySelector: Child combinator, matching element that is a child of an element with id: #child>div -Pass In-document Element.querySelectorAll: Child combinator, matching element with id that is a child of an element: div>#child-div1 -Pass In-document Element.querySelector: Child combinator, matching element with id that is a child of an element: div>#child-div1 -Pass In-document Element.querySelectorAll: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 -Pass In-document Element.querySelector: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 -Pass In-document Element.querySelectorAll: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 -Pass In-document Element.querySelector: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 -Pass In-document Element.querySelectorAll: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 -Pass In-document Element.querySelector: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 -Pass In-document Element.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 -Pass In-document Element.querySelector: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 -Pass In-document Element.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 -Pass In-document Element.querySelector: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 -Pass In-document Element.querySelectorAll: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 -Pass In-document Element.querySelector: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 -Pass In-document Element.querySelectorAll: Child combinator, surrounded by whitespace: #child-div1 > #child-div2 -Pass In-document Element.querySelector: Child combinator, surrounded by whitespace: #child-div1 > #child-div2 -Pass In-document Element.querySelectorAll: Child combinator, whitespace after: #child-div1> #child-div2 -Pass In-document Element.querySelector: Child combinator, whitespace after: #child-div1> #child-div2 -Pass In-document Element.querySelectorAll: Child combinator, whitespace before: #child-div1 >#child-div2 -Pass In-document Element.querySelector: Child combinator, whitespace before: #child-div1 >#child-div2 -Pass In-document Element.querySelectorAll: Child combinator, no whitespace: #child-div1>#child-div2 -Pass In-document Element.querySelector: Child combinator, no whitespace: #child-div1>#child-div2 -Pass In-document Element.querySelectorAll: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div -Pass In-document Element.querySelector: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div -Pass In-document Element.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 -Pass In-document Element.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 -Pass In-document Element.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 -Pass In-document Element.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 -Pass In-document Element.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 -Pass In-document Element.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 -Pass In-document Element.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 -Pass In-document Element.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 -Pass In-document Element.querySelectorAll: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p -Pass In-document Element.querySelector: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p -Pass In-document Element.querySelectorAll: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 -Pass In-document Element.querySelector: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 -Pass In-document Element.querySelectorAll: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 + #adjacent-p3 -Pass In-document Element.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 + #adjacent-p3 -Pass In-document Element.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+ #adjacent-p3 -Pass In-document Element.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+ #adjacent-p3 -Pass In-document Element.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2 +#adjacent-p3 -Pass In-document Element.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2 +#adjacent-p3 -Pass In-document Element.querySelectorAll: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 -Pass In-document Element.querySelector: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 -Pass In-document Element.querySelectorAll: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div -Pass In-document Element.querySelector: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div -Pass In-document Element.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 -Pass In-document Element.querySelector: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 -Pass In-document Element.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 -Pass In-document Element.querySelector: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 -Pass In-document Element.querySelectorAll: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div -Pass In-document Element.querySelector: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div -Pass In-document Element.querySelectorAll: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p -Pass In-document Element.querySelector: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p -Pass In-document Element.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div -Pass In-document Element.querySelector: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div -Pass In-document Element.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 -Pass In-document Element.querySelector: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 -Pass In-document Element.querySelectorAll: General sibling combinator, surrounded by whitespace: #sibling-p2 ~ #sibling-p3 -Pass In-document Element.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2 ~ #sibling-p3 -Pass In-document Element.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~ #sibling-p3 -Pass In-document Element.querySelector: General sibling combinator, whitespace after: #sibling-p2~ #sibling-p3 -Pass In-document Element.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2 ~#sibling-p3 -Pass In-document Element.querySelector: General sibling combinator, whitespace before: #sibling-p2 ~#sibling-p3 -Pass In-document Element.querySelectorAll: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 -Pass In-document Element.querySelector: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 -Pass In-document Element.querySelectorAll: Syntax, group of selectors separator, surrounded by whitespace: #group em , #group strong -Pass In-document Element.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em , #group strong -Pass In-document Element.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em, #group strong -Pass In-document Element.querySelector: Syntax, group of selectors separator, whitespace after: #group em, #group strong -Pass In-document Element.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em ,#group strong -Pass In-document Element.querySelector: Syntax, group of selectors separator, whitespace before: #group em ,#group strong -Pass In-document Element.querySelectorAll: Syntax, group of selectors separator, no whitespace: #group em,#group strong -Pass In-document Element.querySelector: Syntax, group of selectors separator, no whitespace: #group em,#group strong -Fail In-document Element.querySelectorAll: Slotted selector: ::slotted(foo) Failed to parse selector -Fail In-document Element.querySelector: Slotted selector: ::slotted(foo) Failed to parse selector -Fail In-document Element.querySelectorAll: Slotted selector (no matching closing paren): ::slotted(foo Failed to parse selector -Fail In-document Element.querySelector: Slotted selector (no matching closing paren): ::slotted(foo Failed to parse selector \ No newline at end of file +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 +Fail Document.querySelectorAll: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target +Fail Document.querySelector: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target +Pass Document.querySelectorAll: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en) +Pass Document.querySelector: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en) +Pass Document.querySelectorAll: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) +Pass Document.querySelector: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) +Pass Document.querySelectorAll: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) +Pass Document.querySelector: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) +Pass Document.querySelectorAll: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) +Pass Document.querySelector: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) +Pass Document.querySelectorAll: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled +Pass Document.querySelector: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled +Pass Document.querySelectorAll: :enabled pseudo-class selector, not matching link elements: #pseudo-link :enabled +Pass Document.querySelector: :enabled pseudo-class selector, not matching link elements: #pseudo-link :enabled +Pass Document.querySelectorAll: :disabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled +Pass Document.querySelector: :disabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled +Pass Document.querySelectorAll: :disabled pseudo-class selector, not matching link elements: #pseudo-link :disabled +Pass Document.querySelector: :disabled pseudo-class selector, not matching link elements: #pseudo-link :disabled +Pass Document.querySelectorAll: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked +Pass Document.querySelector: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked +Pass Document.querySelectorAll: :not pseudo-class selector, matching : #not>:not(div) +Pass Document.querySelector: :not pseudo-class selector, matching : #not>:not(div) +Pass Document.querySelectorAll: :not pseudo-class selector, matching : #not * :not(:first-child) +Pass Document.querySelector: :not pseudo-class selector, matching : #not * :not(:first-child) +Pass Document.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*) +Pass Document.querySelector: :not pseudo-class selector, matching nothing: :not(*) +Pass Document.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*|*) +Pass Document.querySelector: :not pseudo-class selector, matching nothing: :not(*|*) +Pass Document.querySelectorAll: :not pseudo-class selector argument surrounded by spaces, matching : #not>:not( div ) +Pass Document.querySelector: :not pseudo-class selector argument surrounded by spaces, matching : #not>:not( div ) +Pass Document.querySelectorAll: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line +Pass Document.querySelector: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line +Pass Document.querySelectorAll: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line +Pass Document.querySelector: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line +Pass Document.querySelectorAll: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter +Pass Document.querySelector: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter +Pass Document.querySelectorAll: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter +Pass Document.querySelector: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter +Pass Document.querySelectorAll: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before +Pass Document.querySelector: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before +Pass Document.querySelectorAll: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before +Pass Document.querySelector: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before +Pass Document.querySelectorAll: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after +Pass Document.querySelector: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after +Pass Document.querySelectorAll: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after +Pass Document.querySelector: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after +Pass Document.querySelectorAll: Class selector, matching element with specified class: .class-p +Pass Document.querySelector: Class selector, matching element with specified class: .class-p +Pass Document.querySelectorAll: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana +Pass Document.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana +Pass Document.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange +Pass Document.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange +Pass Document.querySelectorAll: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi +Pass Document.querySelector: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi +Pass Document.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 +Pass Document.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 +Pass Document.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 +Pass Document.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 +Pass Document.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar +Pass Document.querySelector: Class selector, matching element with class with escaped character: .foo\:bar +Pass Document.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar +Pass Document.querySelector: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar +Pass Document.querySelectorAll: ID selector, matching element with specified id: #id #id-div1 +Pass Document.querySelector: ID selector, matching element with specified id: #id #id-div1 +Pass Document.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div1 +Pass Document.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div1 +Pass Document.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div2 +Pass Document.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div2 +Pass Document.querySelectorAll: ID Selector, chained, with type selector: div#id-div1, div#id-div2 +Pass Document.querySelector: ID Selector, chained, with type selector: div#id-div1, div#id-div2 +Pass Document.querySelectorAll: ID selector, not matching non-existent descendant: #id #none +Pass Document.querySelector: ID selector, not matching non-existent descendant: #id #none +Pass Document.querySelectorAll: ID selector, not matching non-existent ancestor: #none #id-div1 +Pass Document.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 +Pass Document.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate +Pass Document.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate +Pass Document.querySelectorAll: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi +Pass Document.querySelector: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi +Pass Document.querySelectorAll: ID selector, matching id value using non-ASCII characters (2): #台北 +Pass Document.querySelector: ID selector, matching id value using non-ASCII characters (2): #台北 +Pass Document.querySelectorAll: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 +Pass Document.querySelector: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 +Pass Document.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar +Pass Document.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar +Pass Document.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar +Pass Document.querySelector: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar +Pass Document.querySelectorAll: Namespace selector, matching element with any namespace: #any-namespace *|div +Pass Document.querySelector: Namespace selector, matching element with any namespace: #any-namespace *|div +Pass Document.querySelectorAll: Namespace selector, matching div elements in no namespace only: #no-namespace |div +Pass Document.querySelector: Namespace selector, matching div elements in no namespace only: #no-namespace |div +Pass Document.querySelectorAll: Namespace selector, matching any elements in no namespace only: #no-namespace |* +Pass Document.querySelector: Namespace selector, matching any elements in no namespace only: #no-namespace |* +Pass Document.querySelectorAll: Descendant combinator, matching element that is a descendant of an element with id: #descendant div +Pass Document.querySelector: Descendant combinator, matching element that is a descendant of an element with id: #descendant div +Pass Document.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: body #descendant-div1 +Pass Document.querySelector: Descendant combinator, matching element with id that is a descendant of an element: body #descendant-div1 +Pass Document.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 +Pass Document.querySelector: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 +Pass Document.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 +Pass Document.querySelector: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 +Pass Document.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 +Pass Document.querySelector: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 +Pass Document.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 +Pass Document.querySelector: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 +Pass Document.querySelectorAll: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 +Pass Document.querySelector: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 +Pass Document.querySelectorAll: Descendant combinator, whitespace characters: #descendant +#descendant-div2 +Pass Document.querySelector: Descendant combinator, whitespace characters: #descendant +#descendant-div2 +Pass Document.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child>div +Pass Document.querySelector: Child combinator, matching element that is a child of an element with id: #child>div +Pass Document.querySelectorAll: Child combinator, matching element with id that is a child of an element: div>#child-div1 +Pass Document.querySelector: Child combinator, matching element with id that is a child of an element: div>#child-div1 +Pass Document.querySelectorAll: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 +Pass Document.querySelector: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 +Pass Document.querySelectorAll: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 +Pass Document.querySelector: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 +Pass Document.querySelectorAll: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 +Pass Document.querySelector: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 +Pass Document.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 +Pass Document.querySelector: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 +Pass Document.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 +Pass Document.querySelector: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 +Pass Document.querySelectorAll: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 +Pass Document.querySelector: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 +Pass Document.querySelectorAll: Child combinator, surrounded by whitespace: #child-div1 +> +#child-div2 +Pass Document.querySelector: Child combinator, surrounded by whitespace: #child-div1 +> +#child-div2 +Pass Document.querySelectorAll: Child combinator, whitespace after: #child-div1> +#child-div2 +Pass Document.querySelector: Child combinator, whitespace after: #child-div1> +#child-div2 +Pass Document.querySelectorAll: Child combinator, whitespace before: #child-div1 +>#child-div2 +Pass Document.querySelector: Child combinator, whitespace before: #child-div1 +>#child-div2 +Pass Document.querySelectorAll: Child combinator, no whitespace: #child-div1>#child-div2 +Pass Document.querySelector: Child combinator, no whitespace: #child-div1>#child-div2 +Pass Document.querySelectorAll: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div +Pass Document.querySelector: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div +Pass Document.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 +Pass Document.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 +Pass Document.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 +Pass Document.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 +Pass Document.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 +Pass Document.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 +Pass Document.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 +Pass Document.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 +Pass Document.querySelectorAll: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p +Pass Document.querySelector: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p +Pass Document.querySelectorAll: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 +Pass Document.querySelector: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 +Pass Document.querySelectorAll: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 ++ +#adjacent-p3 +Pass Document.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 ++ +#adjacent-p3 +Pass Document.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+ +#adjacent-p3 +Pass Document.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+ +#adjacent-p3 +Pass Document.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2 ++#adjacent-p3 +Pass Document.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2 ++#adjacent-p3 +Pass Document.querySelectorAll: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 +Pass Document.querySelector: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 +Pass Document.querySelectorAll: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div +Pass Document.querySelector: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div +Pass Document.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 +Pass Document.querySelector: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 +Pass Document.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 +Pass Document.querySelector: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 +Pass Document.querySelectorAll: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div +Pass Document.querySelector: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div +Pass Document.querySelectorAll: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p +Pass Document.querySelector: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p +Pass Document.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div +Pass Document.querySelector: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div +Pass Document.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 +Pass Document.querySelector: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 +Pass Document.querySelectorAll: General sibling combinator, surrounded by whitespace: #sibling-p2 +~ +#sibling-p3 +Pass Document.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2 +~ +#sibling-p3 +Pass Document.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~ +#sibling-p3 +Pass Document.querySelector: General sibling combinator, whitespace after: #sibling-p2~ +#sibling-p3 +Pass Document.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2 +~#sibling-p3 +Pass Document.querySelector: General sibling combinator, whitespace before: #sibling-p2 +~#sibling-p3 +Pass Document.querySelectorAll: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 +Pass Document.querySelector: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 +Pass Document.querySelectorAll: Syntax, group of selectors separator, surrounded by whitespace: #group em +, +#group strong +Pass Document.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em +, +#group strong +Pass Document.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em, +#group strong +Pass Document.querySelector: Syntax, group of selectors separator, whitespace after: #group em, +#group strong +Pass Document.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em +,#group strong +Pass Document.querySelector: Syntax, group of selectors separator, whitespace before: #group em +,#group strong +Pass Document.querySelectorAll: Syntax, group of selectors separator, no whitespace: #group em,#group strong +Pass Document.querySelector: Syntax, group of selectors separator, no whitespace: #group em,#group strong +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): .台北Táiběi +Pass Detached Element.querySelector: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi +Pass Detached Element.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 +Pass Detached Element.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 +Pass Detached Element.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 +Pass Detached Element.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 +Pass Detached Element.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar +Pass Detached Element.querySelector: Class selector, matching element with class with escaped character: .foo\:bar +Pass Detached Element.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar +Pass Detached Element.querySelector: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar +Pass Detached Element.querySelectorAll: ID selector, matching element with specified id: #id #id-div1 +Pass Detached Element.querySelector: ID selector, matching element with specified id: #id #id-div1 +Pass Detached Element.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div1 +Pass Detached Element.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div1 +Pass Detached Element.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div2 +Pass Detached Element.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div2 +Pass Detached Element.querySelectorAll: ID Selector, chained, with type selector: div#id-div1, div#id-div2 +Pass Detached Element.querySelector: ID Selector, chained, with type selector: div#id-div1, div#id-div2 +Pass Detached Element.querySelectorAll: ID selector, not matching non-existent descendant: #id #none +Pass Detached Element.querySelector: ID selector, not matching non-existent descendant: #id #none +Pass Detached Element.querySelectorAll: ID selector, not matching non-existent ancestor: #none #id-div1 +Pass Detached Element.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 +Pass Detached Element.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate +Pass Detached Element.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate +Pass Detached Element.querySelectorAll: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi +Pass Detached Element.querySelector: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi +Pass Detached Element.querySelectorAll: ID selector, matching id value using non-ASCII characters (2): #台北 +Pass Detached Element.querySelector: ID selector, matching id value using non-ASCII characters (2): #台北 +Pass Detached Element.querySelectorAll: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 +Pass Detached Element.querySelector: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 +Pass Detached Element.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar +Pass Detached Element.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar +Pass Detached Element.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar +Pass Detached Element.querySelector: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar +Pass Detached Element.querySelectorAll: Namespace selector, matching element with any namespace: #any-namespace *|div +Pass Detached Element.querySelector: Namespace selector, matching element with any namespace: #any-namespace *|div +Pass Detached Element.querySelectorAll: Namespace selector, matching div elements in no namespace only: #no-namespace |div +Pass Detached Element.querySelector: Namespace selector, matching div elements in no namespace only: #no-namespace |div +Pass Detached Element.querySelectorAll: Namespace selector, matching any elements in no namespace only: #no-namespace |* +Pass Detached Element.querySelector: Namespace selector, matching any elements in no namespace only: #no-namespace |* +Pass Detached Element.querySelectorAll: Descendant combinator, matching element that is a descendant of an element with id: #descendant div +Pass Detached Element.querySelector: Descendant combinator, matching element that is a descendant of an element with id: #descendant div +Pass Detached Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 +Pass Detached Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 +Pass Detached Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 +Pass Detached Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 +Pass Detached Element.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 +Pass Detached Element.querySelector: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 +Pass Detached Element.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 +Pass Detached Element.querySelector: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 +Pass Detached Element.querySelectorAll: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 +Pass Detached Element.querySelector: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 +Pass Detached Element.querySelectorAll: Descendant combinator, whitespace characters: #descendant +#descendant-div2 +Pass Detached Element.querySelector: Descendant combinator, whitespace characters: #descendant +#descendant-div2 +Pass Detached Element.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child>div +Pass Detached Element.querySelector: Child combinator, matching element that is a child of an element with id: #child>div +Pass Detached Element.querySelectorAll: Child combinator, matching element with id that is a child of an element: div>#child-div1 +Pass Detached Element.querySelector: Child combinator, matching element with id that is a child of an element: div>#child-div1 +Pass Detached Element.querySelectorAll: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 +Pass Detached Element.querySelector: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 +Pass Detached Element.querySelectorAll: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 +Pass Detached Element.querySelector: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 +Pass Detached Element.querySelectorAll: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 +Pass Detached Element.querySelector: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 +Pass Detached Element.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 +Pass Detached Element.querySelector: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 +Pass Detached Element.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 +Pass Detached Element.querySelector: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 +Pass Detached Element.querySelectorAll: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 +Pass Detached Element.querySelector: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 +Pass Detached Element.querySelectorAll: Child combinator, surrounded by whitespace: #child-div1 +> +#child-div2 +Pass Detached Element.querySelector: Child combinator, surrounded by whitespace: #child-div1 +> +#child-div2 +Pass Detached Element.querySelectorAll: Child combinator, whitespace after: #child-div1> +#child-div2 +Pass Detached Element.querySelector: Child combinator, whitespace after: #child-div1> +#child-div2 +Pass Detached Element.querySelectorAll: Child combinator, whitespace before: #child-div1 +>#child-div2 +Pass Detached Element.querySelector: Child combinator, whitespace before: #child-div1 +>#child-div2 +Pass Detached Element.querySelectorAll: Child combinator, no whitespace: #child-div1>#child-div2 +Pass Detached Element.querySelector: Child combinator, no whitespace: #child-div1>#child-div2 +Pass Detached Element.querySelectorAll: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div +Pass Detached Element.querySelector: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div +Pass Detached Element.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 +Pass Detached Element.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 +Pass Detached Element.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 +Pass Detached Element.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 +Pass Detached Element.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 +Pass Detached Element.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 +Pass Detached Element.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 +Pass Detached Element.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 +Pass Detached Element.querySelectorAll: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p +Pass Detached Element.querySelector: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p +Pass Detached Element.querySelectorAll: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 +Pass Detached Element.querySelector: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 +Pass Detached Element.querySelectorAll: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 ++ +#adjacent-p3 +Pass Detached Element.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 ++ +#adjacent-p3 +Pass Detached Element.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+ +#adjacent-p3 +Pass Detached Element.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+ +#adjacent-p3 +Pass Detached Element.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2 ++#adjacent-p3 +Pass Detached Element.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2 ++#adjacent-p3 +Pass Detached Element.querySelectorAll: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 +Pass Detached Element.querySelector: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 +Pass Detached Element.querySelectorAll: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div +Pass Detached Element.querySelector: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div +Pass Detached Element.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 +Pass Detached Element.querySelector: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 +Pass Detached Element.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 +Pass Detached Element.querySelector: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 +Pass Detached Element.querySelectorAll: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div +Pass Detached Element.querySelector: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div +Pass Detached Element.querySelectorAll: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p +Pass Detached Element.querySelector: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p +Pass Detached Element.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div +Pass Detached Element.querySelector: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div +Pass Detached Element.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 +Pass Detached Element.querySelector: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 +Pass Detached Element.querySelectorAll: General sibling combinator, surrounded by whitespace: #sibling-p2 +~ +#sibling-p3 +Pass Detached Element.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2 +~ +#sibling-p3 +Pass Detached Element.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~ +#sibling-p3 +Pass Detached Element.querySelector: General sibling combinator, whitespace after: #sibling-p2~ +#sibling-p3 +Pass Detached Element.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2 +~#sibling-p3 +Pass Detached Element.querySelector: General sibling combinator, whitespace before: #sibling-p2 +~#sibling-p3 +Pass Detached Element.querySelectorAll: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 +Pass Detached Element.querySelector: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 +Pass Detached Element.querySelectorAll: Syntax, group of selectors separator, surrounded by whitespace: #group em +, +#group strong +Pass Detached Element.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em +, +#group strong +Pass Detached Element.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em, +#group strong +Pass Detached Element.querySelector: Syntax, group of selectors separator, whitespace after: #group em, +#group strong +Pass Detached Element.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em +,#group strong +Pass Detached Element.querySelector: Syntax, group of selectors separator, whitespace before: #group em +,#group strong +Pass Detached Element.querySelectorAll: Syntax, group of selectors separator, no whitespace: #group em,#group strong +Pass Detached Element.querySelector: Syntax, group of selectors separator, no whitespace: #group em,#group strong +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): .台北Táiběi +Pass Fragment.querySelector: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi +Pass Fragment.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 +Pass Fragment.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 +Pass Fragment.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 +Pass Fragment.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 +Pass Fragment.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar +Pass Fragment.querySelector: Class selector, matching element with class with escaped character: .foo\:bar +Pass Fragment.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar +Pass Fragment.querySelector: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar +Pass Fragment.querySelectorAll: ID selector, matching element with specified id: #id #id-div1 +Pass Fragment.querySelector: ID selector, matching element with specified id: #id #id-div1 +Pass Fragment.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div1 +Pass Fragment.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div1 +Pass Fragment.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div2 +Pass Fragment.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div2 +Pass Fragment.querySelectorAll: ID Selector, chained, with type selector: div#id-div1, div#id-div2 +Pass Fragment.querySelector: ID Selector, chained, with type selector: div#id-div1, div#id-div2 +Pass Fragment.querySelectorAll: ID selector, not matching non-existent descendant: #id #none +Pass Fragment.querySelector: ID selector, not matching non-existent descendant: #id #none +Pass Fragment.querySelectorAll: ID selector, not matching non-existent ancestor: #none #id-div1 +Pass Fragment.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 +Pass Fragment.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate +Pass Fragment.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate +Pass Fragment.querySelectorAll: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi +Pass Fragment.querySelector: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi +Pass Fragment.querySelectorAll: ID selector, matching id value using non-ASCII characters (2): #台北 +Pass Fragment.querySelector: ID selector, matching id value using non-ASCII characters (2): #台北 +Pass Fragment.querySelectorAll: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 +Pass Fragment.querySelector: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 +Pass Fragment.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar +Pass Fragment.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar +Pass Fragment.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar +Pass Fragment.querySelector: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar +Pass Fragment.querySelectorAll: Namespace selector, matching element with any namespace: #any-namespace *|div +Pass Fragment.querySelector: Namespace selector, matching element with any namespace: #any-namespace *|div +Pass Fragment.querySelectorAll: Namespace selector, matching div elements in no namespace only: #no-namespace |div +Pass Fragment.querySelector: Namespace selector, matching div elements in no namespace only: #no-namespace |div +Pass Fragment.querySelectorAll: Namespace selector, matching any elements in no namespace only: #no-namespace |* +Pass Fragment.querySelector: Namespace selector, matching any elements in no namespace only: #no-namespace |* +Pass Fragment.querySelectorAll: Descendant combinator, matching element that is a descendant of an element with id: #descendant div +Pass Fragment.querySelector: Descendant combinator, matching element that is a descendant of an element with id: #descendant div +Pass Fragment.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 +Pass Fragment.querySelector: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 +Pass Fragment.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 +Pass Fragment.querySelector: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 +Pass Fragment.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 +Pass Fragment.querySelector: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 +Pass Fragment.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 +Pass Fragment.querySelector: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 +Pass Fragment.querySelectorAll: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 +Pass Fragment.querySelector: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 +Pass Fragment.querySelectorAll: Descendant combinator, whitespace characters: #descendant +#descendant-div2 +Pass Fragment.querySelector: Descendant combinator, whitespace characters: #descendant +#descendant-div2 +Pass Fragment.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child>div +Pass Fragment.querySelector: Child combinator, matching element that is a child of an element with id: #child>div +Pass Fragment.querySelectorAll: Child combinator, matching element with id that is a child of an element: div>#child-div1 +Pass Fragment.querySelector: Child combinator, matching element with id that is a child of an element: div>#child-div1 +Pass Fragment.querySelectorAll: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 +Pass Fragment.querySelector: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 +Pass Fragment.querySelectorAll: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 +Pass Fragment.querySelector: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 +Pass Fragment.querySelectorAll: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 +Pass Fragment.querySelector: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 +Pass Fragment.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 +Pass Fragment.querySelector: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 +Pass Fragment.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 +Pass Fragment.querySelector: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 +Pass Fragment.querySelectorAll: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 +Pass Fragment.querySelector: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 +Pass Fragment.querySelectorAll: Child combinator, surrounded by whitespace: #child-div1 +> +#child-div2 +Pass Fragment.querySelector: Child combinator, surrounded by whitespace: #child-div1 +> +#child-div2 +Pass Fragment.querySelectorAll: Child combinator, whitespace after: #child-div1> +#child-div2 +Pass Fragment.querySelector: Child combinator, whitespace after: #child-div1> +#child-div2 +Pass Fragment.querySelectorAll: Child combinator, whitespace before: #child-div1 +>#child-div2 +Pass Fragment.querySelector: Child combinator, whitespace before: #child-div1 +>#child-div2 +Pass Fragment.querySelectorAll: Child combinator, no whitespace: #child-div1>#child-div2 +Pass Fragment.querySelector: Child combinator, no whitespace: #child-div1>#child-div2 +Pass Fragment.querySelectorAll: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div +Pass Fragment.querySelector: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div +Pass Fragment.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 +Pass Fragment.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 +Pass Fragment.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 +Pass Fragment.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 +Pass Fragment.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 +Pass Fragment.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 +Pass Fragment.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 +Pass Fragment.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 +Pass Fragment.querySelectorAll: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p +Pass Fragment.querySelector: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p +Pass Fragment.querySelectorAll: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 +Pass Fragment.querySelector: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 +Pass Fragment.querySelectorAll: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 ++ +#adjacent-p3 +Pass Fragment.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 ++ +#adjacent-p3 +Pass Fragment.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+ +#adjacent-p3 +Pass Fragment.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+ +#adjacent-p3 +Pass Fragment.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2 ++#adjacent-p3 +Pass Fragment.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2 ++#adjacent-p3 +Pass Fragment.querySelectorAll: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 +Pass Fragment.querySelector: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 +Pass Fragment.querySelectorAll: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div +Pass Fragment.querySelector: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div +Pass Fragment.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 +Pass Fragment.querySelector: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 +Pass Fragment.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 +Pass Fragment.querySelector: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 +Pass Fragment.querySelectorAll: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div +Pass Fragment.querySelector: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div +Pass Fragment.querySelectorAll: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p +Pass Fragment.querySelector: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p +Pass Fragment.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div +Pass Fragment.querySelector: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div +Pass Fragment.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 +Pass Fragment.querySelector: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 +Pass Fragment.querySelectorAll: General sibling combinator, surrounded by whitespace: #sibling-p2 +~ +#sibling-p3 +Pass Fragment.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2 +~ +#sibling-p3 +Pass Fragment.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~ +#sibling-p3 +Pass Fragment.querySelector: General sibling combinator, whitespace after: #sibling-p2~ +#sibling-p3 +Pass Fragment.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2 +~#sibling-p3 +Pass Fragment.querySelector: General sibling combinator, whitespace before: #sibling-p2 +~#sibling-p3 +Pass Fragment.querySelectorAll: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 +Pass Fragment.querySelector: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 +Pass Fragment.querySelectorAll: Syntax, group of selectors separator, surrounded by whitespace: #group em +, +#group strong +Pass Fragment.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em +, +#group strong +Pass Fragment.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em, +#group strong +Pass Fragment.querySelector: Syntax, group of selectors separator, whitespace after: #group em, +#group strong +Pass Fragment.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em +,#group strong +Pass Fragment.querySelector: Syntax, group of selectors separator, whitespace before: #group em +,#group strong +Pass Fragment.querySelectorAll: Syntax, group of selectors separator, no whitespace: #group em,#group strong +Pass Fragment.querySelector: Syntax, group of selectors separator, no whitespace: #group em,#group strong +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 +Fail In-document Element.querySelectorAll: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target +Fail In-document Element.querySelector: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target +Pass In-document Element.querySelectorAll: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en) +Pass In-document Element.querySelector: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en) +Pass In-document Element.querySelectorAll: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) +Pass In-document Element.querySelector: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) +Pass In-document Element.querySelectorAll: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) +Pass In-document Element.querySelector: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) +Pass In-document Element.querySelectorAll: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) +Pass In-document Element.querySelector: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) +Pass In-document Element.querySelectorAll: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled +Pass In-document Element.querySelector: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled +Pass In-document Element.querySelectorAll: :enabled pseudo-class selector, not matching link elements: #pseudo-link :enabled +Pass In-document Element.querySelector: :enabled pseudo-class selector, not matching link elements: #pseudo-link :enabled +Pass In-document Element.querySelectorAll: :disabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled +Pass In-document Element.querySelector: :disabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled +Pass In-document Element.querySelectorAll: :disabled pseudo-class selector, not matching link elements: #pseudo-link :disabled +Pass In-document Element.querySelector: :disabled pseudo-class selector, not matching link elements: #pseudo-link :disabled +Pass In-document Element.querySelectorAll: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked +Pass In-document Element.querySelector: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked +Pass In-document Element.querySelectorAll: :not pseudo-class selector, matching : #not>:not(div) +Pass In-document Element.querySelector: :not pseudo-class selector, matching : #not>:not(div) +Pass In-document Element.querySelectorAll: :not pseudo-class selector, matching : #not * :not(:first-child) +Pass In-document Element.querySelector: :not pseudo-class selector, matching : #not * :not(:first-child) +Pass In-document Element.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*) +Pass In-document Element.querySelector: :not pseudo-class selector, matching nothing: :not(*) +Pass In-document Element.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*|*) +Pass In-document Element.querySelector: :not pseudo-class selector, matching nothing: :not(*|*) +Pass In-document Element.querySelectorAll: :not pseudo-class selector argument surrounded by spaces, matching : #not>:not( div ) +Pass In-document Element.querySelector: :not pseudo-class selector argument surrounded by spaces, matching : #not>:not( div ) +Pass In-document Element.querySelectorAll: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line +Pass In-document Element.querySelector: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line +Pass In-document Element.querySelectorAll: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line +Pass In-document Element.querySelector: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line +Pass In-document Element.querySelectorAll: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter +Pass In-document Element.querySelector: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter +Pass In-document Element.querySelectorAll: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter +Pass In-document Element.querySelector: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter +Pass In-document Element.querySelectorAll: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before +Pass In-document Element.querySelector: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before +Pass In-document Element.querySelectorAll: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before +Pass In-document Element.querySelector: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before +Pass In-document Element.querySelectorAll: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after +Pass In-document Element.querySelector: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after +Pass In-document Element.querySelectorAll: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after +Pass In-document Element.querySelector: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after +Pass In-document Element.querySelectorAll: Class selector, matching element with specified class: .class-p +Pass In-document Element.querySelector: Class selector, matching element with specified class: .class-p +Pass In-document Element.querySelectorAll: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana +Pass In-document Element.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana +Pass In-document Element.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange +Pass In-document Element.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange +Pass In-document Element.querySelectorAll: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi +Pass In-document Element.querySelector: Class selector, matching element with class value using non-ASCII characters (1): .台北Táiběi +Pass In-document Element.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 +Pass In-document Element.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 +Pass In-document Element.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 +Pass In-document Element.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters (1): .台北Táiběi.台北 +Pass In-document Element.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar +Pass In-document Element.querySelector: Class selector, matching element with class with escaped character: .foo\:bar +Pass In-document Element.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar +Pass In-document Element.querySelector: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar +Pass In-document Element.querySelectorAll: ID selector, matching element with specified id: #id #id-div1 +Pass In-document Element.querySelector: ID selector, matching element with specified id: #id #id-div1 +Pass In-document Element.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div1 +Pass In-document Element.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div1 +Pass In-document Element.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div2 +Pass In-document Element.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div2 +Pass In-document Element.querySelectorAll: ID Selector, chained, with type selector: div#id-div1, div#id-div2 +Pass In-document Element.querySelector: ID Selector, chained, with type selector: div#id-div1, div#id-div2 +Pass In-document Element.querySelectorAll: ID selector, not matching non-existent descendant: #id #none +Pass In-document Element.querySelector: ID selector, not matching non-existent descendant: #id #none +Pass In-document Element.querySelectorAll: ID selector, not matching non-existent ancestor: #none #id-div1 +Pass In-document Element.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 +Pass In-document Element.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate +Pass In-document Element.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate +Pass In-document Element.querySelectorAll: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi +Pass In-document Element.querySelector: ID selector, matching id value using non-ASCII characters (1): #台北Táiběi +Pass In-document Element.querySelectorAll: ID selector, matching id value using non-ASCII characters (2): #台北 +Pass In-document Element.querySelector: ID selector, matching id value using non-ASCII characters (2): #台北 +Pass In-document Element.querySelectorAll: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 +Pass In-document Element.querySelector: ID selector, matching id values using non-ASCII characters (1): #台北Táiběi, #台北 +Pass In-document Element.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar +Pass In-document Element.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar +Pass In-document Element.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar +Pass In-document Element.querySelector: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar +Pass In-document Element.querySelectorAll: Namespace selector, matching element with any namespace: #any-namespace *|div +Pass In-document Element.querySelector: Namespace selector, matching element with any namespace: #any-namespace *|div +Pass In-document Element.querySelectorAll: Namespace selector, matching div elements in no namespace only: #no-namespace |div +Pass In-document Element.querySelector: Namespace selector, matching div elements in no namespace only: #no-namespace |div +Pass In-document Element.querySelectorAll: Namespace selector, matching any elements in no namespace only: #no-namespace |* +Pass In-document Element.querySelector: Namespace selector, matching any elements in no namespace only: #no-namespace |* +Pass In-document Element.querySelectorAll: Descendant combinator, matching element that is a descendant of an element with id: #descendant div +Pass In-document Element.querySelector: Descendant combinator, matching element that is a descendant of an element with id: #descendant div +Pass In-document Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: body #descendant-div1 +Pass In-document Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element: body #descendant-div1 +Pass In-document Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 +Pass In-document Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 +Pass In-document Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 +Pass In-document Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 +Pass In-document Element.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 +Pass In-document Element.querySelector: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 +Pass In-document Element.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 +Pass In-document Element.querySelector: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 +Pass In-document Element.querySelectorAll: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 +Pass In-document Element.querySelector: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 +Pass In-document Element.querySelectorAll: Descendant combinator, whitespace characters: #descendant +#descendant-div2 +Pass In-document Element.querySelector: Descendant combinator, whitespace characters: #descendant +#descendant-div2 +Pass In-document Element.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child>div +Pass In-document Element.querySelector: Child combinator, matching element that is a child of an element with id: #child>div +Pass In-document Element.querySelectorAll: Child combinator, matching element with id that is a child of an element: div>#child-div1 +Pass In-document Element.querySelector: Child combinator, matching element with id that is a child of an element: div>#child-div1 +Pass In-document Element.querySelectorAll: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 +Pass In-document Element.querySelector: Child combinator, matching element with id that is a child of an element with id: #child>#child-div1 +Pass In-document Element.querySelectorAll: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 +Pass In-document Element.querySelector: Child combinator, matching element with id that is a child of an element with class: #child-div1>.child-div2 +Pass In-document Element.querySelectorAll: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 +Pass In-document Element.querySelector: Child combinator, matching element with class that is a child of an element with class: .child-div1>.child-div2 +Pass In-document Element.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 +Pass In-document Element.querySelector: Child combinator, not matching element with id that is not a child of an element with id: #child>#child-div3 +Pass In-document Element.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 +Pass In-document Element.querySelector: Child combinator, not matching element with id that is not a child of an element with class: #child-div1>.child-div3 +Pass In-document Element.querySelectorAll: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 +Pass In-document Element.querySelector: Child combinator, not matching element with class that is not a child of an element with class: .child-div1>.child-div3 +Pass In-document Element.querySelectorAll: Child combinator, surrounded by whitespace: #child-div1 +> +#child-div2 +Pass In-document Element.querySelector: Child combinator, surrounded by whitespace: #child-div1 +> +#child-div2 +Pass In-document Element.querySelectorAll: Child combinator, whitespace after: #child-div1> +#child-div2 +Pass In-document Element.querySelector: Child combinator, whitespace after: #child-div1> +#child-div2 +Pass In-document Element.querySelectorAll: Child combinator, whitespace before: #child-div1 +>#child-div2 +Pass In-document Element.querySelector: Child combinator, whitespace before: #child-div1 +>#child-div2 +Pass In-document Element.querySelectorAll: Child combinator, no whitespace: #child-div1>#child-div2 +Pass In-document Element.querySelector: Child combinator, no whitespace: #child-div1>#child-div2 +Pass In-document Element.querySelectorAll: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div +Pass In-document Element.querySelector: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div +Pass In-document Element.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 +Pass In-document Element.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 +Pass In-document Element.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 +Pass In-document Element.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 +Pass In-document Element.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 +Pass In-document Element.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 +Pass In-document Element.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 +Pass In-document Element.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 +Pass In-document Element.querySelectorAll: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p +Pass In-document Element.querySelector: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p +Pass In-document Element.querySelectorAll: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 +Pass In-document Element.querySelector: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 +Pass In-document Element.querySelectorAll: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 ++ +#adjacent-p3 +Pass In-document Element.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2 ++ +#adjacent-p3 +Pass In-document Element.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+ +#adjacent-p3 +Pass In-document Element.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+ +#adjacent-p3 +Pass In-document Element.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2 ++#adjacent-p3 +Pass In-document Element.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2 ++#adjacent-p3 +Pass In-document Element.querySelectorAll: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 +Pass In-document Element.querySelector: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 +Pass In-document Element.querySelectorAll: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div +Pass In-document Element.querySelector: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div +Pass In-document Element.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 +Pass In-document Element.querySelector: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 +Pass In-document Element.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 +Pass In-document Element.querySelector: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 +Pass In-document Element.querySelectorAll: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div +Pass In-document Element.querySelector: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div +Pass In-document Element.querySelectorAll: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p +Pass In-document Element.querySelector: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p +Pass In-document Element.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div +Pass In-document Element.querySelector: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling>p~div +Pass In-document Element.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 +Pass In-document Element.querySelector: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 +Pass In-document Element.querySelectorAll: General sibling combinator, surrounded by whitespace: #sibling-p2 +~ +#sibling-p3 +Pass In-document Element.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2 +~ +#sibling-p3 +Pass In-document Element.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~ +#sibling-p3 +Pass In-document Element.querySelector: General sibling combinator, whitespace after: #sibling-p2~ +#sibling-p3 +Pass In-document Element.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2 +~#sibling-p3 +Pass In-document Element.querySelector: General sibling combinator, whitespace before: #sibling-p2 +~#sibling-p3 +Pass In-document Element.querySelectorAll: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 +Pass In-document Element.querySelector: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 +Pass In-document Element.querySelectorAll: Syntax, group of selectors separator, surrounded by whitespace: #group em +, +#group strong +Pass In-document Element.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em +, +#group strong +Pass In-document Element.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em, +#group strong +Pass In-document Element.querySelector: Syntax, group of selectors separator, whitespace after: #group em, +#group strong +Pass In-document Element.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em +,#group strong +Pass In-document Element.querySelector: Syntax, group of selectors separator, whitespace before: #group em +,#group strong +Pass In-document Element.querySelectorAll: Syntax, group of selectors separator, no whitespace: #group em,#group strong +Pass In-document Element.querySelector: Syntax, group of selectors separator, no whitespace: #group em,#group strong +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 \ No newline at end of file diff --git a/Tests/LibWeb/Text/expected/wpt-import/html/rendering/pixel-length-attributes.txt b/Tests/LibWeb/Text/expected/wpt-import/html/rendering/pixel-length-attributes.txt index b6c7096be24..5c24a771b50 100644 --- a/Tests/LibWeb/Text/expected/wpt-import/html/rendering/pixel-length-attributes.txt +++ b/Tests/LibWeb/Text/expected/wpt-import/html/rendering/pixel-length-attributes.txt @@ -1,598 +1,593 @@ -Summary - Harness status: OK -Rerun - Found 588 tests 588 Pass -Details -Result Test Name MessagePass