...

Text file src/github.com/andybalholm/cascadia/test_resources/valid_selectors.json

Documentation: github.com/andybalholm/cascadia/test_resources

     1[
     2  {
     3    "name": "Type selector, matching html element",
     4    "selector": "html",
     5    "expect": [
     6      "html"
     7    ],
     8    "exclude": [
     9      "element",
    10      "fragment",
    11      "detached"
    12    ],
    13    "level": 1
    14  },
    15  {
    16    "name": "Type selector, matching body element",
    17    "selector": "body",
    18    "expect": [
    19      "body"
    20    ],
    21    "exclude": [
    22      "element",
    23      "fragment",
    24      "detached"
    25    ],
    26    "level": 1
    27  },
    28  {
    29    "name": "Universal selector, matching all children of element with specified ID",
    30    "selector": "#universal>*",
    31    "expect": [
    32      "universal-p1",
    33      "universal-hr1",
    34      "universal-pre1",
    35      "universal-p2",
    36      "universal-address1"
    37    ],
    38    "level": 2
    39  },
    40  {
    41    "name": "Universal selector, matching all grandchildren of element with specified ID",
    42    "selector": "#universal>*>*",
    43    "expect": [
    44      "universal-code1",
    45      "universal-span1",
    46      "universal-a1",
    47      "universal-code2"
    48    ],
    49    "level": 2
    50  },
    51  {
    52    "name": "Universal selector, matching all children of empty element with specified ID",
    53    "selector": "#empty>*",
    54    "expect": [],
    55    "level": 2
    56  },
    57  {
    58    "name": "Universal selector, matching all descendants of element with specified ID",
    59    "selector": "#universal *",
    60    "expect": [
    61      "universal-p1",
    62      "universal-code1",
    63      "universal-hr1",
    64      "universal-pre1",
    65      "universal-span1",
    66      "universal-p2",
    67      "universal-a1",
    68      "universal-address1",
    69      "universal-code2",
    70      "universal-a2"
    71    ],
    72    "level": 2
    73  },
    74  {
    75    "name": "Attribute presence selector, matching align attribute with value",
    76    "selector": ".attr-presence-div1[align]",
    77    "expect": [
    78      "attr-presence-div1"
    79    ],
    80    "level": 2
    81  },
    82  {
    83    "name": "Attribute presence selector, matching align attribute with empty value",
    84    "selector": ".attr-presence-div2[align]",
    85    "expect": [
    86      "attr-presence-div2"
    87    ],
    88    "level": 2
    89  },
    90  {
    91    "name": "Attribute presence selector, matching title attribute, case insensitivity",
    92    "selector": "#attr-presence [TiTlE]",
    93    "expect": [
    94      "attr-presence-a1",
    95      "attr-presence-span1"
    96    ],
    97    "exclude": [
    98      "xhtml"
    99    ],
   100    "level": 2
   101  },
   102  {
   103    "name": "Attribute presence selector, matching custom data-* attribute",
   104    "selector": "[data-attr-presence]",
   105    "expect": [
   106      "attr-presence-pre1",
   107      "attr-presence-blockquote1"
   108    ],
   109    "level": 2
   110  },
   111  {
   112    "name": "Attribute presence selector, not matching attribute with similar name",
   113    "selector": ".attr-presence-div3[align], .attr-presence-div4[align]",
   114    "expect": [],
   115    "level": 2
   116  },
   117  {
   118    "name": "Attribute presence selector, matching attribute with non-ASCII characters",
   119    "selector": "ul[data-中文]",
   120    "expect": [
   121      "attr-presence-ul1"
   122    ],
   123    "level": 2
   124  },
   125  {
   126    "name": "Attribute presence selector, not matching default option without selected attribute",
   127    "selector": "#attr-presence-select1 option[selected]",
   128    "expect": [],
   129    "level": 2
   130  },
   131  {
   132    "name": "Attribute presence selector, matching option with selected attribute",
   133    "selector": "#attr-presence-select2 option[selected]",
   134    "expect": [
   135      "attr-presence-select2-option4"
   136    ],
   137    "level": 2
   138  },
   139  {
   140    "name": "Attribute presence selector, matching multiple options with selected attributes",
   141    "selector": "#attr-presence-select3 option[selected]",
   142    "expect": [
   143      "attr-presence-select3-option2",
   144      "attr-presence-select3-option3"
   145    ],
   146    "level": 2
   147  },
   148  {
   149    "name": "Attribute value selector, matching align attribute with value",
   150    "selector": "#attr-value [align=\"center\"]",
   151    "expect": [
   152      "attr-value-div1"
   153    ],
   154    "level": 2
   155  },
   156  {
   157    "name": "Attribute value selector, matching align attribute with empty value",
   158    "selector": "#attr-value [align=\"\"]",
   159    "expect": [
   160      "attr-value-div2"
   161    ],
   162    "level": 2
   163  },
   164  {
   165    "name": "Attribute value selector, not matching align attribute with partial value",
   166    "selector": "#attr-value [align=\"c\"]",
   167    "expect": [],
   168    "level": 2
   169  },
   170  {
   171    "name": "Attribute value selector, not matching align attribute with incorrect value",
   172    "selector": "#attr-value [align=\"centera\"]",
   173    "expect": [],
   174    "level": 2
   175  },
   176  {
   177    "name": "Attribute value selector, matching custom data-* attribute with unicode escaped value",
   178    "selector": "[data-attr-value=\"\\e9\"]",
   179    "expect": [
   180      "attr-value-div3"
   181    ],
   182    "level": 2
   183  },
   184  {
   185    "name": "Attribute value selector, matching custom data-* attribute with escaped character",
   186    "selector": "[data-attr-value_foo=\"\\e9\"]",
   187    "expect": [
   188      "attr-value-div4"
   189    ],
   190    "level": 2
   191  },
   192  {
   193    "name": "Attribute value selector with single-quoted value, matching multiple inputs with type attributes",
   194    "selector": "#attr-value input[type='hidden'],#attr-value input[type='radio']",
   195    "expect": [
   196      "attr-value-input3",
   197      "attr-value-input4",
   198      "attr-value-input6",
   199      "attr-value-input8",
   200      "attr-value-input9"
   201    ],
   202    "level": 2
   203  },
   204  {
   205    "name": "Attribute value selector with double-quoted value, matching multiple inputs with type attributes",
   206    "selector": "#attr-value input[type=\"hidden\"],#attr-value input[type='radio']",
   207    "expect": [
   208      "attr-value-input3",
   209      "attr-value-input4",
   210      "attr-value-input6",
   211      "attr-value-input8",
   212      "attr-value-input9"
   213    ],
   214    "level": 2
   215  },
   216  {
   217    "name": "Attribute value selector with unquoted value, matching multiple inputs with type attributes",
   218    "selector": "#attr-value input[type=hidden],#attr-value input[type=radio]",
   219    "expect": [
   220      "attr-value-input3",
   221      "attr-value-input4",
   222      "attr-value-input6",
   223      "attr-value-input8",
   224      "attr-value-input9"
   225    ],
   226    "level": 2
   227  },
   228  {
   229    "name": "Attribute value selector, matching attribute with value using non-ASCII characters",
   230    "selector": "[data-attr-value=中文]",
   231    "expect": [
   232      "attr-value-div5"
   233    ],
   234    "level": 2
   235  },
   236  {
   237    "name": "Attribute whitespace-separated list selector, matching class attribute with value",
   238    "selector": "#attr-whitespace [class~=\"div1\"]",
   239    "expect": [
   240      "attr-whitespace-div1"
   241    ],
   242    "level": 2
   243  },
   244  {
   245    "name": "Attribute whitespace-separated list selector, not matching class attribute with empty value",
   246    "selector": "#attr-whitespace [class~=\"\"]",
   247    "expect": [],
   248    "level": 2
   249  },
   250  {
   251    "name": "Attribute whitespace-separated list selector, not matching class attribute with partial value",
   252    "selector": "[data-attr-whitespace~=\"div\"]",
   253    "expect": [],
   254    "level": 2
   255  },
   256  {
   257    "name": "Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value",
   258    "selector": "[data-attr-whitespace~=\"\\0000e9\"]",
   259    "expect": [
   260      "attr-whitespace-div4"
   261    ],
   262    "level": 2
   263  },
   264  {
   265    "name": "Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character",
   266    "selector": "[data-attr-whitespace_foo~=\"\\e9\"]",
   267    "expect": [
   268      "attr-whitespace-div5"
   269    ],
   270    "level": 2
   271  },
   272  {
   273    "name": "Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes",
   274    "selector": "#attr-whitespace a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow']",
   275    "expect": [
   276      "attr-whitespace-a1",
   277      "attr-whitespace-a2",
   278      "attr-whitespace-a3",
   279      "attr-whitespace-a5",
   280      "attr-whitespace-a7"
   281    ],
   282    "level": 2
   283  },
   284  {
   285    "name": "Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes",
   286    "selector": "#attr-whitespace a[rel~=\"bookmark\"],#attr-whitespace a[rel~='nofollow']",
   287    "expect": [
   288      "attr-whitespace-a1",
   289      "attr-whitespace-a2",
   290      "attr-whitespace-a3",
   291      "attr-whitespace-a5",
   292      "attr-whitespace-a7"
   293    ],
   294    "level": 2
   295  },
   296  {
   297    "name": "Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes",
   298    "selector": "#attr-whitespace a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow]",
   299    "expect": [
   300      "attr-whitespace-a1",
   301      "attr-whitespace-a2",
   302      "attr-whitespace-a3",
   303      "attr-whitespace-a5",
   304      "attr-whitespace-a7"
   305    ],
   306    "level": 2
   307  },
   308  {
   309    "name": "Attribute whitespace-separated list selector with double-quoted value, not matching value with space",
   310    "selector": "#attr-whitespace a[rel~=\"book mark\"]",
   311    "expect": [],
   312    "level": 2
   313  },
   314  {
   315    "name": "Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters",
   316    "selector": "#attr-whitespace [title~=中文]",
   317    "expect": [
   318      "attr-whitespace-p1"
   319    ],
   320    "level": 2
   321  },
   322  {
   323    "name": "Attribute hyphen-separated list selector, not matching unspecified lang attribute",
   324    "selector": "#attr-hyphen-div1[lang|=\"en\"]",
   325    "expect": [],
   326    "level": 2
   327  },
   328  {
   329    "name": "Attribute hyphen-separated list selector, matching lang attribute with exact value",
   330    "selector": "#attr-hyphen-div2[lang|=\"fr\"]",
   331    "expect": [
   332      "attr-hyphen-div2"
   333    ],
   334    "level": 2
   335  },
   336  {
   337    "name": "Attribute hyphen-separated list selector, matching lang attribute with partial value",
   338    "selector": "#attr-hyphen-div3[lang|=\"en\"]",
   339    "expect": [
   340      "attr-hyphen-div3"
   341    ],
   342    "level": 2
   343  },
   344  {
   345    "name": "Attribute hyphen-separated list selector, not matching incorrect value",
   346    "selector": "#attr-hyphen-div4[lang|=\"es-AR\"]",
   347    "expect": [],
   348    "level": 2
   349  },
   350  {
   351    "name": "Attribute begins with selector, matching href attributes beginning with specified substring",
   352    "selector": "#attr-begins a[href^=\"http://www\"]",
   353    "expect": [
   354      "attr-begins-a1",
   355      "attr-begins-a3"
   356    ],
   357    "level": 3
   358  },
   359  {
   360    "name": "Attribute begins with selector, matching lang attributes beginning with specified substring, ",
   361    "selector": "#attr-begins [lang^=\"en-\"]",
   362    "expect": [
   363      "attr-begins-div2",
   364      "attr-begins-div4"
   365    ],
   366    "level": 3
   367  },
   368  {
   369    "name": "Attribute begins with selector, not matching class attribute not beginning with specified substring",
   370    "selector": "#attr-begins [class^=apple]",
   371    "expect": [],
   372    "level": 3
   373  },
   374  {
   375    "name": "Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring",
   376    "selector": "#attr-begins [class^=' apple']",
   377    "expect": [
   378      "attr-begins-p1"
   379    ],
   380    "level": 3
   381  },
   382  {
   383    "name": "Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring",
   384    "selector": "#attr-begins [class^=\" apple\"]",
   385    "expect": [
   386      "attr-begins-p1"
   387    ],
   388    "level": 3
   389  },
   390  {
   391    "name": "Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring",
   392    "selector": "#attr-begins [class^= apple]",
   393    "expect": [],
   394    "level": 3
   395  },
   396  {
   397    "name": "Attribute ends with selector, matching href attributes ending with specified substring",
   398    "selector": "#attr-ends a[href$=\".org\"]",
   399    "expect": [
   400      "attr-ends-a1",
   401      "attr-ends-a3"
   402    ],
   403    "level": 3
   404  },
   405  {
   406    "name": "Attribute ends with selector, matching lang attributes ending with specified substring, ",
   407    "selector": "#attr-ends [lang$=\"-CH\"]",
   408    "expect": [
   409      "attr-ends-div2",
   410      "attr-ends-div4"
   411    ],
   412    "level": 3
   413  },
   414  {
   415    "name": "Attribute ends with selector, not matching class attribute not ending with specified substring",
   416    "selector": "#attr-ends [class$=apple]",
   417    "expect": [],
   418    "level": 3
   419  },
   420  {
   421    "name": "Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring",
   422    "selector": "#attr-ends [class$='apple ']",
   423    "expect": [
   424      "attr-ends-p1"
   425    ],
   426    "level": 3
   427  },
   428  {
   429    "name": "Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring",
   430    "selector": "#attr-ends [class$=\"apple \"]",
   431    "expect": [
   432      "attr-ends-p1"
   433    ],
   434    "level": 3
   435  },
   436  {
   437    "name": "Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring",
   438    "selector": "#attr-ends [class$=apple ]",
   439    "expect": [],
   440    "level": 3
   441  },
   442  {
   443    "name": "Attribute contains selector, matching href attributes beginning with specified substring",
   444    "selector": "#attr-contains a[href*=\"http://www\"]",
   445    "expect": [
   446      "attr-contains-a1",
   447      "attr-contains-a3"
   448    ],
   449    "level": 3
   450  },
   451  {
   452    "name": "Attribute contains selector, matching href attributes ending with specified substring",
   453    "selector": "#attr-contains a[href*=\".org\"]",
   454    "expect": [
   455      "attr-contains-a1",
   456      "attr-contains-a2"
   457    ],
   458    "level": 3
   459  },
   460  {
   461    "name": "Attribute contains selector, matching href attributes containing specified substring",
   462    "selector": "#attr-contains a[href*=\".example.\"]",
   463    "expect": [
   464      "attr-contains-a1",
   465      "attr-contains-a3"
   466    ],
   467    "level": 3
   468  },
   469  {
   470    "name": "Attribute contains selector, matching lang attributes beginning with specified substring, ",
   471    "selector": "#attr-contains [lang*=\"en-\"]",
   472    "expect": [
   473      "attr-contains-div2",
   474      "attr-contains-div6"
   475    ],
   476    "level": 3
   477  },
   478  {
   479    "name": "Attribute contains selector, matching lang attributes ending with specified substring, ",
   480    "selector": "#attr-contains [lang*=\"-CH\"]",
   481    "expect": [
   482      "attr-contains-div3",
   483      "attr-contains-div5"
   484    ],
   485    "level": 3
   486  },
   487  {
   488    "name": "Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring",
   489    "selector": "#attr-contains [class*=' apple']",
   490    "expect": [
   491      "attr-contains-p1"
   492    ],
   493    "level": 3
   494  },
   495  {
   496    "name": "Attribute contains selector with single-quoted value, matching class attribute ending with specified substring",
   497    "selector": "#attr-contains [class*='orange ']",
   498    "expect": [
   499      "attr-contains-p1"
   500    ],
   501    "level": 3
   502  },
   503  {
   504    "name": "Attribute contains selector with single-quoted value, matching class attribute containing specified substring",
   505    "selector": "#attr-contains [class*='ple banana ora']",
   506    "expect": [
   507      "attr-contains-p1"
   508    ],
   509    "level": 3
   510  },
   511  {
   512    "name": "Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring",
   513    "selector": "#attr-contains [class*=\" apple\"]",
   514    "expect": [
   515      "attr-contains-p1"
   516    ],
   517    "level": 3
   518  },
   519  {
   520    "name": "Attribute contains selector with double-quoted value, matching class attribute ending with specified substring",
   521    "selector": "#attr-contains [class*=\"orange \"]",
   522    "expect": [
   523      "attr-contains-p1"
   524    ],
   525    "level": 3
   526  },
   527  {
   528    "name": "Attribute contains selector with double-quoted value, matching class attribute containing specified substring",
   529    "selector": "#attr-contains [class*=\"ple banana ora\"]",
   530    "expect": [
   531      "attr-contains-p1"
   532    ],
   533    "level": 3
   534  },
   535  {
   536    "name": "Attribute contains selector with unquoted value, matching class attribute beginning with specified substring",
   537    "selector": "#attr-contains [class*= apple]",
   538    "expect": [
   539      "attr-contains-p1"
   540    ],
   541    "level": 3
   542  },
   543  {
   544    "name": "Attribute contains selector with unquoted value, matching class attribute ending with specified substring",
   545    "selector": "#attr-contains [class*=orange ]",
   546    "expect": [
   547      "attr-contains-p1"
   548    ],
   549    "level": 3
   550  },
   551  {
   552    "name": "Attribute contains selector with unquoted value, matching class attribute containing specified substring",
   553    "selector": "#attr-contains [class*= banana ]",
   554    "expect": [
   555      "attr-contains-p1"
   556    ],
   557    "level": 3
   558  },
   559  {
   560    "name": ":root pseudo-class selector, matching document root element",
   561    "selector": ":root",
   562    "expect": [
   563      "html"
   564    ],
   565    "exclude": [
   566      "element",
   567      "fragment",
   568      "detached"
   569    ],
   570    "level": 3
   571  },
   572  {
   573    "name": ":nth-child selector, matching the third child element",
   574    "selector": "#pseudo-nth-table1 :nth-child(3)",
   575    "expect": [
   576      "pseudo-nth-td3",
   577      "pseudo-nth-td9",
   578      "pseudo-nth-tr3",
   579      "pseudo-nth-td15"
   580    ],
   581    "level": 3
   582  },
   583  {
   584    "name": ":nth-child selector, matching every third child element",
   585    "selector": "#pseudo-nth li:nth-child(3n)",
   586    "expect": [
   587      "pseudo-nth-li3",
   588      "pseudo-nth-li6",
   589      "pseudo-nth-li9",
   590      "pseudo-nth-li12"
   591    ],
   592    "level": 3
   593  },
   594  {
   595    "name": ":nth-child selector, matching every second child element, starting from the fourth",
   596    "selector": "#pseudo-nth li:nth-child(2n+4)",
   597    "expect": [
   598      "pseudo-nth-li4",
   599      "pseudo-nth-li6",
   600      "pseudo-nth-li8",
   601      "pseudo-nth-li10",
   602      "pseudo-nth-li12"
   603    ],
   604    "level": 3
   605  },
   606  {
   607    "name": ":nth-child selector, matching every fourth child element, starting from the third",
   608    "selector": "#pseudo-nth-p1 :nth-child(4n-1)",
   609    "expect": [
   610      "pseudo-nth-em2",
   611      "pseudo-nth-span3"
   612    ],
   613    "level": 3
   614  },
   615  {
   616    "name": ":nth-last-child selector, matching the third last child element",
   617    "selector": "#pseudo-nth-table1 :nth-last-child(3)",
   618    "expect": [
   619      "pseudo-nth-tr1",
   620      "pseudo-nth-td4",
   621      "pseudo-nth-td10",
   622      "pseudo-nth-td16"
   623    ],
   624    "level": 3
   625  },
   626  {
   627    "name": ":nth-last-child selector, matching every third child element from the end",
   628    "selector": "#pseudo-nth li:nth-last-child(3n)",
   629    "expect": [
   630      "pseudo-nth-li1",
   631      "pseudo-nth-li4",
   632      "pseudo-nth-li7",
   633      "pseudo-nth-li10"
   634    ],
   635    "level": 3
   636  },
   637  {
   638    "name": ":nth-last-child selector, matching every second child element from the end, starting from the fourth last",
   639    "selector": "#pseudo-nth li:nth-last-child(2n+4)",
   640    "expect": [
   641      "pseudo-nth-li1",
   642      "pseudo-nth-li3",
   643      "pseudo-nth-li5",
   644      "pseudo-nth-li7",
   645      "pseudo-nth-li9"
   646    ],
   647    "level": 3
   648  },
   649  {
   650    "name": ":nth-last-child selector, matching every fourth element from the end, starting from the third last",
   651    "selector": "#pseudo-nth-p1 :nth-last-child(4n-1)",
   652    "expect": [
   653      "pseudo-nth-span2",
   654      "pseudo-nth-span4"
   655    ],
   656    "level": 3
   657  },
   658  {
   659    "name": ":nth-of-type selector, matching the third em element",
   660    "selector": "#pseudo-nth-p1 em:nth-of-type(3)",
   661    "expect": [
   662      "pseudo-nth-em3"
   663    ],
   664    "level": 3
   665  },
   666  {
   667    "name": ":nth-of-type selector, matching every second element of their type",
   668    "selector": "#pseudo-nth-p1 :nth-of-type(2n)",
   669    "expect": [
   670      "pseudo-nth-em2",
   671      "pseudo-nth-span2",
   672      "pseudo-nth-span4",
   673      "pseudo-nth-strong2",
   674      "pseudo-nth-em4"
   675    ],
   676    "level": 3
   677  },
   678  {
   679    "name": ":nth-of-type selector, matching every second elemetn of their type, starting from the first",
   680    "selector": "#pseudo-nth-p1 span:nth-of-type(2n-1)",
   681    "expect": [
   682      "pseudo-nth-span1",
   683      "pseudo-nth-span3"
   684    ],
   685    "level": 3
   686  },
   687  {
   688    "name": ":nth-last-of-type selector, matching the thrid last em element",
   689    "selector": "#pseudo-nth-p1 em:nth-last-of-type(3)",
   690    "expect": [
   691      "pseudo-nth-em2"
   692    ],
   693    "level": 3
   694  },
   695  {
   696    "name": ":nth-last-of-type selector, matching every second last element of their type",
   697    "selector": "#pseudo-nth-p1 :nth-last-of-type(2n)",
   698    "expect": [
   699      "pseudo-nth-span1",
   700      "pseudo-nth-em1",
   701      "pseudo-nth-strong1",
   702      "pseudo-nth-em3",
   703      "pseudo-nth-span3"
   704    ],
   705    "level": 3
   706  },
   707  {
   708    "name": ":nth-last-of-type selector, matching every second last element of their type, starting from the last",
   709    "selector": "#pseudo-nth-p1 span:nth-last-of-type(2n-1)",
   710    "expect": [
   711      "pseudo-nth-span2",
   712      "pseudo-nth-span4"
   713    ],
   714    "level": 3
   715  },
   716  {
   717    "name": ":first-of-type selector, matching the first em element",
   718    "selector": "#pseudo-nth-p1 em:first-of-type",
   719    "expect": [
   720      "pseudo-nth-em1"
   721    ],
   722    "level": 3
   723  },
   724  {
   725    "name": ":first-of-type selector, matching the first of every type of element",
   726    "selector": "#pseudo-nth-p1 :first-of-type",
   727    "expect": [
   728      "pseudo-nth-span1",
   729      "pseudo-nth-em1",
   730      "pseudo-nth-strong1"
   731    ],
   732    "level": 3
   733  },
   734  {
   735    "name": ":first-of-type selector, matching the first td element in each table row",
   736    "selector": "#pseudo-nth-table1 tr :first-of-type",
   737    "expect": [
   738      "pseudo-nth-td1",
   739      "pseudo-nth-td7",
   740      "pseudo-nth-td13"
   741    ],
   742    "level": 3
   743  },
   744  {
   745    "name": ":last-of-type selector, matching the last em elemnet",
   746    "selector": "#pseudo-nth-p1 em:last-of-type",
   747    "expect": [
   748      "pseudo-nth-em4"
   749    ],
   750    "level": 3
   751  },
   752  {
   753    "name": ":last-of-type selector, matching the last of every type of element",
   754    "selector": "#pseudo-nth-p1 :last-of-type",
   755    "expect": [
   756      "pseudo-nth-span4",
   757      "pseudo-nth-strong2",
   758      "pseudo-nth-em4"
   759    ],
   760    "level": 3
   761  },
   762  {
   763    "name": ":last-of-type selector, matching the last td element in each table row",
   764    "selector": "#pseudo-nth-table1 tr :last-of-type",
   765    "expect": [
   766      "pseudo-nth-td6",
   767      "pseudo-nth-td12",
   768      "pseudo-nth-td18"
   769    ],
   770    "level": 3
   771  },
   772  {
   773    "name": ":first-child pseudo-class selector, matching first child div element",
   774    "selector": "#pseudo-first-child div:first-child",
   775    "expect": [
   776      "pseudo-first-child-div1"
   777    ],
   778    "level": 2
   779  },
   780  {
   781    "name": ":first-child pseudo-class selector, doesn't match non-first-child elements",
   782    "selector": ".pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child",
   783    "expect": [],
   784    "level": 2
   785  },
   786  {
   787    "name": ":first-child pseudo-class selector, matching first-child of multiple elements",
   788    "selector": "#pseudo-first-child span:first-child",
   789    "expect": [
   790      "pseudo-first-child-span1",
   791      "pseudo-first-child-span3",
   792      "pseudo-first-child-span5"
   793    ],
   794    "level": 2
   795  },
   796  {
   797    "name": ":last-child pseudo-class selector, matching last child div element",
   798    "selector": "#pseudo-last-child div:last-child",
   799    "expect": [
   800      "pseudo-last-child-div3"
   801    ],
   802    "level": 3
   803  },
   804  {
   805    "name": ":last-child pseudo-class selector, doesn't match non-last-child elements",
   806    "selector": ".pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child",
   807    "expect": [],
   808    "level": 3
   809  },
   810  {
   811    "name": ":last-child pseudo-class selector, matching first-child of multiple elements",
   812    "selector": "#pseudo-last-child span:last-child",
   813    "expect": [
   814      "pseudo-last-child-span2",
   815      "pseudo-last-child-span4",
   816      "pseudo-last-child-span6"
   817    ],
   818    "level": 3
   819  },
   820  {
   821    "name": ":pseudo-only-child pseudo-class selector, matching all only-child elements",
   822    "selector": "#pseudo-only :only-child",
   823    "expect": [
   824      "pseudo-only-span1"
   825    ],
   826    "level": 3
   827  },
   828  {
   829    "name": ":pseudo-only-child pseudo-class selector, matching only-child em elements",
   830    "selector": "#pseudo-only em:only-child",
   831    "expect": [],
   832    "level": 3
   833  },
   834  {
   835    "name": ":pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type",
   836    "selector": "#pseudo-only :only-of-type",
   837    "expect": [
   838      "pseudo-only-span1",
   839      "pseudo-only-em1"
   840    ],
   841    "level": 3
   842  },
   843  {
   844    "name": ":pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type",
   845    "selector": "#pseudo-only em:only-of-type",
   846    "expect": [
   847      "pseudo-only-em1"
   848    ],
   849    "level": 3
   850  },
   851  {
   852    "name": ":empty pseudo-class selector, matching empty p elements",
   853    "selector": "#pseudo-empty p:empty",
   854    "expect": [
   855      "pseudo-empty-p1",
   856      "pseudo-empty-p2",
   857      "pseudo-empty-p3"
   858    ],
   859    "level": 3
   860  },
   861  {
   862    "name": ":empty pseudo-class selector, matching all empty elements",
   863    "selector": "#pseudo-empty :empty",
   864    "expect": [
   865      "pseudo-empty-p1",
   866      "pseudo-empty-p2",
   867      "pseudo-empty-p3",
   868      "pseudo-empty-span1"
   869    ],
   870    "level": 3
   871  },
   872  {
   873    "name": ":link and :visited pseudo-class selectors, matching a and area elements with href attributes",
   874    "selector": "#pseudo-link :link, #pseudo-link :visited",
   875    "expect": [
   876      "pseudo-link-a1",
   877      "pseudo-link-a2",
   878      "pseudo-link-area1"
   879    ],
   880    "level": 1
   881  },
   882  {
   883    "name": ":link and :visited pseudo-class selectors, matching link elements with href attributes",
   884    "selector": "#head :link, #head :visited",
   885    "expect": [
   886      "pseudo-link-link1",
   887      "pseudo-link-link2"
   888    ],
   889    "exclude": [
   890      "element",
   891      "fragment",
   892      "detached"
   893    ],
   894    "level": 1
   895  },
   896  {
   897    "name": ":target pseudo-class selector, matching the element referenced by the URL fragment identifier",
   898    "selector": ":target",
   899    "xfail": true,
   900    "expect": [
   901      "target"
   902    ],
   903    "exclude": [
   904      "fragment",
   905      "detached"
   906    ],
   907    "level": 3
   908  },
   909  {
   910    "name": ":lang pseudo-class selector, matching inherited language",
   911    "selector": "#pseudo-lang-div1:lang(en)",
   912    "expect": [
   913      "pseudo-lang-div1"
   914    ],
   915    "exclude": [
   916      "detached",
   917      "fragment"
   918    ],
   919    "level": 2
   920  },
   921  {
   922    "name": ":lang pseudo-class selector, matching specified language with exact value",
   923    "selector": "#pseudo-lang-div2:lang(fr)",
   924    "expect": [
   925      "pseudo-lang-div2"
   926    ],
   927    "level": 2
   928  },
   929  {
   930    "name": ":lang pseudo-class selector, matching specified language with partial value",
   931    "selector": "#pseudo-lang-div3:lang(en)",
   932    "expect": [
   933      "pseudo-lang-div3"
   934    ],
   935    "level": 2
   936  },
   937  {
   938    "name": ":lang pseudo-class selector, not matching incorrect language",
   939    "selector": "#pseudo-lang-div4:lang(es-AR)",
   940    "expect": [],
   941    "level": 2
   942  },
   943  {
   944    "name": ":enabled pseudo-class selector, matching all enabled form controls",
   945    "selector": "#pseudo-ui :enabled",
   946    "expect": [
   947      "pseudo-ui-input1",
   948      "pseudo-ui-input2",
   949      "pseudo-ui-input3",
   950      "pseudo-ui-input4",
   951      "pseudo-ui-input5",
   952      "pseudo-ui-input6",
   953      "pseudo-ui-input7",
   954      "pseudo-ui-input8",
   955      "pseudo-ui-input9",
   956      "pseudo-ui-textarea1",
   957      "pseudo-ui-button1"
   958    ],
   959    "level": 3
   960  },
   961  {
   962    "name": ":enabled pseudo-class selector, matching all disabled form controls",
   963    "selector": "#pseudo-ui :disabled",
   964    "expect": [
   965      "pseudo-ui-input10",
   966      "pseudo-ui-input11",
   967      "pseudo-ui-input12",
   968      "pseudo-ui-input13",
   969      "pseudo-ui-input14",
   970      "pseudo-ui-input15",
   971      "pseudo-ui-input16",
   972      "pseudo-ui-input17",
   973      "pseudo-ui-input18",
   974      "pseudo-ui-textarea2",
   975      "pseudo-ui-button2"
   976    ],
   977    "level": 3
   978  },
   979  {
   980    "name": ":checked pseudo-class selector, matching checked radio buttons and checkboxes",
   981    "selector": "#pseudo-ui :checked",
   982    "expect": [
   983      "pseudo-ui-input4",
   984      "pseudo-ui-input6",
   985      "pseudo-ui-input13",
   986      "pseudo-ui-input15"
   987    ],
   988    "level": 3
   989  },
   990  {
   991    "name": ":not pseudo-class selector, matching ",
   992    "selector": "#not>:not(div)",
   993    "expect": [
   994      "not-p1",
   995      "not-p2",
   996      "not-p3"
   997    ],
   998    "level": 3
   999  },
  1000  {
  1001    "name": ":not pseudo-class selector, matching ",
  1002    "selector": "#not * :not(:first-child)",
  1003    "expect": [
  1004      "not-em1",
  1005      "not-em2",
  1006      "not-em3"
  1007    ],
  1008    "level": 3
  1009  },
  1010  {
  1011    "name": ":not pseudo-class selector, matching nothing",
  1012    "selector": ":not(*)",
  1013    "expect": [],
  1014    "level": 3
  1015  },
  1016  {
  1017    "name": ":not pseudo-class selector, matching nothing",
  1018    "selector": ":not(*|*)",
  1019    "expect": [],
  1020    "level": 3
  1021  },
  1022  {
  1023    "name": ":first-line pseudo-element (one-colon syntax) selector, not matching any elements",
  1024    "selector": "#pseudo-element:first-line",
  1025    "expect": [],
  1026    "level": 2
  1027  },
  1028  {
  1029    "name": "::first-line pseudo-element (two-colon syntax) selector, not matching any elements",
  1030    "selector": "#pseudo-element::first-line",
  1031    "expect": [],
  1032    "level": 3
  1033  },
  1034  {
  1035    "name": ":first-letter pseudo-element (one-colon syntax) selector, not matching any elements",
  1036    "selector": "#pseudo-element:first-letter",
  1037    "expect": [],
  1038    "level": 2
  1039  },
  1040  {
  1041    "name": "::first-letter pseudo-element (two-colon syntax) selector, not matching any elements",
  1042    "selector": "#pseudo-element::first-letter",
  1043    "expect": [],
  1044    "level": 3
  1045  },
  1046  {
  1047    "name": ":before pseudo-element (one-colon syntax) selector, not matching any elements",
  1048    "selector": "#pseudo-element:before",
  1049    "expect": [],
  1050    "level": 2
  1051  },
  1052  {
  1053    "name": "::before pseudo-element (two-colon syntax) selector, not matching any elements",
  1054    "selector": "#pseudo-element::before",
  1055    "expect": [],
  1056    "level": 3
  1057  },
  1058  {
  1059    "name": ":after pseudo-element (one-colon syntax) selector, not matching any elements",
  1060    "selector": "#pseudo-element:after",
  1061    "expect": [],
  1062    "level": 2
  1063  },
  1064  {
  1065    "name": "::after pseudo-element (two-colon syntax) selector, not matching any elements",
  1066    "selector": "#pseudo-element::after",
  1067    "expect": [],
  1068    "level": 3
  1069  },
  1070  {
  1071    "name": "Class selector, matching element with specified class",
  1072    "selector": ".class-p",
  1073    "expect": [
  1074      "class-p1",
  1075      "class-p2",
  1076      "class-p3"
  1077    ],
  1078    "level": 1
  1079  },
  1080  {
  1081    "name": "Class selector, chained, matching only elements with all specified classes",
  1082    "selector": "#class .apple.orange.banana",
  1083    "expect": [
  1084      "class-div1",
  1085      "class-div2",
  1086      "class-p4",
  1087      "class-div3",
  1088      "class-p6",
  1089      "class-div4"
  1090    ],
  1091    "level": 1
  1092  },
  1093  {
  1094    "name": "Class Selector, chained, with type selector",
  1095    "selector": "div.apple.banana.orange",
  1096    "expect": [
  1097      "class-div1",
  1098      "class-div2",
  1099      "class-div3",
  1100      "class-div4"
  1101    ],
  1102    "level": 1
  1103  },
  1104  {
  1105    "name": "Class selector, matching element with class value using non-ASCII characters",
  1106    "selector": ".台北Táiběi",
  1107    "expect": [
  1108      "class-span1"
  1109    ],
  1110    "level": 1
  1111  },
  1112  {
  1113    "name": "Class selector, matching multiple elements with class value using non-ASCII characters",
  1114    "selector": ".台北",
  1115    "expect": [
  1116      "class-span1",
  1117      "class-span2"
  1118    ],
  1119    "level": 1
  1120  },
  1121  {
  1122    "name": "Class selector, chained, matching element with multiple class values using non-ASCII characters",
  1123    "selector": ".台北Táiběi.台北",
  1124    "expect": [
  1125      "class-span1"
  1126    ],
  1127    "level": 1
  1128  },
  1129  {
  1130    "name": "Class selector, matching element with class with escaped character",
  1131    "selector": ".foo\\:bar",
  1132    "expect": [
  1133      "class-span3"
  1134    ],
  1135    "level": 1
  1136  },
  1137  {
  1138    "name": "Class selector, matching element with class with escaped character",
  1139    "selector": ".test\\.foo\\[5\\]bar",
  1140    "expect": [
  1141      "class-span4"
  1142    ],
  1143    "level": 1
  1144  },
  1145  {
  1146    "name": "ID selector, matching element with specified id",
  1147    "selector": "#id #id-div1",
  1148    "expect": [
  1149      "id-div1"
  1150    ],
  1151    "level": 1
  1152  },
  1153  {
  1154    "name": "ID selector, chained, matching element with specified id",
  1155    "selector": "#id-div1, #id-div1",
  1156    "expect": [
  1157      "id-div1"
  1158    ],
  1159    "level": 1
  1160  },
  1161  {
  1162    "name": "ID selector, chained, matching element with specified id",
  1163    "selector": "#id-div1, #id-div2",
  1164    "expect": [
  1165      "id-div1",
  1166      "id-div2"
  1167    ],
  1168    "level": 1
  1169  },
  1170  {
  1171    "name": "ID Selector, chained, with type selector",
  1172    "selector": "div#id-div1, div#id-div2",
  1173    "expect": [
  1174      "id-div1",
  1175      "id-div2"
  1176    ],
  1177    "level": 1
  1178  },
  1179  {
  1180    "name": "ID selector, not matching non-existent descendant",
  1181    "selector": "#id #none",
  1182    "expect": [],
  1183    "level": 1
  1184  },
  1185  {
  1186    "name": "ID selector, not matching non-existent ancestor",
  1187    "selector": "#none #id-div1",
  1188    "expect": [],
  1189    "level": 1
  1190  },
  1191  {
  1192    "name": "ID selector, matching multiple elements with duplicate id",
  1193    "selector": "#id-li-duplicate",
  1194    "expect": [
  1195      "id-li-duplicate",
  1196      "id-li-duplicate",
  1197      "id-li-duplicate",
  1198      "id-li-duplicate"
  1199    ],
  1200    "level": 1
  1201  },
  1202  {
  1203    "name": "ID selector, matching id value using non-ASCII characters",
  1204    "selector": "#台北Táiběi",
  1205    "expect": [
  1206      "台北Táiběi"
  1207    ],
  1208    "level": 1
  1209  },
  1210  {
  1211    "name": "ID selector, matching id value using non-ASCII characters",
  1212    "selector": "#台北",
  1213    "expect": [
  1214      "台北"
  1215    ],
  1216    "level": 1
  1217  },
  1218  {
  1219    "name": "ID selector, matching id values using non-ASCII characters",
  1220    "selector": "#台北Táiběi, #台北",
  1221    "expect": [
  1222      "台北Táiběi",
  1223      "台北"
  1224    ],
  1225    "level": 1
  1226  },
  1227  {
  1228    "name": "ID selector, matching element with id with escaped character",
  1229    "selector": "#\\#foo\\:bar",
  1230    "expect": [
  1231      "#foo:bar"
  1232    ],
  1233    "level": 1
  1234  },
  1235  {
  1236    "name": "ID selector, matching element with id with escaped character",
  1237    "selector": "#test\\.foo\\[5\\]bar",
  1238    "expect": [
  1239      "test.foo[5]bar"
  1240    ],
  1241    "level": 1
  1242  },
  1243  {
  1244    "name": "Namespace selector, matching element with any namespace",
  1245    "selector": "#any-namespace *|div",
  1246    "expect": [
  1247      "any-namespace-div1",
  1248      "any-namespace-div2",
  1249      "any-namespace-div3",
  1250      "any-namespace-div4"
  1251    ],
  1252    "level": 3,
  1253    "xfail": true
  1254  },
  1255  {
  1256    "name": "Namespace selector, matching div elements in no namespace only",
  1257    "selector": "#no-namespace |div",
  1258    "expect": [
  1259      "no-namespace-div3"
  1260    ],
  1261    "level": 3,
  1262    "xfail": true
  1263  },
  1264  {
  1265    "name": "Namespace selector, matching any elements in no namespace only",
  1266    "selector": "#no-namespace |*",
  1267    "expect": [
  1268      "no-namespace-div3"
  1269    ],
  1270    "level": 3,
  1271    "xfail": true
  1272  },
  1273  {
  1274    "name": "Descendant combinator, matching element that is a descendant of an element with id",
  1275    "selector": "#descendant div",
  1276    "expect": [
  1277      "descendant-div1",
  1278      "descendant-div2",
  1279      "descendant-div3",
  1280      "descendant-div4"
  1281    ],
  1282    "level": 1
  1283  },
  1284  {
  1285    "name": "Descendant combinator, matching element with id that is a descendant of an element",
  1286    "selector": "body #descendant-div1",
  1287    "expect": [
  1288      "descendant-div1"
  1289    ],
  1290    "exclude": [
  1291      "detached",
  1292      "fragment"
  1293    ],
  1294    "level": 1
  1295  },
  1296  {
  1297    "name": "Descendant combinator, matching element with id that is a descendant of an element",
  1298    "selector": "div #descendant-div1",
  1299    "expect": [
  1300      "descendant-div1"
  1301    ],
  1302    "level": 1
  1303  },
  1304  {
  1305    "name": "Descendant combinator, matching element with id that is a descendant of an element with id",
  1306    "selector": "#descendant #descendant-div2",
  1307    "expect": [
  1308      "descendant-div2"
  1309    ],
  1310    "level": 1
  1311  },
  1312  {
  1313    "name": "Descendant combinator, matching element with class that is a descendant of an element with id",
  1314    "selector": "#descendant .descendant-div2",
  1315    "expect": [
  1316      "descendant-div2"
  1317    ],
  1318    "level": 1
  1319  },
  1320  {
  1321    "name": "Descendant combinator, matching element with class that is a descendant of an element with class",
  1322    "selector": ".descendant-div1 .descendant-div3",
  1323    "expect": [
  1324      "descendant-div3"
  1325    ],
  1326    "level": 1
  1327  },
  1328  {
  1329    "name": "Descendant combinator, not matching element with id that is not a descendant of an element with id",
  1330    "selector": "#descendant-div1 #descendant-div4",
  1331    "expect": [],
  1332    "level": 1
  1333  },
  1334  {
  1335    "name": "Descendant combinator, whitespace characters",
  1336    "selector": "#descendant\t\r\n#descendant-div2",
  1337    "expect": [
  1338      "descendant-div2"
  1339    ],
  1340    "level": 1
  1341  },
  1342  {
  1343    "name": "Child combinator, matching element that is a child of an element with id",
  1344    "selector": "#child>div",
  1345    "expect": [
  1346      "child-div1",
  1347      "child-div4"
  1348    ],
  1349    "level": 2
  1350  },
  1351  {
  1352    "name": "Child combinator, matching element with id that is a child of an element",
  1353    "selector": "div>#child-div1",
  1354    "expect": [
  1355      "child-div1"
  1356    ],
  1357    "level": 2
  1358  },
  1359  {
  1360    "name": "Child combinator, matching element with id that is a child of an element with id",
  1361    "selector": "#child>#child-div1",
  1362    "expect": [
  1363      "child-div1"
  1364    ],
  1365    "level": 2
  1366  },
  1367  {
  1368    "name": "Child combinator, matching element with id that is a child of an element with class",
  1369    "selector": "#child-div1>.child-div2",
  1370    "expect": [
  1371      "child-div2"
  1372    ],
  1373    "level": 2
  1374  },
  1375  {
  1376    "name": "Child combinator, matching element with class that is a child of an element with class",
  1377    "selector": ".child-div1>.child-div2",
  1378    "expect": [
  1379      "child-div2"
  1380    ],
  1381    "level": 2
  1382  },
  1383  {
  1384    "name": "Child combinator, not matching element with id that is not a child of an element with id",
  1385    "selector": "#child>#child-div3",
  1386    "expect": [],
  1387    "level": 2
  1388  },
  1389  {
  1390    "name": "Child combinator, not matching element with id that is not a child of an element with class",
  1391    "selector": "#child-div1>.child-div3",
  1392    "expect": [],
  1393    "level": 2
  1394  },
  1395  {
  1396    "name": "Child combinator, not matching element with class that is not a child of an element with class",
  1397    "selector": ".child-div1>.child-div3",
  1398    "expect": [],
  1399    "level": 2
  1400  },
  1401  {
  1402    "name": "Child combinator, surrounded by whitespace",
  1403    "selector": "#child-div1\t\r\n>\t\r\n#child-div2",
  1404    "expect": [
  1405      "child-div2"
  1406    ],
  1407    "level": 2
  1408  },
  1409  {
  1410    "name": "Child combinator, whitespace after",
  1411    "selector": "#child-div1>\t\r\n#child-div2",
  1412    "expect": [
  1413      "child-div2"
  1414    ],
  1415    "level": 2
  1416  },
  1417  {
  1418    "name": "Child combinator, whitespace before",
  1419    "selector": "#child-div1\t\r\n>#child-div2",
  1420    "expect": [
  1421      "child-div2"
  1422    ],
  1423    "level": 2
  1424  },
  1425  {
  1426    "name": "Child combinator, no whitespace",
  1427    "selector": "#child-div1>#child-div2",
  1428    "expect": [
  1429      "child-div2"
  1430    ],
  1431    "level": 2
  1432  },
  1433  {
  1434    "name": "Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id",
  1435    "selector": "#adjacent-div2+div",
  1436    "expect": [
  1437      "adjacent-div4"
  1438    ],
  1439    "level": 2
  1440  },
  1441  {
  1442    "name": "Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element",
  1443    "selector": "div+#adjacent-div4",
  1444    "expect": [
  1445      "adjacent-div4"
  1446    ],
  1447    "level": 2
  1448  },
  1449  {
  1450    "name": "Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id",
  1451    "selector": "#adjacent-div2+#adjacent-div4",
  1452    "expect": [
  1453      "adjacent-div4"
  1454    ],
  1455    "level": 2
  1456  },
  1457  {
  1458    "name": "Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id",
  1459    "selector": "#adjacent-div2+.adjacent-div4",
  1460    "expect": [
  1461      "adjacent-div4"
  1462    ],
  1463    "level": 2
  1464  },
  1465  {
  1466    "name": "Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class",
  1467    "selector": ".adjacent-div2+.adjacent-div4",
  1468    "expect": [
  1469      "adjacent-div4"
  1470    ],
  1471    "level": 2
  1472  },
  1473  {
  1474    "name": "Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element",
  1475    "selector": "#adjacent div+p",
  1476    "expect": [
  1477      "adjacent-p2"
  1478    ],
  1479    "level": 2
  1480  },
  1481  {
  1482    "name": "Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id",
  1483    "selector": "#adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1",
  1484    "expect": [],
  1485    "level": 2
  1486  },
  1487  {
  1488    "name": "Adjacent sibling combinator, surrounded by whitespace",
  1489    "selector": "#adjacent-p2\t\r\n+\t\r\n#adjacent-p3",
  1490    "expect": [
  1491      "adjacent-p3"
  1492    ],
  1493    "level": 2
  1494  },
  1495  {
  1496    "name": "Adjacent sibling combinator, whitespace after",
  1497    "selector": "#adjacent-p2+\t\r\n#adjacent-p3",
  1498    "expect": [
  1499      "adjacent-p3"
  1500    ],
  1501    "level": 2
  1502  },
  1503  {
  1504    "name": "Adjacent sibling combinator, whitespace before",
  1505    "selector": "#adjacent-p2\t\r\n+#adjacent-p3",
  1506    "expect": [
  1507      "adjacent-p3"
  1508    ],
  1509    "level": 2
  1510  },
  1511  {
  1512    "name": "Adjacent sibling combinator, no whitespace",
  1513    "selector": "#adjacent-p2+#adjacent-p3",
  1514    "expect": [
  1515      "adjacent-p3"
  1516    ],
  1517    "level": 2
  1518  },
  1519  {
  1520    "name": "General sibling combinator, matching element that is a sibling of an element with id",
  1521    "selector": "#sibling-div2~div",
  1522    "expect": [
  1523      "sibling-div4",
  1524      "sibling-div6"
  1525    ],
  1526    "level": 3
  1527  },
  1528  {
  1529    "name": "General sibling combinator, matching element with id that is a sibling of an element",
  1530    "selector": "div~#sibling-div4",
  1531    "expect": [
  1532      "sibling-div4"
  1533    ],
  1534    "level": 3
  1535  },
  1536  {
  1537    "name": "General sibling combinator, matching element with id that is a sibling of an element with id",
  1538    "selector": "#sibling-div2~#sibling-div4",
  1539    "expect": [
  1540      "sibling-div4"
  1541    ],
  1542    "level": 3
  1543  },
  1544  {
  1545    "name": "General sibling combinator, matching element with class that is a sibling of an element with id",
  1546    "selector": "#sibling-div2~.sibling-div",
  1547    "expect": [
  1548      "sibling-div4",
  1549      "sibling-div6"
  1550    ],
  1551    "level": 3
  1552  },
  1553  {
  1554    "name": "General sibling combinator, matching p element that is a sibling of a div element",
  1555    "selector": "#sibling div~p",
  1556    "expect": [
  1557      "sibling-p2",
  1558      "sibling-p3"
  1559    ],
  1560    "level": 3
  1561  },
  1562  {
  1563    "name": "General sibling combinator, not matching element with id that is not a sibling after a p element",
  1564    "selector": "#sibling>p~div",
  1565    "expect": [],
  1566    "level": 3
  1567  },
  1568  {
  1569    "name": "General sibling combinator, not matching element with id that is not a sibling after an element with id",
  1570    "selector": "#sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1",
  1571    "expect": [],
  1572    "level": 3
  1573  },
  1574  {
  1575    "name": "General sibling combinator, surrounded by whitespace",
  1576    "selector": "#sibling-p2\t\r\n~\t\r\n#sibling-p3",
  1577    "expect": [
  1578      "sibling-p3"
  1579    ],
  1580    "level": 3
  1581  },
  1582  {
  1583    "name": "General sibling combinator, whitespace after",
  1584    "selector": "#sibling-p2~\t\r\n#sibling-p3",
  1585    "expect": [
  1586      "sibling-p3"
  1587    ],
  1588    "level": 3
  1589  },
  1590  {
  1591    "name": "General sibling combinator, whitespace before",
  1592    "selector": "#sibling-p2\t\r\n~#sibling-p3",
  1593    "expect": [
  1594      "sibling-p3"
  1595    ],
  1596    "level": 3
  1597  },
  1598  {
  1599    "name": "General sibling combinator, no whitespace",
  1600    "selector": "#sibling-p2~#sibling-p3",
  1601    "expect": [
  1602      "sibling-p3"
  1603    ],
  1604    "level": 3
  1605  },
  1606  {
  1607    "name": "Syntax, group of selectors separator, surrounded by whitespace",
  1608    "selector": "#group em\t\r \n,\t\r \n#group strong",
  1609    "expect": [
  1610      "group-em1",
  1611      "group-strong1"
  1612    ],
  1613    "level": 1
  1614  },
  1615  {
  1616    "name": "Syntax, group of selectors separator, whitespace after",
  1617    "selector": "#group em,\t\r\n#group strong",
  1618    "expect": [
  1619      "group-em1",
  1620      "group-strong1"
  1621    ],
  1622    "level": 1
  1623  },
  1624  {
  1625    "name": "Syntax, group of selectors separator, whitespace before",
  1626    "selector": "#group em\t\r\n,#group strong",
  1627    "expect": [
  1628      "group-em1",
  1629      "group-strong1"
  1630    ],
  1631    "level": 1
  1632  },
  1633  {
  1634    "name": "Syntax, group of selectors separator, no whitespace",
  1635    "selector": "#group em,#group strong",
  1636    "expect": [
  1637      "group-em1",
  1638      "group-strong1"
  1639    ],
  1640    "level": 1
  1641  }
  1642]

View as plain text