aboutsummaryrefslogtreecommitdiffstats
path: root/tests/wpt/meta/css/selectors
diff options
context:
space:
mode:
Diffstat (limited to 'tests/wpt/meta/css/selectors')
-rw-r--r--tests/wpt/meta/css/selectors/dir-selector-auto-direction-change-001.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/dir-selector-auto.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/dir-selector-change-001.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/dir-selector-change-002.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/dir-selector-change-003.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/dir-selector-change-004.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/dir-selector-ltr-001.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/dir-selector-querySelector.html.ini9
-rw-r--r--tests/wpt/meta/css/selectors/dir-selector-rtl-001.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/dir-selector-white-space-001.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/dir-style-01a.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/dir-style-01b.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/dir-style-02a.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/dir-style-02b.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/dir-style-03a.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/dir-style-03b.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/dir-style-04.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/first-letter-flag-001.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/first-line-bidi-001.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/first-line-bidi-002.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/focus-in-focus-event-001.html.ini7
-rw-r--r--tests/wpt/meta/css/selectors/focus-in-focusin-event-001.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/focus-visible-010.html.ini3
-rw-r--r--tests/wpt/meta/css/selectors/focus-visible-014.html.ini4
-rw-r--r--tests/wpt/meta/css/selectors/focus-visible-017-2.html.ini114
-rw-r--r--tests/wpt/meta/css/selectors/focus-visible-017.html.ini7
-rw-r--r--tests/wpt/meta/css/selectors/focus-visible-020.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/focus-visible-023.html.ini6
-rw-r--r--tests/wpt/meta/css/selectors/focus-visible-script-focus-001.html.ini7
-rw-r--r--tests/wpt/meta/css/selectors/focus-within-011.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/has-argument-with-explicit-scope.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/has-argument-with-explicit-scope.tentative.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/has-basic.html.ini4
-rw-r--r--tests/wpt/meta/css/selectors/has-error-recovery.html.ini3
-rw-r--r--tests/wpt/meta/css/selectors/has-matches-to-uninserted-elements.html.ini36
-rw-r--r--tests/wpt/meta/css/selectors/has-relative-argument.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/has-specificity.html.ini24
-rw-r--r--tests/wpt/meta/css/selectors/has-visited.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/attribute-or-elemental-selectors-in-has.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/child-indexed-pseudo-classes-in-has.html.ini19
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/class-id-attr.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/empty-pseudo-in-has.html.ini4
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/has-complexity.html.ini4
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/has-in-adjacent-position.html.ini4
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/has-in-ancestor-position.html.ini4
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/has-in-parent-position.html.ini4
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/has-in-sibling-position.html.ini4
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/has-invalidation-after-removing-non-first-element.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/has-invalidation-for-wiping-an-element.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/has-sibling.html.ini4
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/has-with-not.html.ini4
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/has-with-pseudo-class.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/host-pseudo-class-in-has.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/input-pseudo-classes-in-has.html.ini28
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/is-pseudo-containing-complex-in-has.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/link-pseudo-in-has.html.ini3
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/location-pseudo-classes-in-has.html.ini3
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/media-pseudo-classes-in-has.html.ini9
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/modal-pseudo-class-in-has.html.ini9
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/not-001.html.ini7
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/not-002.html.ini19
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/not-pseudo-containing-complex-in-has.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/nth-child-of-attr.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/nth-child-of-class-prefix.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/nth-child-of-class.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/nth-child-of-has.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/nth-child-of-id-prefix.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/nth-child-of-ids.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/nth-child-of-in-ancestor.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/nth-child-of-in-is.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/nth-child-of-in-shadow-root.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/nth-child-of-is.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/nth-child-of-pseudo-class.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/nth-child-of-sibling.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/nth-child-when-ancestor-changes.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/nth-child-when-sibling-changes.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-class-prefix.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-id-prefix.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-ids.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-in-is.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-in-shadow-root.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-is.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-pseudo-class.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/subject-has-invalidation-with-display-none-anchor-element.html.ini3
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/target-pseudo-in-has.html.ini3
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/typed-child-indexed-pseudo-classes-in-has.html.ini19
-rw-r--r--tests/wpt/meta/css/selectors/is-default-ns-002.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/is-specificity-shadow.html.ini4
-rw-r--r--tests/wpt/meta/css/selectors/is-where-basic.html.ini5
-rw-r--r--tests/wpt/meta/css/selectors/is-where-error-recovery.html.ini4
-rw-r--r--tests/wpt/meta/css/selectors/is-where-error-recovery.tentative.html.ini4
-rw-r--r--tests/wpt/meta/css/selectors/is-where-not.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/is-where-parsing.html.ini39
-rw-r--r--tests/wpt/meta/css/selectors/is-where-pseudo-classes.html.ini4
-rw-r--r--tests/wpt/meta/css/selectors/is-where-pseudo-elements.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/is-where-shadow.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/is-where-visited.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/media/media-loading-state.html.ini10
-rw-r--r--tests/wpt/meta/css/selectors/media/media-playback-state.html.ini12
-rw-r--r--tests/wpt/meta/css/selectors/media/sound-state.html.ini6
-rw-r--r--tests/wpt/meta/css/selectors/nesting-parsing.html.ini36
-rw-r--r--tests/wpt/meta/css/selectors/nesting.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/not-complex.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/not-specificity.html.ini25
-rw-r--r--tests/wpt/meta/css/selectors/nth-child-and-nth-last-child.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-child-of-attribute.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-child-of-classname-002.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-child-of-classname.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-child-of-complex-selector-many-children.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-child-of-complex-selector.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-child-of-compound-selector.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-child-of-has.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-child-of-no-space-after-of.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-child-of-not.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-child-of-nth-child.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-child-of-tagname.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-child-of-universal-selector.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-child-specificity-1.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-child-specificity-2.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-child-specificity-3.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-child-specificity-4.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-last-child-of-classname.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-last-child-of-complex-selector.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-last-child-of-compound-selector.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-last-child-of-no-space-after-of.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-last-child-of-style-sharing-1.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-last-child-of-style-sharing-2.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-last-child-of-tagname.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-last-child-specificity-1.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-last-child-specificity-2.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-last-child-specificity-3.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-last-child-specificity-4.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/nth-of-type-namespace.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/parsing/is.html.ini19
-rw-r--r--tests/wpt/meta/css/selectors/parsing/parse-focus-visible.html.ini10
-rw-r--r--tests/wpt/meta/css/selectors/parsing/parse-has-disallow-nesting-has-inside-has.html.ini15
-rw-r--r--tests/wpt/meta/css/selectors/parsing/parse-has.html.ini81
-rw-r--r--tests/wpt/meta/css/selectors/parsing/parse-is.html.ini19
-rw-r--r--tests/wpt/meta/css/selectors/parsing/parse-not.html.ini6
-rw-r--r--tests/wpt/meta/css/selectors/parsing/parse-where.html.ini19
-rw-r--r--tests/wpt/meta/css/selectors/parsing/where.html.ini19
-rw-r--r--tests/wpt/meta/css/selectors/query/query-is.html.ini19
-rw-r--r--tests/wpt/meta/css/selectors/query/query-where.html.ini19
-rw-r--r--tests/wpt/meta/css/selectors/selectors-4/lang-011.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/selectors-4/lang-012.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/selectors-dir-selector-auto-direction-change-001.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/selectors-dir-selector-auto.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/selectors-dir-selector-change-001.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/selectors-dir-selector-change-002.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/selectors-dir-selector-change-003.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/selectors-dir-selector-change-004.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/selectors-dir-selector-querySelector.html.ini10
-rw-r--r--tests/wpt/meta/css/selectors/selectors-dir-selector-white-space-001.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/user-valid.html.ini4
-rw-r--r--tests/wpt/meta/css/selectors/visited-inheritance.html.ini2
155 files changed, 969 insertions, 0 deletions
diff --git a/tests/wpt/meta/css/selectors/dir-selector-auto-direction-change-001.html.ini b/tests/wpt/meta/css/selectors/dir-selector-auto-direction-change-001.html.ini
new file mode 100644
index 00000000000..acfcc2ab5f8
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/dir-selector-auto-direction-change-001.html.ini
@@ -0,0 +1,2 @@
+[dir-selector-auto-direction-change-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/dir-selector-auto.html.ini b/tests/wpt/meta/css/selectors/dir-selector-auto.html.ini
new file mode 100644
index 00000000000..559a57045fb
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/dir-selector-auto.html.ini
@@ -0,0 +1,2 @@
+[dir-selector-auto.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/selectors/dir-selector-change-001.html.ini b/tests/wpt/meta/css/selectors/dir-selector-change-001.html.ini
new file mode 100644
index 00000000000..93ffa9cef3f
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/dir-selector-change-001.html.ini
@@ -0,0 +1,2 @@
+[dir-selector-change-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/dir-selector-change-002.html.ini b/tests/wpt/meta/css/selectors/dir-selector-change-002.html.ini
new file mode 100644
index 00000000000..2eb51086e5c
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/dir-selector-change-002.html.ini
@@ -0,0 +1,2 @@
+[dir-selector-change-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/dir-selector-change-003.html.ini b/tests/wpt/meta/css/selectors/dir-selector-change-003.html.ini
new file mode 100644
index 00000000000..ca3fbd4acec
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/dir-selector-change-003.html.ini
@@ -0,0 +1,2 @@
+[dir-selector-change-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/dir-selector-change-004.html.ini b/tests/wpt/meta/css/selectors/dir-selector-change-004.html.ini
new file mode 100644
index 00000000000..4218df5ba5c
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/dir-selector-change-004.html.ini
@@ -0,0 +1,2 @@
+[dir-selector-change-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/dir-selector-ltr-001.html.ini b/tests/wpt/meta/css/selectors/dir-selector-ltr-001.html.ini
new file mode 100644
index 00000000000..67c3a3e91ca
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/dir-selector-ltr-001.html.ini
@@ -0,0 +1,2 @@
+[dir-selector-ltr-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/dir-selector-querySelector.html.ini b/tests/wpt/meta/css/selectors/dir-selector-querySelector.html.ini
new file mode 100644
index 00000000000..eb06f9906ab
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/dir-selector-querySelector.html.ini
@@ -0,0 +1,9 @@
+[dir-selector-querySelector.html]
+ [:dir() allows any ident value but strings other than ltr/rtl don't match]
+ expected: FAIL
+
+ [:dir() works in compound selectors]
+ expected: FAIL
+
+ [:dir() works in complex selectors]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/dir-selector-rtl-001.html.ini b/tests/wpt/meta/css/selectors/dir-selector-rtl-001.html.ini
new file mode 100644
index 00000000000..704bdd3dbb3
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/dir-selector-rtl-001.html.ini
@@ -0,0 +1,2 @@
+[dir-selector-rtl-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/dir-selector-white-space-001.html.ini b/tests/wpt/meta/css/selectors/dir-selector-white-space-001.html.ini
new file mode 100644
index 00000000000..ba67e179b49
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/dir-selector-white-space-001.html.ini
@@ -0,0 +1,2 @@
+[dir-selector-white-space-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/dir-style-01a.html.ini b/tests/wpt/meta/css/selectors/dir-style-01a.html.ini
new file mode 100644
index 00000000000..fdeb366307f
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/dir-style-01a.html.ini
@@ -0,0 +1,2 @@
+[dir-style-01a.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/dir-style-01b.html.ini b/tests/wpt/meta/css/selectors/dir-style-01b.html.ini
new file mode 100644
index 00000000000..cf79e1b80ab
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/dir-style-01b.html.ini
@@ -0,0 +1,2 @@
+[dir-style-01b.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/dir-style-02a.html.ini b/tests/wpt/meta/css/selectors/dir-style-02a.html.ini
new file mode 100644
index 00000000000..74da0d4f347
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/dir-style-02a.html.ini
@@ -0,0 +1,2 @@
+[dir-style-02a.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/dir-style-02b.html.ini b/tests/wpt/meta/css/selectors/dir-style-02b.html.ini
new file mode 100644
index 00000000000..20dce4325aa
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/dir-style-02b.html.ini
@@ -0,0 +1,2 @@
+[dir-style-02b.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/dir-style-03a.html.ini b/tests/wpt/meta/css/selectors/dir-style-03a.html.ini
new file mode 100644
index 00000000000..307c268e11c
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/dir-style-03a.html.ini
@@ -0,0 +1,2 @@
+[dir-style-03a.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/dir-style-03b.html.ini b/tests/wpt/meta/css/selectors/dir-style-03b.html.ini
new file mode 100644
index 00000000000..5bd32c567dc
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/dir-style-03b.html.ini
@@ -0,0 +1,2 @@
+[dir-style-03b.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/dir-style-04.html.ini b/tests/wpt/meta/css/selectors/dir-style-04.html.ini
new file mode 100644
index 00000000000..837621984e9
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/dir-style-04.html.ini
@@ -0,0 +1,2 @@
+[dir-style-04.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/first-letter-flag-001.html.ini b/tests/wpt/meta/css/selectors/first-letter-flag-001.html.ini
new file mode 100644
index 00000000000..04165425bae
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/first-letter-flag-001.html.ini
@@ -0,0 +1,2 @@
+[first-letter-flag-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/first-line-bidi-001.html.ini b/tests/wpt/meta/css/selectors/first-line-bidi-001.html.ini
new file mode 100644
index 00000000000..55e21381bad
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/first-line-bidi-001.html.ini
@@ -0,0 +1,2 @@
+[first-line-bidi-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/first-line-bidi-002.html.ini b/tests/wpt/meta/css/selectors/first-line-bidi-002.html.ini
new file mode 100644
index 00000000000..368773f14e5
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/first-line-bidi-002.html.ini
@@ -0,0 +1,2 @@
+[first-line-bidi-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-in-focus-event-001.html.ini b/tests/wpt/meta/css/selectors/focus-in-focus-event-001.html.ini
new file mode 100644
index 00000000000..81a52405f4f
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-in-focus-event-001.html.ini
@@ -0,0 +1,7 @@
+[focus-in-focus-event-001.html]
+ [Checks that ':focus-visible' pseudo-class matches inside 'focus' event handler]
+ expected: FAIL
+
+ [Checks that ':focus-within' pseudo-class matches inside 'focus' event handler]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/css/selectors/focus-in-focusin-event-001.html.ini b/tests/wpt/meta/css/selectors/focus-in-focusin-event-001.html.ini
new file mode 100644
index 00000000000..28c9856c156
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-in-focusin-event-001.html.ini
@@ -0,0 +1,2 @@
+[focus-in-focusin-event-001.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/selectors/focus-visible-010.html.ini b/tests/wpt/meta/css/selectors/focus-visible-010.html.ini
new file mode 100644
index 00000000000..917643e547c
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-010.html.ini
@@ -0,0 +1,3 @@
+[focus-visible-010.html]
+ [Programmatic focus on page load should match :focus-visible]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-014.html.ini b/tests/wpt/meta/css/selectors/focus-visible-014.html.ini
new file mode 100644
index 00000000000..dfd4d07100e
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-014.html.ini
@@ -0,0 +1,4 @@
+[focus-visible-014.html]
+ [:focus-visible matches after script focus move]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/css/selectors/focus-visible-017-2.html.ini b/tests/wpt/meta/css/selectors/focus-visible-017-2.html.ini
new file mode 100644
index 00000000000..db1e8bf79d0
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-017-2.html.ini
@@ -0,0 +1,114 @@
+[focus-visible-017-2.html]
+ [":focus-visible" should be a valid selector]
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element ABBR shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element ADDRESS shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element BDI shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element BLOCKQUOTE shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element CODE shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element DD shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element SUMMARY shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element DETAILS shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element DIV shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element DL shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element DT shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element EM shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element LEGEND shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element FIGCAPTION shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element FIGURE shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element FORM shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element HR shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element IMG shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element LABEL shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element LI shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element MARK shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element METER shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element OL shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element PRE shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element PROGRESS shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element P shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element SMALL shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element S shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element STRONG shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element SUB shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element SUP shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element CAPTION shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element TABLE shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element TD shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element TIME shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element UL shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [By default initial programatic focus matches ':focus-visible', so the element U shows a focus ring with 'outline-style: auto']
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-017.html.ini b/tests/wpt/meta/css/selectors/focus-visible-017.html.ini
new file mode 100644
index 00000000000..a8d81f5a661
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-017.html.ini
@@ -0,0 +1,7 @@
+[focus-visible-017.html]
+ [By default initial programatic focus matches ':focus-visible', so the element shows a focus ring with 'outline-style: auto']
+ expected: FAIL
+
+ [":focus-visible" should be a valid selector]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/css/selectors/focus-visible-020.html.ini b/tests/wpt/meta/css/selectors/focus-visible-020.html.ini
new file mode 100644
index 00000000000..321bd03002c
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-020.html.ini
@@ -0,0 +1,2 @@
+[focus-visible-020.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/selectors/focus-visible-023.html.ini b/tests/wpt/meta/css/selectors/focus-visible-023.html.ini
new file mode 100644
index 00000000000..a6926807555
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-023.html.ini
@@ -0,0 +1,6 @@
+[focus-visible-023.html]
+ [":focus-visible" should be a valid selector]
+ expected: FAIL
+
+ [:focus-visible stop matching after blur]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-script-focus-001.html.ini b/tests/wpt/meta/css/selectors/focus-visible-script-focus-001.html.ini
new file mode 100644
index 00000000000..690b38b26ae
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-script-focus-001.html.ini
@@ -0,0 +1,7 @@
+[focus-visible-script-focus-001.html]
+ expected: ERROR
+ [":focus-visible" should be a valid selector]
+ expected: FAIL
+
+ [Script focus without any previous user interaction matches :focus-visible]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-within-011.html.ini b/tests/wpt/meta/css/selectors/focus-within-011.html.ini
new file mode 100644
index 00000000000..6e2bb12c454
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-within-011.html.ini
@@ -0,0 +1,2 @@
+[focus-within-011.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/has-argument-with-explicit-scope.html.ini b/tests/wpt/meta/css/selectors/has-argument-with-explicit-scope.html.ini
new file mode 100644
index 00000000000..d194a085f7f
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/has-argument-with-explicit-scope.html.ini
@@ -0,0 +1,2 @@
+[has-argument-with-explicit-scope.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/selectors/has-argument-with-explicit-scope.tentative.html.ini b/tests/wpt/meta/css/selectors/has-argument-with-explicit-scope.tentative.html.ini
new file mode 100644
index 00000000000..23879977139
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/has-argument-with-explicit-scope.tentative.html.ini
@@ -0,0 +1,2 @@
+[has-argument-with-explicit-scope.tentative.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/selectors/has-basic.html.ini b/tests/wpt/meta/css/selectors/has-basic.html.ini
new file mode 100644
index 00000000000..ad3ee6266c7
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/has-basic.html.ini
@@ -0,0 +1,4 @@
+[has-basic.html]
+ expected: ERROR
+ [:has(#a) matches expected elements]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/has-error-recovery.html.ini b/tests/wpt/meta/css/selectors/has-error-recovery.html.ini
new file mode 100644
index 00000000000..10b087188e3
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/has-error-recovery.html.ini
@@ -0,0 +1,3 @@
+[has-error-recovery.html]
+ [CSS Selectors: :has() error recovery]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/has-matches-to-uninserted-elements.html.ini b/tests/wpt/meta/css/selectors/has-matches-to-uninserted-elements.html.ini
new file mode 100644
index 00000000000..9339b667009
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/has-matches-to-uninserted-elements.html.ini
@@ -0,0 +1,36 @@
+[has-matches-to-uninserted-elements.html]
+ [:has(child) matches expectedly]
+ expected: FAIL
+
+ [:has(> child) matches expectedly]
+ expected: FAIL
+
+ [:has(descendant) matches expectedly]
+ expected: FAIL
+
+ [:has(> descendant) matches expectedly]
+ expected: FAIL
+
+ [:has(~ direct_sibling) matches expectedly]
+ expected: FAIL
+
+ [:has(+ direct_sibling) matches expectedly]
+ expected: FAIL
+
+ [:has(~ indirect_sibling) matches expectedly]
+ expected: FAIL
+
+ [:has(+ indirect_sibling) matches expectedly]
+ expected: FAIL
+
+ [:has(*) matches expectedly]
+ expected: FAIL
+
+ [:has(> *) matches expectedly]
+ expected: FAIL
+
+ [:has(~ *) matches expectedly]
+ expected: FAIL
+
+ [:has(+ *) matches expectedly]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/has-relative-argument.html.ini b/tests/wpt/meta/css/selectors/has-relative-argument.html.ini
new file mode 100644
index 00000000000..dcf90481787
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/has-relative-argument.html.ini
@@ -0,0 +1,2 @@
+[has-relative-argument.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/selectors/has-specificity.html.ini b/tests/wpt/meta/css/selectors/has-specificity.html.ini
new file mode 100644
index 00000000000..890b698b1b3
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/has-specificity.html.ini
@@ -0,0 +1,24 @@
+[has-specificity.html]
+ [:has(#foo) wins over :has(.foo)]
+ expected: FAIL
+
+ [:has(span#foo) wins over :has(#foo)]
+ expected: FAIL
+
+ [:has(.bar, #foo) has same specificity as :has(#foo, .bar)]
+ expected: FAIL
+
+ [:has(.bar, #foo) wins over :has(.foo, .bar)]
+ expected: FAIL
+
+ [:has(span + span) wins over :has(span)]
+ expected: FAIL
+
+ [:has(span, li, p) wins over :has(span, lo, p)]
+ expected: FAIL
+
+ [latter .baz wins over :has(.foo)]
+ expected: FAIL
+
+ [latter :has(.foo) wins over .baz]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/has-visited.html.ini b/tests/wpt/meta/css/selectors/has-visited.html.ini
new file mode 100644
index 00000000000..bd0bdf82818
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/has-visited.html.ini
@@ -0,0 +1,2 @@
+[has-visited.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/attribute-or-elemental-selectors-in-has.html.ini b/tests/wpt/meta/css/selectors/invalidation/attribute-or-elemental-selectors-in-has.html.ini
new file mode 100644
index 00000000000..1f864ab76bf
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/attribute-or-elemental-selectors-in-has.html.ini
@@ -0,0 +1,2 @@
+[attribute-or-elemental-selectors-in-has.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/selectors/invalidation/child-indexed-pseudo-classes-in-has.html.ini b/tests/wpt/meta/css/selectors/invalidation/child-indexed-pseudo-classes-in-has.html.ini
new file mode 100644
index 00000000000..285388ec4ff
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/child-indexed-pseudo-classes-in-has.html.ini
@@ -0,0 +1,19 @@
+[child-indexed-pseudo-classes-in-has.html]
+ expected: ERROR
+ [Initial colors: #only_child]
+ expected: FAIL
+
+ [Initial colors: #first_child]
+ expected: FAIL
+
+ [Initial colors: #last_child]
+ expected: FAIL
+
+ [Initial colors: #nth_child_3n_1]
+ expected: FAIL
+
+ [Initial colors: #nth_child_3n_2]
+ expected: FAIL
+
+ [Initial colors: #nth_child_3n]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/class-id-attr.html.ini b/tests/wpt/meta/css/selectors/invalidation/class-id-attr.html.ini
new file mode 100644
index 00000000000..1a48863a258
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/class-id-attr.html.ini
@@ -0,0 +1,2 @@
+[class-id-attr.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/empty-pseudo-in-has.html.ini b/tests/wpt/meta/css/selectors/invalidation/empty-pseudo-in-has.html.ini
new file mode 100644
index 00000000000..635f2e4f227
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/empty-pseudo-in-has.html.ini
@@ -0,0 +1,4 @@
+[empty-pseudo-in-has.html]
+ expected: ERROR
+ [Empty #subject]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/has-complexity.html.ini b/tests/wpt/meta/css/selectors/invalidation/has-complexity.html.ini
new file mode 100644
index 00000000000..e3fef98b2e6
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/has-complexity.html.ini
@@ -0,0 +1,4 @@
+[has-complexity.html]
+ expected: ERROR
+ [Before appending 25000 elements]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/has-in-adjacent-position.html.ini b/tests/wpt/meta/css/selectors/invalidation/has-in-adjacent-position.html.ini
new file mode 100644
index 00000000000..a67c925655c
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/has-in-adjacent-position.html.ini
@@ -0,0 +1,4 @@
+[has-in-adjacent-position.html]
+ expected: ERROR
+ [Initial color]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/has-in-ancestor-position.html.ini b/tests/wpt/meta/css/selectors/invalidation/has-in-ancestor-position.html.ini
new file mode 100644
index 00000000000..4432b92f9e7
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/has-in-ancestor-position.html.ini
@@ -0,0 +1,4 @@
+[has-in-ancestor-position.html]
+ expected: ERROR
+ [Initial color]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/has-in-parent-position.html.ini b/tests/wpt/meta/css/selectors/invalidation/has-in-parent-position.html.ini
new file mode 100644
index 00000000000..f4767d2d713
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/has-in-parent-position.html.ini
@@ -0,0 +1,4 @@
+[has-in-parent-position.html]
+ expected: ERROR
+ [Initial color]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/has-in-sibling-position.html.ini b/tests/wpt/meta/css/selectors/invalidation/has-in-sibling-position.html.ini
new file mode 100644
index 00000000000..ca628c97fe4
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/has-in-sibling-position.html.ini
@@ -0,0 +1,4 @@
+[has-in-sibling-position.html]
+ expected: ERROR
+ [Initial color]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/has-invalidation-after-removing-non-first-element.html.ini b/tests/wpt/meta/css/selectors/invalidation/has-invalidation-after-removing-non-first-element.html.ini
new file mode 100644
index 00000000000..9967405d400
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/has-invalidation-after-removing-non-first-element.html.ini
@@ -0,0 +1,2 @@
+[has-invalidation-after-removing-non-first-element.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/selectors/invalidation/has-invalidation-for-wiping-an-element.html.ini b/tests/wpt/meta/css/selectors/invalidation/has-invalidation-for-wiping-an-element.html.ini
new file mode 100644
index 00000000000..e5dac71de8e
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/has-invalidation-for-wiping-an-element.html.ini
@@ -0,0 +1,2 @@
+[has-invalidation-for-wiping-an-element.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/selectors/invalidation/has-sibling.html.ini b/tests/wpt/meta/css/selectors/invalidation/has-sibling.html.ini
new file mode 100644
index 00000000000..17ee98adef4
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/has-sibling.html.ini
@@ -0,0 +1,4 @@
+[has-sibling.html]
+ expected: ERROR
+ [initial_color]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/has-with-not.html.ini b/tests/wpt/meta/css/selectors/invalidation/has-with-not.html.ini
new file mode 100644
index 00000000000..5be88b882c6
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/has-with-not.html.ini
@@ -0,0 +1,4 @@
+[has-with-not.html]
+ expected: ERROR
+ [Initial color]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/has-with-pseudo-class.html.ini b/tests/wpt/meta/css/selectors/invalidation/has-with-pseudo-class.html.ini
new file mode 100644
index 00000000000..0e6be03068e
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/has-with-pseudo-class.html.ini
@@ -0,0 +1,2 @@
+[has-with-pseudo-class.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/selectors/invalidation/host-pseudo-class-in-has.html.ini b/tests/wpt/meta/css/selectors/invalidation/host-pseudo-class-in-has.html.ini
new file mode 100644
index 00000000000..299f3de8b3a
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/host-pseudo-class-in-has.html.ini
@@ -0,0 +1,2 @@
+[host-pseudo-class-in-has.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/selectors/invalidation/input-pseudo-classes-in-has.html.ini b/tests/wpt/meta/css/selectors/invalidation/input-pseudo-classes-in-has.html.ini
new file mode 100644
index 00000000000..bf3da3b2871
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/input-pseudo-classes-in-has.html.ini
@@ -0,0 +1,28 @@
+[input-pseudo-classes-in-has.html]
+ expected: ERROR
+ [:checked & :indeterminate invalidation on <input>]
+ expected: FAIL
+
+ [:indeterminate invalidation on <progress>]
+ expected: NOTRUN
+
+ [:disabled invalidation]
+ expected: NOTRUN
+
+ [:read-only invalidation]
+ expected: NOTRUN
+
+ [:valid invalidation]
+ expected: NOTRUN
+
+ [:default invalidation with input[type=radio\]]
+ expected: NOTRUN
+
+ [:required invalidation]
+ expected: NOTRUN
+
+ [:out-of-range invalidation]
+ expected: NOTRUN
+
+ [:placeholder-shown invalidation]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/selectors/invalidation/is-pseudo-containing-complex-in-has.html.ini b/tests/wpt/meta/css/selectors/invalidation/is-pseudo-containing-complex-in-has.html.ini
new file mode 100644
index 00000000000..cd64a69752c
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/is-pseudo-containing-complex-in-has.html.ini
@@ -0,0 +1,2 @@
+[is-pseudo-containing-complex-in-has.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/selectors/invalidation/link-pseudo-in-has.html.ini b/tests/wpt/meta/css/selectors/invalidation/link-pseudo-in-has.html.ini
new file mode 100644
index 00000000000..ff826d6f858
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/link-pseudo-in-has.html.ini
@@ -0,0 +1,3 @@
+[link-pseudo-in-has.html]
+ [CSS Selectors Invalidation: :link, :visited :any-link, pseudo-class in :has() argument]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/location-pseudo-classes-in-has.html.ini b/tests/wpt/meta/css/selectors/invalidation/location-pseudo-classes-in-has.html.ini
new file mode 100644
index 00000000000..e27e859d210
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/location-pseudo-classes-in-has.html.ini
@@ -0,0 +1,3 @@
+[location-pseudo-classes-in-has.html]
+ [CSS Selectors Invalidation: location pseudo classes in :has() argument]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/media-pseudo-classes-in-has.html.ini b/tests/wpt/meta/css/selectors/invalidation/media-pseudo-classes-in-has.html.ini
new file mode 100644
index 00000000000..06e1bdfb1a8
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/media-pseudo-classes-in-has.html.ini
@@ -0,0 +1,9 @@
+[media-pseudo-classes-in-has.html]
+ [Test :playing pseudo-classes]
+ expected: FAIL
+
+ [Test :seeking pseudo-class]
+ expected: FAIL
+
+ [Test :muted pseudo-class]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/modal-pseudo-class-in-has.html.ini b/tests/wpt/meta/css/selectors/invalidation/modal-pseudo-class-in-has.html.ini
new file mode 100644
index 00000000000..26a2bc49a56
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/modal-pseudo-class-in-has.html.ini
@@ -0,0 +1,9 @@
+[modal-pseudo-class-in-has.html]
+ [:modal pseudo-class is not active with dialog.show()]
+ expected: FAIL
+
+ [:modal pseudo-class invalidation with showModal+close]
+ expected: FAIL
+
+ [:modal pseudo-class invalidation with showModal+remove]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/not-001.html.ini b/tests/wpt/meta/css/selectors/invalidation/not-001.html.ini
new file mode 100644
index 00000000000..99d21825015
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/not-001.html.ini
@@ -0,0 +1,7 @@
+[not-001.html]
+ [precondition]
+ expected: FAIL
+
+ [Invalidation of sibling combinators in :not()]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/css/selectors/invalidation/not-002.html.ini b/tests/wpt/meta/css/selectors/invalidation/not-002.html.ini
new file mode 100644
index 00000000000..9eaa0b2b190
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/not-002.html.ini
@@ -0,0 +1,19 @@
+[not-002.html]
+ [Invalidate :not() for simple selector arguments.]
+ expected: FAIL
+
+ [Invalidate :not() for compound selector arguments.]
+ expected: FAIL
+
+ [Test specificity of :not().]
+ expected: FAIL
+
+ [Preconditions.]
+ expected: FAIL
+
+ [Invalidate :not() for complex selector arguments.]
+ expected: FAIL
+
+ [Invalidate nested :is() inside :not().]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/css/selectors/invalidation/not-pseudo-containing-complex-in-has.html.ini b/tests/wpt/meta/css/selectors/invalidation/not-pseudo-containing-complex-in-has.html.ini
new file mode 100644
index 00000000000..c585ab8c220
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/not-pseudo-containing-complex-in-has.html.ini
@@ -0,0 +1,2 @@
+[not-pseudo-containing-complex-in-has.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/selectors/invalidation/nth-child-of-attr.html.ini b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-attr.html.ini
new file mode 100644
index 00000000000..e9271488bfb
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-attr.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-attr.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/nth-child-of-class-prefix.html.ini b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-class-prefix.html.ini
new file mode 100644
index 00000000000..effa60039b6
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-class-prefix.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-class-prefix.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/nth-child-of-class.html.ini b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-class.html.ini
new file mode 100644
index 00000000000..9a24925af13
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-class.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-class.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/nth-child-of-has.html.ini b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-has.html.ini
new file mode 100644
index 00000000000..f9ae9a26de4
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-has.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-has.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/nth-child-of-id-prefix.html.ini b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-id-prefix.html.ini
new file mode 100644
index 00000000000..1612e605758
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-id-prefix.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-id-prefix.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/nth-child-of-ids.html.ini b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-ids.html.ini
new file mode 100644
index 00000000000..114e02e45fb
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-ids.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-ids.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/nth-child-of-in-ancestor.html.ini b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-in-ancestor.html.ini
new file mode 100644
index 00000000000..99b06462ef6
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-in-ancestor.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-in-ancestor.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/nth-child-of-in-is.html.ini b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-in-is.html.ini
new file mode 100644
index 00000000000..d2d0e9deab3
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-in-is.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-in-is.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/nth-child-of-in-shadow-root.html.ini b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-in-shadow-root.html.ini
new file mode 100644
index 00000000000..a6bff34a70e
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-in-shadow-root.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-in-shadow-root.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/nth-child-of-is.html.ini b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-is.html.ini
new file mode 100644
index 00000000000..4ad8c185397
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-is.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-is.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/nth-child-of-pseudo-class.html.ini b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-pseudo-class.html.ini
new file mode 100644
index 00000000000..a3c4f6a22df
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-pseudo-class.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-pseudo-class.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/nth-child-of-sibling.html.ini b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-sibling.html.ini
new file mode 100644
index 00000000000..66fec24b0c9
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/nth-child-of-sibling.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-sibling.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/nth-child-when-ancestor-changes.html.ini b/tests/wpt/meta/css/selectors/invalidation/nth-child-when-ancestor-changes.html.ini
new file mode 100644
index 00000000000..ef48122dca4
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/nth-child-when-ancestor-changes.html.ini
@@ -0,0 +1,2 @@
+[nth-child-when-ancestor-changes.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/nth-child-when-sibling-changes.html.ini b/tests/wpt/meta/css/selectors/invalidation/nth-child-when-sibling-changes.html.ini
new file mode 100644
index 00000000000..7879d75b5f6
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/nth-child-when-sibling-changes.html.ini
@@ -0,0 +1,2 @@
+[nth-child-when-sibling-changes.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-class-prefix.html.ini b/tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-class-prefix.html.ini
new file mode 100644
index 00000000000..c1153dedf0d
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-class-prefix.html.ini
@@ -0,0 +1,2 @@
+[nth-last-child-of-class-prefix.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-id-prefix.html.ini b/tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-id-prefix.html.ini
new file mode 100644
index 00000000000..8f1d8b3e2f0
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-id-prefix.html.ini
@@ -0,0 +1,2 @@
+[nth-last-child-of-id-prefix.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-ids.html.ini b/tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-ids.html.ini
new file mode 100644
index 00000000000..126bbeb14de
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-ids.html.ini
@@ -0,0 +1,2 @@
+[nth-last-child-of-ids.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-in-is.html.ini b/tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-in-is.html.ini
new file mode 100644
index 00000000000..4a29e58633c
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-in-is.html.ini
@@ -0,0 +1,2 @@
+[nth-last-child-of-in-is.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-in-shadow-root.html.ini b/tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-in-shadow-root.html.ini
new file mode 100644
index 00000000000..2f69cd5da3d
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-in-shadow-root.html.ini
@@ -0,0 +1,2 @@
+[nth-last-child-of-in-shadow-root.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-is.html.ini b/tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-is.html.ini
new file mode 100644
index 00000000000..80846d39331
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-is.html.ini
@@ -0,0 +1,2 @@
+[nth-last-child-of-is.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-pseudo-class.html.ini b/tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-pseudo-class.html.ini
new file mode 100644
index 00000000000..d246868243f
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/nth-last-child-of-pseudo-class.html.ini
@@ -0,0 +1,2 @@
+[nth-last-child-of-pseudo-class.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/subject-has-invalidation-with-display-none-anchor-element.html.ini b/tests/wpt/meta/css/selectors/invalidation/subject-has-invalidation-with-display-none-anchor-element.html.ini
new file mode 100644
index 00000000000..2287dcfb4b4
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/subject-has-invalidation-with-display-none-anchor-element.html.ini
@@ -0,0 +1,3 @@
+[subject-has-invalidation-with-display-none-anchor-element.html]
+ [CSS Selectors Invalidation: subject :has() invalidation with display: none anchor element]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/target-pseudo-in-has.html.ini b/tests/wpt/meta/css/selectors/invalidation/target-pseudo-in-has.html.ini
new file mode 100644
index 00000000000..33ecce7e670
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/target-pseudo-in-has.html.ini
@@ -0,0 +1,3 @@
+[target-pseudo-in-has.html]
+ [CSS Selectors Invalidation: :target pseudo-class in :has() argument]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/typed-child-indexed-pseudo-classes-in-has.html.ini b/tests/wpt/meta/css/selectors/invalidation/typed-child-indexed-pseudo-classes-in-has.html.ini
new file mode 100644
index 00000000000..124d66b6cef
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/typed-child-indexed-pseudo-classes-in-has.html.ini
@@ -0,0 +1,19 @@
+[typed-child-indexed-pseudo-classes-in-has.html]
+ expected: ERROR
+ [Initial colors: #only_of_type]
+ expected: FAIL
+
+ [Initial colors: #first_of_type]
+ expected: FAIL
+
+ [Initial colors: #last_of_type]
+ expected: FAIL
+
+ [Initial colors: #nth_of_type_3n_1]
+ expected: FAIL
+
+ [Initial colors: #nth_of_type_3n_2]
+ expected: FAIL
+
+ [Initial colors: #nth_of_type_3n]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/is-default-ns-002.html.ini b/tests/wpt/meta/css/selectors/is-default-ns-002.html.ini
new file mode 100644
index 00000000000..b8de9607a92
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/is-default-ns-002.html.ini
@@ -0,0 +1,2 @@
+[is-default-ns-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/is-specificity-shadow.html.ini b/tests/wpt/meta/css/selectors/is-specificity-shadow.html.ini
new file mode 100644
index 00000000000..02e353e2a76
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/is-specificity-shadow.html.ini
@@ -0,0 +1,4 @@
+[is-specificity-shadow.html]
+ [Specificity of :host() inside :is()]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/css/selectors/is-where-basic.html.ini b/tests/wpt/meta/css/selectors/is-where-basic.html.ini
new file mode 100644
index 00000000000..4591e9d6ee4
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/is-where-basic.html.ini
@@ -0,0 +1,5 @@
+[is-where-basic.html]
+ expected: ERROR
+ [:is() matches expected elements]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/css/selectors/is-where-error-recovery.html.ini b/tests/wpt/meta/css/selectors/is-where-error-recovery.html.ini
new file mode 100644
index 00000000000..af513ca1c36
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/is-where-error-recovery.html.ini
@@ -0,0 +1,4 @@
+[is-where-error-recovery.html]
+ [CSS Selectors: :is() and :where() error recovery]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/css/selectors/is-where-error-recovery.tentative.html.ini b/tests/wpt/meta/css/selectors/is-where-error-recovery.tentative.html.ini
new file mode 100644
index 00000000000..fb4b13050d0
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/is-where-error-recovery.tentative.html.ini
@@ -0,0 +1,4 @@
+[is-where-error-recovery.tentative.html]
+ [CSS Selectors: :is() and :where() error recovery]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/css/selectors/is-where-not.html.ini b/tests/wpt/meta/css/selectors/is-where-not.html.ini
new file mode 100644
index 00000000000..aa03f8b97cd
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/is-where-not.html.ini
@@ -0,0 +1,2 @@
+[is-where-not.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/selectors/is-where-parsing.html.ini b/tests/wpt/meta/css/selectors/is-where-parsing.html.ini
new file mode 100644
index 00000000000..67581647c9b
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/is-where-parsing.html.ini
@@ -0,0 +1,39 @@
+[is-where-parsing.html]
+ [Nested :is]
+ expected: FAIL
+
+ [Pseudo-elements after]
+ expected: FAIL
+
+ [Nested :where]
+ expected: FAIL
+
+ [Pseudo-classes after]
+ expected: FAIL
+
+ [Multiple selectors with combinators]
+ expected: FAIL
+
+ [Combinators after]
+ expected: FAIL
+
+ [Nested inside :host, without combinators]
+ expected: FAIL
+
+ [Pseudo-classes inside]
+ expected: FAIL
+
+ [After part with simple pseudo-class]
+ expected: FAIL
+
+ [Nested inside :not, without combinators]
+ expected: FAIL
+
+ [Nested inside :not, with combinators]
+ expected: FAIL
+
+ [Trailing whitespace]
+ expected: FAIL
+
+ [Nested inside :host, with trailing whitespace]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/is-where-pseudo-classes.html.ini b/tests/wpt/meta/css/selectors/is-where-pseudo-classes.html.ini
new file mode 100644
index 00000000000..ddc276664b5
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/is-where-pseudo-classes.html.ini
@@ -0,0 +1,4 @@
+[is-where-pseudo-classes.html]
+ [:is() combined with pseudo-classes]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/css/selectors/is-where-pseudo-elements.html.ini b/tests/wpt/meta/css/selectors/is-where-pseudo-elements.html.ini
new file mode 100644
index 00000000000..087533a1e9b
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/is-where-pseudo-elements.html.ini
@@ -0,0 +1,2 @@
+[is-where-pseudo-elements.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/is-where-shadow.html.ini b/tests/wpt/meta/css/selectors/is-where-shadow.html.ini
new file mode 100644
index 00000000000..c40b2d623ae
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/is-where-shadow.html.ini
@@ -0,0 +1,2 @@
+[is-where-shadow.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/selectors/is-where-visited.html.ini b/tests/wpt/meta/css/selectors/is-where-visited.html.ini
new file mode 100644
index 00000000000..c93af375fa1
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/is-where-visited.html.ini
@@ -0,0 +1,2 @@
+[is-where-visited.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/media/media-loading-state.html.ini b/tests/wpt/meta/css/selectors/media/media-loading-state.html.ini
new file mode 100644
index 00000000000..6a19b04ad24
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/media/media-loading-state.html.ini
@@ -0,0 +1,10 @@
+[media-loading-state.html]
+ expected: TIMEOUT
+ [Test :pseudo-class syntax is supported without throwing a SyntaxError]
+ expected: FAIL
+
+ [Test :stalled pseudo-class]
+ expected: TIMEOUT
+
+ [Test :buffering pseudo-class]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/selectors/media/media-playback-state.html.ini b/tests/wpt/meta/css/selectors/media/media-playback-state.html.ini
new file mode 100644
index 00000000000..5ece18229f8
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/media/media-playback-state.html.ini
@@ -0,0 +1,12 @@
+[media-playback-state.html]
+ [Test :pseudo-class syntax is supported without throwing a SyntaxError]
+ expected: FAIL
+
+ [Test :playing pseudo-classes]
+ expected: FAIL
+
+ [Test :paused pseudo-classes]
+ expected: FAIL
+
+ [Test :seeking pseudo-class]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/media/sound-state.html.ini b/tests/wpt/meta/css/selectors/media/sound-state.html.ini
new file mode 100644
index 00000000000..e91a9529f4d
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/media/sound-state.html.ini
@@ -0,0 +1,6 @@
+[sound-state.html]
+ [Test :pseudo-class syntax is supported without throwing a SyntaxError]
+ expected: FAIL
+
+ [Test :muted pseudo-class]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nesting-parsing.html.ini b/tests/wpt/meta/css/selectors/nesting-parsing.html.ini
new file mode 100644
index 00000000000..d05467815f5
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nesting-parsing.html.ini
@@ -0,0 +1,36 @@
+[nesting-parsing.html]
+ [.foo { & { color: green; } }]
+ expected: FAIL
+
+ [.foo { &.bar { color: green; } }]
+ expected: FAIL
+
+ [.foo { & .bar { color: green; } }]
+ expected: FAIL
+
+ [.foo { & > .bar { color: green; } }]
+ expected: FAIL
+
+ [.foo { &:is(.bar, &.baz) { color: green; } }]
+ expected: FAIL
+
+ [.foo { @nest .bar& { color: green; } }]
+ expected: FAIL
+
+ [.foo { @nest .bar & { color: green; } }]
+ expected: FAIL
+
+ [.foo { @nest .bar > & { color: green; } }]
+ expected: FAIL
+
+ [.foo, .bar { & + .baz, &.qux { color: green; } }]
+ expected: FAIL
+
+ [.foo { & .bar & .baz & .qux { color: green; } }]
+ expected: FAIL
+
+ [.foo { @media (min-width: 50px) { color: green; } }]
+ expected: FAIL
+
+ [main { & > section, & > article { & > header { color: green; } } }]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nesting.html.ini b/tests/wpt/meta/css/selectors/nesting.html.ini
new file mode 100644
index 00000000000..b4c7f867cdc
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nesting.html.ini
@@ -0,0 +1,2 @@
+[nesting.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/not-complex.html.ini b/tests/wpt/meta/css/selectors/not-complex.html.ini
new file mode 100644
index 00000000000..3ada8da5b89
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/not-complex.html.ini
@@ -0,0 +1,2 @@
+[not-complex.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/selectors/not-specificity.html.ini b/tests/wpt/meta/css/selectors/not-specificity.html.ini
new file mode 100644
index 00000000000..f4dad41b375
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/not-specificity.html.ini
@@ -0,0 +1,25 @@
+[not-specificity.html]
+ [:not(span, :not(:not(.a#foo)), p) wins over :not(span, #foo, p)]
+ expected: FAIL
+
+ [:not(div#foo) wins over :not(#foo)]
+ expected: FAIL
+
+ [:not(span, li, p) wins over :not(span, lo, p)]
+ expected: FAIL
+
+ [:not(#foo) wins over :not(.foo)]
+ expected: FAIL
+
+ [:not(span + span) wins over :not(span)]
+ expected: FAIL
+
+ [:not(.bar, #foo) has same specificity as :not(#foo, .bar)]
+ expected: FAIL
+
+ [:not(.bar, #foo) wins over :not(.foo, .bar)]
+ expected: FAIL
+
+ [:not(span, #foo, p) wins over :not(span, :where(.a#foo), p)]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/css/selectors/nth-child-and-nth-last-child.html.ini b/tests/wpt/meta/css/selectors/nth-child-and-nth-last-child.html.ini
new file mode 100644
index 00000000000..fb1a38c67c9
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-child-and-nth-last-child.html.ini
@@ -0,0 +1,2 @@
+[nth-child-and-nth-last-child.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-child-of-attribute.html.ini b/tests/wpt/meta/css/selectors/nth-child-of-attribute.html.ini
new file mode 100644
index 00000000000..c5e02240439
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-child-of-attribute.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-attribute.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-child-of-classname-002.html.ini b/tests/wpt/meta/css/selectors/nth-child-of-classname-002.html.ini
new file mode 100644
index 00000000000..618d0d20ac1
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-child-of-classname-002.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-classname-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-child-of-classname.html.ini b/tests/wpt/meta/css/selectors/nth-child-of-classname.html.ini
new file mode 100644
index 00000000000..0c90c1838de
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-child-of-classname.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-classname.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-child-of-complex-selector-many-children.html.ini b/tests/wpt/meta/css/selectors/nth-child-of-complex-selector-many-children.html.ini
new file mode 100644
index 00000000000..f749845f98e
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-child-of-complex-selector-many-children.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-complex-selector-many-children.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-child-of-complex-selector.html.ini b/tests/wpt/meta/css/selectors/nth-child-of-complex-selector.html.ini
new file mode 100644
index 00000000000..05b55515c21
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-child-of-complex-selector.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-complex-selector.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-child-of-compound-selector.html.ini b/tests/wpt/meta/css/selectors/nth-child-of-compound-selector.html.ini
new file mode 100644
index 00000000000..ad0be69748d
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-child-of-compound-selector.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-compound-selector.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-child-of-has.html.ini b/tests/wpt/meta/css/selectors/nth-child-of-has.html.ini
new file mode 100644
index 00000000000..f9ae9a26de4
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-child-of-has.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-has.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-child-of-no-space-after-of.html.ini b/tests/wpt/meta/css/selectors/nth-child-of-no-space-after-of.html.ini
new file mode 100644
index 00000000000..c5cd72461e2
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-child-of-no-space-after-of.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-no-space-after-of.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-child-of-not.html.ini b/tests/wpt/meta/css/selectors/nth-child-of-not.html.ini
new file mode 100644
index 00000000000..85379cd3514
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-child-of-not.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-not.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-child-of-nth-child.html.ini b/tests/wpt/meta/css/selectors/nth-child-of-nth-child.html.ini
new file mode 100644
index 00000000000..e98ea78c8db
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-child-of-nth-child.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-nth-child.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-child-of-tagname.html.ini b/tests/wpt/meta/css/selectors/nth-child-of-tagname.html.ini
new file mode 100644
index 00000000000..00f52e3f5f2
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-child-of-tagname.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-tagname.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-child-of-universal-selector.html.ini b/tests/wpt/meta/css/selectors/nth-child-of-universal-selector.html.ini
new file mode 100644
index 00000000000..ab158554b19
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-child-of-universal-selector.html.ini
@@ -0,0 +1,2 @@
+[nth-child-of-universal-selector.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-child-specificity-1.html.ini b/tests/wpt/meta/css/selectors/nth-child-specificity-1.html.ini
new file mode 100644
index 00000000000..c847a921142
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-child-specificity-1.html.ini
@@ -0,0 +1,2 @@
+[nth-child-specificity-1.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-child-specificity-2.html.ini b/tests/wpt/meta/css/selectors/nth-child-specificity-2.html.ini
new file mode 100644
index 00000000000..25bffa75f7f
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-child-specificity-2.html.ini
@@ -0,0 +1,2 @@
+[nth-child-specificity-2.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-child-specificity-3.html.ini b/tests/wpt/meta/css/selectors/nth-child-specificity-3.html.ini
new file mode 100644
index 00000000000..1dabfb82d0d
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-child-specificity-3.html.ini
@@ -0,0 +1,2 @@
+[nth-child-specificity-3.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-child-specificity-4.html.ini b/tests/wpt/meta/css/selectors/nth-child-specificity-4.html.ini
new file mode 100644
index 00000000000..6805b3f5e39
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-child-specificity-4.html.ini
@@ -0,0 +1,2 @@
+[nth-child-specificity-4.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-last-child-of-classname.html.ini b/tests/wpt/meta/css/selectors/nth-last-child-of-classname.html.ini
new file mode 100644
index 00000000000..235b0d8ac73
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-last-child-of-classname.html.ini
@@ -0,0 +1,2 @@
+[nth-last-child-of-classname.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-last-child-of-complex-selector.html.ini b/tests/wpt/meta/css/selectors/nth-last-child-of-complex-selector.html.ini
new file mode 100644
index 00000000000..5b36c3bc099
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-last-child-of-complex-selector.html.ini
@@ -0,0 +1,2 @@
+[nth-last-child-of-complex-selector.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-last-child-of-compound-selector.html.ini b/tests/wpt/meta/css/selectors/nth-last-child-of-compound-selector.html.ini
new file mode 100644
index 00000000000..2b7ec8eeb58
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-last-child-of-compound-selector.html.ini
@@ -0,0 +1,2 @@
+[nth-last-child-of-compound-selector.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-last-child-of-no-space-after-of.html.ini b/tests/wpt/meta/css/selectors/nth-last-child-of-no-space-after-of.html.ini
new file mode 100644
index 00000000000..e1e2aebf6ac
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-last-child-of-no-space-after-of.html.ini
@@ -0,0 +1,2 @@
+[nth-last-child-of-no-space-after-of.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-last-child-of-style-sharing-1.html.ini b/tests/wpt/meta/css/selectors/nth-last-child-of-style-sharing-1.html.ini
new file mode 100644
index 00000000000..cdd34c5c1d0
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-last-child-of-style-sharing-1.html.ini
@@ -0,0 +1,2 @@
+[nth-last-child-of-style-sharing-1.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-last-child-of-style-sharing-2.html.ini b/tests/wpt/meta/css/selectors/nth-last-child-of-style-sharing-2.html.ini
new file mode 100644
index 00000000000..e8d72b1499a
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-last-child-of-style-sharing-2.html.ini
@@ -0,0 +1,2 @@
+[nth-last-child-of-style-sharing-2.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-last-child-of-tagname.html.ini b/tests/wpt/meta/css/selectors/nth-last-child-of-tagname.html.ini
new file mode 100644
index 00000000000..7f84685b8f3
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-last-child-of-tagname.html.ini
@@ -0,0 +1,2 @@
+[nth-last-child-of-tagname.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-last-child-specificity-1.html.ini b/tests/wpt/meta/css/selectors/nth-last-child-specificity-1.html.ini
new file mode 100644
index 00000000000..17480435533
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-last-child-specificity-1.html.ini
@@ -0,0 +1,2 @@
+[nth-last-child-specificity-1.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-last-child-specificity-2.html.ini b/tests/wpt/meta/css/selectors/nth-last-child-specificity-2.html.ini
new file mode 100644
index 00000000000..cfb6403cee1
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-last-child-specificity-2.html.ini
@@ -0,0 +1,2 @@
+[nth-last-child-specificity-2.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-last-child-specificity-3.html.ini b/tests/wpt/meta/css/selectors/nth-last-child-specificity-3.html.ini
new file mode 100644
index 00000000000..8b9b5974803
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-last-child-specificity-3.html.ini
@@ -0,0 +1,2 @@
+[nth-last-child-specificity-3.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-last-child-specificity-4.html.ini b/tests/wpt/meta/css/selectors/nth-last-child-specificity-4.html.ini
new file mode 100644
index 00000000000..04c0c21cebc
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-last-child-specificity-4.html.ini
@@ -0,0 +1,2 @@
+[nth-last-child-specificity-4.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/nth-of-type-namespace.html.ini b/tests/wpt/meta/css/selectors/nth-of-type-namespace.html.ini
new file mode 100644
index 00000000000..41609fb11fc
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/nth-of-type-namespace.html.ini
@@ -0,0 +1,2 @@
+[nth-of-type-namespace.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/selectors/parsing/is.html.ini b/tests/wpt/meta/css/selectors/parsing/is.html.ini
new file mode 100644
index 00000000000..941fc56bf74
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/parsing/is.html.ini
@@ -0,0 +1,19 @@
+[is.html]
+ [":is(#a)" should be a valid selector]
+ expected: FAIL
+
+ [".a.b ~ :is(.c.d ~ .e.f)" should be a valid selector]
+ expected: FAIL
+
+ [".a.b ~ .c.d:is(span.e + .f, .g.h > .i.j .k)" should be a valid selector]
+ expected: FAIL
+
+ [":is(:hover,:focus)" should be a valid selector]
+ expected: FAIL
+
+ ["a:is(:not(:hover))" should be a valid selector]
+ expected: FAIL
+
+ [":is(ul,ol,.list) > [hidden\]" should be a valid selector]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/css/selectors/parsing/parse-focus-visible.html.ini b/tests/wpt/meta/css/selectors/parsing/parse-focus-visible.html.ini
new file mode 100644
index 00000000000..c351eba9aab
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/parsing/parse-focus-visible.html.ini
@@ -0,0 +1,10 @@
+[parse-focus-visible.html]
+ [":focus-visible" should be a valid selector]
+ expected: FAIL
+
+ ["a:focus-visible" should be a valid selector]
+ expected: FAIL
+
+ [":focus:not(:focus-visible)" should be a valid selector]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/css/selectors/parsing/parse-has-disallow-nesting-has-inside-has.html.ini b/tests/wpt/meta/css/selectors/parsing/parse-has-disallow-nesting-has-inside-has.html.ini
new file mode 100644
index 00000000000..48b39b6115a
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/parsing/parse-has-disallow-nesting-has-inside-has.html.ini
@@ -0,0 +1,15 @@
+[parse-has-disallow-nesting-has-inside-has.html]
+ [".a:has(.b:has(.c))" should be a valid selector]
+ expected: FAIL
+
+ [".a:has(.b:has(.c), .d)" should be a valid selector]
+ expected: FAIL
+
+ [".a:has(.b:is(.c:has(.d) .e))" should be a valid selector]
+ expected: FAIL
+
+ [".a:has(:is(.b:has(.c)))" should be a valid selector]
+ expected: FAIL
+
+ [".a:has(:is(.b:has(.c), .d))" should be a valid selector]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/parsing/parse-has.html.ini b/tests/wpt/meta/css/selectors/parsing/parse-has.html.ini
new file mode 100644
index 00000000000..8c802d73953
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/parsing/parse-has.html.ini
@@ -0,0 +1,81 @@
+[parse-has.html]
+ [":has(a)" should be a valid selector]
+ expected: FAIL
+
+ [":has(#a)" should be a valid selector]
+ expected: FAIL
+
+ [":has(.a)" should be a valid selector]
+ expected: FAIL
+
+ [":has([a\])" should be a valid selector]
+ expected: FAIL
+
+ [":has([a=\\"b\\"\])" should be a valid selector]
+ expected: FAIL
+
+ [":has([a|=\\"b\\"\])" should be a valid selector]
+ expected: FAIL
+
+ [":has(:hover)" should be a valid selector]
+ expected: FAIL
+
+ ["*:has(.a)" should be a valid selector]
+ expected: FAIL
+
+ [".a:has(.b)" should be a valid selector]
+ expected: FAIL
+
+ [".a:has(> .b)" should be a valid selector]
+ expected: FAIL
+
+ [".a:has(~ .b)" should be a valid selector]
+ expected: FAIL
+
+ [".a:has(+ .b)" should be a valid selector]
+ expected: FAIL
+
+ [".a:has(.b) .c" should be a valid selector]
+ expected: FAIL
+
+ [".a .b:has(.c)" should be a valid selector]
+ expected: FAIL
+
+ [".a .b:has(.c .d)" should be a valid selector]
+ expected: FAIL
+
+ [".a .b:has(.c .d) .e" should be a valid selector]
+ expected: FAIL
+
+ [".a:has(.b:has(.c))" should be a valid selector]
+ expected: FAIL
+
+ [".a:has(.b:is(.c .d))" should be a valid selector]
+ expected: FAIL
+
+ [".a:has(.b:is(.c:has(.d) .e))" should be a valid selector]
+ expected: FAIL
+
+ [".a:is(.b:has(.c) .d)" should be a valid selector]
+ expected: FAIL
+
+ [".a:not(:has(.b))" should be a valid selector]
+ expected: FAIL
+
+ [".a:has(:not(.b))" should be a valid selector]
+ expected: FAIL
+
+ [".a:has(.b):has(.c)" should be a valid selector]
+ expected: FAIL
+
+ ["*|*:has(*)" should be a valid selector]
+ expected: FAIL
+
+ [":has(*|*)" should be a valid selector]
+ expected: FAIL
+
+ [".a:has()" should be a valid selector]
+ expected: FAIL
+
+ [":has(:is(.a, 123))" should be a valid selector]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/parsing/parse-is.html.ini b/tests/wpt/meta/css/selectors/parsing/parse-is.html.ini
new file mode 100644
index 00000000000..effe1a09629
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/parsing/parse-is.html.ini
@@ -0,0 +1,19 @@
+[parse-is.html]
+ [":is(#a)" should be a valid selector]
+ expected: FAIL
+
+ [".a.b ~ :is(.c.d ~ .e.f)" should be a valid selector]
+ expected: FAIL
+
+ [".a.b ~ .c.d:is(span.e + .f, .g.h > .i.j .k)" should be a valid selector]
+ expected: FAIL
+
+ [":is(:hover,:focus)" should be a valid selector]
+ expected: FAIL
+
+ ["a:is(:not(:hover))" should be a valid selector]
+ expected: FAIL
+
+ [":is(ul,ol,.list) > [hidden\]" should be a valid selector]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/css/selectors/parsing/parse-not.html.ini b/tests/wpt/meta/css/selectors/parsing/parse-not.html.ini
new file mode 100644
index 00000000000..b01f67b60f6
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/parsing/parse-not.html.ini
@@ -0,0 +1,6 @@
+[parse-not.html]
+ [":not(:host(:not(.a)))" should be a valid selector]
+ expected: FAIL
+
+ [":not(:host)" should be a valid selector]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/parsing/parse-where.html.ini b/tests/wpt/meta/css/selectors/parsing/parse-where.html.ini
new file mode 100644
index 00000000000..b5ffbae6945
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/parsing/parse-where.html.ini
@@ -0,0 +1,19 @@
+[parse-where.html]
+ [":where(#a)" should be a valid selector]
+ expected: FAIL
+
+ [":where(:hover,:focus)" should be a valid selector]
+ expected: FAIL
+
+ [".a.b ~ .c.d:where(span.e + .f, .g.h > .i.j .k)" should be a valid selector]
+ expected: FAIL
+
+ [":where(ul,ol,.list) > [hidden\]" should be a valid selector]
+ expected: FAIL
+
+ ["a:where(:not(:hover))" should be a valid selector]
+ expected: FAIL
+
+ [".a.b ~ :where(.c.d ~ .e.f)" should be a valid selector]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/css/selectors/parsing/where.html.ini b/tests/wpt/meta/css/selectors/parsing/where.html.ini
new file mode 100644
index 00000000000..188d18b9618
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/parsing/where.html.ini
@@ -0,0 +1,19 @@
+[where.html]
+ [":where(#a)" should be a valid selector]
+ expected: FAIL
+
+ [":where(:hover,:focus)" should be a valid selector]
+ expected: FAIL
+
+ [".a.b ~ .c.d:where(span.e + .f, .g.h > .i.j .k)" should be a valid selector]
+ expected: FAIL
+
+ [":where(ul,ol,.list) > [hidden\]" should be a valid selector]
+ expected: FAIL
+
+ ["a:where(:not(:hover))" should be a valid selector]
+ expected: FAIL
+
+ [".a.b ~ :where(.c.d ~ .e.f)" should be a valid selector]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/css/selectors/query/query-is.html.ini b/tests/wpt/meta/css/selectors/query/query-is.html.ini
new file mode 100644
index 00000000000..3dea30f295f
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/query/query-is.html.ini
@@ -0,0 +1,19 @@
+[query-is.html]
+ [Selector '.a :is(:where(:where(.b ~ .c)))" should find the expected elements]
+ expected: FAIL
+
+ [Selector '.a+:is(.b+.f, :is(.c>.e, .g))" should find the expected elements]
+ expected: FAIL
+
+ [Selector '.b + :is(.c + .c + .c, .b + .c:not(span), .b + .c + .e) ~ .h" should find the expected elements]
+ expected: FAIL
+
+ [Selector '.a :is(.b, .c)" should find the expected elements]
+ expected: FAIL
+
+ [Selector '.a :is(.e+.f, .g>.b, .h)" should find the expected elements]
+ expected: FAIL
+
+ [Selector '.a :is(.c#d, .e)" should find the expected elements]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/css/selectors/query/query-where.html.ini b/tests/wpt/meta/css/selectors/query/query-where.html.ini
new file mode 100644
index 00000000000..4c72d25b187
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/query/query-where.html.ini
@@ -0,0 +1,19 @@
+[query-where.html]
+ [Selector '.a+:where(.b+.f, :where(.c>.e, .g))" should find the expected elements]
+ expected: FAIL
+
+ [Selector '.a :where(:is(:is(.b ~ .c)))" should find the expected elements]
+ expected: FAIL
+
+ [Selector '.a :where(.e+.f, .g>.b, .h)" should find the expected elements]
+ expected: FAIL
+
+ [Selector '.a :where(.c#d, .e)" should find the expected elements]
+ expected: FAIL
+
+ [Selector '.b + :where(.c + .c + .c, .b + .c:not(span), .b + .c + .e) ~ .h" should find the expected elements]
+ expected: FAIL
+
+ [Selector '.a :where(.b, .c)" should find the expected elements]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/css/selectors/selectors-4/lang-011.html.ini b/tests/wpt/meta/css/selectors/selectors-4/lang-011.html.ini
new file mode 100644
index 00000000000..b168bf5cd3a
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/selectors-4/lang-011.html.ini
@@ -0,0 +1,2 @@
+[lang-011.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/selectors-4/lang-012.html.ini b/tests/wpt/meta/css/selectors/selectors-4/lang-012.html.ini
new file mode 100644
index 00000000000..cdc6bafba43
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/selectors-4/lang-012.html.ini
@@ -0,0 +1,2 @@
+[lang-012.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/selectors-dir-selector-auto-direction-change-001.html.ini b/tests/wpt/meta/css/selectors/selectors-dir-selector-auto-direction-change-001.html.ini
new file mode 100644
index 00000000000..3139f117686
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/selectors-dir-selector-auto-direction-change-001.html.ini
@@ -0,0 +1,2 @@
+[selectors-dir-selector-auto-direction-change-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/selectors-dir-selector-auto.html.ini b/tests/wpt/meta/css/selectors/selectors-dir-selector-auto.html.ini
new file mode 100644
index 00000000000..f533b7df909
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/selectors-dir-selector-auto.html.ini
@@ -0,0 +1,2 @@
+[selectors-dir-selector-auto.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/selectors/selectors-dir-selector-change-001.html.ini b/tests/wpt/meta/css/selectors/selectors-dir-selector-change-001.html.ini
new file mode 100644
index 00000000000..50e0e6623b2
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/selectors-dir-selector-change-001.html.ini
@@ -0,0 +1,2 @@
+[selectors-dir-selector-change-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/selectors-dir-selector-change-002.html.ini b/tests/wpt/meta/css/selectors/selectors-dir-selector-change-002.html.ini
new file mode 100644
index 00000000000..25232bb1f27
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/selectors-dir-selector-change-002.html.ini
@@ -0,0 +1,2 @@
+[selectors-dir-selector-change-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/selectors-dir-selector-change-003.html.ini b/tests/wpt/meta/css/selectors/selectors-dir-selector-change-003.html.ini
new file mode 100644
index 00000000000..e6a4e5e8af7
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/selectors-dir-selector-change-003.html.ini
@@ -0,0 +1,2 @@
+[selectors-dir-selector-change-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/selectors-dir-selector-change-004.html.ini b/tests/wpt/meta/css/selectors/selectors-dir-selector-change-004.html.ini
new file mode 100644
index 00000000000..c72af09bf92
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/selectors-dir-selector-change-004.html.ini
@@ -0,0 +1,2 @@
+[selectors-dir-selector-change-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/selectors-dir-selector-querySelector.html.ini b/tests/wpt/meta/css/selectors/selectors-dir-selector-querySelector.html.ini
new file mode 100644
index 00000000000..1b47c19cf14
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/selectors-dir-selector-querySelector.html.ini
@@ -0,0 +1,10 @@
+[selectors-dir-selector-querySelector.html]
+ [:dir() works in compound selectors]
+ expected: FAIL
+
+ [:dir() works in complex selectors]
+ expected: FAIL
+
+ [:dir() allows any ident value but strings other than ltr/rtl don't match]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/css/selectors/selectors-dir-selector-white-space-001.html.ini b/tests/wpt/meta/css/selectors/selectors-dir-selector-white-space-001.html.ini
new file mode 100644
index 00000000000..566cd31c34f
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/selectors-dir-selector-white-space-001.html.ini
@@ -0,0 +1,2 @@
+[selectors-dir-selector-white-space-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/user-valid.html.ini b/tests/wpt/meta/css/selectors/user-valid.html.ini
new file mode 100644
index 00000000000..2edbcc3bf55
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/user-valid.html.ini
@@ -0,0 +1,4 @@
+[user-valid.html]
+ [:user-valid selector should be supported]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/css/selectors/visited-inheritance.html.ini b/tests/wpt/meta/css/selectors/visited-inheritance.html.ini
new file mode 100644
index 00000000000..db2bd591042
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/visited-inheritance.html.ini
@@ -0,0 +1,2 @@
+[visited-inheritance.html]
+ expected: FAIL