Bug 1300374: Web platform test for child-indexed selectors matching the root element and standalone elements. r?heycam draft
authorEmilio Cobos Álvarez <ecoal95@gmail.com>
Wed, 14 Sep 2016 20:20:58 -0700
changeset 413925 b6e185b05c615f2866267134e0e6e302b50efe00
parent 413924 b7fdf9e271e19c5814c4248171618b19a0c577e6
child 531338 5d14bb618b1c336fc48d677460f0b8d13649ad7f
push id29553
push userbmo:ecoal95@gmail.com
push dateThu, 15 Sep 2016 07:20:10 +0000
reviewersheycam
bugs1300374
milestone51.0a1
Bug 1300374: Web platform test for child-indexed selectors matching the root element and standalone elements. r?heycam MozReview-Commit-ID: 78yr2APVi4w
testing/web-platform/meta/MANIFEST.json
testing/web-platform/tests/selectors/child-indexed-pseudo-class.html
--- a/testing/web-platform/meta/MANIFEST.json
+++ b/testing/web-platform/meta/MANIFEST.json
@@ -37783,40 +37783,64 @@
           }
         ],
         "domparsing/style_attribute_html.html": [
           {
             "path": "domparsing/style_attribute_html.html",
             "url": "/domparsing/style_attribute_html.html"
           }
         ],
+        "editing/other/delete.html": [
+          {
+            "path": "editing/other/delete.html",
+            "url": "/editing/other/delete.html"
+          }
+        ],
         "editing/other/restoration.html": [
           {
             "path": "editing/other/restoration.html",
             "url": "/editing/other/restoration.html"
           }
         ],
-        "editing/other/delete.html": [
-          {
-            "path": "editing/other/delete.html",
-            "url": "/editing/other/delete.html"
-          }
-        ],
         "html/browsers/history/the-location-interface/location-prototype-setting.html": [
           {
             "path": "html/browsers/history/the-location-interface/location-prototype-setting.html",
             "url": "/html/browsers/history/the-location-interface/location-prototype-setting.html"
           }
         ],
         "html/semantics/forms/the-form-element/form-submission-sandbox.html": [
           {
             "path": "html/semantics/forms/the-form-element/form-submission-sandbox.html",
             "url": "/html/semantics/forms/the-form-element/form-submission-sandbox.html"
           }
         ],
+        "html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-1.html": [
+          {
+            "path": "html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-1.html",
+            "url": "/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-1.html"
+          }
+        ],
+        "html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html": [
+          {
+            "path": "html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html",
+            "url": "/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html"
+          }
+        ],
+        "html/semantics/scripting-1/the-script-element/script-onload-insertion-point.html": [
+          {
+            "path": "html/semantics/scripting-1/the-script-element/script-onload-insertion-point.html",
+            "url": "/html/semantics/scripting-1/the-script-element/script-onload-insertion-point.html"
+          }
+        ],
+        "selectors/child-indexed-pseudo-class.html": [
+          {
+            "path": "selectors/child-indexed-pseudo-class.html",
+            "url": "/selectors/child-indexed-pseudo-class.html"
+          }
+        ],
         "svg/linking/scripted/href-animate-element.html": [
           {
             "path": "svg/linking/scripted/href-animate-element.html",
             "url": "/svg/linking/scripted/href-animate-element.html"
           }
         ],
         "svg/linking/scripted/href-mpath-element.html": [
           {
@@ -37831,34 +37855,16 @@
           }
         ],
         "svg/linking/scripted/href-script-element.html": [
           {
             "path": "svg/linking/scripted/href-script-element.html",
             "url": "/svg/linking/scripted/href-script-element.html"
           }
         ],
-        "html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-1.html": [
-          {
-            "path": "html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-1.html",
-            "url": "/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-1.html"
-          }
-        ],
-        "html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html": [
-          {
-            "path": "html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html",
-            "url": "/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html"
-          }
-        ],
-        "html/semantics/scripting-1/the-script-element/script-onload-insertion-point.html": [
-          {
-            "path": "html/semantics/scripting-1/the-script-element/script-onload-insertion-point.html",
-            "url": "/html/semantics/scripting-1/the-script-element/script-onload-insertion-point.html"
-          }
-        ],
         "web-animations/interfaces/Animation/effect.html": [
           {
             "path": "web-animations/interfaces/Animation/effect.html",
             "url": "/web-animations/interfaces/Animation/effect.html"
           }
         ],
         "web-animations/interfaces/KeyframeEffect/spacing.html": [
           {
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/selectors/child-indexed-pseudo-class.html
@@ -0,0 +1,42 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>Matching of child-indexed pseudo-classes</title>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:ecoal95@gmail.com">
+<link rel="help" href="https://drafts.csswg.org/selectors-4/#child-index">
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+test(function() {
+  var check = function(element, selectors) {
+    for (var i = 0; i < selectors.length; ++i) {
+      var selector = selectors[i][0];
+      var expected = selectors[i][1];
+      assert_equals(expected, element.matches(selector),
+                    "Expected " + element.tagName + " element to " +
+                    (expected ? "match " : "not match ") + selector);
+    }
+  }
+
+  var rootOfSubtreeSelectors = [
+    [ ":first-child", true ],
+    [ ":last-child", true ],
+    [ ":first-of-type", true ],
+    [ ":last-of-type", true ],
+    [ ":nth-child(1)", true ],
+    [ ":nth-child(n)", true ],
+    [ ":nth-last-child(1)", true ],
+    [ ":nth-last-child(n)", true ],
+    [ ":nth-of-type(1)", true ],
+    [ ":nth-of-type(n)", true ],
+    [ ":nth-last-of-type(1)", true ],
+    [ ":nth-last-of-type(n)", true ],
+    [ ":nth-child(2)", false ],
+    [ ":nth-last-child(2)", false],
+    [ ":nth-of-type(2)", false ],
+    [ ":nth-last-of-type(2)", false],
+  ];
+
+  check(document.documentElement, rootOfSubtreeSelectors);
+  check(document.createElement('div'), rootOfSubtreeSelectors);
+}, "child-indexed pseudo-classes should match without a parent")
+</script>