diff --git a/tests/wpt/meta/IndexedDB/file_support.sub.html.ini b/tests/wpt/meta/IndexedDB/file_support.sub.html.ini
new file mode 100644
index 00000000000..0292b96566b
--- /dev/null
+++ b/tests/wpt/meta/IndexedDB/file_support.sub.html.ini
@@ -0,0 +1,4 @@
+[file_support.sub.html]
+ expected: TIMEOUT
+ [Saves and loads back File objects from IndexedDB]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/accelerometer/Accelerometer-iframe-access.https.html.ini b/tests/wpt/meta/accelerometer/Accelerometer-iframe-access.https.html.ini
new file mode 100644
index 00000000000..ee2f2c9c343
--- /dev/null
+++ b/tests/wpt/meta/accelerometer/Accelerometer-iframe-access.https.html.ini
@@ -0,0 +1,36 @@
+[Accelerometer-iframe-access.https.html]
+ [Accelerometer: unfocused sensors in cross-origin frames are not updated]
+ expected: FAIL
+
+ [Accelerometer: sensors in same-origin frames are updated if one of the frames is focused]
+ expected: FAIL
+
+ [Accelerometer: losing a document's frame with an active sensor does not crash]
+ expected: FAIL
+
+ [Accelerometer: calling start() in a non-fully active document does not crash]
+ expected: FAIL
+
+ [LinearAccelerationSensor: unfocused sensors in cross-origin frames are not updated]
+ expected: FAIL
+
+ [LinearAccelerationSensor: sensors in same-origin frames are updated if one of the frames is focused]
+ expected: FAIL
+
+ [LinearAccelerationSensor: losing a document's frame with an active sensor does not crash]
+ expected: FAIL
+
+ [LinearAccelerationSensor: calling start() in a non-fully active document does not crash]
+ expected: FAIL
+
+ [GravitySensor: unfocused sensors in cross-origin frames are not updated]
+ expected: FAIL
+
+ [GravitySensor: sensors in same-origin frames are updated if one of the frames is focused]
+ expected: FAIL
+
+ [GravitySensor: losing a document's frame with an active sensor does not crash]
+ expected: FAIL
+
+ [GravitySensor: calling start() in a non-fully active document does not crash]
+ expected: FAIL
diff --git a/tests/wpt/meta/accelerometer/Accelerometer.https.html.ini b/tests/wpt/meta/accelerometer/Accelerometer.https.html.ini
new file mode 100644
index 00000000000..ac933e1a9c5
--- /dev/null
+++ b/tests/wpt/meta/accelerometer/Accelerometer.https.html.ini
@@ -0,0 +1,54 @@
+[Accelerometer.https.html]
+ [Accelerometer: Test that onerror is sent when permissions are not granted.]
+ expected: FAIL
+
+ [Accelerometer: Test that onerror is send when start() call has failed.]
+ expected: FAIL
+
+ [Accelerometer: Test that frequency is capped to allowed maximum.]
+ expected: FAIL
+
+ [Accelerometer: Test that frequency is capped to the maximum supported frequency.]
+ expected: FAIL
+
+ [Accelerometer: Test that frequency is limited to the minimum supported frequency.]
+ expected: FAIL
+
+ [Accelerometer: Test that sensor cannot be constructed within iframe disallowed to use feature policy.]
+ expected: FAIL
+
+ [Accelerometer: Test that sensor can be constructed within an iframe allowed to use feature policy.]
+ expected: FAIL
+
+ [Accelerometer: Test that 'onreading' is called and sensor reading is valid.]
+ expected: FAIL
+
+ [Accelerometer: sensor reading is correct.]
+ expected: FAIL
+
+ [Accelerometer: Test that readings are all mapped to expectedReadings correctly.]
+ expected: FAIL
+
+ [Accelerometer: sensor timestamp is updated when time passes.]
+ expected: FAIL
+
+ [Accelerometer: Test that sensor can be successfully created and its states are correct.]
+ expected: FAIL
+
+ [Accelerometer: no exception is thrown when calling start() on already started sensor.]
+ expected: FAIL
+
+ [Accelerometer: no exception is thrown when calling stop() on already stopped sensor.]
+ expected: FAIL
+
+ [Accelerometer: Test that fresh reading is fetched on start().]
+ expected: FAIL
+
+ [Accelerometer: Readings are not delivered when the page has no visibility]
+ expected: FAIL
+
+ [Accelerometer: frequency hint works.]
+ expected: FAIL
+
+ [Accelerometer: Readings delivered by shared platform sensor are immediately accessible to all sensors.]
+ expected: FAIL
diff --git a/tests/wpt/meta/accelerometer/GravitySensor.https.html.ini b/tests/wpt/meta/accelerometer/GravitySensor.https.html.ini
new file mode 100644
index 00000000000..e11e0084284
--- /dev/null
+++ b/tests/wpt/meta/accelerometer/GravitySensor.https.html.ini
@@ -0,0 +1,54 @@
+[GravitySensor.https.html]
+ [GravitySensor: Test that onerror is sent when permissions are not granted.]
+ expected: FAIL
+
+ [GravitySensor: Test that onerror is send when start() call has failed.]
+ expected: FAIL
+
+ [GravitySensor: Test that frequency is capped to allowed maximum.]
+ expected: FAIL
+
+ [GravitySensor: Test that frequency is capped to the maximum supported frequency.]
+ expected: FAIL
+
+ [GravitySensor: Test that frequency is limited to the minimum supported frequency.]
+ expected: FAIL
+
+ [GravitySensor: Test that sensor cannot be constructed within iframe disallowed to use feature policy.]
+ expected: FAIL
+
+ [GravitySensor: Test that sensor can be constructed within an iframe allowed to use feature policy.]
+ expected: FAIL
+
+ [GravitySensor: Test that 'onreading' is called and sensor reading is valid.]
+ expected: FAIL
+
+ [GravitySensor: sensor reading is correct.]
+ expected: FAIL
+
+ [GravitySensor: Test that readings are all mapped to expectedReadings correctly.]
+ expected: FAIL
+
+ [GravitySensor: sensor timestamp is updated when time passes.]
+ expected: FAIL
+
+ [GravitySensor: Test that sensor can be successfully created and its states are correct.]
+ expected: FAIL
+
+ [GravitySensor: no exception is thrown when calling start() on already started sensor.]
+ expected: FAIL
+
+ [GravitySensor: no exception is thrown when calling stop() on already stopped sensor.]
+ expected: FAIL
+
+ [GravitySensor: Test that fresh reading is fetched on start().]
+ expected: FAIL
+
+ [GravitySensor: Readings are not delivered when the page has no visibility]
+ expected: FAIL
+
+ [GravitySensor: frequency hint works.]
+ expected: FAIL
+
+ [GravitySensor: Readings delivered by shared platform sensor are immediately accessible to all sensors.]
+ expected: FAIL
diff --git a/tests/wpt/meta/accelerometer/LinearAccelerationSensor.https.html.ini b/tests/wpt/meta/accelerometer/LinearAccelerationSensor.https.html.ini
new file mode 100644
index 00000000000..683a7d17a02
--- /dev/null
+++ b/tests/wpt/meta/accelerometer/LinearAccelerationSensor.https.html.ini
@@ -0,0 +1,54 @@
+[LinearAccelerationSensor.https.html]
+ [LinearAccelerationSensor: Test that onerror is sent when permissions are not granted.]
+ expected: FAIL
+
+ [LinearAccelerationSensor: Test that onerror is send when start() call has failed.]
+ expected: FAIL
+
+ [LinearAccelerationSensor: Test that frequency is capped to allowed maximum.]
+ expected: FAIL
+
+ [LinearAccelerationSensor: Test that frequency is capped to the maximum supported frequency.]
+ expected: FAIL
+
+ [LinearAccelerationSensor: Test that frequency is limited to the minimum supported frequency.]
+ expected: FAIL
+
+ [LinearAccelerationSensor: Test that sensor cannot be constructed within iframe disallowed to use feature policy.]
+ expected: FAIL
+
+ [LinearAccelerationSensor: Test that sensor can be constructed within an iframe allowed to use feature policy.]
+ expected: FAIL
+
+ [LinearAccelerationSensor: Test that 'onreading' is called and sensor reading is valid.]
+ expected: FAIL
+
+ [LinearAccelerationSensor: sensor reading is correct.]
+ expected: FAIL
+
+ [LinearAccelerationSensor: Test that readings are all mapped to expectedReadings correctly.]
+ expected: FAIL
+
+ [LinearAccelerationSensor: sensor timestamp is updated when time passes.]
+ expected: FAIL
+
+ [LinearAccelerationSensor: Test that sensor can be successfully created and its states are correct.]
+ expected: FAIL
+
+ [LinearAccelerationSensor: no exception is thrown when calling start() on already started sensor.]
+ expected: FAIL
+
+ [LinearAccelerationSensor: no exception is thrown when calling stop() on already stopped sensor.]
+ expected: FAIL
+
+ [LinearAccelerationSensor: Test that fresh reading is fetched on start().]
+ expected: FAIL
+
+ [LinearAccelerationSensor: Readings are not delivered when the page has no visibility]
+ expected: FAIL
+
+ [LinearAccelerationSensor: frequency hint works.]
+ expected: FAIL
+
+ [LinearAccelerationSensor: Readings delivered by shared platform sensor are immediately accessible to all sensors.]
+ expected: FAIL
diff --git a/tests/wpt/meta/accessibility/svg-mouse-listener.html.ini b/tests/wpt/meta/accessibility/svg-mouse-listener.html.ini
new file mode 100644
index 00000000000..c15fdd88307
--- /dev/null
+++ b/tests/wpt/meta/accessibility/svg-mouse-listener.html.ini
@@ -0,0 +1,4 @@
+[svg-mouse-listener.html]
+ expected: TIMEOUT
+ [Clicking SVG element does not crash the browser]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/accname/basic.html.ini b/tests/wpt/meta/accname/basic.html.ini
new file mode 100644
index 00000000000..a1826f0dbb4
--- /dev/null
+++ b/tests/wpt/meta/accname/basic.html.ini
@@ -0,0 +1,6 @@
+[basic.html]
+ [tests labelFrom: author]
+ expected: FAIL
+
+ [tests labelFrom: contents]
+ expected: FAIL
diff --git a/tests/wpt/meta/accname/name/comp_embedded_control.html.ini b/tests/wpt/meta/accname/name/comp_embedded_control.html.ini
new file mode 100644
index 00000000000..787bf94a3e3
--- /dev/null
+++ b/tests/wpt/meta/accname/name/comp_embedded_control.html.ini
@@ -0,0 +1,78 @@
+[comp_embedded_control.html]
+ [checkbox label with embedded textfield]
+ expected: FAIL
+
+ [label of embedded textfield inside checkbox label]
+ expected: FAIL
+
+ [checkbox label with embedded select:not([size\])]
+ expected: FAIL
+
+ [label of embedded select:not([size\]) inside checkbox label]
+ expected: FAIL
+
+ [checkbox label with embedded select[size\]]
+ expected: FAIL
+
+ [label of embedded select[size\] inside checkbox label]
+ expected: FAIL
+
+ [checkbox label with embedded combobox (input[type=text\])]
+ expected: FAIL
+
+ [label of embedded combobox (input[type=text\]) inside checkbox label]
+ expected: FAIL
+
+ [checkbox label with embedded combobox (span)]
+ expected: FAIL
+
+ [label of embedded combobox (span) inside checkbox label]
+ expected: FAIL
+
+ [checkbox label with embedded combobox (div)]
+ expected: FAIL
+
+ [label of embedded combobox (div) inside checkbox label]
+ expected: FAIL
+
+ [checkbox label with embedded listbox>option[aria-selected=true\]]
+ expected: FAIL
+
+ [label of embedded listbox>option[aria-selected=true\] inside checkbox label]
+ expected: FAIL
+
+ [checkbox label with embedded input[type=range\]]
+ expected: FAIL
+
+ [label of embedded input[type=range\] inside checkbox label]
+ expected: FAIL
+
+ [checkbox label with embedded input[type=number\]]
+ expected: FAIL
+
+ [label of embedded input[type=number\] inside checkbox label]
+ expected: FAIL
+
+ [checkbox label with embedded ARIA slider (aria-valuenow)]
+ expected: FAIL
+
+ [label of embedded ARIA slider (aria-valuenow) inside checkbox label]
+ expected: FAIL
+
+ [checkbox label with embedded ARIA slider (aria-valuetext)]
+ expected: FAIL
+
+ [label of embedded ARIA slider (aria-valuetext) inside checkbox label]
+ expected: FAIL
+
+ [checkbox label with embedded ARIA spinbutton (aria-valuenow)]
+ expected: FAIL
+
+ [label of embedded ARIA spinbutton (aria-valuenow) inside checkbox label]
+ expected: FAIL
+
+ [checkbox label with embedded ARIA spinbutton (aria-valuetext)]
+ expected: FAIL
+
+ [label of embedded ARIA spinbutton (aria-valuetext) inside checkbox label]
+ expected: FAIL
diff --git a/tests/wpt/meta/accname/name/comp_hidden_not_referenced.html.ini b/tests/wpt/meta/accname/name/comp_hidden_not_referenced.html.ini
new file mode 100644
index 00000000000..c336b1b66a1
--- /dev/null
+++ b/tests/wpt/meta/accname/name/comp_hidden_not_referenced.html.ini
@@ -0,0 +1,15 @@
+[comp_hidden_not_referenced.html]
+ [button containing a rendered, unreferenced element that is aria-hidden=true, an unreferenced element with the hidden host language attribute, and an unreferenced element that is unconditionally rendered]
+ expected: FAIL
+
+ [button labelled by element that is aria-hidden=true]
+ expected: FAIL
+
+ [button labelled by element with the hidden host language attribute]
+ expected: FAIL
+
+ [link labelled by elements with assorted visibility and a11y tree exposure]
+ expected: FAIL
+
+ [heading with name from content, containing element that is visibility:hidden with nested content that is visibility:visible]
+ expected: FAIL
diff --git a/tests/wpt/meta/accname/name/comp_host_language_label.html.ini b/tests/wpt/meta/accname/name/comp_host_language_label.html.ini
new file mode 100644
index 00000000000..9e3b36c4859
--- /dev/null
+++ b/tests/wpt/meta/accname/name/comp_host_language_label.html.ini
@@ -0,0 +1,264 @@
+[comp_host_language_label.html]
+ [html: input[type=button\]]
+ expected: FAIL
+
+ [html: input[type=image\]]
+ expected: FAIL
+
+ [html: input[type=reset\]]
+ expected: FAIL
+
+ [html: input[type=submit\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=checkbox\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=checkbox\][value='test'\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=checkbox\][checked\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=checkbox\][checked\][value='test'\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=color\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=color\][value='#999999'\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=date\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=date\][value='2025-01-01'\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=datetime-local\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=datetime-local\][value='2025-01-01T00:01'\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=email\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=email\][value='test@test.com'\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=month\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=month\][value='2025-01'\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=number\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=number\][value=2025\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=password\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=password\][value='test'\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=radio\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=radio\][value='test'\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=range\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=range\][min=0\][max=10\][value=5\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=search\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=search\][value='test'\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=tel\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=tel\][value='123-45-678'\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=text\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=text\][value='test'\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=time\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=time\][value='00:01'\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=url\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=url\][value='https://www.w3.org'\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=week\]]
+ expected: FAIL
+
+ [html: label[for\] input[type=week\][value='2025-W01'\]]
+ expected: FAIL
+
+ [html: label input[type=checkbox\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=checkbox\][value='test'\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=checkbox\][checked\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=checkbox\][value='test'\][checked\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=color\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=color\][value='#999999'\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=date\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=date\][value='2025-01-01'\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=datetime-local\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=datetime-local\][value='2025-01-01T00:01'\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=email\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=email\][value='test@test.com'\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=month\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=month\][value='2025-01'\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=number\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=number\][value=1\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=password\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=password\][value='test'\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=radio\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=radio\][value='test'\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=range\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=range\][value='5'\][min='0'\][max='10'\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=search\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=search\][value='test'\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=tel\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=tel\][value='123-45-678'\] encapsulation]
+ expected: FAIL
+
+ [html: label[for\] input[type=text\] encapsulation]
+ expected: FAIL
+
+ [html: label[for\] input[type=text\][value='test'\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=time\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=time\][value='00:01'\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=url\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=url\][value='https://www.w3.org'\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=week\] encapsulation]
+ expected: FAIL
+
+ [html: label input[type=week\][value='2025-W01'\] encapsulation]
+ expected: FAIL
+
+ [html: select for/id]
+ expected: FAIL
+
+ [html: select encapsulation]
+ expected: FAIL
+
+ [html: img[alt\] (non-empty)]
+ expected: FAIL
+
+ [html: picture > img[alt\] (non-empty)]
+ expected: FAIL
+
+ [img[alt\] with single space character as name]
+ expected: FAIL
+
+ [img[alt\] with single tab as name]
+ expected: FAIL
+
+ [img[alt\] with new line as name]
+ expected: FAIL
+
+ [img[alt\] with single space character and tab as name]
+ expected: FAIL
+
+ [img[alt\] with form feed as name]
+ expected: FAIL
+
+ [img[alt\] with interior single tab in the name]
+ expected: FAIL
+
+ [img[alt\] with interior new line in the name]
+ expected: FAIL
+
+ [img[alt\] with interior single space and tab in the name]
+ expected: FAIL
+
+ [img[alt\] with interior form feed in the name]
+ expected: FAIL
+
+ [html: fieldset > legend]
+ expected: FAIL
+
+ [html: table > caption]
+ expected: FAIL
+
+ [html: multiple label elements[for\]]
+ expected: FAIL
diff --git a/tests/wpt/meta/accname/name/comp_label.html.ini b/tests/wpt/meta/accname/name/comp_label.html.ini
new file mode 100644
index 00000000000..ef849e2f494
--- /dev/null
+++ b/tests/wpt/meta/accname/name/comp_label.html.ini
@@ -0,0 +1,393 @@
+[comp_label.html]
+ [label valid on div with alert role]
+ expected: FAIL
+
+ [label valid on div with alertdialog role]
+ expected: FAIL
+
+ [label valid on div with application role]
+ expected: FAIL
+
+ [label valid on div with article role]
+ expected: FAIL
+
+ [label valid on div with banner role]
+ expected: FAIL
+
+ [label valid on div with blockquote role]
+ expected: FAIL
+
+ [label valid on div with button role]
+ expected: FAIL
+
+ [label valid on div with cell role]
+ expected: FAIL
+
+ [label valid on div with checkbox role]
+ expected: FAIL
+
+ [label valid on div with columnheader role]
+ expected: FAIL
+
+ [label valid on div with combobox role]
+ expected: FAIL
+
+ [label valid on div with complementary role]
+ expected: FAIL
+
+ [label valid on div with contentinfo role]
+ expected: FAIL
+
+ [label valid on div with dialog role]
+ expected: FAIL
+
+ [label valid on div with directory role]
+ expected: FAIL
+
+ [label valid on div with document role]
+ expected: FAIL
+
+ [label valid on div with feed role]
+ expected: FAIL
+
+ [label valid on div with figure role]
+ expected: FAIL
+
+ [label valid on div with form role]
+ expected: FAIL
+
+ [label valid on div with grid role]
+ expected: FAIL
+
+ [label valid on div with gridcell role]
+ expected: FAIL
+
+ [label valid on div with group role]
+ expected: FAIL
+
+ [label valid on div with heading role]
+ expected: FAIL
+
+ [label valid on div with img role]
+ expected: FAIL
+
+ [label valid on div with link role]
+ expected: FAIL
+
+ [label valid on div with list role]
+ expected: FAIL
+
+ [label valid on div with listbox role]
+ expected: FAIL
+
+ [label valid on div with listitem role]
+ expected: FAIL
+
+ [label valid on div with log role]
+ expected: FAIL
+
+ [label valid on div with main role]
+ expected: FAIL
+
+ [label valid on div with marquee role]
+ expected: FAIL
+
+ [label valid on div with math role]
+ expected: FAIL
+
+ [label valid on div with menu role]
+ expected: FAIL
+
+ [label valid on div with menubar role]
+ expected: FAIL
+
+ [label valid on div with menuitem role]
+ expected: FAIL
+
+ [label valid on div with menuitemcheckbox role]
+ expected: FAIL
+
+ [label valid on div with menuitemradio role]
+ expected: FAIL
+
+ [label valid on div with meter role]
+ expected: FAIL
+
+ [label valid on div with navigation role]
+ expected: FAIL
+
+ [label valid on div with note role]
+ expected: FAIL
+
+ [label valid on div with option role]
+ expected: FAIL
+
+ [label valid on div with progressbar role]
+ expected: FAIL
+
+ [label valid on div with radio role]
+ expected: FAIL
+
+ [label valid on div with radiogroup role]
+ expected: FAIL
+
+ [label valid on div with region role]
+ expected: FAIL
+
+ [label valid on div with row role]
+ expected: FAIL
+
+ [label valid on div with rowgroup role]
+ expected: FAIL
+
+ [label valid on div with rowheader role]
+ expected: FAIL
+
+ [label valid on div with scrollbar role]
+ expected: FAIL
+
+ [label valid on div with search role]
+ expected: FAIL
+
+ [label valid on div with searchbox role]
+ expected: FAIL
+
+ [label valid on div with separator role]
+ expected: FAIL
+
+ [label valid on div with slider role]
+ expected: FAIL
+
+ [label valid on div with spinbutton role]
+ expected: FAIL
+
+ [label valid on div with status role]
+ expected: FAIL
+
+ [label valid on div with switch role]
+ expected: FAIL
+
+ [label valid on div with tab role]
+ expected: FAIL
+
+ [label valid on div with table role]
+ expected: FAIL
+
+ [label valid on div with tablist role]
+ expected: FAIL
+
+ [label valid on div with tabpanel role]
+ expected: FAIL
+
+ [label valid on div with textbox role]
+ expected: FAIL
+
+ [label valid on div with timer role]
+ expected: FAIL
+
+ [label valid on div with toolbar role]
+ expected: FAIL
+
+ [label valid on div with tooltip role]
+ expected: FAIL
+
+ [label valid on div with tree role]
+ expected: FAIL
+
+ [label valid on div with treegrid role]
+ expected: FAIL
+
+ [label valid on div with treeitem role]
+ expected: FAIL
+
+ [label valid on link element]
+ expected: FAIL
+
+ [label valid on article element]
+ expected: FAIL
+
+ [label valid on aside element]
+ expected: FAIL
+
+ [label valid on blockquote element]
+ expected: FAIL
+
+ [label valid on button element]
+ expected: FAIL
+
+ [label valid on dl element]
+ expected: FAIL
+
+ [label valid on footer element]
+ expected: FAIL
+
+ [label valid on fieldset element]
+ expected: FAIL
+
+ [label valid on figure element]
+ expected: FAIL
+
+ [label valid on form element]
+ expected: FAIL
+
+ [label valid on header element]
+ expected: FAIL
+
+ [label valid on h1 element]
+ expected: FAIL
+
+ [label valid on h2 element]
+ expected: FAIL
+
+ [label valid on h3 element]
+ expected: FAIL
+
+ [label valid on h4 element]
+ expected: FAIL
+
+ [label valid on h5 element]
+ expected: FAIL
+
+ [label valid on h6 element]
+ expected: FAIL
+
+ [label valid on hr element]
+ expected: FAIL
+
+ [label valid on img element]
+ expected: FAIL
+
+ [label valid on input type checkbox element]
+ expected: FAIL
+
+ [label valid on input type radio element]
+ expected: FAIL
+
+ [label valid on input type search element]
+ expected: FAIL
+
+ [label valid on input type text element]
+ expected: FAIL
+
+ [label valid on listitem element]
+ expected: FAIL
+
+ [label valid on main element]
+ expected: FAIL
+
+ [label valid on math element]
+ expected: FAIL
+
+ [label valid on meter element]
+ expected: FAIL
+
+ [label valid on nav element]
+ expected: FAIL
+
+ [label valid on list (ordered) element]
+ expected: FAIL
+
+ [label valid on section element]
+ expected: FAIL
+
+ [label valid on select element]
+ expected: FAIL
+
+ [label valid on option element]
+ expected: FAIL
+
+ [label valid on table element]
+ expected: FAIL
+
+ [label valid on thead element]
+ expected: FAIL
+
+ [label valid on th element with the scope of col]
+ expected: FAIL
+
+ [label valid on th (scope row) element]
+ expected: FAIL
+
+ [label valid on tbody element]
+ expected: FAIL
+
+ [label valid on tr element]
+ expected: FAIL
+
+ [label valid on td element]
+ expected: FAIL
+
+ [label valid on tfoot element]
+ expected: FAIL
+
+ [label valid on textarea element]
+ expected: FAIL
+
+ [label valid on list (unordered) element]
+ expected: FAIL
+
+ [button's hidden referenced name (display:none) supercedes aria-label]
+ expected: FAIL
+
+ [button's hidden referenced name (visibility:hidden) supercedes aria-label]
+ expected: FAIL
+
+ [button's hidden referenced name (visibility:hidden) with hidden aria-labelledby traversal falls back to aria-label]
+ expected: FAIL
+
+ [link's aria-labelledby name supercedes aria-label]
+ expected: FAIL
+
+ [img's aria-label supercedes alt attribute]
+ expected: FAIL
+
+ [svg's aria-label supercedes title tag]
+ expected: FAIL
+
+ [input with label for association is superceded by aria-label]
+ expected: FAIL
+
+ [button name from contents is superceded by aria-label]
+ expected: FAIL
+
+ [h1 text is superceded by aria-label]
+ expected: FAIL
+
+ [button with title is superceded by aria-label]
+ expected: FAIL
+
+ [textarea's name with trailing whitespace in aria-label is valid]
+ expected: FAIL
+
+ [link's name with leading whitespace in aria-label is valid]
+ expected: FAIL
+
+ [button with blank braille pattern has name as such (not treated as whitespace per Unicode standard)]
+ expected: FAIL
+
+ [div with role alert and carriage return in aria-label is valid]
+ expected: FAIL
+
+ [link's name with tab in aria-label is valid]
+ expected: FAIL
+
+ [button with leading form feed control character in aria-label is valid]
+ expected: FAIL
+
+ [nav with trailing nbsp char aria-label is valid (nbsp is preserved in name)]
+ expected: FAIL
+
+ [button with leading nbsp char in aria-label is valid (and uses aria-label)]
+ expected: FAIL
+
+ [button with empty aria-label does not use aria-label as name]
+ expected: FAIL
+
+ [textarea with tab character as aria-label does not use aria-label as name]
+ expected: FAIL
+
+ [button with carriage return as aria-label does not use aria-label as name]
+ expected: FAIL
+
+ [button with space characters as aria-label does not use aria-label as name]
+ expected: FAIL
diff --git a/tests/wpt/meta/accname/name/comp_labeledby_non_standard.html.ini b/tests/wpt/meta/accname/name/comp_labeledby_non_standard.html.ini
new file mode 100644
index 00000000000..e56ff726fe9
--- /dev/null
+++ b/tests/wpt/meta/accname/name/comp_labeledby_non_standard.html.ini
@@ -0,0 +1,9 @@
+[comp_labeledby_non_standard.html]
+ [div group with aria-labeledby]
+ expected: FAIL
+
+ [div group with aria-label and aria-labeledby]
+ expected: FAIL
+
+ [div group with aria-labeledby and aria-labelledby]
+ expected: FAIL
diff --git a/tests/wpt/meta/accname/name/comp_labelledby.html.ini b/tests/wpt/meta/accname/name/comp_labelledby.html.ini
new file mode 100644
index 00000000000..cfcc4156f71
--- /dev/null
+++ b/tests/wpt/meta/accname/name/comp_labelledby.html.ini
@@ -0,0 +1,30 @@
+[comp_labelledby.html]
+ [div group explicitly labelledby heading]
+ expected: FAIL
+
+ [div group explicitly labelledby self and heading]
+ expected: FAIL
+
+ [nav with verified spaces appended between each of IDREFS]
+ expected: FAIL
+
+ [link labelled by aria-labelledby supercedes aria-labeledby (non-standard spelling)]
+ expected: FAIL
+
+ [button labelled by aria-labelledby supercedes aria-labeledby (non-standard spelling)]
+ expected: FAIL
+
+ [div labelled by aria-labelledby supercedes aria-labeledby (non-standard spelling)]
+ expected: FAIL
+
+ [link labelled by [aria-labeledby\][aria-labelledby\]]
+ expected: FAIL
+
+ [button labelled by [aria-labeledby\][aria-labelledby\]]
+ expected: FAIL
+
+ [div labelled by [aria-labeledby\][aria-labelledby\]]
+ expected: FAIL
+
+ [link name from content for each child including nested image (referenced elsewhere via labeledby)]
+ expected: FAIL
diff --git a/tests/wpt/meta/accname/name/comp_labelledby_hidden_nodes.html.ini b/tests/wpt/meta/accname/name/comp_labelledby_hidden_nodes.html.ini
new file mode 100644
index 00000000000..07fbb79990e
--- /dev/null
+++ b/tests/wpt/meta/accname/name/comp_labelledby_hidden_nodes.html.ini
@@ -0,0 +1,81 @@
+[comp_labelledby_hidden_nodes.html]
+ [button with aria-labelledby using display:none hidden span (with nested span)]
+ expected: FAIL
+
+ [button with aria-labelledby using display:none hidden span (with nested spans, depth 2)]
+ expected: FAIL
+
+ [button with aria-labelledby using span without display:none (with nested display:none spans, depth 2)]
+ expected: FAIL
+
+ [button with aria-labelledby using display:none hidden span (with nested sibling spans)]
+ expected: FAIL
+
+ [button with aria-labelledby using span without display:none (with nested display:none sibling spans)]
+ expected: FAIL
+
+ [button with aria-labelledby using span with display:none (with nested display:inline sibling spans)]
+ expected: FAIL
+
+ [button with aria-labelledby using visibility:hidden span (with nested span)]
+ expected: FAIL
+
+ [button with aria-labelledby using visibility:hidden span (with nested spans, depth 2)]
+ expected: FAIL
+
+ [button with aria-labelledby using span without visibility:hidden (with nested visibility:hidden spans, depth 2)]
+ expected: FAIL
+
+ [button with aria-labelledby using visibility:hidden hidden span (with nested sibling spans)]
+ expected: FAIL
+
+ [button with aria-labelledby using span without visibility:hidden (with nested visibility:hidden sibling spans)]
+ expected: FAIL
+
+ [button with aria-labelledby using span with visibility:hidden (with nested visibility:visible sibling spans)]
+ expected: FAIL
+
+ [button with aria-labelledby using visibility:collapse span (with nested span)]
+ expected: FAIL
+
+ [button with aria-labelledby using visibility:collapse span (with nested spans, depth 2)]
+ expected: FAIL
+
+ [button with aria-labelledby using span without visibility:collapse (with nested visibility:visible spans, depth 2)]
+ expected: FAIL
+
+ [button with aria-labelledby using visibility:collapse span (with nested sibling spans)]
+ expected: FAIL
+
+ [button with aria-labelledby using span without visibility:collapse (with nested visibility:collapse sibling spans)]
+ expected: FAIL
+
+ [button with aria-labelledby using span with visibility:collapse (with nested visible sibling spans)]
+ expected: FAIL
+
+ [button with aria-labelledby using aria-hidden span (with nested span)]
+ expected: FAIL
+
+ [button with aria-labelledby using aria-hidden span (with nested spans, depth 2)]
+ expected: FAIL
+
+ [button with aria-labelledby using span without aria-hidden (with nested aria-hidden spans, depth 2)]
+ expected: FAIL
+
+ [button with aria-labelledby using aria-hidden hidden span (with nested sibling spans)]
+ expected: FAIL
+
+ [button with aria-labelledby using HTML5 hidden span (with nested span)]
+ expected: FAIL
+
+ [button with aria-labelledby using HTML5 hidden span (with nested spans, depth 2)]
+ expected: FAIL
+
+ [button with aria-labelledby using span without HTML5 hidden (with nested HTML5 hidden spans, depth 2)]
+ expected: FAIL
+
+ [button with aria-labelledby using HTML5 hidden span (with nested hidden sibling spans)]
+ expected: FAIL
+
+ [button with aria-labelledby using span without HTML5 hidden (with nested hidden sibling spans)]
+ expected: FAIL
diff --git a/tests/wpt/meta/accname/name/comp_name_from_content.html.ini b/tests/wpt/meta/accname/name/comp_name_from_content.html.ini
new file mode 100644
index 00000000000..dad7a7578d7
--- /dev/null
+++ b/tests/wpt/meta/accname/name/comp_name_from_content.html.ini
@@ -0,0 +1,228 @@
+[comp_name_from_content.html]
+ [aria button name from content, inline]
+ expected: FAIL
+
+ [aria heading name from content, inline]
+ expected: FAIL
+
+ [aria link name from content, inline]
+ expected: FAIL
+
+ [aria button name from content, block]
+ expected: FAIL
+
+ [aria heading name from content, block]
+ expected: FAIL
+
+ [aria link name from content, block]
+ expected: FAIL
+
+ [button name from content]
+ expected: FAIL
+
+ [heading name from content]
+ expected: FAIL
+
+ [link name from content]
+ expected: FAIL
+
+ [button with alt counter on ::before]
+ expected: FAIL
+
+ [heading with alt counter on ::before]
+ expected: FAIL
+
+ [link with alt counter on ::before]
+ expected: FAIL
+
+ [button name from content with ::before]
+ expected: FAIL
+
+ [heading name from content with ::before]
+ expected: FAIL
+
+ [link name from content with ::before]
+ expected: FAIL
+
+ [button name from content with ::after]
+ expected: FAIL
+
+ [heading name from content with ::after]
+ expected: FAIL
+
+ [link name from content with ::after]
+ expected: FAIL
+
+ [button name from content with ::before and ::after]
+ expected: FAIL
+
+ [heading name from content with ::before and ::after]
+ expected: FAIL
+
+ [link name from content with ::before and ::after]
+ expected: FAIL
+
+ [button name from content no space joiners ::before and ::after]
+ expected: FAIL
+
+ [heading name from content no space joiners ::before and ::after]
+ expected: FAIL
+
+ [link name from content no space joiners ::before and ::after]
+ expected: FAIL
+
+ [button name from content with ::before and ::after in rtl]
+ expected: FAIL
+
+ [heading name from content with ::before and ::after in rtl]
+ expected: FAIL
+
+ [link name from content with ::before and ::after in rtl]
+ expected: FAIL
+
+ [button name from fallback content with ::before and ::after]
+ expected: FAIL
+
+ [heading name from fallback content with ::before and ::after]
+ expected: FAIL
+
+ [link name from fallback content with ::before and ::after]
+ expected: FAIL
+
+ [button name from fallback content mixing attr() and strings with ::before and ::after]
+ expected: FAIL
+
+ [heading name from fallback content mixing attr() and strings with ::before and ::after]
+ expected: FAIL
+
+ [link name from fallback content mixing attr() and strings with ::before and ::after]
+ expected: FAIL
+
+ [primitive radio input with ::before containing empty alternative text]
+ expected: FAIL
+
+ [primitive radio input with ::before containing empty alternative text for an image]
+ expected: FAIL
+
+ [button name from content for each child]
+ expected: FAIL
+
+ [heading name from content for each child]
+ expected: FAIL
+
+ [link name from content for each child]
+ expected: FAIL
+
+ [button name from content for each child including image]
+ expected: FAIL
+
+ [heading name from content for each child including image]
+ expected: FAIL
+
+ [link name from content for each child including image]
+ expected: FAIL
+
+ [button name from content for each child including nested image]
+ expected: FAIL
+
+ [heading name from content for each child including nested image]
+ expected: FAIL
+
+ [link name from content for each child including nested image]
+ expected: FAIL
+
+ [heading name from content for each child including nested button with nested image]
+ expected: FAIL
+
+ [heading name from content for each child including nested link with nested image]
+ expected: FAIL
+
+ [heading name from content for each child including nested link using aria-label with nested image]
+ expected: FAIL
+
+ [heading name from content for each child including nested link using aria-labelledby with nested image]
+ expected: FAIL
+
+ [heading name from content for each child including two nested links using aria-labelledby with nested image]
+ expected: FAIL
+
+ [link name from content for each child including nested image (referenced elsewhere via labelledby)]
+ expected: FAIL
+
+ [button name from content for each child (no space, inline)]
+ expected: FAIL
+
+ [heading name from content for each child (no space, inline)]
+ expected: FAIL
+
+ [link name from content for each child (no space, inline)]
+ expected: FAIL
+
+ [button name from content for each child (no space, display:block)]
+ expected: FAIL
+
+ [heading name from content for each child (no space, display:block)]
+ expected: FAIL
+
+ [link name from content for each child (no space, display:block)]
+ expected: FAIL
+
+ [button name from content for each child (no space, display:inline-block)]
+ expected: FAIL
+
+ [heading name from content for each child (no space, display:inline-block)]
+ expected: FAIL
+
+ [link name from content for each child (no space, display:inline-block)]
+ expected: FAIL
+
+ [heading name from content with text-transform:none]
+ expected: FAIL
+
+ [heading name from content with text-transform:uppercase]
+ expected: FAIL
+
+ [heading name from content with text-transform:capitalize]
+ expected: FAIL
+
+ [heading name from content with text-transform:lowercase]
+ expected: FAIL
+
+ [heading name from content with text-transform:full-size-kana]
+ expected: FAIL
+
+ [implicit button name from content containing a dfn element]
+ expected: FAIL
+
+ [implicit heading name from content containing a dfn element]
+ expected: FAIL
+
+ [implicit link name from content containing a dfn element]
+ expected: FAIL
+
+ [implicit button name from content containing an element with explicit term role]
+ expected: FAIL
+
+ [implicit heading name from content containing an element with explicit term role]
+ expected: FAIL
+
+ [implicit link name from content containing an element explicit with term role]
+ expected: FAIL
+
+ [explicit button name from content containing a dfn element]
+ expected: FAIL
+
+ [explicit heading name from content containing a dfn element]
+ expected: FAIL
+
+ [explicit link name from content containing a dfn element]
+ expected: FAIL
+
+ [explicit button name from content containing an element explicit with term role]
+ expected: FAIL
+
+ [explicit heading name from content containing an element explicit with term role]
+ expected: FAIL
+
+ [explicit link name from content containing an element explicit with term role]
+ expected: FAIL
diff --git a/tests/wpt/meta/accname/name/comp_name_from_content_alt_counter_invalidation.html.ini b/tests/wpt/meta/accname/name/comp_name_from_content_alt_counter_invalidation.html.ini
new file mode 100644
index 00000000000..bdae71805c7
--- /dev/null
+++ b/tests/wpt/meta/accname/name/comp_name_from_content_alt_counter_invalidation.html.ini
@@ -0,0 +1,9 @@
+[comp_name_from_content_alt_counter_invalidation.html]
+ [button with alt counter on ::before]
+ expected: FAIL
+
+ [heading with alt counter on ::before]
+ expected: FAIL
+
+ [link with alt counter on ::before]
+ expected: FAIL
diff --git a/tests/wpt/meta/accname/name/comp_name_from_heading.tentative.html.ini b/tests/wpt/meta/accname/name/comp_name_from_heading.tentative.html.ini
new file mode 100644
index 00000000000..d3bdeae289b
--- /dev/null
+++ b/tests/wpt/meta/accname/name/comp_name_from_heading.tentative.html.ini
@@ -0,0 +1,18 @@
+[comp_name_from_heading.tentative.html]
+ [alertdialog role, name from heading]
+ expected: FAIL
+
+ [article role, name from heading]
+ expected: FAIL
+
+ [dialog role, name from heading]
+ expected: FAIL
+
+ [group role, verify name is NOT from heading]
+ expected: FAIL
+
+ [native dialog element, name from heading]
+ expected: FAIL
+
+ [article role, name from DFS heading]
+ expected: FAIL
diff --git a/tests/wpt/meta/accname/name/comp_name_from_pseudo_content_marker.tentative.html.ini b/tests/wpt/meta/accname/name/comp_name_from_pseudo_content_marker.tentative.html.ini
new file mode 100644
index 00000000000..e9aae6e87d7
--- /dev/null
+++ b/tests/wpt/meta/accname/name/comp_name_from_pseudo_content_marker.tentative.html.ini
@@ -0,0 +1,30 @@
+[comp_name_from_pseudo_content_marker.tentative.html]
+ [name from ul > listitem with default ::marker]
+ expected: FAIL
+
+ [name from ul > listitem with custom ASCII ::marker]
+ expected: FAIL
+
+ [name from ul > listitem with custom emoji ::marker]
+ expected: FAIL
+
+ [name from ul > listitem with custom ::marker with explicit alt text]
+ expected: FAIL
+
+ [name from ul > listitem with custom ::marker with explicit empty alt text]
+ expected: FAIL
+
+ [name from ol > listitem with default ::marker]
+ expected: FAIL
+
+ [name from ol > listitem with custom ASCII ::marker]
+ expected: FAIL
+
+ [name from ol > listitem with custom emoji ::marker]
+ expected: FAIL
+
+ [name from ol > listitem with custom ::marker with explicit alt text]
+ expected: FAIL
+
+ [name from ol > listitem with custom ::marker with empty alt text]
+ expected: FAIL
diff --git a/tests/wpt/meta/accname/name/comp_text_node.html.ini b/tests/wpt/meta/accname/name/comp_text_node.html.ini
new file mode 100644
index 00000000000..48f2e958352
--- /dev/null
+++ b/tests/wpt/meta/accname/name/comp_text_node.html.ini
@@ -0,0 +1,150 @@
+[comp_text_node.html]
+ [span[role=button\] with text/element/text nodes, no space]
+ expected: FAIL
+
+ [div[role=heading\] with text/element/text nodes, no space]
+ expected: FAIL
+
+ [button with text/element/text nodes, no space]
+ expected: FAIL
+
+ [heading with text/element/text nodes, no space]
+ expected: FAIL
+
+ [link with text/element/text nodes, no space]
+ expected: FAIL
+
+ [span[role=button\] with text/comment/text nodes, no space]
+ expected: FAIL
+
+ [div[role=heading\] with text/comment/text nodes, no space]
+ expected: FAIL
+
+ [button with text/comment/text nodes, no space]
+ expected: FAIL
+
+ [heading with text/comment/text nodes, no space]
+ expected: FAIL
+
+ [link with text/comment/text nodes, no space]
+ expected: FAIL
+
+ [span[role=button\] with text/comment/text nodes, with space]
+ expected: FAIL
+
+ [div[role=heading\] with text/comment/text nodes, with space]
+ expected: FAIL
+
+ [button with text/comment/text nodes, with space]
+ expected: FAIL
+
+ [heading with text/comment/text nodes, with space]
+ expected: FAIL
+
+ [link with text/comment/text nodes, with space]
+ expected: FAIL
+
+ [span[role=button\] with text node, with tab char]
+ expected: FAIL
+
+ [div[role=heading\] with text node, with tab char]
+ expected: FAIL
+
+ [button with text node, with tab char]
+ expected: FAIL
+
+ [heading with text node, with tab char]
+ expected: FAIL
+
+ [link with text node, with tab char]
+ expected: FAIL
+
+ [span[role=button\] with text node, with non-breaking space]
+ expected: FAIL
+
+ [div[role=heading\] with text node, with non-breaking space]
+ expected: FAIL
+
+ [button with text node, with non-breaking space]
+ expected: FAIL
+
+ [heading with text node, with non-breaking space]
+ expected: FAIL
+
+ [link with text node, with non-breaking space]
+ expected: FAIL
+
+ [span[role=button\] with text node, with extra non-breaking space]
+ expected: FAIL
+
+ [div[role=heading\] with text node, with extra non-breaking space]
+ expected: FAIL
+
+ [button with text node, with extra non-breaking space]
+ expected: FAIL
+
+ [heading with text node, with extra non-breaking space]
+ expected: FAIL
+
+ [link with text node, with extra non-breaking space]
+ expected: FAIL
+
+ [span[role=button\] with text node, with leading/trailing non-breaking space]
+ expected: FAIL
+
+ [div[role=heading\] with text node, with leading/trailing non-breaking space]
+ expected: FAIL
+
+ [button with text node, with leading/trailing non-breaking space]
+ expected: FAIL
+
+ [heading with text node, with leading/trailing non-breaking space]
+ expected: FAIL
+
+ [link with text node, with leading/trailing non-breaking space]
+ expected: FAIL
+
+ [span[role=button\] with text node, with mixed space and non-breaking space]
+ expected: FAIL
+
+ [div[role=heading\] with text node, with mixed space and non-breaking space]
+ expected: FAIL
+
+ [button with text node, with mixed space and non-breaking space]
+ expected: FAIL
+
+ [heading with text node, with mixed space and non-breaking space]
+ expected: FAIL
+
+ [link with text node, with mixed space and non-breaking space]
+ expected: FAIL
+
+ [span[role=button\] with text node, with deeply nested space]
+ expected: FAIL
+
+ [div[role=heading\] with text node, with deeply nested space]
+ expected: FAIL
+
+ [button with text node, with deeply nested space]
+ expected: FAIL
+
+ [heading with text node, with deeply nested space]
+ expected: FAIL
+
+ [link with text node, with deeply nested space]
+ expected: FAIL
+
+ [span[role=button\] with text node, with single line break]
+ expected: FAIL
+
+ [div[role=heading\] with text node, with single line break]
+ expected: FAIL
+
+ [button with text node, with single line break]
+ expected: FAIL
+
+ [heading with text node, with single line break]
+ expected: FAIL
+
+ [link with text node, with single line break]
+ expected: FAIL
diff --git a/tests/wpt/meta/accname/name/comp_tooltip.html.ini b/tests/wpt/meta/accname/name/comp_tooltip.html.ini
new file mode 100644
index 00000000000..3fda11f0d42
--- /dev/null
+++ b/tests/wpt/meta/accname/name/comp_tooltip.html.ini
@@ -0,0 +1,66 @@
+[comp_tooltip.html]
+ [link with img with tooltip label]
+ expected: FAIL
+
+ [link with text with tooltip label and no contents]
+ expected: FAIL
+
+ [link with text with tooltip label and contents]
+ expected: FAIL
+
+ [div with text with tooltip label]
+ expected: FAIL
+
+ [img with tooltip label without alt]
+ expected: FAIL
+
+ [img with tooltip label with alt]
+ expected: FAIL
+
+ [img with tooltip label without title]
+ expected: FAIL
+
+ [select with tooltip label]
+ expected: FAIL
+
+ [button with tooltip label]
+ expected: FAIL
+
+ [checkbox input with tooltip label]
+ expected: FAIL
+
+ [radio input with tooltip label]
+ expected: FAIL
+
+ [text input with placeholder and tooltip label]
+ expected: FAIL
+
+ [password input with placeholder and tooltip label]
+ expected: FAIL
+
+ [number input with placeholder and tooltip label]
+ expected: FAIL
+
+ [search input with placeholder and tooltip label]
+ expected: FAIL
+
+ [tel input with placeholder and tooltip label]
+ expected: FAIL
+
+ [email input with placeholder and tooltip label]
+ expected: FAIL
+
+ [url input with placeholder and tooltip label]
+ expected: FAIL
+
+ [textarea with placeholder and tooltip label]
+ expected: FAIL
+
+ [abbr with tooltip label]
+ expected: FAIL
+
+ [summary with tooltip label and contents]
+ expected: FAIL
+
+ [iframe with tooltip label]
+ expected: FAIL
diff --git a/tests/wpt/meta/accname/name/comp_tooltip.tentative.html.ini b/tests/wpt/meta/accname/name/comp_tooltip.tentative.html.ini
new file mode 100644
index 00000000000..9847fda1b4b
--- /dev/null
+++ b/tests/wpt/meta/accname/name/comp_tooltip.tentative.html.ini
@@ -0,0 +1,3 @@
+[comp_tooltip.tentative.html]
+ [img with tooltip label with empty alt]
+ expected: FAIL
diff --git a/tests/wpt/meta/accname/name/shadowdom/basic.html.ini b/tests/wpt/meta/accname/name/shadowdom/basic.html.ini
new file mode 100644
index 00000000000..b9e5c699e3d
--- /dev/null
+++ b/tests/wpt/meta/accname/name/shadowdom/basic.html.ini
@@ -0,0 +1,6 @@
+[basic.html]
+ [aria-labelledby reference to element with text content inside shadow DOM]
+ expected: FAIL
+
+ [aria-labelledby reference to element with aria-label inside shadow DOM]
+ expected: FAIL
diff --git a/tests/wpt/meta/accname/name/shadowdom/slot.html.ini b/tests/wpt/meta/accname/name/shadowdom/slot.html.ini
new file mode 100644
index 00000000000..ef155c844e8
--- /dev/null
+++ b/tests/wpt/meta/accname/name/shadowdom/slot.html.ini
@@ -0,0 +1,12 @@
+[slot.html]
+ [aria-labelledby reference to element with slotted text content]
+ expected: FAIL
+
+ [aria-labelledby reference to element with default slotted text content]
+ expected: FAIL
+
+ [aria-labelledby reference to element with slotted text content and aria-label on slot]
+ expected: FAIL
+
+ [aria-labelledby reference to element with default slotted text content and aria-label on slot]
+ expected: FAIL
diff --git a/tests/wpt/meta/ai/language_detection/detector-iframe.https.html.ini b/tests/wpt/meta/ai/language_detection/detector-iframe.https.html.ini
new file mode 100644
index 00000000000..c2f49549bca
--- /dev/null
+++ b/tests/wpt/meta/ai/language_detection/detector-iframe.https.html.ini
@@ -0,0 +1,19 @@
+[detector-iframe.https.html]
+ expected: TIMEOUT
+ [Throw a 'NotAllowedError' when creating Language Detector within cross-origin iframe]
+ expected: FAIL
+
+ [Language Detector can be created within cross-origin iframe with permission policy]
+ expected: TIMEOUT
+
+ [Language Detector can be used within same-origin iframe]
+ expected: NOTRUN
+
+ [Language Detector is unavailable within cross-origin iframe]
+ expected: NOTRUN
+
+ [Language Detector is available within cross-origin iframe with permission policy]
+ expected: NOTRUN
+
+ [LanguageDetector is available within same-origin iframe]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/ai/rewriter/rewriter-iframe.tentative.https.html.ini b/tests/wpt/meta/ai/rewriter/rewriter-iframe.tentative.https.html.ini
new file mode 100644
index 00000000000..526e533dd15
--- /dev/null
+++ b/tests/wpt/meta/ai/rewriter/rewriter-iframe.tentative.https.html.ini
@@ -0,0 +1,18 @@
+[rewriter-iframe.tentative.https.html]
+ [Throw a 'NotAllowedError' when creating Rewriter within cross-origin iframe]
+ expected: FAIL
+
+ [Rewriter can be created within cross-origin iframe with permission policy]
+ expected: FAIL
+
+ [Rewriter can be used within same-origin iframe]
+ expected: FAIL
+
+ [Rewriter is unavailable within cross-origin iframe]
+ expected: FAIL
+
+ [Rewriter is available within cross-origin iframe with permission policy]
+ expected: FAIL
+
+ [Rewriter is available within same-origin iframe]
+ expected: FAIL
diff --git a/tests/wpt/meta/ai/summarizer/summarizer-iframe.tentative.https.html.ini b/tests/wpt/meta/ai/summarizer/summarizer-iframe.tentative.https.html.ini
new file mode 100644
index 00000000000..18a97525308
--- /dev/null
+++ b/tests/wpt/meta/ai/summarizer/summarizer-iframe.tentative.https.html.ini
@@ -0,0 +1,18 @@
+[summarizer-iframe.tentative.https.html]
+ [Throw a 'NotAllowedError' when creating Summarizer within cross-origin iframe]
+ expected: FAIL
+
+ [Summarizer can be created within cross-origin iframe with permission policy]
+ expected: FAIL
+
+ [Summarizer can be used within same-origin iframe]
+ expected: FAIL
+
+ [Summarizer is unavailable within cross-origin iframe]
+ expected: FAIL
+
+ [Summarizer is available within cross-origin iframe with permission policy]
+ expected: FAIL
+
+ [Summarizer is available within same-origin iframe]
+ expected: FAIL
diff --git a/tests/wpt/meta/ai/writer/writer-iframe.tentative.https.html.ini b/tests/wpt/meta/ai/writer/writer-iframe.tentative.https.html.ini
new file mode 100644
index 00000000000..86729407325
--- /dev/null
+++ b/tests/wpt/meta/ai/writer/writer-iframe.tentative.https.html.ini
@@ -0,0 +1,18 @@
+[writer-iframe.tentative.https.html]
+ [Throw a 'NotAllowedError' when creating Writer within cross-origin iframe]
+ expected: FAIL
+
+ [Writer can be created within cross-origin iframe with permission policy]
+ expected: FAIL
+
+ [Writer can be used within same-origin iframe]
+ expected: FAIL
+
+ [Writer is unavailable within cross-origin iframe]
+ expected: FAIL
+
+ [Writer is available within cross-origin iframe with permission policy]
+ expected: FAIL
+
+ [Writer is available within same-origin iframe]
+ expected: FAIL
diff --git a/tests/wpt/meta/ambient-light/AmbientLightSensor-iframe-access.https.html.ini b/tests/wpt/meta/ambient-light/AmbientLightSensor-iframe-access.https.html.ini
new file mode 100644
index 00000000000..13823caf52c
--- /dev/null
+++ b/tests/wpt/meta/ambient-light/AmbientLightSensor-iframe-access.https.html.ini
@@ -0,0 +1,12 @@
+[AmbientLightSensor-iframe-access.https.html]
+ [AmbientLightSensor: unfocused sensors in cross-origin frames are not updated]
+ expected: FAIL
+
+ [AmbientLightSensor: sensors in same-origin frames are updated if one of the frames is focused]
+ expected: FAIL
+
+ [AmbientLightSensor: losing a document's frame with an active sensor does not crash]
+ expected: FAIL
+
+ [AmbientLightSensor: calling start() in a non-fully active document does not crash]
+ expected: FAIL
diff --git a/tests/wpt/meta/ambient-light/AmbientLightSensor.https.html.ini b/tests/wpt/meta/ambient-light/AmbientLightSensor.https.html.ini
new file mode 100644
index 00000000000..bf47ed748d4
--- /dev/null
+++ b/tests/wpt/meta/ambient-light/AmbientLightSensor.https.html.ini
@@ -0,0 +1,54 @@
+[AmbientLightSensor.https.html]
+ [AmbientLightSensor: Test that onerror is sent when permissions are not granted.]
+ expected: FAIL
+
+ [AmbientLightSensor: Test that onerror is send when start() call has failed.]
+ expected: FAIL
+
+ [AmbientLightSensor: Test that frequency is capped to allowed maximum.]
+ expected: FAIL
+
+ [AmbientLightSensor: Test that frequency is capped to the maximum supported frequency.]
+ expected: FAIL
+
+ [AmbientLightSensor: Test that frequency is limited to the minimum supported frequency.]
+ expected: FAIL
+
+ [AmbientLightSensor: Test that sensor cannot be constructed within iframe disallowed to use feature policy.]
+ expected: FAIL
+
+ [AmbientLightSensor: Test that sensor can be constructed within an iframe allowed to use feature policy.]
+ expected: FAIL
+
+ [AmbientLightSensor: Test that 'onreading' is called and sensor reading is valid.]
+ expected: FAIL
+
+ [AmbientLightSensor: sensor reading is correct.]
+ expected: FAIL
+
+ [AmbientLightSensor: Test that readings are all mapped to expectedReadings correctly.]
+ expected: FAIL
+
+ [AmbientLightSensor: sensor timestamp is updated when time passes.]
+ expected: FAIL
+
+ [AmbientLightSensor: Test that sensor can be successfully created and its states are correct.]
+ expected: FAIL
+
+ [AmbientLightSensor: no exception is thrown when calling start() on already started sensor.]
+ expected: FAIL
+
+ [AmbientLightSensor: no exception is thrown when calling stop() on already stopped sensor.]
+ expected: FAIL
+
+ [AmbientLightSensor: Test that fresh reading is fetched on start().]
+ expected: FAIL
+
+ [AmbientLightSensor: Readings are not delivered when the page has no visibility]
+ expected: FAIL
+
+ [AmbientLightSensor: frequency hint works.]
+ expected: FAIL
+
+ [AmbientLightSensor: Readings delivered by shared platform sensor are immediately accessible to all sensors.]
+ expected: FAIL
diff --git a/tests/wpt/meta/attribution-reporting/referrer-policy.sub.https.html.ini b/tests/wpt/meta/attribution-reporting/referrer-policy.sub.https.html.ini
new file mode 100644
index 00000000000..bcdf0f063d5
--- /dev/null
+++ b/tests/wpt/meta/attribution-reporting/referrer-policy.sub.https.html.ini
@@ -0,0 +1,38 @@
+[referrer-policy.sub.https.html?method=open&noreferrer]
+ [attributionsrc referrer policy is propagated.]
+ expected: FAIL
+
+
+[referrer-policy.sub.https.html?method=script&noreferrer]
+ [attributionsrc referrer policy is propagated.]
+ expected: FAIL
+
+
+[referrer-policy.sub.https.html?method=a]
+ [attributionsrc referrer policy is propagated.]
+ expected: FAIL
+
+
+[referrer-policy.sub.https.html?method=a&noreferrer]
+ [attributionsrc referrer policy is propagated.]
+ expected: FAIL
+
+
+[referrer-policy.sub.https.html?method=open]
+ [attributionsrc referrer policy is propagated.]
+ expected: FAIL
+
+
+[referrer-policy.sub.https.html?method=img&noreferrer]
+ [attributionsrc referrer policy is propagated.]
+ expected: FAIL
+
+
+[referrer-policy.sub.https.html?method=img]
+ [attributionsrc referrer policy is propagated.]
+ expected: FAIL
+
+
+[referrer-policy.sub.https.html?method=script]
+ [attributionsrc referrer policy is propagated.]
+ expected: FAIL
diff --git a/tests/wpt/meta/attribution-reporting/request-format.sub.https.html.ini b/tests/wpt/meta/attribution-reporting/request-format.sub.https.html.ini
new file mode 100644
index 00000000000..9c93d63cc07
--- /dev/null
+++ b/tests/wpt/meta/attribution-reporting/request-format.sub.https.html.ini
@@ -0,0 +1,47 @@
+[request-format.sub.https.html?method=area&expected-eligible=navigation-source]
+ expected: ERROR
+ [attributionsrc request has the proper format.]
+ expected: FAIL
+
+
+[request-format.sub.https.html?method=img&eligible&expected-eligible=event-source, trigger]
+ [attributionsrc request has the proper format.]
+ expected: FAIL
+
+
+[request-format.sub.https.html?method=xhr&eligible={"eventSourceEligible":true,"triggerEligible":false}&expected-eligible=event-source]
+ expected: ERROR
+
+[request-format.sub.https.html?method=script&eligible&expected-eligible=event-source, trigger]
+ [attributionsrc request has the proper format.]
+ expected: FAIL
+
+
+[request-format.sub.https.html?method=img&expected-eligible=event-source, trigger]
+ [attributionsrc request has the proper format.]
+ expected: FAIL
+
+
+[request-format.sub.https.html?method=fetch&eligible={"eventSourceEligible":true,"triggerEligible":false}&expected-eligible=event-source]
+ expected: ERROR
+
+[request-format.sub.https.html?method=fetch]
+ [attributionsrc request has the proper format.]
+ expected: FAIL
+
+
+[request-format.sub.https.html?method=open&expected-eligible=navigation-source]
+ [attributionsrc request has the proper format.]
+ expected: FAIL
+
+
+[request-format.sub.https.html?method=a&expected-eligible=navigation-source]
+ [attributionsrc request has the proper format.]
+ expected: FAIL
+
+
+[request-format.sub.https.html?method=xhr]
+
+[request-format.sub.https.html?method=script&expected-eligible=event-source, trigger]
+ [attributionsrc request has the proper format.]
+ expected: FAIL
diff --git a/tests/wpt/meta/audio-output/enumerateDevices-with-selectAudioOutput.https.html.ini b/tests/wpt/meta/audio-output/enumerateDevices-with-selectAudioOutput.https.html.ini
new file mode 100644
index 00000000000..504e14b7ac6
--- /dev/null
+++ b/tests/wpt/meta/audio-output/enumerateDevices-with-selectAudioOutput.https.html.ini
@@ -0,0 +1,9 @@
+[enumerateDevices-with-selectAudioOutput.https.html]
+ [enumerateDevices() returns no audiooutput devices before permission grant]
+ expected: FAIL
+
+ [selectAudioOutput()]
+ expected: FAIL
+
+ [enumerateDevices() after selectAudioOutput()]
+ expected: FAIL
diff --git a/tests/wpt/meta/audio-output/removeTrack-after-setSinkId.https.html.ini b/tests/wpt/meta/audio-output/removeTrack-after-setSinkId.https.html.ini
new file mode 100644
index 00000000000..2d7fd67f815
--- /dev/null
+++ b/tests/wpt/meta/audio-output/removeTrack-after-setSinkId.https.html.ini
@@ -0,0 +1,3 @@
+[removeTrack-after-setSinkId.https.html]
+ [Test source track removal after setSinkId does not crash]
+ expected: FAIL
diff --git a/tests/wpt/meta/audio-output/selectAudioOutput-permissions-policy.https.sub.html.ini b/tests/wpt/meta/audio-output/selectAudioOutput-permissions-policy.https.sub.html.ini
new file mode 100644
index 00000000000..adf92aab2be
--- /dev/null
+++ b/tests/wpt/meta/audio-output/selectAudioOutput-permissions-policy.https.sub.html.ini
@@ -0,0 +1,16 @@
+[selectAudioOutput-permissions-policy.https.sub.html]
+ expected: TIMEOUT
+ [Default "speaker-selection" permissions policy ["self"\] allows the top-level document.]
+ expected: FAIL
+
+ [Default "speaker-selection" permissions policy ["self"\] allows same-origin iframes.]
+ expected: FAIL
+
+ [Default "speaker-selection" permissions policy ["self"\] disallows cross-origin iframes.]
+ expected: TIMEOUT
+
+ [permissions policy "speaker-selection" can be enabled in cross-origin iframes using "allow" attribute.]
+ expected: NOTRUN
+
+ [permissions policy "speaker-selection" can be disabled in same-origin iframes using "allow" attribute.]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/audio-output/setSinkId-with-selectAudioOutput.https.html.ini b/tests/wpt/meta/audio-output/setSinkId-with-selectAudioOutput.https.html.ini
new file mode 100644
index 00000000000..a210f90962b
--- /dev/null
+++ b/tests/wpt/meta/audio-output/setSinkId-with-selectAudioOutput.https.html.ini
@@ -0,0 +1,12 @@
+[setSinkId-with-selectAudioOutput.https.html]
+ [setSinkId() after selectAudioOutput()]
+ expected: FAIL
+
+ [setSinkId() on video after loadeddata]
+ expected: FAIL
+
+ [setSinkId() on video after play]
+ expected: FAIL
+
+ [setSinkId() with deviceID from another window]
+ expected: FAIL
diff --git a/tests/wpt/meta/audio-output/setSinkId.https.html.ini b/tests/wpt/meta/audio-output/setSinkId.https.html.ini
new file mode 100644
index 00000000000..0a56c868c9b
--- /dev/null
+++ b/tests/wpt/meta/audio-output/setSinkId.https.html.ini
@@ -0,0 +1,9 @@
+[setSinkId.https.html]
+ [setSinkId on default audio output should always work]
+ expected: FAIL
+
+ [setSinkId fails with NotFoundError on made up deviceid]
+ expected: FAIL
+
+ [setSinkId() with output device IDs exposed by getUserMedia() should either reject with NotAllowedError or resolve]
+ expected: FAIL
diff --git a/tests/wpt/meta/battery-status/page-visibility.https.html.ini b/tests/wpt/meta/battery-status/page-visibility.https.html.ini
new file mode 100644
index 00000000000..0e7907171ae
--- /dev/null
+++ b/tests/wpt/meta/battery-status/page-visibility.https.html.ini
@@ -0,0 +1,3 @@
+[page-visibility.https.html]
+ [battery status events only fire on visible pages]
+ expected: FAIL
diff --git a/tests/wpt/meta/clear-site-data/clear-cache-bfcache-partitioning.tentative.https.html.ini b/tests/wpt/meta/clear-site-data/clear-cache-bfcache-partitioning.tentative.https.html.ini
new file mode 100644
index 00000000000..7c04b48f8fe
--- /dev/null
+++ b/tests/wpt/meta/clear-site-data/clear-cache-bfcache-partitioning.tentative.https.html.ini
@@ -0,0 +1,7 @@
+[clear-cache-bfcache-partitioning.tentative.https.html]
+ expected: TIMEOUT
+ [BfCached document not be dropped when containing cross-site iframe and that cross-site received clear-cache header]
+ expected: TIMEOUT
+
+ [BfCached document should be dropped when containing same-site iframe and that same-site received clear-cache header]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/clear-site-data/clear-cache-bfcache.https.html.ini b/tests/wpt/meta/clear-site-data/clear-cache-bfcache.https.html.ini
new file mode 100644
index 00000000000..066c421eac7
--- /dev/null
+++ b/tests/wpt/meta/clear-site-data/clear-cache-bfcache.https.html.ini
@@ -0,0 +1,13 @@
+[clear-cache-bfcache.https.html]
+ expected: TIMEOUT
+ [BfCached document shouldn't be cached after receiving clear-cache header from the same origin.]
+ expected: TIMEOUT
+
+ [BfCached document should be cached after receiving clear-cache header from a subdomain.]
+ expected: NOTRUN
+
+ [BfCached document should be cached after receiving clear-cache header from another site.]
+ expected: NOTRUN
+
+ [BfCached document shouldn't be cached after receiving clear-cache header from another window.]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/clear-site-data/clear-cache-partitioning.tentative.https.html.ini b/tests/wpt/meta/clear-site-data/clear-cache-partitioning.tentative.https.html.ini
new file mode 100644
index 00000000000..04b4eac7f46
--- /dev/null
+++ b/tests/wpt/meta/clear-site-data/clear-cache-partitioning.tentative.https.html.ini
@@ -0,0 +1,2 @@
+[clear-cache-partitioning.tentative.https.html]
+ expected: CRASH
diff --git a/tests/wpt/meta/clear-site-data/clear-cache.https.html.ini b/tests/wpt/meta/clear-site-data/clear-cache.https.html.ini
new file mode 100644
index 00000000000..71cb25ce7e9
--- /dev/null
+++ b/tests/wpt/meta/clear-site-data/clear-cache.https.html.ini
@@ -0,0 +1,30 @@
+[clear-cache.https.html]
+ [clear cache: Document with clear-cache header doesn't get cached]
+ expected: FAIL
+
+ [clear all: Document with clear-cache header doesn't get cached]
+ expected: FAIL
+
+ [clear cache: Previously cached fetch gets cleared]
+ expected: FAIL
+
+ [clear all: Previously cached fetch gets cleared]
+ expected: FAIL
+
+ [clear cache: Clear fetch on intermediate navigation]
+ expected: FAIL
+
+ [clear all: Clear fetch on intermediate navigation]
+ expected: FAIL
+
+ [clear cache: Clear document in intermediate load]
+ expected: FAIL
+
+ [clear all: Clear document in intermediate load]
+ expected: FAIL
+
+ [clear cache: CSS-Cache gets cleared]
+ expected: FAIL
+
+ [clear cache: JS-Cache gets cleared]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/async-clipboard-read-unsanitized-null.https.html.ini b/tests/wpt/meta/clipboard-apis/async-clipboard-read-unsanitized-null.https.html.ini
new file mode 100644
index 00000000000..83dd3590b4d
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/async-clipboard-read-unsanitized-null.https.html.ini
@@ -0,0 +1,3 @@
+[async-clipboard-read-unsanitized-null.https.html]
+ [unsanitized: null should reject with TypeError]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/async-custom-formats-write-fail.tentative.https.html.ini b/tests/wpt/meta/clipboard-apis/async-custom-formats-write-fail.tentative.https.html.ini
new file mode 100644
index 00000000000..b42dd1c851e
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/async-custom-formats-write-fail.tentative.https.html.ini
@@ -0,0 +1,24 @@
+[async-custom-formats-write-fail.tentative.https.html]
+ [navigator.clipboard.write() fails for more than 100 custom formats]
+ expected: FAIL
+
+ [navigator.clipboard.write() fails for custom formats without web prefix]
+ expected: FAIL
+
+ [navigator.clipboard.write() fails for custom formats with web prefix, but invalid MIME types]
+ expected: FAIL
+
+ [navigator.clipboard.write() fails for custom format with web prefix, but different Blob type]
+ expected: FAIL
+
+ [navigator.clipboard.write() fails for custom format with different case than the Blob type]
+ expected: FAIL
+
+ [navigator.clipboard.write() fails for invalid mime type that is different than the Blob type]
+ expected: FAIL
+
+ [navigator.clipboard.write() fails for invalid mime type with web prefix and the Blob type]
+ expected: FAIL
+
+ [navigator.clipboard.write() fails for custom format and Blob type with different case]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/async-custom-formats-write-read-web-prefix.tentative.https.html.ini b/tests/wpt/meta/clipboard-apis/async-custom-formats-write-read-web-prefix.tentative.https.html.ini
new file mode 100644
index 00000000000..94d11f956f7
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/async-custom-formats-write-read-web-prefix.tentative.https.html.ini
@@ -0,0 +1,3 @@
+[async-custom-formats-write-read-web-prefix.tentative.https.html]
+ [navigator.clipboard.write() for custom format and Blob type with web prefix]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/async-custom-formats-write-read-without-web-prefix.tentative.https.html.ini b/tests/wpt/meta/clipboard-apis/async-custom-formats-write-read-without-web-prefix.tentative.https.html.ini
new file mode 100644
index 00000000000..cca92d69460
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/async-custom-formats-write-read-without-web-prefix.tentative.https.html.ini
@@ -0,0 +1,3 @@
+[async-custom-formats-write-read-without-web-prefix.tentative.https.html]
+ [navigator.clipboard.write() for custom format with web prefix, but Blob type without web prefix]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/async-custom-formats-write-read.tentative.https.html.ini b/tests/wpt/meta/clipboard-apis/async-custom-formats-write-read.tentative.https.html.ini
new file mode 100644
index 00000000000..e41d8fcbd84
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/async-custom-formats-write-read.tentative.https.html.ini
@@ -0,0 +1,3 @@
+[async-custom-formats-write-read.tentative.https.html]
+ [Verify write and read clipboard given 2 platform-neutral custom format inputs]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/async-html-script-removal.https.html.ini b/tests/wpt/meta/clipboard-apis/async-html-script-removal.https.html.ini
new file mode 100644
index 00000000000..76e70733679
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/async-html-script-removal.https.html.ini
@@ -0,0 +1,3 @@
+[async-html-script-removal.https.html]
+ [Verify write and read clipboard with scripts removed given text/html. The string "" has been removed.]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/async-navigator-clipboard-basics.https.html.ini b/tests/wpt/meta/clipboard-apis/async-navigator-clipboard-basics.https.html.ini
new file mode 100644
index 00000000000..f5152ba8797
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/async-navigator-clipboard-basics.https.html.ini
@@ -0,0 +1,39 @@
+[async-navigator-clipboard-basics.https.html]
+ [navigator.clipboard.write([text/plain ClipboardItem\]) succeeds]
+ expected: FAIL
+
+ [navigator.clipboard.write([>1 ClipboardItems\]) fails (not implemented)]
+ expected: FAIL
+
+ [navigator.clipboard.write() fails (expect [ClipboardItem\])]
+ expected: FAIL
+
+ [navigator.clipboard.write(null) fails (expect [ClipboardItem\])]
+ expected: FAIL
+
+ [navigator.clipboard.write(DOMString) fails (expect [ClipboardItem\])]
+ expected: FAIL
+
+ [navigator.clipboard.write(Blob) fails (expect [ClipboardItem\])]
+ expected: FAIL
+
+ [navigator.clipboard.write({string : DOMString}) succeeds]
+ expected: FAIL
+
+ [navigator.clipboard.write({string : image/png Blob}) succeeds]
+ expected: FAIL
+
+ [navigator.clipboard.write([text + png\] succeeds]
+ expected: FAIL
+
+ [navigator.clipboard.write(image/png DOMString) fails]
+ expected: FAIL
+
+ [navigator.clipboard.read() succeeds]
+ expected: FAIL
+
+ [navigator.clipboard.write(Promise) succeeds]
+ expected: FAIL
+
+ [navigator.clipboard.write(Promises) succeeds]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/async-navigator-clipboard-change-event.tentative.https.html.ini b/tests/wpt/meta/clipboard-apis/async-navigator-clipboard-change-event.tentative.https.html.ini
new file mode 100644
index 00000000000..792b9b810e2
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/async-navigator-clipboard-change-event.tentative.https.html.ini
@@ -0,0 +1,22 @@
+[async-navigator-clipboard-change-event.tentative.https.html]
+ expected: ERROR
+ [clipboardchange event is invoked]
+ expected: FAIL
+
+ [clipboardchange event is invoked with async clipboard API]
+ expected: FAIL
+
+ [clipboardchange event is invoked using onclipboardchange attribute]
+ expected: FAIL
+
+ [clipboardchange event is invoked even when only custom MIME types are set]
+ expected: FAIL
+
+ [clipboardchange event listener behavior when adding, removing, and re-adding]
+ expected: FAIL
+
+ [clipboardchange event exposes all standard MIME types and filters non-standard ones]
+ expected: FAIL
+
+ [clipboardchange event should only fire in the focused context]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/async-navigator-clipboard-read-resource-load.https.html.ini b/tests/wpt/meta/clipboard-apis/async-navigator-clipboard-read-resource-load.https.html.ini
new file mode 100644
index 00000000000..b2698121855
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/async-navigator-clipboard-read-resource-load.https.html.ini
@@ -0,0 +1,4 @@
+[async-navigator-clipboard-read-resource-load.https.html]
+ expected: ERROR
+ [Async Clipboard.read() should not trigger resource loading]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/async-navigator-clipboard-read-sanitize.https.html.ini b/tests/wpt/meta/clipboard-apis/async-navigator-clipboard-read-sanitize.https.html.ini
new file mode 100644
index 00000000000..160484ce438
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/async-navigator-clipboard-read-sanitize.https.html.ini
@@ -0,0 +1,4 @@
+[async-navigator-clipboard-read-sanitize.https.html]
+ expected: ERROR
+ [Async Clipboard.read() should sanitize text/html]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/async-navigator-clipboard-write-domstring.https.html.ini b/tests/wpt/meta/clipboard-apis/async-navigator-clipboard-write-domstring.https.html.ini
new file mode 100644
index 00000000000..f0d9550b547
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/async-navigator-clipboard-write-domstring.https.html.ini
@@ -0,0 +1,15 @@
+[async-navigator-clipboard-write-domstring.https.html]
+ [navigator.clipboard.write(DOMString) succeeds]
+ expected: FAIL
+
+ [navigator.clipboard.write(Promise) succeeds]
+ expected: FAIL
+
+ [navigator.clipboard.write(Promise) with utf-16 string succeeds]
+ expected: FAIL
+
+ [navigator.clipboard.write(web_custom_format) succeeds]
+ expected: FAIL
+
+ [write non-Latin characters with DOMString and verify readText returns the same string]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/async-navigator-clipboard-write-multiple.tentative.https.sub.html.ini b/tests/wpt/meta/clipboard-apis/async-navigator-clipboard-write-multiple.tentative.https.sub.html.ini
new file mode 100644
index 00000000000..10ef609a1b6
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/async-navigator-clipboard-write-multiple.tentative.https.sub.html.ini
@@ -0,0 +1,12 @@
+[async-navigator-clipboard-write-multiple.tentative.https.sub.html]
+ [clipboard.write() should cancel the prior pending one (same document)]
+ expected: FAIL
+
+ [clipboard.write() should cancel the prior pending one (same-origin iframe)]
+ expected: FAIL
+
+ [clipboard.write() should cancel the prior pending one (cross-origin iframe)]
+ expected: FAIL
+
+ [copy action should cancel the prior pending clipboard.write() request]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/async-promise-write-blobs-read-blobs.https.html.ini b/tests/wpt/meta/clipboard-apis/async-promise-write-blobs-read-blobs.https.html.ini
new file mode 100644
index 00000000000..dabc0c3c9a8
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/async-promise-write-blobs-read-blobs.https.html.ini
@@ -0,0 +1,3 @@
+[async-promise-write-blobs-read-blobs.https.html]
+ [Verify write and read clipboard (multiple types) with promise to Blobs]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/async-svg-read-write.tentative.https.html.ini b/tests/wpt/meta/clipboard-apis/async-svg-read-write.tentative.https.html.ini
new file mode 100644
index 00000000000..b97d1693431
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/async-svg-read-write.tentative.https.html.ini
@@ -0,0 +1,3 @@
+[async-svg-read-write.tentative.https.html]
+ [Verify read and write of some image/svg+xml content]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/async-unsanitized-html-formats-write-read.tentative.https.html.ini b/tests/wpt/meta/clipboard-apis/async-unsanitized-html-formats-write-read.tentative.https.html.ini
new file mode 100644
index 00000000000..ed4443ea579
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/async-unsanitized-html-formats-write-read.tentative.https.html.ini
@@ -0,0 +1,3 @@
+[async-unsanitized-html-formats-write-read.tentative.https.html]
+ [Verify write and read unsanitized content to the clipboard given text/html format as input]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/async-unsanitized-plaintext-formats-write-read.tentative.https.html.ini b/tests/wpt/meta/clipboard-apis/async-unsanitized-plaintext-formats-write-read.tentative.https.html.ini
new file mode 100644
index 00000000000..72c93bdb07a
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/async-unsanitized-plaintext-formats-write-read.tentative.https.html.ini
@@ -0,0 +1,3 @@
+[async-unsanitized-plaintext-formats-write-read.tentative.https.html]
+ [Verify write and read unsanitized content to the clipboard given standard and custom formats as input]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/async-unsanitized-standard-html-read-fail.tentative.https.html.ini b/tests/wpt/meta/clipboard-apis/async-unsanitized-standard-html-read-fail.tentative.https.html.ini
new file mode 100644
index 00000000000..a0c1bddf23f
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/async-unsanitized-standard-html-read-fail.tentative.https.html.ini
@@ -0,0 +1,12 @@
+[async-unsanitized-standard-html-read-fail.tentative.https.html]
+ [navigator.clipboard.read() fails for multiple unsanitized formats requested.]
+ expected: FAIL
+
+ [navigator.clipboard.read() fails for unsanitized text/plain requested.]
+ expected: FAIL
+
+ [navigator.clipboard.read() fails for unsanitized image/png requested.]
+ expected: FAIL
+
+ [navigator.clipboard.read() fails for unsanitized image/svg+xml requested.]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/async-write-blobs-read-blobs.https.html.ini b/tests/wpt/meta/clipboard-apis/async-write-blobs-read-blobs.https.html.ini
new file mode 100644
index 00000000000..2f246fa2813
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/async-write-blobs-read-blobs.https.html.ini
@@ -0,0 +1,6 @@
+[async-write-blobs-read-blobs.https.html]
+ [Verify write and read clipboard (multiple types)]
+ expected: FAIL
+
+ [navigator.clipboard.read() does not crash if clipboard data has null values]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/async-write-html-read-html.https.html.ini b/tests/wpt/meta/clipboard-apis/async-write-html-read-html.https.html.ini
new file mode 100644
index 00000000000..40979aa133f
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/async-write-html-read-html.https.html.ini
@@ -0,0 +1,3 @@
+[async-write-html-read-html.https.html]
+ [Verify read and write of some text/html content]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/async-write-image-read-image.https.html.ini b/tests/wpt/meta/clipboard-apis/async-write-image-read-image.https.html.ini
new file mode 100644
index 00000000000..5709a425e7a
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/async-write-image-read-image.https.html.ini
@@ -0,0 +1,6 @@
+[async-write-image-read-image.https.html]
+ [Verify write and read clipboard [image/png Blob\]]
+ expected: FAIL
+
+ [Verify write error on malformed data [image/png ClipboardItem\]]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/detached-iframe/read-on-detaching-iframe.https.html.ini b/tests/wpt/meta/clipboard-apis/detached-iframe/read-on-detaching-iframe.https.html.ini
new file mode 100644
index 00000000000..c51edaa9e6a
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/detached-iframe/read-on-detaching-iframe.https.html.ini
@@ -0,0 +1,3 @@
+[read-on-detaching-iframe.https.html]
+ [Verify read fails on detaching iframe]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/detached-iframe/write-on-detaching-iframe.https.html.ini b/tests/wpt/meta/clipboard-apis/detached-iframe/write-on-detaching-iframe.https.html.ini
new file mode 100644
index 00000000000..ab2a9ec70f5
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/detached-iframe/write-on-detaching-iframe.https.html.ini
@@ -0,0 +1,3 @@
+[write-on-detaching-iframe.https.html]
+ [Verify write fails on detaching iframe]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/detached-iframe/write-read-on-detached-iframe.https.html.ini b/tests/wpt/meta/clipboard-apis/detached-iframe/write-read-on-detached-iframe.https.html.ini
new file mode 100644
index 00000000000..2f21b874a33
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/detached-iframe/write-read-on-detached-iframe.https.html.ini
@@ -0,0 +1,3 @@
+[write-read-on-detached-iframe.https.html]
+ [Verify read and write fail on detached iframe]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/detached-iframe/writeText-readText-on-detached-iframe.https.html.ini b/tests/wpt/meta/clipboard-apis/detached-iframe/writeText-readText-on-detached-iframe.https.html.ini
new file mode 100644
index 00000000000..e03a22a0951
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/detached-iframe/writeText-readText-on-detached-iframe.https.html.ini
@@ -0,0 +1,4 @@
+[writeText-readText-on-detached-iframe.https.html]
+ expected: TIMEOUT
+ [Verify readText and writeText fails on detached iframe]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/clipboard-apis/events/copy-event.html.ini b/tests/wpt/meta/clipboard-apis/events/copy-event.html.ini
new file mode 100644
index 00000000000..20708599c05
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/events/copy-event.html.ini
@@ -0,0 +1,4 @@
+[copy-event.html]
+ expected: ERROR
+ [The copy event]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/clipboard-apis/feature-policy/clipboard-read/clipboard-read-disabled-by-feature-policy.tentative.https.sub.html.ini b/tests/wpt/meta/clipboard-apis/feature-policy/clipboard-read/clipboard-read-disabled-by-feature-policy.tentative.https.sub.html.ini
new file mode 100644
index 00000000000..23fcf0844b7
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/feature-policy/clipboard-read/clipboard-read-disabled-by-feature-policy.tentative.https.sub.html.ini
@@ -0,0 +1,3 @@
+[clipboard-read-disabled-by-feature-policy.tentative.https.sub.html]
+ [Feature-Policy header clipboard-read "none" disallows the top-level document.]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html.ini b/tests/wpt/meta/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html.ini
new file mode 100644
index 00000000000..0c80834336c
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html.ini
@@ -0,0 +1,3 @@
+[clipboard-read-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html]
+ [Feature policy "clipboard-read" can be enabled in cross-origin iframe using allow="clipboard-read" attribute]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-attribute-tentative.https.sub.html.ini b/tests/wpt/meta/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-attribute-tentative.https.sub.html.ini
new file mode 100644
index 00000000000..1567be2e4ce
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-attribute-tentative.https.sub.html.ini
@@ -0,0 +1,3 @@
+[clipboard-read-enabled-by-feature-policy-attribute-tentative.https.sub.html]
+ [Feature policy "clipboard-read" can be enabled in same-origin iframe using allow="clipboard-read" attribute]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/feature-policy/clipboard-write/clipboard-write-disabled-by-feature-policy.tentative.https.sub.html.ini b/tests/wpt/meta/clipboard-apis/feature-policy/clipboard-write/clipboard-write-disabled-by-feature-policy.tentative.https.sub.html.ini
new file mode 100644
index 00000000000..a49bb1d3150
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/feature-policy/clipboard-write/clipboard-write-disabled-by-feature-policy.tentative.https.sub.html.ini
@@ -0,0 +1,3 @@
+[clipboard-write-disabled-by-feature-policy.tentative.https.sub.html]
+ [Feature-Policy header clipboard-write "none" disallows the top-level document.]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html.ini b/tests/wpt/meta/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html.ini
new file mode 100644
index 00000000000..53cdf718a22
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html.ini
@@ -0,0 +1,3 @@
+[clipboard-write-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html]
+ [Feature policy "clipboard-write" can be enabled in cross-origin iframe using allow="clipboard-write" attribute]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-tentative.https.sub.html.ini b/tests/wpt/meta/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-tentative.https.sub.html.ini
new file mode 100644
index 00000000000..1258b92a12d
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-tentative.https.sub.html.ini
@@ -0,0 +1,3 @@
+[clipboard-write-enabled-by-feature-policy-attribute-tentative.https.sub.html]
+ [Feature policy "clipboard-write" can be enabled in same-origin iframe using allow="clipboard-write" attribute]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/permissions/readText-denied.https.html.ini b/tests/wpt/meta/clipboard-apis/permissions/readText-denied.https.html.ini
new file mode 100644
index 00000000000..f0d858f51d3
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/permissions/readText-denied.https.html.ini
@@ -0,0 +1,3 @@
+[readText-denied.https.html]
+ [navigator.clipboard.readText() fails when permission denied]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/permissions/writeText-denied.https.html.ini b/tests/wpt/meta/clipboard-apis/permissions/writeText-denied.https.html.ini
new file mode 100644
index 00000000000..6ceb9d99aca
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/permissions/writeText-denied.https.html.ini
@@ -0,0 +1,3 @@
+[writeText-denied.https.html]
+ [navigator.clipboard.writeText() fails when permission denied]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/text-write-read/async-write-read.https.html.ini b/tests/wpt/meta/clipboard-apis/text-write-read/async-write-read.https.html.ini
new file mode 100644
index 00000000000..6459b43f5bc
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/text-write-read/async-write-read.https.html.ini
@@ -0,0 +1,6 @@
+[async-write-read.https.html]
+ [Verify write and read clipboard given text: Clipboard write ([text/plain ClipboardItem\]) -> read ([text/plain ClipboardItem\]) test]
+ expected: FAIL
+
+ [Verify write and read clipboard given text: non-Latin1 text encoding test データ]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/text-write-read/async-write-readText.https.html.ini b/tests/wpt/meta/clipboard-apis/text-write-read/async-write-readText.https.html.ini
new file mode 100644
index 00000000000..71c327bc081
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/text-write-read/async-write-readText.https.html.ini
@@ -0,0 +1,6 @@
+[async-write-readText.https.html]
+ [Verify write and read clipboard given text: Clipboard write ([text/plain ClipboardItem) -> read text test]
+ expected: FAIL
+
+ [Verify write and read clipboard given text: non-Latin1 text encoding test データ]
+ expected: FAIL
diff --git a/tests/wpt/meta/clipboard-apis/text-write-read/async-writeText-read.https.html.ini b/tests/wpt/meta/clipboard-apis/text-write-read/async-writeText-read.https.html.ini
new file mode 100644
index 00000000000..4b812f61fda
--- /dev/null
+++ b/tests/wpt/meta/clipboard-apis/text-write-read/async-writeText-read.https.html.ini
@@ -0,0 +1,6 @@
+[async-writeText-read.https.html]
+ [Verify write and read clipboard given text: Clipboard write text -> read ([text/plain ClipboardItem\]) test]
+ expected: FAIL
+
+ [Verify write and read clipboard given text: non-Latin1 text encoding test データ]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/abortsignal.html.ini b/tests/wpt/meta/close-watcher/abortsignal.html.ini
new file mode 100644
index 00000000000..5d9a676a064
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/abortsignal.html.ini
@@ -0,0 +1,27 @@
+[abortsignal.html]
+ [already-aborted AbortSignal then requestClose() fires no events]
+ expected: FAIL
+
+ [abortController.abort() then requestClose() fires no events]
+ expected: FAIL
+
+ [requestClose() then abortController.abort() fires only one close event]
+ expected: FAIL
+
+ [already-aborted AbortSignal then Esc key fires no events]
+ expected: FAIL
+
+ [abortController.abort() then close via Esc key fires no events]
+ expected: FAIL
+
+ [Esc key then abortController.abort() fires only one close event]
+ expected: FAIL
+
+ [abortController.abort()ing a free CloseWatcher allows a new one to be created without a user activation]
+ expected: FAIL
+
+ [abortController.abort() inside oncancel]
+ expected: FAIL
+
+ [abortController.abort() inside onclose is benign]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/basic.html.ini b/tests/wpt/meta/close-watcher/basic.html.ini
new file mode 100644
index 00000000000..fd4d3247a30
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/basic.html.ini
@@ -0,0 +1,21 @@
+[basic.html]
+ [requestClose() with no user activation]
+ expected: FAIL
+
+ [destroy() then requestClose()]
+ expected: FAIL
+
+ [close() then requestClose()]
+ expected: FAIL
+
+ [requestClose() then destroy()]
+ expected: FAIL
+
+ [close() then destroy()]
+ expected: FAIL
+
+ [destroy() then close request]
+ expected: FAIL
+
+ [Close request then destroy()]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/esc-key/keydown.html.ini b/tests/wpt/meta/close-watcher/esc-key/keydown.html.ini
new file mode 100644
index 00000000000..ccc258c4518
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/esc-key/keydown.html.ini
@@ -0,0 +1,3 @@
+[keydown.html]
+ [A keydown listener can prevent the Esc keypress from being interpreted as a close request]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/esc-key/keypress.html.ini b/tests/wpt/meta/close-watcher/esc-key/keypress.html.ini
new file mode 100644
index 00000000000..a54d3888240
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/esc-key/keypress.html.ini
@@ -0,0 +1,3 @@
+[keypress.html]
+ [A keypress listener can NOT prevent the Esc keypress from being interpreted as a close request]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/esc-key/keyup.html.ini b/tests/wpt/meta/close-watcher/esc-key/keyup.html.ini
new file mode 100644
index 00000000000..7e702bd125a
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/esc-key/keyup.html.ini
@@ -0,0 +1,3 @@
+[keyup.html]
+ [A keyup listener can NOT prevent the Esc keypress from being interpreted as a close request]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/esc-key/not-user-activation.html.ini b/tests/wpt/meta/close-watcher/esc-key/not-user-activation.html.ini
new file mode 100644
index 00000000000..a462b70c87f
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/esc-key/not-user-activation.html.ini
@@ -0,0 +1,3 @@
+[not-user-activation.html]
+ [Esc key does not count as user activation, so if it is the sole user interaction, cancel is cancelable=false]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/esc-key/synthetic-keyboard-event.html.ini b/tests/wpt/meta/close-watcher/esc-key/synthetic-keyboard-event.html.ini
new file mode 100644
index 00000000000..56ca549f9b1
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/esc-key/synthetic-keyboard-event.html.ini
@@ -0,0 +1,3 @@
+[synthetic-keyboard-event.html]
+ [close via synthesized Esc key must not work]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/event-properties.html.ini b/tests/wpt/meta/close-watcher/event-properties.html.ini
new file mode 100644
index 00000000000..2b06874850b
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/event-properties.html.ini
@@ -0,0 +1,3 @@
+[event-properties.html]
+ [cancel and close event properties are correct]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/iframes/dialog-same-origin-nn.html.ini b/tests/wpt/meta/close-watcher/iframes/dialog-same-origin-nn.html.ini
new file mode 100644
index 00000000000..f51eb087ea4
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/iframes/dialog-same-origin-nn.html.ini
@@ -0,0 +1,3 @@
+[dialog-same-origin-nn.html]
+ [dialog-same-origin-nn]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/iframes/dialog-same-origin-ynn.html.ini b/tests/wpt/meta/close-watcher/iframes/dialog-same-origin-ynn.html.ini
new file mode 100644
index 00000000000..ef26ec9d342
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/iframes/dialog-same-origin-ynn.html.ini
@@ -0,0 +1,3 @@
+[dialog-same-origin-ynn.html]
+ [dialog-same-origin-ynn]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/iframes/dialog-same-origin-ynyn.html.ini b/tests/wpt/meta/close-watcher/iframes/dialog-same-origin-ynyn.html.ini
new file mode 100644
index 00000000000..fe1e3ea1c77
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/iframes/dialog-same-origin-ynyn.html.ini
@@ -0,0 +1,3 @@
+[dialog-same-origin-ynyn.html]
+ [dialog-same-origin-ynyn]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/inside-event-listeners.html.ini b/tests/wpt/meta/close-watcher/inside-event-listeners.html.ini
new file mode 100644
index 00000000000..4b725b0b12a
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/inside-event-listeners.html.ini
@@ -0,0 +1,18 @@
+[inside-event-listeners.html]
+ [destroy() inside oncancel]
+ expected: FAIL
+
+ [destroy() inside onclose]
+ expected: FAIL
+
+ [close() inside oncancel]
+ expected: FAIL
+
+ [close() inside onclose]
+ expected: FAIL
+
+ [requestClose() inside oncancel]
+ expected: FAIL
+
+ [requestClose() inside onclose]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/n-activate-preventDefault.html.ini b/tests/wpt/meta/close-watcher/user-activation/n-activate-preventDefault.html.ini
new file mode 100644
index 00000000000..d1e425cef05
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/n-activate-preventDefault.html.ini
@@ -0,0 +1,8 @@
+[n-activate-preventDefault.html?dialog]
+ [Create a close watcher without user activation that preventDefault()s cancel; send user activation]
+ expected: FAIL
+
+
+[n-activate-preventDefault.html?CloseWatcher]
+ [Create a close watcher without user activation that preventDefault()s cancel; send user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/n-activate.html.ini b/tests/wpt/meta/close-watcher/user-activation/n-activate.html.ini
new file mode 100644
index 00000000000..c574a5b92b3
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/n-activate.html.ini
@@ -0,0 +1,8 @@
+[n-activate.html?dialog]
+ [Create a close watcher without user activation; send user activation]
+ expected: FAIL
+
+
+[n-activate.html?CloseWatcher]
+ [Create a close watcher without user activation; send user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/n-closerequest-n.html.ini b/tests/wpt/meta/close-watcher/user-activation/n-closerequest-n.html.ini
new file mode 100644
index 00000000000..ff0b7e4fbc1
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/n-closerequest-n.html.ini
@@ -0,0 +1,8 @@
+[n-closerequest-n.html?dialog]
+ [Create a close watcher without user activation; send a close request; create a close watcher without user activation]
+ expected: FAIL
+
+
+[n-closerequest-n.html?CloseWatcher]
+ [Create a close watcher without user activation; send a close request; create a close watcher without user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/n-destroy-n.html.ini b/tests/wpt/meta/close-watcher/user-activation/n-destroy-n.html.ini
new file mode 100644
index 00000000000..ee79b98add2
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/n-destroy-n.html.ini
@@ -0,0 +1,8 @@
+[n-destroy-n.html?dialog]
+ [Create a close watcher without user activation; destroy the close watcher; create a close watcher without user activation]
+ expected: FAIL
+
+
+[n-destroy-n.html?CloseWatcher]
+ [Create a close watcher without user activation; destroy the close watcher; create a close watcher without user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/n.html.ini b/tests/wpt/meta/close-watcher/user-activation/n.html.ini
new file mode 100644
index 00000000000..548e4e63cca
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/n.html.ini
@@ -0,0 +1,8 @@
+[n.html?CloseWatcher]
+ [Create a close watcher without user activation]
+ expected: FAIL
+
+
+[n.html?dialog]
+ [Create a close watcher without user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/nn-CloseWatcher.html.ini b/tests/wpt/meta/close-watcher/user-activation/nn-CloseWatcher.html.ini
new file mode 100644
index 00000000000..641e1bdfac4
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/nn-CloseWatcher.html.ini
@@ -0,0 +1,3 @@
+[nn-CloseWatcher.html]
+ [Create two close watchers without user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/nn-activate-CloseWatcher.html.ini b/tests/wpt/meta/close-watcher/user-activation/nn-activate-CloseWatcher.html.ini
new file mode 100644
index 00000000000..b657be85b78
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/nn-activate-CloseWatcher.html.ini
@@ -0,0 +1,3 @@
+[nn-activate-CloseWatcher.html]
+ [Create two CloseWatchers without user activation; send user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/nn-activate-dialog.html.ini b/tests/wpt/meta/close-watcher/user-activation/nn-activate-dialog.html.ini
new file mode 100644
index 00000000000..33e9ec9ad4e
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/nn-activate-dialog.html.ini
@@ -0,0 +1,3 @@
+[nn-activate-dialog.html]
+ [Create two dialogs without user activation; send user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/nn-dialog.html.ini b/tests/wpt/meta/close-watcher/user-activation/nn-dialog.html.ini
new file mode 100644
index 00000000000..d28174586e4
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/nn-dialog.html.ini
@@ -0,0 +1,3 @@
+[nn-dialog.html]
+ [Create two close watchers without user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/nnn-CloseWatcher-dialog-popover.html.ini b/tests/wpt/meta/close-watcher/user-activation/nnn-CloseWatcher-dialog-popover.html.ini
new file mode 100644
index 00000000000..ce68235e6bb
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/nnn-CloseWatcher-dialog-popover.html.ini
@@ -0,0 +1,3 @@
+[nnn-CloseWatcher-dialog-popover.html]
+ [Create a CloseWatcher without user activation; create a dialog without user activation; create a popover without user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/nnn-CloseWatcher.html.ini b/tests/wpt/meta/close-watcher/user-activation/nnn-CloseWatcher.html.ini
new file mode 100644
index 00000000000..e107454db7e
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/nnn-CloseWatcher.html.ini
@@ -0,0 +1,3 @@
+[nnn-CloseWatcher.html]
+ [Create three close watchers without user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/nnn-dialog.html.ini b/tests/wpt/meta/close-watcher/user-activation/nnn-dialog.html.ini
new file mode 100644
index 00000000000..11b9e678994
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/nnn-dialog.html.ini
@@ -0,0 +1,3 @@
+[nnn-dialog.html]
+ [Create three close watchers without user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/nnn-popovers.html.ini b/tests/wpt/meta/close-watcher/user-activation/nnn-popovers.html.ini
new file mode 100644
index 00000000000..ba0a142dbc6
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/nnn-popovers.html.ini
@@ -0,0 +1,3 @@
+[nnn-popovers.html]
+ [Create three popovers without user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/ny-activate-preventDefault.html.ini b/tests/wpt/meta/close-watcher/user-activation/ny-activate-preventDefault.html.ini
new file mode 100644
index 00000000000..6d6263081b3
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/ny-activate-preventDefault.html.ini
@@ -0,0 +1,8 @@
+[ny-activate-preventDefault.html?CloseWatcher]
+ [Create a close watcher without user activation; create a close watcher with user activation that preventDefault()s cancel; send user activation]
+ expected: FAIL
+
+
+[ny-activate-preventDefault.html?dialog]
+ [Create a close watcher without user activation; create a close watcher with user activation that preventDefault()s cancel; send user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/ny.html.ini b/tests/wpt/meta/close-watcher/user-activation/ny.html.ini
new file mode 100644
index 00000000000..5aee115bdcf
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/ny.html.ini
@@ -0,0 +1,8 @@
+[ny.html?CloseWatcher]
+ [Create a close watcher without user activation; create a close watcher with user activation]
+ expected: FAIL
+
+
+[ny.html?dialog]
+ [Create a close watcher without user activation; create a close watcher with user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/nyn-popovers.html.ini b/tests/wpt/meta/close-watcher/user-activation/nyn-popovers.html.ini
new file mode 100644
index 00000000000..6645223646d
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/nyn-popovers.html.ini
@@ -0,0 +1,3 @@
+[nyn-popovers.html]
+ [Create a popover without user activation; create a popover with user activation; create a popover without user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/nyn.html.ini b/tests/wpt/meta/close-watcher/user-activation/nyn.html.ini
new file mode 100644
index 00000000000..030c7da6037
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/nyn.html.ini
@@ -0,0 +1,8 @@
+[nyn.html?dialog]
+ [Create a close watcher without user activation; create a close watcher with user activation; create a close watcher without user activation]
+ expected: FAIL
+
+
+[nyn.html?CloseWatcher]
+ [Create a close watcher without user activation; create a close watcher with user activation; create a close watcher without user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/nynn-destroy.html.ini b/tests/wpt/meta/close-watcher/user-activation/nynn-destroy.html.ini
new file mode 100644
index 00000000000..fa7d136bc23
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/nynn-destroy.html.ini
@@ -0,0 +1,8 @@
+[nynn-destroy.html?CloseWatcher]
+ [Create a close watcher without user activation; create a close watcher with user activation; create two close watchers without user activation; remove the second close watcher]
+ expected: FAIL
+
+
+[nynn-destroy.html?dialog]
+ [Create a close watcher without user activation; create a close watcher with user activation; create two close watchers without user activation; remove the second close watcher]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/nynn.html.ini b/tests/wpt/meta/close-watcher/user-activation/nynn.html.ini
new file mode 100644
index 00000000000..c20b5607cc7
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/nynn.html.ini
@@ -0,0 +1,8 @@
+[nynn.html?dialog]
+ [Create a close watcher without user activation; create a close watcher with user activation; create two close watchers without user activation]
+ expected: FAIL
+
+
+[nynn.html?CloseWatcher]
+ [Create a close watcher without user activation; create a close watcher with user activation; create two close watchers without user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/nyyn-CloseWatcher.html.ini b/tests/wpt/meta/close-watcher/user-activation/nyyn-CloseWatcher.html.ini
new file mode 100644
index 00000000000..48cd6657306
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/nyyn-CloseWatcher.html.ini
@@ -0,0 +1,3 @@
+[nyyn-CloseWatcher.html]
+ [Create a close watcher without user activation; create two close watchers with user activation; create a close watcher without user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/nyyn-dialog.html.ini b/tests/wpt/meta/close-watcher/user-activation/nyyn-dialog.html.ini
new file mode 100644
index 00000000000..a59d416371e
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/nyyn-dialog.html.ini
@@ -0,0 +1,3 @@
+[nyyn-dialog.html]
+ [Create a close watcher without user activation; create two close watchers with user activation; create a close watcher without user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/nyyyn-CloseWatcher.html.ini b/tests/wpt/meta/close-watcher/user-activation/nyyyn-CloseWatcher.html.ini
new file mode 100644
index 00000000000..75985eeeb24
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/nyyyn-CloseWatcher.html.ini
@@ -0,0 +1,3 @@
+[nyyyn-CloseWatcher.html]
+ [Create a close watcher without user activation; create three close watchers with user activation; create a close watcher without user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/nyyyn-dialog.html.ini b/tests/wpt/meta/close-watcher/user-activation/nyyyn-dialog.html.ini
new file mode 100644
index 00000000000..d63a1f96174
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/nyyyn-dialog.html.ini
@@ -0,0 +1,3 @@
+[nyyyn-dialog.html]
+ [Create a close watcher without user activation; create three close watchers with user activation; create a close watcher without user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/y-dialog-disconnected.html.ini b/tests/wpt/meta/close-watcher/user-activation/y-dialog-disconnected.html.ini
new file mode 100644
index 00000000000..5bb33b0c07e
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/y-dialog-disconnected.html.ini
@@ -0,0 +1,3 @@
+[y-dialog-disconnected.html]
+ [Disconnect dialog with close request]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/y-popover-disconnected.html.ini b/tests/wpt/meta/close-watcher/user-activation/y-popover-disconnected.html.ini
new file mode 100644
index 00000000000..06c571486d7
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/y-popover-disconnected.html.ini
@@ -0,0 +1,3 @@
+[y-popover-disconnected.html]
+ [Disconnect popover with close request]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/y.html.ini b/tests/wpt/meta/close-watcher/user-activation/y.html.ini
new file mode 100644
index 00000000000..36c23843b85
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/y.html.ini
@@ -0,0 +1,8 @@
+[y.html?dialog]
+ [Create a close watcher with user activation]
+ expected: FAIL
+
+
+[y.html?CloseWatcher]
+ [Create a close watcher with user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/yn-activate.html.ini b/tests/wpt/meta/close-watcher/user-activation/yn-activate.html.ini
new file mode 100644
index 00000000000..a16e0962e75
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/yn-activate.html.ini
@@ -0,0 +1,8 @@
+[yn-activate.html?dialog]
+ [Create a close watcher with user activation; create a close watcher without user activation; send user activation]
+ expected: FAIL
+
+
+[yn-activate.html?CloseWatcher]
+ [Create a close watcher with user activation; create a close watcher without user activation; send user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/yn.html.ini b/tests/wpt/meta/close-watcher/user-activation/yn.html.ini
new file mode 100644
index 00000000000..a6e37ea4cf4
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/yn.html.ini
@@ -0,0 +1,8 @@
+[yn.html?dialog]
+ [Create a close watcher with user activation; create a close watcher without user activation]
+ expected: FAIL
+
+
+[yn.html?CloseWatcher]
+ [Create a close watcher with user activation; create a close watcher without user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/ynn-CloseWatcher.html.ini b/tests/wpt/meta/close-watcher/user-activation/ynn-CloseWatcher.html.ini
new file mode 100644
index 00000000000..df2246e1d4f
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/ynn-CloseWatcher.html.ini
@@ -0,0 +1,3 @@
+[ynn-CloseWatcher.html]
+ [Create a close watcher with user activation; create two close watchers without user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/ynn-dialog.html.ini b/tests/wpt/meta/close-watcher/user-activation/ynn-dialog.html.ini
new file mode 100644
index 00000000000..8e3273e2964
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/ynn-dialog.html.ini
@@ -0,0 +1,3 @@
+[ynn-dialog.html]
+ [Create a close watcher with user activation; create two close watchers without user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/yy.html.ini b/tests/wpt/meta/close-watcher/user-activation/yy.html.ini
new file mode 100644
index 00000000000..5dea5050b8b
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/yy.html.ini
@@ -0,0 +1,8 @@
+[yy.html?dialog]
+ [Create two close watchers with user activation]
+ expected: FAIL
+
+
+[yy.html?CloseWatcher]
+ [Create two close watchers with user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/yyn.html.ini b/tests/wpt/meta/close-watcher/user-activation/yyn.html.ini
new file mode 100644
index 00000000000..cbddcd60b4c
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/yyn.html.ini
@@ -0,0 +1,8 @@
+[yyn.html?CloseWatcher]
+ [Create two close watchers with user activation; create a close watcher without user activation]
+ expected: FAIL
+
+
+[yyn.html?dialog]
+ [Create two close watchers with user activation; create a close watcher without user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/yyy-CloseWatcher-dialog-popover.html.ini b/tests/wpt/meta/close-watcher/user-activation/yyy-CloseWatcher-dialog-popover.html.ini
new file mode 100644
index 00000000000..e0f9a1ddded
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/yyy-CloseWatcher-dialog-popover.html.ini
@@ -0,0 +1,3 @@
+[yyy-CloseWatcher-dialog-popover.html]
+ [Create a CloseWatcher with user activation; create a dialog with user activation; create a popover with user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/yyy-activate-CloseWatcher-dialog-popover.html.ini b/tests/wpt/meta/close-watcher/user-activation/yyy-activate-CloseWatcher-dialog-popover.html.ini
new file mode 100644
index 00000000000..0a067bd8e17
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/yyy-activate-CloseWatcher-dialog-popover.html.ini
@@ -0,0 +1,3 @@
+[yyy-activate-CloseWatcher-dialog-popover.html]
+ [Create a CloseWatcher with user activation; create a dialog with user activation; create a popover with user activation; sending user activation before each close request]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/yyy-popovers.html.ini b/tests/wpt/meta/close-watcher/user-activation/yyy-popovers.html.ini
new file mode 100644
index 00000000000..5030d6fae4d
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/yyy-popovers.html.ini
@@ -0,0 +1,3 @@
+[yyy-popovers.html]
+ [Create three popovers with user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/close-watcher/user-activation/yyy.html.ini b/tests/wpt/meta/close-watcher/user-activation/yyy.html.ini
new file mode 100644
index 00000000000..51fbed1c06e
--- /dev/null
+++ b/tests/wpt/meta/close-watcher/user-activation/yyy.html.ini
@@ -0,0 +1,8 @@
+[yyy.html?dialog]
+ [Create three close watchers with user activation]
+ expected: FAIL
+
+
+[yyy.html?CloseWatcher]
+ [Create three close watchers with user activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/cookies/attributes/attributes-ctl.sub.html.ini b/tests/wpt/meta/cookies/attributes/attributes-ctl.sub.html.ini
new file mode 100644
index 00000000000..baf9ee0a66f
--- /dev/null
+++ b/tests/wpt/meta/cookies/attributes/attributes-ctl.sub.html.ini
@@ -0,0 +1,1071 @@
+[attributes-ctl.sub.html]
+ [Cookie with %x0 in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x0 in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x0 in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x0 after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x0 in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x0 after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x0 in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x0 after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x0 in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x0 in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x0 after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1 in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1 in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1 in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1 after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1 in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1 after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1 in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1 after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1 in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1 in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1 after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x2 in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x2 in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x2 in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x2 after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x2 in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x2 after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x2 in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x2 after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x2 in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x2 in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x2 after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x3 in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x3 in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x3 in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x3 after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x3 in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x3 after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x3 in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x3 after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x3 in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x3 in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x3 after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x4 in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x4 in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x4 in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x4 after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x4 in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x4 after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x4 in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x4 after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x4 in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x4 in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x4 after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x5 in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x5 in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x5 in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x5 after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x5 in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x5 after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x5 in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x5 after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x5 in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x5 in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x5 after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x6 in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x6 in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x6 in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x6 after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x6 in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x6 after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x6 in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x6 after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x6 in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x6 in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x6 after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x7 in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x7 in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x7 in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x7 after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x7 in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x7 after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x7 in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x7 after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x7 in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x7 in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x7 after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x8 in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x8 in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x8 in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x8 after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x8 in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x8 after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x8 in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x8 after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x8 in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x8 in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x8 after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x9 after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xa in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xa after Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xa in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xa after Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xa in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xa after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xa in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xa after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xa in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xa in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xa in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xa after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xb in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xb after Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xb in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xb after Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xb in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xb after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xb in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xb after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xb in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xb in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xb in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xb after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xc in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xc after Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xc in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xc after Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xc in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xc after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xc in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xc after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xc in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xc in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xc in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xc after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xd in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xd after Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xd in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xd after Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xd in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xd after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xd in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xd after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xd in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xd in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xd in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xd after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xe in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xe in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xe in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xe after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xe in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xe after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xe in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xe after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xe in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xe in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xe after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xf in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xf in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xf in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xf after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xf in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xf after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xf in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xf after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xf in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xf in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %xf after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x10 in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x10 in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x10 in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x10 after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x10 in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x10 after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x10 in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x10 after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x10 in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x10 in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x10 after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x11 in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x11 in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x11 in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x11 after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x11 in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x11 after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x11 in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x11 after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x11 in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x11 in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x11 after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x12 in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x12 in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x12 in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x12 after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x12 in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x12 after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x12 in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x12 after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x12 in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x12 in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x12 after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x13 in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x13 in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x13 in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x13 after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x13 in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x13 after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x13 in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x13 after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x13 in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x13 in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x13 after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x14 in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x14 in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x14 in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x14 after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x14 in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x14 after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x14 in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x14 after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x14 in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x14 in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x14 after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x15 in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x15 in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x15 in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x15 after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x15 in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x15 after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x15 in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x15 after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x15 in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x15 in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x15 after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x16 in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x16 in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x16 in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x16 after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x16 in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x16 after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x16 in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x16 after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x16 in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x16 in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x16 after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x17 in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x17 in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x17 in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x17 after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x17 in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x17 after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x17 in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x17 after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x17 in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x17 in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x17 after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x18 in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x18 in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x18 in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x18 after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x18 in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x18 after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x18 in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x18 after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x18 in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x18 in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x18 after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x19 in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x19 in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x19 in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x19 after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x19 in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x19 after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x19 in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x19 after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x19 in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x19 in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x19 after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1a in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1a in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1a in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1a after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1a in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1a after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1a in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1a after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1a in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1a in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1a after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1b in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1b in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1b in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1b after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1b in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1b after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1b in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1b after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1b in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1b in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1b after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1c in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1c in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1c in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1c after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1c in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1c after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1c in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1c after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1c in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1c in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1c after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1d in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1d in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1d in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1d after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1d in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1d after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1d in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1d after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1d in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1d in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1d after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1e in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1e in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1e in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1e after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1e in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1e after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1e in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1e after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1e in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1e in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1e after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1f in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1f in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1f in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1f after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1f in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1f after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1f in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1f after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1f in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1f in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x1f after SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x7f in Domain attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x7f in Path attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x7f in Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x7f after Max-Age attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x7f in Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x7f after Expires attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x7f in Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x7f after Secure attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x7f in HttpOnly attribute is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x7f in SameSite attribute value is handled correctly.]
+ expected: FAIL
+
+ [Cookie with %x7f after SameSite attribute value is handled correctly.]
+ expected: FAIL
diff --git a/tests/wpt/meta/cookies/attributes/domain.sub.html.ini b/tests/wpt/meta/cookies/attributes/domain.sub.html.ini
new file mode 100644
index 00000000000..858ec0b40b7
--- /dev/null
+++ b/tests/wpt/meta/cookies/attributes/domain.sub.html.ini
@@ -0,0 +1,12 @@
+[domain.sub.html]
+ [Cookie returned for bare domain attribute following mismatched domain attribute (after redirect to same-origin page).]
+ expected: FAIL
+
+ [No cookie returned for domain with single dot ('.') value.]
+ expected: FAIL
+
+ [Empty domain treated as host cookie 1]
+ expected: FAIL
+
+ [Empty domain treated as host cookie 2]
+ expected: FAIL
diff --git a/tests/wpt/meta/cookies/attributes/max-age.html.ini b/tests/wpt/meta/cookies/attributes/max-age.html.ini
index 6726c070970..98222eb0ca9 100644
--- a/tests/wpt/meta/cookies/attributes/max-age.html.ini
+++ b/tests/wpt/meta/cookies/attributes/max-age.html.ini
@@ -2,3 +2,5 @@
[Set mulitiple cookies with valid max-age values]
expected: FAIL
+ [Set multiple cookies with valid max-age values]
+ expected: FAIL
diff --git a/tests/wpt/meta/cookies/name/name-ctl.html.ini b/tests/wpt/meta/cookies/name/name-ctl.html.ini
index b0f6753bf59..bbf26690b31 100644
--- a/tests/wpt/meta/cookies/name/name-ctl.html.ini
+++ b/tests/wpt/meta/cookies/name/name-ctl.html.ini
@@ -1,5 +1,4 @@
[name-ctl.html]
- expected: ERROR
[Cookie with %x0 in name is truncated.]
expected: FAIL
@@ -369,3 +368,185 @@
[Cookie with %x7f after %xd in name is truncated.]
expected: NOTRUN
+ [Cookie with %x0 in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x1 in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x2 in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x3 in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x4 in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x5 in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x6 in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x7 in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x8 in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %xa in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %xb in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %xc in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %xd in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %xe in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %xf in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x10 in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x11 in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x12 in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x13 in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x14 in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x15 in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x16 in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x17 in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x18 in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x19 in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x1a in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x1b in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x1c in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x1d in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x1e in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x1f in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x7f in name is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x1 in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x2 in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x3 in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x4 in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x5 in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x6 in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x7 in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x8 in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %xb in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %xc in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %xe in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %xf in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x10 in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x11 in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x12 in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x13 in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x14 in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x15 in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x16 in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x17 in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x18 in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x19 in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x1a in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x1b in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x1c in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x1d in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x1e in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x1f in name is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x7f in name is rejected (HTTP).]
+ expected: FAIL
diff --git a/tests/wpt/meta/cookies/name/name.html.ini b/tests/wpt/meta/cookies/name/name.html.ini
index 211ee6bc1ca..db5932d9bc4 100644
--- a/tests/wpt/meta/cookies/name/name.html.ini
+++ b/tests/wpt/meta/cookies/name/name.html.ini
@@ -20,80 +20,17 @@
[Return the most recent nameless cookie]
expected: FAIL
- [Name is set as expected for "a=test]
- expected: FAIL
-
- [Name is set as expected for 1=test]
- expected: FAIL
-
[Return the most recent nameless cookie, without leading =]
expected: FAIL
- [Ignore cookie with no name or value]
- expected: FAIL
-
[Return the most recent nameless cookie, even if preceded by =]
expected: FAIL
- [Ignore cookie with empty name and empty value]
- expected: FAIL
-
- [Name is set as expected for $a=test]
- expected: FAIL
-
- [Name is set as expected for (a=test]
- expected: FAIL
-
- [Name is set as expected for @a=test]
- expected: FAIL
-
- [Name is set as expected for *a=test]
- expected: FAIL
-
- [Name is set as expected for -a=test]
- expected: FAIL
-
- [Name is set as expected for _a=test]
- expected: FAIL
-
- [Name is set as expected for &a=test]
- expected: FAIL
-
- [Name is set as expected for a=test]
- expected: FAIL
-
- [Name is set as expected for #a=test]
- expected: FAIL
-
[Return the most recent nameless cookie, even if preceded by =, in addition to other valid cookie]
expected: FAIL
- [Name is set as expected for ^a=test]
- expected: FAIL
-
- [Name is set as expected for !a=test]
- expected: FAIL
-
[Overwrite nameless cookie]
expected: FAIL
- [Name is set as expected for %a=test]
- expected: FAIL
-
- [Name is set as expected for +=test]
- expected: FAIL
-
- [Name is set as expected for "a=b"=test]
- expected: FAIL
-
[Set nameless cookie, given `Set-Cookie: =test16`]
expected: FAIL
-
- [Name is set as expected for )a=test]
- expected: FAIL
-
- [Name is set as expected for $=test]
- expected: FAIL
-
- [URL-encoded cookie name is not decoded]
- expected: FAIL
diff --git a/tests/wpt/meta/cookies/partitioned-cookies/partitioned-cookies-samesite-attribute.https.html.ini b/tests/wpt/meta/cookies/partitioned-cookies/partitioned-cookies-samesite-attribute.https.html.ini
new file mode 100644
index 00000000000..2a0bf056dd6
--- /dev/null
+++ b/tests/wpt/meta/cookies/partitioned-cookies/partitioned-cookies-samesite-attribute.https.html.ini
@@ -0,0 +1,3 @@
+[partitioned-cookies-samesite-attribute.https.html]
+ [In top-level contexts, partitioned cookies default to the same SameSite attribute as unpartitioned cookies.]
+ expected: FAIL
diff --git a/tests/wpt/meta/cookies/samesite/get_all_cookies-default-samesite.html.ini b/tests/wpt/meta/cookies/samesite/get_all_cookies-default-samesite.html.ini
new file mode 100644
index 00000000000..6219d6e45af
--- /dev/null
+++ b/tests/wpt/meta/cookies/samesite/get_all_cookies-default-samesite.html.ini
@@ -0,0 +1,3 @@
+[get_all_cookies-default-samesite.html]
+ [Get all cookies w/ default SameSite]
+ expected: FAIL
diff --git a/tests/wpt/meta/cookies/samesite/get_named_cookie-default-samesite.html.ini b/tests/wpt/meta/cookies/samesite/get_named_cookie-default-samesite.html.ini
new file mode 100644
index 00000000000..a08ca555f96
--- /dev/null
+++ b/tests/wpt/meta/cookies/samesite/get_named_cookie-default-samesite.html.ini
@@ -0,0 +1,3 @@
+[get_named_cookie-default-samesite.html]
+ [Get Named cookie w/ default SameSite]
+ expected: FAIL
diff --git a/tests/wpt/meta/cookies/size/attributes.www.sub.html.ini b/tests/wpt/meta/cookies/size/attributes.www.sub.html.ini
index 498271e7243..65f3dcb8ebf 100644
--- a/tests/wpt/meta/cookies/size/attributes.www.sub.html.ini
+++ b/tests/wpt/meta/cookies/size/attributes.www.sub.html.ini
@@ -11,5 +11,5 @@
[Too long domain attribute (>1024 bytes) is ignored]
expected: FAIL
- [Max length negative Max-Age attribute value (1024 bytes) doesn't get ignored]
+ [Too long negative Max-Age attribute value (>1024 bytes) gets ignored]
expected: FAIL
diff --git a/tests/wpt/meta/cookies/size/name-and-value.html.ini b/tests/wpt/meta/cookies/size/name-and-value.html.ini
index 1cdc55ce261..524210af9bb 100644
--- a/tests/wpt/meta/cookies/size/name-and-value.html.ini
+++ b/tests/wpt/meta/cookies/size/name-and-value.html.ini
@@ -2,15 +2,9 @@
[Ignore cookie with name larger than 4096 and 1 byte value]
expected: FAIL
- [Set max-size value-less cookie]
- expected: FAIL
-
[Ignore value-less cookie with name larger than 4096 bytes]
expected: FAIL
- [Set max-size cookie with largest possible value (4095 bytes)]
- expected: FAIL
-
[Ignore named cookie (with non-zero length) and value larger than 4095 bytes]
expected: FAIL
@@ -19,12 +13,3 @@
[Set max-size name-less cookie]
expected: FAIL
-
- [Ignore name-less cookie with value larger than 4096 bytes]
- expected: FAIL
-
- [Ignore name-less cookie (without leading =) with value larger than 4096 bytes]
- expected: FAIL
-
- [Set max-size cookie that also has an attribute]
- expected: FAIL
diff --git a/tests/wpt/meta/cookies/third-party-cookies/third-party-cookie-heuristics.tentative.https.html.ini b/tests/wpt/meta/cookies/third-party-cookies/third-party-cookie-heuristics.tentative.https.html.ini
new file mode 100644
index 00000000000..877ec00d844
--- /dev/null
+++ b/tests/wpt/meta/cookies/third-party-cookies/third-party-cookie-heuristics.tentative.https.html.ini
@@ -0,0 +1,7 @@
+[third-party-cookie-heuristics.tentative.https.html]
+ expected: ERROR
+ [3P fetch: Cookies are not accessible via HTTP]
+ expected: FAIL
+
+ [3P fetch: Cross site window setting HTTP cookies]
+ expected: FAIL
diff --git a/tests/wpt/meta/cookies/third-party-cookies/third-party-cookies.tentative.https.html.ini b/tests/wpt/meta/cookies/third-party-cookies/third-party-cookies.tentative.https.html.ini
deleted file mode 100644
index 5c59aab6090..00000000000
--- a/tests/wpt/meta/cookies/third-party-cookies/third-party-cookies.tentative.https.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[third-party-cookies.tentative.https.html]
- expected: ERROR
diff --git a/tests/wpt/meta/cookies/value/value-ctl.html.ini b/tests/wpt/meta/cookies/value/value-ctl.html.ini
index ffb4f2a0949..616e92f6d01 100644
--- a/tests/wpt/meta/cookies/value/value-ctl.html.ini
+++ b/tests/wpt/meta/cookies/value/value-ctl.html.ini
@@ -1,5 +1,4 @@
[value-ctl.html]
- expected: ERROR
[Cookie with %x0 in value is truncated.]
expected: FAIL
@@ -369,3 +368,185 @@
[Cookie with %x7f after %xd in value is truncated.]
expected: NOTRUN
+ [Cookie with %x0 in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x1 in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x2 in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x3 in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x4 in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x5 in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x6 in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x7 in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x8 in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %xa in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %xb in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %xc in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %xd in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %xe in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %xf in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x10 in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x11 in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x12 in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x13 in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x14 in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x15 in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x16 in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x17 in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x18 in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x19 in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x1a in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x1b in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x1c in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x1d in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x1e in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x1f in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x7f in value is rejected (DOM).]
+ expected: FAIL
+
+ [Cookie with %x1 in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x2 in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x3 in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x4 in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x5 in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x6 in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x7 in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x8 in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %xb in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %xc in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %xe in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %xf in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x10 in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x11 in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x12 in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x13 in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x14 in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x15 in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x16 in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x17 in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x18 in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x19 in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x1a in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x1b in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x1c in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x1d in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x1e in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x1f in value is rejected (HTTP).]
+ expected: FAIL
+
+ [Cookie with %x7f in value is rejected (HTTP).]
+ expected: FAIL
diff --git a/tests/wpt/meta/core-aam/role/roles-contextual.html.ini b/tests/wpt/meta/core-aam/role/roles-contextual.html.ini
new file mode 100644
index 00000000000..197d825670d
--- /dev/null
+++ b/tests/wpt/meta/core-aam/role/roles-contextual.html.ini
@@ -0,0 +1,24 @@
+[roles-contextual.html]
+ [role-map-region-nameless]
+ expected: FAIL
+
+ [role-map-region-aria-label-empty]
+ expected: FAIL
+
+ [role-map-region-aria-label-whitespace]
+ expected: FAIL
+
+ [role-map-region-aria-labelledby-non-existing]
+ expected: FAIL
+
+ [role-map-region-aria-labelledby-empty]
+ expected: FAIL
+
+ [role-map-region-aria-labelledby-whitespace]
+ expected: FAIL
+
+ [role-map-region-title-empty]
+ expected: FAIL
+
+ [role-map-region-title-whitespace]
+ expected: FAIL
diff --git a/tests/wpt/meta/credential-management/non-fully-active.https.html.ini b/tests/wpt/meta/credential-management/non-fully-active.https.html.ini
new file mode 100644
index 00000000000..57ca72531fe
--- /dev/null
+++ b/tests/wpt/meta/credential-management/non-fully-active.https.html.ini
@@ -0,0 +1,3 @@
+[non-fully-active.https.html]
+ [non-fully active document behavior for CredentialsContainer]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-anchor-position/popover-implicit-anchor.html.ini b/tests/wpt/meta/css/css-anchor-position/popover-implicit-anchor.html.ini
new file mode 100644
index 00000000000..595dd845616
--- /dev/null
+++ b/tests/wpt/meta/css/css-anchor-position/popover-implicit-anchor.html.ini
@@ -0,0 +1,3 @@
+[popover-implicit-anchor.html]
+ [Popover invokers form an implicit anchor reference]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-cascade/scope-focus.html.ini b/tests/wpt/meta/css/css-cascade/scope-focus.html.ini
new file mode 100644
index 00000000000..5f26024c0d9
--- /dev/null
+++ b/tests/wpt/meta/css/css-cascade/scope-focus.html.ini
@@ -0,0 +1,12 @@
+[scope-focus.html]
+ [:focus via :scope in subject]
+ expected: FAIL
+
+ [:focus via :scope in non-subject]
+ expected: FAIL
+
+ [:focus in limit, :scope in subject]
+ expected: FAIL
+
+ [:focus in intermediate limit, :scope in subject]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-cascade/scope-hover.html.ini b/tests/wpt/meta/css/css-cascade/scope-hover.html.ini
new file mode 100644
index 00000000000..fb1122da2a2
--- /dev/null
+++ b/tests/wpt/meta/css/css-cascade/scope-hover.html.ini
@@ -0,0 +1,12 @@
+[scope-hover.html]
+ [:hover via :scope in subject]
+ expected: FAIL
+
+ [:hover via :scope in non-subject]
+ expected: FAIL
+
+ [:hover in limit, :scope in subject]
+ expected: FAIL
+
+ [:hover in intermediate limit, :scope in subject]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-arrow-key-scroll.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-arrow-key-scroll.html.ini
new file mode 100644
index 00000000000..21bde9bed54
--- /dev/null
+++ b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-arrow-key-scroll.html.ini
@@ -0,0 +1,2 @@
+[scroll-direction-arrow-key-scroll.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-home-end-scroll.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-home-end-scroll.html.ini
new file mode 100644
index 00000000000..a2af43a9ecd
--- /dev/null
+++ b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-home-end-scroll.html.ini
@@ -0,0 +1,2 @@
+[scroll-direction-home-end-scroll.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-keyboard-scroll-on-body.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-keyboard-scroll-on-body.html.ini
new file mode 100644
index 00000000000..bd02bac40f8
--- /dev/null
+++ b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-keyboard-scroll-on-body.html.ini
@@ -0,0 +1,2 @@
+[scroll-direction-keyboard-scroll-on-body.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-keyboard-scroll-on-root.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-keyboard-scroll-on-root.html.ini
new file mode 100644
index 00000000000..7013c34ddd8
--- /dev/null
+++ b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-keyboard-scroll-on-root.html.ini
@@ -0,0 +1,2 @@
+[scroll-direction-keyboard-scroll-on-root.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-mouse-drag-scroll.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-mouse-drag-scroll.html.ini
new file mode 100644
index 00000000000..eec1781eb8f
--- /dev/null
+++ b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-mouse-drag-scroll.html.ini
@@ -0,0 +1,2 @@
+[scroll-direction-mouse-drag-scroll.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-multiple-scrollers.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-multiple-scrollers.html.ini
new file mode 100644
index 00000000000..b1a98c20c6a
--- /dev/null
+++ b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-multiple-scrollers.html.ini
@@ -0,0 +1,2 @@
+[scroll-direction-multiple-scrollers.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-pu-pd-scroll.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-pu-pd-scroll.html.ini
new file mode 100644
index 00000000000..95260fdeb18
--- /dev/null
+++ b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-pu-pd-scroll.html.ini
@@ -0,0 +1,2 @@
+[scroll-direction-pu-pd-scroll.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-scrollbar-button-clicks.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-scrollbar-button-clicks.html.ini
new file mode 100644
index 00000000000..1a8ca190d89
--- /dev/null
+++ b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-scrollbar-button-clicks.html.ini
@@ -0,0 +1,2 @@
+[scroll-direction-scrollbar-button-clicks.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-scrollbar-track-clicks.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-scrollbar-track-clicks.html.ini
new file mode 100644
index 00000000000..89a63546d24
--- /dev/null
+++ b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-scrollbar-track-clicks.html.ini
@@ -0,0 +1,2 @@
+[scroll-direction-scrollbar-track-clicks.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-spacebar-scroll.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-spacebar-scroll.html.ini
new file mode 100644
index 00000000000..04652854104
--- /dev/null
+++ b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-spacebar-scroll.html.ini
@@ -0,0 +1,2 @@
+[scroll-direction-spacebar-scroll.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-user-touch-scroll.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-user-touch-scroll.html.ini
new file mode 100644
index 00000000000..b5275009bc5
--- /dev/null
+++ b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-user-touch-scroll.html.ini
@@ -0,0 +1,2 @@
+[scroll-direction-user-touch-scroll.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-wheel-scroll.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-wheel-scroll.html.ini
new file mode 100644
index 00000000000..abdb25f6fa5
--- /dev/null
+++ b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-direction-wheel-scroll.html.ini
@@ -0,0 +1,2 @@
+[scroll-direction-wheel-scroll.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-snap-changing.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-snap-changing.html.ini
new file mode 100644
index 00000000000..4439509397a
--- /dev/null
+++ b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-snap-changing.html.ini
@@ -0,0 +1,2 @@
+[scroll-state-snapped-snap-changing.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/css-contain/content-visibility/content-visibility-047.html.ini b/tests/wpt/meta/css/css-contain/content-visibility/content-visibility-047.html.ini
new file mode 100644
index 00000000000..bd087792408
--- /dev/null
+++ b/tests/wpt/meta/css/css-contain/content-visibility/content-visibility-047.html.ini
@@ -0,0 +1,3 @@
+[content-visibility-047.html]
+ [Tab order navigation skips hidden subtrees]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-contain/content-visibility/content-visibility-048.html.ini b/tests/wpt/meta/css/css-contain/content-visibility/content-visibility-048.html.ini
new file mode 100644
index 00000000000..b9497e32115
--- /dev/null
+++ b/tests/wpt/meta/css/css-contain/content-visibility/content-visibility-048.html.ini
@@ -0,0 +1,6 @@
+[content-visibility-048.html]
+ [Fragment navigation with content-visibility; single text]
+ expected: FAIL
+
+ [Fragment navigation with content-visibility; range across blocks]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-contain/content-visibility/content-visibility-auto-state-changed.html.ini b/tests/wpt/meta/css/css-contain/content-visibility/content-visibility-auto-state-changed.html.ini
new file mode 100644
index 00000000000..49bba79c3bb
--- /dev/null
+++ b/tests/wpt/meta/css/css-contain/content-visibility/content-visibility-auto-state-changed.html.ini
@@ -0,0 +1,22 @@
+[content-visibility-auto-state-changed.html]
+ expected: TIMEOUT
+ [ContentVisibilityAutoStateChange fires when relevant element gains `content-visibility:auto`]
+ expected: TIMEOUT
+
+ [ContentVisibilityAutoStateChange fires when relevant element gains `content-visibility:auto` (oncontentvisibilityautostatechange syntax)]
+ expected: NOTRUN
+
+ [ContentVisibilityAutoStateChange fires when not relevant element gains `content-visibility:auto`]
+ expected: NOTRUN
+
+ [ContentVisibilityAutoStateChange content attribute test]
+ expected: NOTRUN
+
+ [ContentVisibilityAutoStateChange content attribute test on svg]
+ expected: NOTRUN
+
+ [ContentVisibilityAutoStateChange fires when skipped]
+ expected: NOTRUN
+
+ [ContentVisibilityAutoStateChange fires when not skipped]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/css-contain/content-visibility/content-visibility-auto-text-fragment.html.ini b/tests/wpt/meta/css/css-contain/content-visibility/content-visibility-auto-text-fragment.html.ini
new file mode 100644
index 00000000000..fd410673ada
--- /dev/null
+++ b/tests/wpt/meta/css/css-contain/content-visibility/content-visibility-auto-text-fragment.html.ini
@@ -0,0 +1,6 @@
+[content-visibility-auto-text-fragment.html]
+ [Fragment navigation with content-visibility; single text]
+ expected: FAIL
+
+ [Fragment navigation with content-visibility; range across blocks]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-display/accessibility/display-contents-role-and-label.html.ini b/tests/wpt/meta/css/css-display/accessibility/display-contents-role-and-label.html.ini
new file mode 100644
index 00000000000..909c2ad32ba
--- /dev/null
+++ b/tests/wpt/meta/css/css-display/accessibility/display-contents-role-and-label.html.ini
@@ -0,0 +1,219 @@
+[display-contents-role-and-label.html]
+ [tr with display: contents, within table with display: flex, has row role]
+ expected: FAIL
+
+ [td as child of tr with display: contents, within table with display: flex, has cell role]
+ expected: FAIL
+
+ [tr with display: contents, within table with role=table with display: flex, has row role]
+ expected: FAIL
+
+ [th as child of tr with display: contents, within table with role=table with display: flex, has columnheader role]
+ expected: FAIL
+
+ [td as child of tr with display: contents, within table with role=table with display: flex, has cell role]
+ expected: FAIL
+
+ [tr with display: contents, within table with role=grid with display: flex, has row role]
+ expected: FAIL
+
+ [th as child of tr with display: contents, within table with role=grid with display: flex, has columnheader role]
+ expected: FAIL
+
+ [td (no explicit role) as child of tr with display: contents, within table with role=grid with display: flex, has gridcell role]
+ expected: FAIL
+
+ [ul with display: contents, as child of div with display: grid, has list role]
+ expected: FAIL
+
+ [listitem within ul with display: contents, as child of div with display: grid, has listitem role]
+ expected: FAIL
+
+ [header with display: contents has banner role]
+ expected: FAIL
+
+ [main with display: contents has main role]
+ expected: FAIL
+
+ [footer with display: contents has contentinfo role]
+ expected: FAIL
+
+ [search with display: contents has search role]
+ expected: FAIL
+
+ [li as child of ul with role list, both with display: contents, has listitem role]
+ expected: FAIL
+
+ [li, as child of ul with role list and display: contents, has listitem role]
+ expected: FAIL
+
+ [li with display: contents, as child of ul with role list, has listitem role]
+ expected: FAIL
+
+ [li as child of ol with role list, both with display: contents, has listitem role]
+ expected: FAIL
+
+ [li, as child of ol with role list and display: contents, has listitem role]
+ expected: FAIL
+
+ [li with display: contents, as child of ol with role list, has listitem role]
+ expected: FAIL
+
+ [tr in table with role table and display: contents has row role]
+ expected: FAIL
+
+ [td within tr both with display: contents, in table with role table and display: contents, has columnheader role]
+ expected: FAIL
+
+ [td within tr in table with role table, all with display: contents, has cell role]
+ expected: FAIL
+
+ [th within table with role grid, both with display: contents, has columnheader role]
+ expected: FAIL
+
+ [td within table with role grid, both with display: contents, has gridcell role]
+ expected: FAIL
+
+ [Label: button with display: contents is labelled via referenced hidden span]
+ expected: FAIL
+
+ [Label: link with display: contents is labelled via aria-labelledby]
+ expected: FAIL
+
+ [Label: nav with display: contents is labelled via aria-labelledby]
+ expected: FAIL
+
+ [Label: button with display: contents is labelled via aria-label]
+ expected: FAIL
+
+ [Label: div with role group with display: contents is labelled via aria-label]
+ expected: FAIL
+
+ [Label: button with display: contents is labelled via label for/id association]
+ expected: FAIL
+
+ [Label: g element with display: contents, as child of svg, is labelled via title element]
+ expected: FAIL
+
+ [Label: link with display: contents is labelled via name from contents]
+ expected: FAIL
+
+ [Label: button with display: contents is labelled via name from contents]
+ expected: FAIL
+
+ [Label: h3 with display: contents is labelled via name from contents]
+ expected: FAIL
+
+ [Label: button with display: contents has button role]
+ expected: FAIL
+
+ [Label: button with explicit button role and display: contents has button role]
+ expected: FAIL
+
+ [Label: div with button role and display: contents has button role]
+ expected: FAIL
+
+ [Label: div with button role, tabindex=0 and display: contents has button role]
+ expected: FAIL
+
+ [Label: h3 with display: contents has heading role]
+ expected: FAIL
+
+ [Label: div with heading role, aria-level=3 and display: contents has heading role]
+ expected: FAIL
+
+ [Label: span with heading role, aria-level=1 and display: contents has heading role]
+ expected: FAIL
+
+ [Label: nav with display: contents and aria-label has navigation role]
+ expected: FAIL
+
+ [Label: aside with display: contents and aria-label has complementary role]
+ expected: FAIL
+
+ [Label: form with display: contents has form role]
+ expected: FAIL
+
+ [Label: section with aria-label and display: contents has region role]
+ expected: FAIL
+
+ [Label: div with role navigation, aria-label and display: contents has navigation role]
+ expected: FAIL
+
+ [Label: div with role complementary, aria-label and display: contents has complementary role]
+ expected: FAIL
+
+ [Label: div with role form, aria-label and display: contents has form role]
+ expected: FAIL
+
+ [Label: div with role search and display: contents has search role]
+ expected: FAIL
+
+ [Label: div with role region, aria-label and display: contents has region role]
+ expected: FAIL
+
+ [Label: link with display: contents has link role]
+ expected: FAIL
+
+ [Label: link with explicit link role and display: contents has link role]
+ expected: FAIL
+
+ [Label: div with link role and display: contents has link role]
+ expected: FAIL
+
+ [Label: div with link role, tabindex=0 and display: contents has link role]
+ expected: FAIL
+
+ [Role: button with display: contents is labelled via referenced hidden span]
+ expected: FAIL
+
+ [Role: link with display: contents is labelled via aria-labelledby]
+ expected: FAIL
+
+ [Role: nav with display: contents is labelled via aria-labelledby]
+ expected: FAIL
+
+ [Role: button with display: contents is labelled via aria-label]
+ expected: FAIL
+
+ [Role: button with display: contents is labelled via label for/id association]
+ expected: FAIL
+
+ [Role: g element with display: contents, as child of svg, is labelled via title element]
+ expected: FAIL
+
+ [Role: link with display: contents is labelled via name from contents]
+ expected: FAIL
+
+ [Role: button with display: contents is labelled via name from contents]
+ expected: FAIL
+
+ [Role: h3 with display: contents is labelled via name from contents]
+ expected: FAIL
+
+ [Role: button with display: contents has button role]
+ expected: FAIL
+
+ [Role: h3 with display: contents has heading role]
+ expected: FAIL
+
+ [Role: nav with display: contents and aria-label has navigation role]
+ expected: FAIL
+
+ [Role: aside with display: contents and aria-label has complementary role]
+ expected: FAIL
+
+ [Role: form with display: contents has form role]
+ expected: FAIL
+
+ [Role: section with aria-label and display: contents has region role]
+ expected: FAIL
+
+ [Role: link with display: contents has link role]
+ expected: FAIL
+
+ [div with display: contents has generic role]
+ expected: FAIL
+
+ [span with display: contents has generic role]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/column-scroll-marker-003.html.ini b/tests/wpt/meta/css/css-overflow/column-scroll-marker-003.html.ini
new file mode 100644
index 00000000000..ed796437773
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/column-scroll-marker-003.html.ini
@@ -0,0 +1,21 @@
+[column-scroll-marker-003.html]
+ [Scroll second column into view]
+ expected: FAIL
+
+ [Scroll third column into view]
+ expected: FAIL
+
+ [Scroll fourth column into view]
+ expected: FAIL
+
+ [Scroll fifth column into view]
+ expected: FAIL
+
+ [Scroll fourth column into view again]
+ expected: FAIL
+
+ [Scroll third column into view again]
+ expected: FAIL
+
+ [Scroll second column into view again]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/column-scroll-marker-005.html.ini b/tests/wpt/meta/css/css-overflow/column-scroll-marker-005.html.ini
new file mode 100644
index 00000000000..47bb807a47e
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/column-scroll-marker-005.html.ini
@@ -0,0 +1,21 @@
+[column-scroll-marker-005.html]
+ [Scroll second column into view]
+ expected: FAIL
+
+ [Scroll third column into view]
+ expected: FAIL
+
+ [Scroll fourth column into view]
+ expected: FAIL
+
+ [Scroll fifth column into view]
+ expected: FAIL
+
+ [Scroll fourth column into view again]
+ expected: FAIL
+
+ [Scroll third column into view again]
+ expected: FAIL
+
+ [Scroll second column into view again]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/column-scroll-marker-010.html.ini b/tests/wpt/meta/css/css-overflow/column-scroll-marker-010.html.ini
new file mode 100644
index 00000000000..2f0284b5b31
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/column-scroll-marker-010.html.ini
@@ -0,0 +1,24 @@
+[column-scroll-marker-010.html]
+ [Scroll second column into view]
+ expected: FAIL
+
+ [Scroll third column into view]
+ expected: FAIL
+
+ [Scroll fourth column into view]
+ expected: FAIL
+
+ [Scroll fifth column into view]
+ expected: FAIL
+
+ [Scroll fourth column into view again]
+ expected: FAIL
+
+ [Scroll third column into view again]
+ expected: FAIL
+
+ [Scroll second column into view again]
+ expected: FAIL
+
+ [Scroll first column into view]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/column-scroll-marker-focus-001.html.ini b/tests/wpt/meta/css/css-overflow/column-scroll-marker-focus-001.html.ini
new file mode 100644
index 00000000000..d7817cd9749
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/column-scroll-marker-focus-001.html.ini
@@ -0,0 +1,24 @@
+[column-scroll-marker-focus-001.html]
+ [Column 4]
+ expected: FAIL
+
+ [Column #3]
+ expected: FAIL
+
+ [Column #1]
+ expected: FAIL
+
+ [Column #0]
+ expected: FAIL
+
+ [Column #8]
+ expected: FAIL
+
+ [Column 7]
+ expected: FAIL
+
+ [Column 6]
+ expected: FAIL
+
+ [Column 5]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/column-scroll-marker-focus-002.html.ini b/tests/wpt/meta/css/css-overflow/column-scroll-marker-focus-002.html.ini
new file mode 100644
index 00000000000..47cbf404296
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/column-scroll-marker-focus-002.html.ini
@@ -0,0 +1,15 @@
+[column-scroll-marker-focus-002.html]
+ [Column #1]
+ expected: FAIL
+
+ [Column #2]
+ expected: FAIL
+
+ [Column #0]
+ expected: FAIL
+
+ [Column #4]
+ expected: FAIL
+
+ [Column #3]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/column-scroll-marker-focus-003.html.ini b/tests/wpt/meta/css/css-overflow/column-scroll-marker-focus-003.html.ini
new file mode 100644
index 00000000000..aeadf29519c
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/column-scroll-marker-focus-003.html.ini
@@ -0,0 +1,15 @@
+[column-scroll-marker-focus-003.html]
+ [Focus second column]
+ expected: FAIL
+
+ [Focus third column]
+ expected: FAIL
+
+ [Focus fourth column]
+ expected: FAIL
+
+ [Focus fifth column]
+ expected: FAIL
+
+ [Focus sixth column]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/column-scroll-marker-focus-004.html.ini b/tests/wpt/meta/css/css-overflow/column-scroll-marker-focus-004.html.ini
new file mode 100644
index 00000000000..410b8318c48
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/column-scroll-marker-focus-004.html.ini
@@ -0,0 +1,27 @@
+[column-scroll-marker-focus-004.html]
+ [Focus column #1]
+ expected: FAIL
+
+ [Focus column #2]
+ expected: FAIL
+
+ [Focus column #8]
+ expected: FAIL
+
+ [Focus column #7]
+ expected: FAIL
+
+ [Focus column #6]
+ expected: FAIL
+
+ [Focus column #5]
+ expected: FAIL
+
+ [Focus column #4]
+ expected: FAIL
+
+ [Focus column #3]
+ expected: FAIL
+
+ [Focus column #0]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/keyboard-scroll.html.ini b/tests/wpt/meta/css/css-overflow/keyboard-scroll.html.ini
new file mode 100644
index 00000000000..bd4358182b0
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/keyboard-scroll.html.ini
@@ -0,0 +1,10 @@
+[keyboard-scroll.html]
+ expected: TIMEOUT
+ [Keyboard scrolling scrolls the scroller when clicked target is removed]
+ expected: TIMEOUT
+
+ [Keyboard scrolling scrolls the scroller when clicked children are removed]
+ expected: NOTRUN
+
+ [Keyboard scrolling scrolls the next nearest scroller if the clicked scroller is removed]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/css-overflow/resizer-transform.tentative.html.ini b/tests/wpt/meta/css/css-overflow/resizer-transform.tentative.html.ini
new file mode 100644
index 00000000000..0c7f8f84748
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/resizer-transform.tentative.html.ini
@@ -0,0 +1,3 @@
+[resizer-transform.tentative.html]
+ [Resizer should account for transforms to decide resize direction]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/root-scroll-button-activation.html.ini b/tests/wpt/meta/css/css-overflow/root-scroll-button-activation.html.ini
new file mode 100644
index 00000000000..6c7b9bd26b2
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/root-scroll-button-activation.html.ini
@@ -0,0 +1,3 @@
+[root-scroll-button-activation.html]
+ [CSS Overflow: ::scroll-button on root element activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/root-scroll-marker-activation-and-scroll-tracking.html.ini b/tests/wpt/meta/css/css-overflow/root-scroll-marker-activation-and-scroll-tracking.html.ini
new file mode 100644
index 00000000000..2773a9a19b3
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/root-scroll-marker-activation-and-scroll-tracking.html.ini
@@ -0,0 +1,3 @@
+[root-scroll-marker-activation-and-scroll-tracking.html]
+ [CSS Overflow: ::scroll-marker with ::scroll-marker-group on root element scroll tracking]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/root-scroll-marker-activation-in-iframe.html.ini b/tests/wpt/meta/css/css-overflow/root-scroll-marker-activation-in-iframe.html.ini
new file mode 100644
index 00000000000..3dddfd93de9
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/root-scroll-marker-activation-in-iframe.html.ini
@@ -0,0 +1,4 @@
+[root-scroll-marker-activation-in-iframe.html]
+ expected: TIMEOUT
+ [CSS Overflow: ::scroll-marker with ::scroll-marker-group on root element doesn't propagate scrolling]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-overflow/scroll-button-activation-content-hit-test.html.ini b/tests/wpt/meta/css/css-overflow/scroll-button-activation-content-hit-test.html.ini
new file mode 100644
index 00000000000..51a6526036a
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-button-activation-content-hit-test.html.ini
@@ -0,0 +1,3 @@
+[scroll-button-activation-content-hit-test.html]
+ [CSS Test: ::scroll-button() activation by clicking on text content area]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-button-and-scroll-marker-not-in-event-path.html.ini b/tests/wpt/meta/css/css-overflow/scroll-button-and-scroll-marker-not-in-event-path.html.ini
new file mode 100644
index 00000000000..f73fad5697e
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-button-and-scroll-marker-not-in-event-path.html.ini
@@ -0,0 +1,3 @@
+[scroll-button-and-scroll-marker-not-in-event-path.html]
+ [CSS Overflow Test: ::scroll-button and ::scroll-marker pseudo-elements are not present in event path]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-button-disabled-no-focus.html.ini b/tests/wpt/meta/css/css-overflow/scroll-button-disabled-no-focus.html.ini
new file mode 100644
index 00000000000..8a98573599c
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-button-disabled-no-focus.html.ini
@@ -0,0 +1,3 @@
+[scroll-button-disabled-no-focus.html]
+ [CSS Test: disabled ::scroll-button() shouldn't be focusable]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-button-disposed-event-target.html.ini b/tests/wpt/meta/css/css-overflow/scroll-button-disposed-event-target.html.ini
new file mode 100644
index 00000000000..f57c50f5337
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-button-disposed-event-target.html.ini
@@ -0,0 +1,3 @@
+[scroll-button-disposed-event-target.html]
+ [CSS Overflow: event.target for detached ::scroll-button is scroller]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-button-event-target.html.ini b/tests/wpt/meta/css/css-overflow/scroll-button-event-target.html.ini
new file mode 100644
index 00000000000..1a4564751dc
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-button-event-target.html.ini
@@ -0,0 +1,3 @@
+[scroll-button-event-target.html]
+ [CSS Overflow: event.target and event.currentTarget for ::scroll-button is scroller]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-button-hover-remove.html.ini b/tests/wpt/meta/css/css-overflow/scroll-button-hover-remove.html.ini
new file mode 100644
index 00000000000..94a1608b10d
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-button-hover-remove.html.ini
@@ -0,0 +1,3 @@
+[scroll-button-hover-remove.html]
+ [CSS Test: ::scroll-button changes on hover via :hover and removes correctly]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-button-hover.html.ini b/tests/wpt/meta/css/css-overflow/scroll-button-hover.html.ini
new file mode 100644
index 00000000000..cb8617e952a
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-button-hover.html.ini
@@ -0,0 +1,3 @@
+[scroll-button-hover.html]
+ [CSS Test: ::scroll-button changes on hover via :hover]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-buttons-activation-with-columns.html.ini b/tests/wpt/meta/css/css-overflow/scroll-buttons-activation-with-columns.html.ini
new file mode 100644
index 00000000000..32a7722e63d
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-buttons-activation-with-columns.html.ini
@@ -0,0 +1,3 @@
+[scroll-buttons-activation-with-columns.html]
+ [CSS Overflow Test: ::scroll-button() activation with column scroll markers]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-buttons-activation.html.ini b/tests/wpt/meta/css/css-overflow/scroll-buttons-activation.html.ini
new file mode 100644
index 00000000000..fc430beba69
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-buttons-activation.html.ini
@@ -0,0 +1,3 @@
+[scroll-buttons-activation.html]
+ [CSS Test: ::scroll-button() activation]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-buttons-scroll-distance.html.ini b/tests/wpt/meta/css/css-overflow/scroll-buttons-scroll-distance.html.ini
new file mode 100644
index 00000000000..6ba303a7579
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-buttons-scroll-distance.html.ini
@@ -0,0 +1,7 @@
+[scroll-buttons-scroll-distance.html]
+ expected: TIMEOUT
+ [::scroll-button(down) scrolls about a page when clicked]
+ expected: TIMEOUT
+
+ [::scroll-button(right) scrolls about a page when clicked]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/css-overflow/scroll-buttons-selection.html.ini b/tests/wpt/meta/css/css-overflow/scroll-buttons-selection.html.ini
new file mode 100644
index 00000000000..5552498d4b0
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-buttons-selection.html.ini
@@ -0,0 +1,3 @@
+[scroll-buttons-selection.html]
+ [CSS Test: ::scroll-marker click with active selection]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-013.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-013.html.ini
new file mode 100644
index 00000000000..2a1a281bacd
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-013.html.ini
@@ -0,0 +1,6 @@
+[scroll-marker-013.html]
+ [Scroll last item into view]
+ expected: FAIL
+
+ [Scroll seventh item into view]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-activation-crash.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-activation-crash.html.ini
new file mode 100644
index 00000000000..05b42a41bb5
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-activation-crash.html.ini
@@ -0,0 +1,2 @@
+[scroll-marker-activation-crash.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-activation-default-direction-position.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-activation-default-direction-position.html.ini
new file mode 100644
index 00000000000..f969ec500a4
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-activation-default-direction-position.html.ini
@@ -0,0 +1,3 @@
+[scroll-marker-activation-default-direction-position.html]
+ [CSS Overflow Test: ::scroll-marker activation scrolls into view with `start` as default direction position]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-activation-focus-behaviour-links-mode.tentative.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-activation-focus-behaviour-links-mode.tentative.html.ini
new file mode 100644
index 00000000000..99d35f29f1a
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-activation-focus-behaviour-links-mode.tentative.html.ini
@@ -0,0 +1,3 @@
+[scroll-marker-activation-focus-behaviour-links-mode.tentative.html]
+ [CSS Test: ::scroll-marker loses focus from ::scroll-marker with scroll-marker-group mode set to links]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-activation-focus-behaviour-tabs-mode.tentative.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-activation-focus-behaviour-tabs-mode.tentative.html.ini
new file mode 100644
index 00000000000..093c950d19a
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-activation-focus-behaviour-tabs-mode.tentative.html.ini
@@ -0,0 +1,3 @@
+[scroll-marker-activation-focus-behaviour-tabs-mode.tentative.html]
+ [CSS Test: ::scroll-marker retains focus on ::scroll-marker with scroll-marker-group mode set to tabs]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-activation-retains-focus.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-activation-retains-focus.html.ini
new file mode 100644
index 00000000000..9b774984ec5
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-activation-retains-focus.html.ini
@@ -0,0 +1,3 @@
+[scroll-marker-activation-retains-focus.html]
+ [CSS Test: ::scroll-marker retains focus on ::scroll-marker]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-activation-scroll.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-activation-scroll.html.ini
new file mode 100644
index 00000000000..e4f9ea3ee98
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-activation-scroll.html.ini
@@ -0,0 +1,4 @@
+[scroll-marker-activation-scroll.html]
+ expected: TIMEOUT
+ [CSS Test: ::scroll-marker only scrolls associated scrolling container]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-activation-specified-direction-position.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-activation-specified-direction-position.html.ini
new file mode 100644
index 00000000000..467d75e80ae
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-activation-specified-direction-position.html.ini
@@ -0,0 +1,3 @@
+[scroll-marker-activation-specified-direction-position.html]
+ [CSS Overflow Test: ::scroll-marker activation scrolls into view with doesn't override specified direction position with `start`]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-active-unreached-target.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-active-unreached-target.html.ini
new file mode 100644
index 00000000000..b90f185d183
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-active-unreached-target.html.ini
@@ -0,0 +1,3 @@
+[scroll-marker-active-unreached-target.html]
+ [target whose target position is not yet reached only get selected when its less than half a scroll port away.]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-disposed-event-target.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-disposed-event-target.html.ini
new file mode 100644
index 00000000000..77ed42ac7ba
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-disposed-event-target.html.ini
@@ -0,0 +1,3 @@
+[scroll-marker-disposed-event-target.html]
+ [CSS Overflow: event.target for detached ::scroll-marker is its originating element]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-double-activation.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-double-activation.html.ini
new file mode 100644
index 00000000000..bc8e74d7a2e
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-double-activation.html.ini
@@ -0,0 +1,3 @@
+[scroll-marker-double-activation.html]
+ [CSS Values Test: ::scroll-marker double activation scrolls into view twice]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-event-target.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-event-target.html.ini
new file mode 100644
index 00000000000..e539fb42463
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-event-target.html.ini
@@ -0,0 +1,3 @@
+[scroll-marker-event-target.html]
+ [CSS Overflow: event.target and event.currentTarget for ::scroll-marker is its originating element]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-focus-visible.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-focus-visible.html.ini
new file mode 100644
index 00000000000..aea7870a7e7
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-focus-visible.html.ini
@@ -0,0 +1,3 @@
+[scroll-marker-focus-visible.html]
+ [CSS Overflow Test: ::scroll-marker supports :focus-visible]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-focus-within.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-focus-within.html.ini
new file mode 100644
index 00000000000..937a1b2088e
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-focus-within.html.ini
@@ -0,0 +1,3 @@
+[scroll-marker-focus-within.html]
+ [CSS Overflow Test: focused ::scroll-marker sets :focus-within on its ::scroll-marker-group, scroller and all the ancestors]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-group-012.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-group-012.html.ini
new file mode 100644
index 00000000000..17ec0521df6
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-group-012.html.ini
@@ -0,0 +1,3 @@
+[scroll-marker-group-012.html]
+ [Click on third scroll marker]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-group-014.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-group-014.html.ini
new file mode 100644
index 00000000000..e52e5b119c4
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-group-014.html.ini
@@ -0,0 +1,3 @@
+[scroll-marker-group-014.html]
+ [Click on third scroll marker]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-hover-logical.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-hover-logical.html.ini
new file mode 100644
index 00000000000..d20ff2ca58d
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-hover-logical.html.ini
@@ -0,0 +1,3 @@
+[scroll-marker-hover-logical.html]
+ [CSS Test: ::scroll-marker changes on hover via logical selectors]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-hover-remove.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-hover-remove.html.ini
new file mode 100644
index 00000000000..51ad2e4512f
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-hover-remove.html.ini
@@ -0,0 +1,3 @@
+[scroll-marker-hover-remove.html]
+ [CSS Test: ::scroll-marker:hover is removed correctly]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-hover.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-hover.html.ini
new file mode 100644
index 00000000000..35afec0dda9
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-hover.html.ini
@@ -0,0 +1,3 @@
+[scroll-marker-hover.html]
+ [CSS Test: ::scroll-marker changes on hover via :hover]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-inert-002.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-inert-002.html.ini
new file mode 100644
index 00000000000..c828272e5f3
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-inert-002.html.ini
@@ -0,0 +1,3 @@
+[scroll-marker-inert-002.html]
+ [::scroll-marker is not inert because its ::scroll-marker-group isn't]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-multiple-activation.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-multiple-activation.html.ini
new file mode 100644
index 00000000000..ca5c05b7541
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-multiple-activation.html.ini
@@ -0,0 +1,3 @@
+[scroll-marker-multiple-activation.html]
+ [CSS Values Test: ::scroll-marker activation of multiple markers]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-navigation-cycles.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-navigation-cycles.html.ini
new file mode 100644
index 00000000000..2a918ba9a56
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-navigation-cycles.html.ini
@@ -0,0 +1,3 @@
+[scroll-marker-navigation-cycles.html]
+ [CSS Test: ::scroll-marker key navigation cycles]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-next-focus.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-next-focus.html.ini
new file mode 100644
index 00000000000..c3b8d28f336
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-next-focus.html.ini
@@ -0,0 +1,3 @@
+[scroll-marker-next-focus.html]
+ [CSS Test: next focus search start after ::scroll-marker activation is from its ultimate originating element]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-scroll-container.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-scroll-container.html.ini
new file mode 100644
index 00000000000..ef896a40529
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-scroll-container.html.ini
@@ -0,0 +1,4 @@
+[scroll-marker-scroll-container.html]
+ expected: TIMEOUT
+ [CSS Test: ::scroll-marker on scroll container]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-overflow/scroll-marker-selection-in-padded-scroller.html.ini b/tests/wpt/meta/css/css-overflow/scroll-marker-selection-in-padded-scroller.html.ini
new file mode 100644
index 00000000000..b5a3453fc0f
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-marker-selection-in-padded-scroller.html.ini
@@ -0,0 +1,7 @@
+[scroll-marker-selection-in-padded-scroller.html]
+ expected: ERROR
+ [scroll-marker selection at left edge with padding]
+ expected: TIMEOUT
+
+ [scroll-marker selection at right edge with padding]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/css-overflow/scroll-markers-focus-active-element.html.ini b/tests/wpt/meta/css/css-overflow/scroll-markers-focus-active-element.html.ini
new file mode 100644
index 00000000000..c64cf5c5c35
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-markers-focus-active-element.html.ini
@@ -0,0 +1,3 @@
+[scroll-markers-focus-active-element.html]
+ [CSS Test: document.activeElement for ::scroll-marker is scroller]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-markers-focus-on-scrolling.html.ini b/tests/wpt/meta/css/css-overflow/scroll-markers-focus-on-scrolling.html.ini
new file mode 100644
index 00000000000..0511ff687b3
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-markers-focus-on-scrolling.html.ini
@@ -0,0 +1,6 @@
+[scroll-markers-focus-on-scrolling.html]
+ [active ::scroll-marker doesn't have focus on scroll if previous ::scroll-marker didn't have it]
+ expected: FAIL
+
+ [active ::scroll-marker saves focus on scroll if previous ::scroll-marker had it]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroll-target-group-013.html.ini b/tests/wpt/meta/css/css-overflow/scroll-target-group-013.html.ini
new file mode 100644
index 00000000000..19cdec38efe
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroll-target-group-013.html.ini
@@ -0,0 +1,3 @@
+[scroll-target-group-013.html]
+ [CSS Overflow Test: scroll-target-group property invalidation of :target-current]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/scroller-covered-by-empty-svg.html.ini b/tests/wpt/meta/css/css-overflow/scroller-covered-by-empty-svg.html.ini
new file mode 100644
index 00000000000..4f709a1dd07
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/scroller-covered-by-empty-svg.html.ini
@@ -0,0 +1,3 @@
+[scroller-covered-by-empty-svg.html]
+ [Wheel-scroll in empty SVG covering scroller should not scroll the scroller]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/target-current-scroll-marker-update.html.ini b/tests/wpt/meta/css/css-overflow/target-current-scroll-marker-update.html.ini
new file mode 100644
index 00000000000..2d8f38216b3
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/target-current-scroll-marker-update.html.ini
@@ -0,0 +1,3 @@
+[target-current-scroll-marker-update.html]
+ [CSS Test: ::scroll-marker doesn't stay :target-current upon removing scroll-marker-group property]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/targeted-scroll-marker-selection.tentative.html.ini b/tests/wpt/meta/css/css-overflow/targeted-scroll-marker-selection.tentative.html.ini
new file mode 100644
index 00000000000..94396185145
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/targeted-scroll-marker-selection.tentative.html.ini
@@ -0,0 +1,13 @@
+[targeted-scroll-marker-selection.tentative.html]
+ expected: TIMEOUT
+ [scroll-marker of target (idx 1) of scrollIntoView is selected]
+ expected: TIMEOUT
+
+ [scroll-marker of target (idx 14) of scrollIntoView is selected]
+ expected: NOTRUN
+
+ [scroll-marker of parent of target of scrollIntoView is selected]
+ expected: NOTRUN
+
+ [scroll-marker of earlier sibling of target of scrollIntoView is selected]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/css-overscroll-behavior/overscroll-behavior-root.html.ini b/tests/wpt/meta/css/css-overscroll-behavior/overscroll-behavior-root.html.ini
new file mode 100644
index 00000000000..ca9f91678f7
--- /dev/null
+++ b/tests/wpt/meta/css/css-overscroll-behavior/overscroll-behavior-root.html.ini
@@ -0,0 +1,3 @@
+[overscroll-behavior-root.html]
+ [overscroll-behavior in root works]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overscroll-behavior/overscroll-behavior-without-overflow.html.ini b/tests/wpt/meta/css/css-overscroll-behavior/overscroll-behavior-without-overflow.html.ini
new file mode 100644
index 00000000000..18e9a602d1a
--- /dev/null
+++ b/tests/wpt/meta/css/css-overscroll-behavior/overscroll-behavior-without-overflow.html.ini
@@ -0,0 +1,12 @@
+[overscroll-behavior-without-overflow.html]
+ [overflow: hidden and overscroll-behavior-x: none should only prevent scroll propagation on x axis.]
+ expected: FAIL
+
+ [overflow: hidden and overscroll-behavior-y: none should only prevent scroll propagation on y axis.]
+ expected: FAIL
+
+ [overflow: auto and overscroll-behavior-x: none should only prevent scroll propagation on x axis.]
+ expected: FAIL
+
+ [overflow: auto and overscroll-behavior-y: none should only prevent scroll propagation on y axis.]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overscroll-behavior/overscroll-behavior.html.ini b/tests/wpt/meta/css/css-overscroll-behavior/overscroll-behavior.html.ini
new file mode 100644
index 00000000000..feb9f90790c
--- /dev/null
+++ b/tests/wpt/meta/css/css-overscroll-behavior/overscroll-behavior.html.ini
@@ -0,0 +1,12 @@
+[overscroll-behavior.html]
+ [overscroll-behavior-y: none prevents scroll propagation on y axis]
+ expected: FAIL
+
+ [overscroll-behavior-x: none prevents scroll propagation on x axis]
+ expected: FAIL
+
+ [overscroll-behavior allows inner scrolling when both axes are none]
+ expected: FAIL
+
+ [overscroll-behavior on non-scrollable area allows scroll propagation]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-pseudo/focus-visible-originating-element.html.ini b/tests/wpt/meta/css/css-pseudo/focus-visible-originating-element.html.ini
new file mode 100644
index 00000000000..240de6151a2
--- /dev/null
+++ b/tests/wpt/meta/css/css-pseudo/focus-visible-originating-element.html.ini
@@ -0,0 +1,3 @@
+[focus-visible-originating-element.html]
+ [CSS Test: ::before matches when originating element has :focus-visible selector]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-pseudo/input-element-pseudo-open.optional.html.ini b/tests/wpt/meta/css/css-pseudo/input-element-pseudo-open.optional.html.ini
new file mode 100644
index 00000000000..5b78b603888
--- /dev/null
+++ b/tests/wpt/meta/css/css-pseudo/input-element-pseudo-open.optional.html.ini
@@ -0,0 +1,21 @@
+[input-element-pseudo-open.optional.html]
+ [CSS :open for ]
+ expected: FAIL
+
+ [CSS :open for ]
+ expected: FAIL
+
+ [CSS :open for ]
+ expected: FAIL
+
+ [CSS :open for ]
+ expected: FAIL
+
+ [CSS :open for ]
+ expected: FAIL
+
+ [CSS :open for ]
+ expected: FAIL
+
+ [CSS :open for ]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-pseudo/marker-hit-testing.html.ini b/tests/wpt/meta/css/css-pseudo/marker-hit-testing.html.ini
new file mode 100644
index 00000000000..84e939a2a20
--- /dev/null
+++ b/tests/wpt/meta/css/css-pseudo/marker-hit-testing.html.ini
@@ -0,0 +1,45 @@
+[marker-hit-testing.html]
+ [outside image ::marker's content]
+ expected: FAIL
+
+ [outside image ::marker]
+ expected: FAIL
+
+ [outside string ::marker's content]
+ expected: FAIL
+
+ [outside string ::marker]
+ expected: FAIL
+
+ [outside marker ::marker's content]
+ expected: FAIL
+
+ [outside marker ::marker]
+ expected: FAIL
+
+ [outside nested image ::marker]
+ expected: FAIL
+
+ [outside nested string ::marker's content]
+ expected: FAIL
+
+ [outside nested string ::marker]
+ expected: FAIL
+
+ [inside string ::marker's content]
+ expected: FAIL
+
+ [inside string ::marker]
+ expected: FAIL
+
+ [inside marker ::marker's content]
+ expected: FAIL
+
+ [inside marker ::marker]
+ expected: FAIL
+
+ [inside nested string ::marker's content]
+ expected: FAIL
+
+ [inside nested string ::marker]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-pseudo/text-selection.html.ini b/tests/wpt/meta/css/css-pseudo/text-selection.html.ini
new file mode 100644
index 00000000000..291a9ba96d3
--- /dev/null
+++ b/tests/wpt/meta/css/css-pseudo/text-selection.html.ini
@@ -0,0 +1,9 @@
+[text-selection.html]
+ [Selection ending in ::before]
+ expected: FAIL
+
+ [Selection ending in ::marker]
+ expected: FAIL
+
+ [Selection ending in ::before-marker]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scoping/has-slotted-changing-001.html.ini b/tests/wpt/meta/css/css-scoping/has-slotted-changing-001.html.ini
new file mode 100644
index 00000000000..b883d2cb79d
--- /dev/null
+++ b/tests/wpt/meta/css/css-scoping/has-slotted-changing-001.html.ini
@@ -0,0 +1,15 @@
+[has-slotted-changing-001.html]
+ [empty node is blue]
+ expected: FAIL
+
+ [setting innerHTML to whitespace invalidates and becomes green, then empty string becomes blue]
+ expected: FAIL
+
+ [calling replaceChildren invalidates and becomes green, emptying with replaceChildren becomes blue]
+ expected: FAIL
+
+ [calling append invalidates and becomes green]
+ expected: FAIL
+
+ [calling replaceChildren(textnode) invalidates and becomes green]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scoping/has-slotted-changing-002.html.ini b/tests/wpt/meta/css/css-scoping/has-slotted-changing-002.html.ini
new file mode 100644
index 00000000000..0fdb3cd325f
--- /dev/null
+++ b/tests/wpt/meta/css/css-scoping/has-slotted-changing-002.html.ini
@@ -0,0 +1,9 @@
+[has-slotted-changing-002.html]
+ [empty node is blue]
+ expected: FAIL
+
+ [manually assigning a text node is green, emptying assignment is blue]
+ expected: FAIL
+
+ [manually assigning a Element is green, emptying assignment is blue]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scoping/has-slotted-functional-changing-001.tentative.html.ini b/tests/wpt/meta/css/css-scoping/has-slotted-functional-changing-001.tentative.html.ini
new file mode 100644
index 00000000000..d418e98014f
--- /dev/null
+++ b/tests/wpt/meta/css/css-scoping/has-slotted-functional-changing-001.tentative.html.ini
@@ -0,0 +1,3 @@
+[has-slotted-functional-changing-001.tentative.html]
+ [Changing content targetting :has-slotted(...) and :has-slotted through a single shadow root]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scoping/has-slotted-functional-changing-002.tentative.html.ini b/tests/wpt/meta/css/css-scoping/has-slotted-functional-changing-002.tentative.html.ini
new file mode 100644
index 00000000000..0fa61d04a8e
--- /dev/null
+++ b/tests/wpt/meta/css/css-scoping/has-slotted-functional-changing-002.tentative.html.ini
@@ -0,0 +1,3 @@
+[has-slotted-functional-changing-002.tentative.html]
+ [Changing content targetting :has-slotted(...) through a single shadow root]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scoping/has-slotted-functional-changing-003.tentative.html.ini b/tests/wpt/meta/css/css-scoping/has-slotted-functional-changing-003.tentative.html.ini
new file mode 100644
index 00000000000..4f7dcb92a58
--- /dev/null
+++ b/tests/wpt/meta/css/css-scoping/has-slotted-functional-changing-003.tentative.html.ini
@@ -0,0 +1,3 @@
+[has-slotted-functional-changing-003.tentative.html]
+ [Changing content targetting :has-slotted(...) and :has-slotted through multiple shadow roots]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scoping/has-slotted-functional-changing-004.tentative.html.ini b/tests/wpt/meta/css/css-scoping/has-slotted-functional-changing-004.tentative.html.ini
new file mode 100644
index 00000000000..ff4744ce010
--- /dev/null
+++ b/tests/wpt/meta/css/css-scoping/has-slotted-functional-changing-004.tentative.html.ini
@@ -0,0 +1,3 @@
+[has-slotted-functional-changing-004.tentative.html]
+ [Changing content targetting :has-slotted(...) through a single shadow root]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scroll-anchoring/fullscreen-crash.html.ini b/tests/wpt/meta/css/css-scroll-anchoring/fullscreen-crash.html.ini
new file mode 100644
index 00000000000..e3881f8789f
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-anchoring/fullscreen-crash.html.ini
@@ -0,0 +1,2 @@
+[fullscreen-crash.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-scroll-anchoring/ignore-adjustments-while-scrolling-to-anchor.tentative.html.ini b/tests/wpt/meta/css/css-scroll-anchoring/ignore-adjustments-while-scrolling-to-anchor.tentative.html.ini
new file mode 100644
index 00000000000..1f1b9444eb6
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-anchoring/ignore-adjustments-while-scrolling-to-anchor.tentative.html.ini
@@ -0,0 +1,4 @@
+[ignore-adjustments-while-scrolling-to-anchor.tentative.html]
+ expected: TIMEOUT
+ [Ignore scroll position adjustments during smooth scrolling to anchor]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-scroll-snap/input/keyboard.html.ini b/tests/wpt/meta/css/css-scroll-snap/input/keyboard.html.ini
new file mode 100644
index 00000000000..e7033623d66
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/input/keyboard.html.ini
@@ -0,0 +1,25 @@
+[keyboard.html]
+ expected: TIMEOUT
+ [Snaps to bottom-left after pressing ArrowDown]
+ expected: TIMEOUT
+
+ [Snaps to top-left after pressing ArrowUp]
+ expected: NOTRUN
+
+ [Snaps to top-right after pressing ArrowRight]
+ expected: NOTRUN
+
+ [Snaps to top-left after pressing ArrowLeft]
+ expected: NOTRUN
+
+ [If the original intended offset is valid as making a snap area cover thesnapport, and there's no other snap offset in between, use the originalintended offset]
+ expected: NOTRUN
+
+ [If the original intended offset is valid as making a snap area cover the snapport, but there's a defined snap offset in between, use the defined snap offset.]
+ expected: NOTRUN
+
+ [If there is no valid snap offset on the arrow key's direction other than the current offset, and the scroll-snap-type is mandatory, stay at the current offset.]
+ expected: NOTRUN
+
+ [If there is no valid snap offset on the arrow key's direction other than the current offset, and the scroll-snap-type is proximity, go to the original intended offset]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/css-scroll-snap/input/mouse-wheel.html.ini b/tests/wpt/meta/css/css-scroll-snap/input/mouse-wheel.html.ini
new file mode 100644
index 00000000000..ac7cf11d35e
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/input/mouse-wheel.html.ini
@@ -0,0 +1,3 @@
+[mouse-wheel.html]
+ [Wheel-scroll triggers snap to target position without intermediate pause.]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scroll-snap/input/paged.html.ini b/tests/wpt/meta/css/css-scroll-snap/input/paged.html.ini
new file mode 100644
index 00000000000..13e67198d7b
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/input/paged.html.ini
@@ -0,0 +1,16 @@
+[paged.html]
+ expected: TIMEOUT
+ [Doesn't skip past small snappable content]
+ expected: TIMEOUT
+
+ [Doesn't skip past large snappable content]
+ expected: NOTRUN
+
+ [Scrolls multiple smaller items into view]
+ expected: NOTRUN
+
+ [Scrolls past items currently in view]
+ expected: NOTRUN
+
+ [Scrolls more than a page if necessary]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.tentative.html.ini b/tests/wpt/meta/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.tentative.html.ini
new file mode 100644
index 00000000000..e7896d611a5
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/input/snap-area-overflow-boundary-viewport-covering.tentative.html.ini
@@ -0,0 +1,2 @@
+[snap-area-overflow-boundary-viewport-covering.tentative.html]
+ expected: CRASH
diff --git a/tests/wpt/meta/css/css-scroll-snap/overscroll-snap.html.ini b/tests/wpt/meta/css/css-scroll-snap/overscroll-snap.html.ini
new file mode 100644
index 00000000000..748af1c8dc8
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/overscroll-snap.html.ini
@@ -0,0 +1,4 @@
+[overscroll-snap.html]
+ expected: TIMEOUT
+ [snapport covered by snap area doesn't jump]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-scroll-snap/scroll-initial-target/scroll-initial-target-nested-container.tentative.html.ini b/tests/wpt/meta/css/css-scroll-snap/scroll-initial-target/scroll-initial-target-nested-container.tentative.html.ini
new file mode 100644
index 00000000000..6e6fbb882a5
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/scroll-initial-target/scroll-initial-target-nested-container.tentative.html.ini
@@ -0,0 +1,12 @@
+[scroll-initial-target-nested-container.tentative.html]
+ [display:none scroll-initial-target becomes display:block]
+ expected: FAIL
+
+ [intermediate overflow:visible container becomes overflow:scroll]
+ expected: FAIL
+
+ [outer scroll-initial-target takes precedence over inner]
+ expected: FAIL
+
+ [scroll containers can also be scroll-initial-targets]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scroll-snap/scroll-initial-target/scroll-initial-target-with-anchor-navigation.tentative.html.ini b/tests/wpt/meta/css/css-scroll-snap/scroll-initial-target/scroll-initial-target-with-anchor-navigation.tentative.html.ini
new file mode 100644
index 00000000000..9a4139aea82
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/scroll-initial-target/scroll-initial-target-with-anchor-navigation.tentative.html.ini
@@ -0,0 +1,3 @@
+[scroll-initial-target-with-anchor-navigation.tentative.html]
+ [scroll-initial-target does not override anchor navigation.]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scroll-snap/scroll-initial-target/scroll-initial-target-with-text-fragment-navigation.tentative.html.ini b/tests/wpt/meta/css/css-scroll-snap/scroll-initial-target/scroll-initial-target-with-text-fragment-navigation.tentative.html.ini
new file mode 100644
index 00000000000..f4234906df1
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/scroll-initial-target/scroll-initial-target-with-text-fragment-navigation.tentative.html.ini
@@ -0,0 +1,3 @@
+[scroll-initial-target-with-text-fragment-navigation.tentative.html]
+ [scroll-start doesn't override text fragment navigation]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scroll-snap/scroll-initial-target/scroll-initial-target-with-user-programmatic-scroll.tentative.html.ini b/tests/wpt/meta/css/css-scroll-snap/scroll-initial-target/scroll-initial-target-with-user-programmatic-scroll.tentative.html.ini
new file mode 100644
index 00000000000..ba1253b234a
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/scroll-initial-target/scroll-initial-target-with-user-programmatic-scroll.tentative.html.ini
@@ -0,0 +1,6 @@
+[scroll-initial-target-with-user-programmatic-scroll.tentative.html]
+ [scroll-initial-target does not override user scroll]
+ expected: FAIL
+
+ [scroll-initial-target does not override programmatic scroll]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scroll-snap/scroll-margin-editable.html.ini b/tests/wpt/meta/css/css-scroll-snap/scroll-margin-editable.html.ini
new file mode 100644
index 00000000000..e2bffe5c106
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/scroll-margin-editable.html.ini
@@ -0,0 +1,3 @@
+[scroll-margin-editable.html]
+ [already-in-view div should not cause a scroll upon focus.]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scroll-snap/scroll-snap-nested-snap-area-layout-changed.tentative.html.ini b/tests/wpt/meta/css/css-scroll-snap/scroll-snap-nested-snap-area-layout-changed.tentative.html.ini
new file mode 100644
index 00000000000..15b2629d4df
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/scroll-snap-nested-snap-area-layout-changed.tentative.html.ini
@@ -0,0 +1,7 @@
+[scroll-snap-nested-snap-area-layout-changed.tentative.html]
+ expected: TIMEOUT
+ [newly larger-than-snapport area is snapped to when straddled close to bottom.]
+ expected: TIMEOUT
+
+ [snapport remains within newly covering snap area when already in covering position.]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/css-scroll-snap/scroll-start/scroll-start-with-user-scroll.tentative.html.ini b/tests/wpt/meta/css/css-scroll-snap/scroll-start/scroll-start-with-user-scroll.tentative.html.ini
new file mode 100644
index 00000000000..a45ab057b29
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/scroll-start/scroll-start-with-user-scroll.tentative.html.ini
@@ -0,0 +1,3 @@
+[scroll-start-with-user-scroll.tentative.html]
+ [scroll-start is not applied after user a scroll]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scroll-snap/selection-target.html.ini b/tests/wpt/meta/css/css-scroll-snap/selection-target.html.ini
new file mode 100644
index 00000000000..efdce523b59
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/selection-target.html.ini
@@ -0,0 +1,3 @@
+[selection-target.html]
+ [Test scrolling into view when typing]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-after-initial-layout/initial-snap-matches-scroll.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-after-initial-layout/initial-snap-matches-scroll.html.ini
new file mode 100644
index 00000000000..3a35660dbfd
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-after-initial-layout/initial-snap-matches-scroll.html.ini
@@ -0,0 +1,4 @@
+[initial-snap-matches-scroll.html]
+ expected: TIMEOUT
+ [initial scroll snap matches scrolling scroll snap position.]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/common-to-both-axes-supercedes-first-in-tree-order.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/common-to-both-axes-supercedes-first-in-tree-order.html.ini
new file mode 100644
index 00000000000..bab7f67ea50
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/common-to-both-axes-supercedes-first-in-tree-order.html.ini
@@ -0,0 +1,31 @@
+[common-to-both-axes-supercedes-first-in-tree-order.html]
+ expected: TIMEOUT
+ [box0 is common to both axes and is the snap target despite being last in tree order.]
+ expected: TIMEOUT
+
+ [box1 is common to both axes and is the snap target despite being last in tree order.]
+ expected: NOTRUN
+
+ [box2 is common to both axes and is the snap target despite being last in tree order.]
+ expected: NOTRUN
+
+ [box3 is common to both axes and is the snap target despite being last in tree order.]
+ expected: NOTRUN
+
+ [box4 is common to both axes and is the snap target despite being last in tree order.]
+ expected: NOTRUN
+
+ [box5 is common to both axes and is the snap target despite being last in tree order.]
+ expected: NOTRUN
+
+ [box6 is common to both axes and is the snap target despite being last in tree order.]
+ expected: NOTRUN
+
+ [box7 is common to both axes and is the snap target despite being last in tree order.]
+ expected: NOTRUN
+
+ [box8 is common to both axes and is the snap target despite being last in tree order.]
+ expected: NOTRUN
+
+ [box9 is common to both axes and is the snap target despite being last in tree order.]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/nested-supercedes-common-to-both-axes.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/nested-supercedes-common-to-both-axes.html.ini
new file mode 100644
index 00000000000..7c18bbe0c5c
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/nested-supercedes-common-to-both-axes.html.ini
@@ -0,0 +1,3 @@
+[nested-supercedes-common-to-both-axes.html]
+ [scroller prefers nested area over area aligned in both axes.]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-common-to-both-axes.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-common-to-both-axes.html.ini
new file mode 100644
index 00000000000..69178717ac7
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-common-to-both-axes.html.ini
@@ -0,0 +1,7 @@
+[prefer-common-to-both-axes.html]
+ expected: TIMEOUT
+ [scroller prefers target aligned in both axes.]
+ expected: TIMEOUT
+
+ [scroller follows selected snap target after layout shift, regardless of common snap area.]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-first-in-tree-order.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-first-in-tree-order.html.ini
new file mode 100644
index 00000000000..4857eb42d21
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-first-in-tree-order.html.ini
@@ -0,0 +1,4 @@
+[prefer-first-in-tree-order.html]
+ expected: TIMEOUT
+ [first in tree-order is selected as snap target.]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element.html.ini
new file mode 100644
index 00000000000..ea9b5dbdd17
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-element.html.ini
@@ -0,0 +1,10 @@
+[prefer-focused-element.html]
+ expected: TIMEOUT
+ [scroller selects focused target from aligned choices on snap]
+ expected: TIMEOUT
+
+ [out-of-viewport focused element is not the selected snap target.]
+ expected: NOTRUN
+
+ [scroller follows selected snap target through layout shift,regardless of focus]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-nested-containers.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-nested-containers.html.ini
new file mode 100644
index 00000000000..2e514def9e1
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-focused-nested-containers.html.ini
@@ -0,0 +1,4 @@
+[prefer-focused-nested-containers.html]
+ expected: TIMEOUT
+ [Snap container prefers focused nested snap target.]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-inner-target.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-inner-target.html.ini
new file mode 100644
index 00000000000..c74a86c3ec7
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-inner-target.html.ini
@@ -0,0 +1,7 @@
+[prefer-inner-target.html]
+ expected: TIMEOUT
+ [snap container selects innermost area as snap target]
+ expected: TIMEOUT
+
+ [snap container follows selected snap target after layout change (the pre-existing snap target should not be overriden because of the innermost area)]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-targeted-element-main-frame.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-targeted-element-main-frame.html.ini
new file mode 100644
index 00000000000..d8c81c1069e
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-targeted-element-main-frame.html.ini
@@ -0,0 +1,4 @@
+[prefer-targeted-element-main-frame.html]
+ expected: TIMEOUT
+ [targeted box is selected snap target.]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-targeted-element-positioned.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-targeted-element-positioned.html.ini
new file mode 100644
index 00000000000..b02b1e0af90
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-targeted-element-positioned.html.ini
@@ -0,0 +1,16 @@
+[prefer-targeted-element-positioned.html]
+ expected: ERROR
+ [prefer-targeted-element-positioned]
+ expected: TIMEOUT
+
+ [prefer-targeted-element-positioned 1]
+ expected: NOTRUN
+
+ [prefer-targeted-element-positioned 2]
+ expected: NOTRUN
+
+ [prefer-targeted-element-positioned 3]
+ expected: NOTRUN
+
+ [prefer-targeted-element-positioned 4]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-targeted-element.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-targeted-element.html.ini
new file mode 100644
index 00000000000..08f6d2903ae
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-after-relayout/multiple-aligned-targets/prefer-targeted-element.html.ini
@@ -0,0 +1,28 @@
+[prefer-targeted-element.html]
+ expected: ERROR
+ [scroller selects targeted area box1 among multiple aligned areas.]
+ expected: FAIL
+
+ [scroller selects targeted area box2 among multiple aligned areas.]
+ expected: FAIL
+
+ [scroller selects targeted area box3 among multiple aligned areas.]
+ expected: FAIL
+
+ [scroller selects targeted area box4 among multiple aligned areas.]
+ expected: TIMEOUT
+
+ [scroller selects targeted area box5 among multiple aligned areas.]
+ expected: NOTRUN
+
+ [scroller selects targeted area box6 among multiple aligned areas.]
+ expected: NOTRUN
+
+ [scroller selects targeted area box7 among multiple aligned areas.]
+ expected: NOTRUN
+
+ [scroller selects targeted area box8 among multiple aligned areas.]
+ expected: NOTRUN
+
+ [scroller selects targeted area box9 among multiple aligned areas.]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-at-user-scroll-end.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-at-user-scroll-end.html.ini
new file mode 100644
index 00000000000..93645fd57ef
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-at-user-scroll-end.html.ini
@@ -0,0 +1,3 @@
+[snap-at-user-scroll-end.html]
+ [Tests that window should snap at user scroll end.]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchange/scrollsnapchange-on-user-root-scroll.tentative.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchange/scrollsnapchange-on-user-root-scroll.tentative.html.ini
new file mode 100644
index 00000000000..961e1e1bc23
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchange/scrollsnapchange-on-user-root-scroll.tentative.html.ini
@@ -0,0 +1,15 @@
+[scrollsnapchange-on-user-root-scroll.tentative.html]
+ [scrollsnapchange event fires after snap target changes on touch scroll]
+ expected: FAIL
+
+ [scrollsnapchange event fires after snap target changes on wheel scroll]
+ expected: FAIL
+
+ [scrollsnapchange event fires after snap target changes on keydown press]
+ expected: FAIL
+
+ [Document.scrollsnapchange event fires after snap target changes on touch scroll]
+ expected: FAIL
+
+ [scrollsnapchange is not fired if snap target doesn't change on user scroll]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchange/scrollsnapchange-on-user-scroll.tentative.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchange/scrollsnapchange-on-user-scroll.tentative.html.ini
new file mode 100644
index 00000000000..24b9d64418d
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchange/scrollsnapchange-on-user-scroll.tentative.html.ini
@@ -0,0 +1,15 @@
+[scrollsnapchange-on-user-scroll.tentative.html]
+ [scrollsnapchange event fires after snap target changes on touch scroll]
+ expected: FAIL
+
+ [scrollsnapchange event fires after snap target changes on wheel scroll]
+ expected: FAIL
+
+ [scrollsnapchange event fires after snap target changes on keydown press]
+ expected: FAIL
+
+ [Element.onscrollsnapchange event fires after snap target changes on touch scroll]
+ expected: FAIL
+
+ [scrollsnapchange is not fired if snap target doesn't change on user scroll]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchange/scrollsnapchange-scrolling-non-snapping-axis.tentative.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchange/scrollsnapchange-scrolling-non-snapping-axis.tentative.html.ini
new file mode 100644
index 00000000000..57bb49ce5ea
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchange/scrollsnapchange-scrolling-non-snapping-axis.tentative.html.ini
@@ -0,0 +1,7 @@
+[scrollsnapchange-scrolling-non-snapping-axis.tentative.html]
+ expected: TIMEOUT
+ [keyboard scroll on non-snapping axis doesn't trigger scrollsnapchange]
+ expected: FAIL
+
+ [wheel scroll on non-snapping axis doesn't trigger scrollsnapchange]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchanging/scrollsnapchanging-after-layout-change.tentative.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchanging/scrollsnapchanging-after-layout-change.tentative.html.ini
new file mode 100644
index 00000000000..a5b60c0aa1a
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchanging/scrollsnapchanging-after-layout-change.tentative.html.ini
@@ -0,0 +1,4 @@
+[scrollsnapchanging-after-layout-change.tentative.html]
+ expected: TIMEOUT
+ [scrollsnapchanging fires after layout change]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchanging/scrollsnapchanging-on-programmatic-root-scroll.tentative.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchanging/scrollsnapchanging-on-programmatic-root-scroll.tentative.html.ini
new file mode 100644
index 00000000000..028ff018ef0
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchanging/scrollsnapchanging-on-programmatic-root-scroll.tentative.html.ini
@@ -0,0 +1,9 @@
+[scrollsnapchanging-on-programmatic-root-scroll.tentative.html]
+ [scrollsnapchanging fires on programmatic scrolls that changes a scroller's snap targets.]
+ expected: FAIL
+
+ [Document.scrollsnapchanging fires on programmatic scrolls that changes ascroller's snap targets.]
+ expected: FAIL
+
+ [scrollsnapchanging does not fire on programmatic scrolls that don't trigger a change in snap targets.]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchanging/scrollsnapchanging-on-programmatic-scroll.tentative.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchanging/scrollsnapchanging-on-programmatic-scroll.tentative.html.ini
new file mode 100644
index 00000000000..1ddecf95f91
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchanging/scrollsnapchanging-on-programmatic-scroll.tentative.html.ini
@@ -0,0 +1,9 @@
+[scrollsnapchanging-on-programmatic-scroll.tentative.html]
+ [scrollsnapchanging fires on programmatic scrolls that changes a scroller's snap targets.]
+ expected: FAIL
+
+ [Element.onscrollsnapchanging fires on programmatic scrolls that changes a scroller's snap targets.]
+ expected: FAIL
+
+ [scrollsnapchanging should not fire since the snap target doesn't change.]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchanging/scrollsnapchanging-on-user-root-scroll.tentative.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchanging/scrollsnapchanging-on-user-root-scroll.tentative.html.ini
new file mode 100644
index 00000000000..5eb99de3fb9
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchanging/scrollsnapchanging-on-user-root-scroll.tentative.html.ini
@@ -0,0 +1,22 @@
+[scrollsnapchanging-on-user-root-scroll.tentative.html]
+ expected: TIMEOUT
+ [touch scrolling fires scrollsnapchanging.]
+ expected: FAIL
+
+ [mouse wheel scroll triggers scrollsnapchanging.]
+ expected: FAIL
+
+ [scrollbar dragging fires scrollsnapchanging.]
+ expected: FAIL
+
+ [keyboard scroll triggers scrollsnapchanging.]
+ expected: FAIL
+
+ [touch scrolling fires Document.onscrollsnapchanging.]
+ expected: FAIL
+
+ [scrollsnapchanging fires as scroll moves through different snap targets.]
+ expected: TIMEOUT
+
+ [scrollsnapchanging doesn't fire if scroll doesn't reach different snap targets.]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchanging/scrollsnapchanging-on-user-scroll.tentative.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchanging/scrollsnapchanging-on-user-scroll.tentative.html.ini
new file mode 100644
index 00000000000..a5d5c9c46f1
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-events/scrollsnapchanging/scrollsnapchanging-on-user-scroll.tentative.html.ini
@@ -0,0 +1,22 @@
+[scrollsnapchanging-on-user-scroll.tentative.html]
+ expected: TIMEOUT
+ [touch scrolling fires scrollsnapchanging.]
+ expected: FAIL
+
+ [mouse wheel scroll triggers scrollsnapchanging.]
+ expected: FAIL
+
+ [scrollbar dragging fires scrollsnapchanging.]
+ expected: FAIL
+
+ [keyboard scroll triggers scrollsnapchanging.]
+ expected: FAIL
+
+ [scrollsnapchanging fires as scroll moves through different snap targets.]
+ expected: TIMEOUT
+
+ [touch scrolling fires Element.onscrollsnapchanging.]
+ expected: NOTRUN
+
+ [scrollsnapchanging doesn't fire if scroll doesn't reach different snap targets.]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-events/snap-events-with-pseudo-target.tentative.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-events/snap-events-with-pseudo-target.tentative.html.ini
new file mode 100644
index 00000000000..1487a630480
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-events/snap-events-with-pseudo-target.tentative.html.ini
@@ -0,0 +1,6 @@
+[snap-events-with-pseudo-target.tentative.html]
+ [snapTarget for scrollsnapchange is the owning element when a snap area belongs to a pseudo-element]
+ expected: FAIL
+
+ [snapTarget for scrollsnapchanging is the owning element when a snap area belongs to a pseudo-element]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-fling-in-large-area.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-fling-in-large-area.html.ini
new file mode 100644
index 00000000000..3085dd704ee
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-fling-in-large-area.html.ini
@@ -0,0 +1,3 @@
+[snap-fling-in-large-area.html]
+ [fling within a large area is not interrupted by scroll snap]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-scroll-snap/snap-into-covering-area.tentative.html.ini b/tests/wpt/meta/css/css-scroll-snap/snap-into-covering-area.tentative.html.ini
new file mode 100644
index 00000000000..b780a4ad2c7
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/snap-into-covering-area.tentative.html.ini
@@ -0,0 +1,4 @@
+[snap-into-covering-area.tentative.html]
+ expected: TIMEOUT
+ [snap-into-covering-area]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-scroll-snap/unrelated-gesture-scroll-during-snap.html.ini b/tests/wpt/meta/css/css-scroll-snap/unrelated-gesture-scroll-during-snap.html.ini
new file mode 100644
index 00000000000..63cdf9003e1
--- /dev/null
+++ b/tests/wpt/meta/css/css-scroll-snap/unrelated-gesture-scroll-during-snap.html.ini
@@ -0,0 +1,7 @@
+[unrelated-gesture-scroll-during-snap.html]
+ expected: TIMEOUT
+ [gesture on separate scroll container works while another container snaps]
+ expected: TIMEOUT
+
+ [gesture on separate snap container works while another container snaps]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/css-transforms/hittest-preserve-3d.html.ini b/tests/wpt/meta/css/css-transforms/hittest-preserve-3d.html.ini
new file mode 100644
index 00000000000..7f510465d7b
--- /dev/null
+++ b/tests/wpt/meta/css/css-transforms/hittest-preserve-3d.html.ini
@@ -0,0 +1,4 @@
+[hittest-preserve-3d.html]
+ expected: ERROR
+ [Hit test preserve-3d descendant]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-ui/inert-attribute-overriding.html.ini b/tests/wpt/meta/css/css-ui/inert-attribute-overriding.html.ini
new file mode 100644
index 00000000000..9899a675f7e
--- /dev/null
+++ b/tests/wpt/meta/css/css-ui/inert-attribute-overriding.html.ini
@@ -0,0 +1,12 @@
+[inert-attribute-overriding.html]
+ [Expect to be non-inert]
+ expected: FAIL
+
+ [Expect to be inert]
+ expected: FAIL
+
+ [Expect to be inert]
+ expected: FAIL
+
+ [Expect to be inert]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-ui/interactivity-inert-click.html.ini b/tests/wpt/meta/css/css-ui/interactivity-inert-click.html.ini
new file mode 100644
index 00000000000..5bdf958e582
--- /dev/null
+++ b/tests/wpt/meta/css/css-ui/interactivity-inert-click.html.ini
@@ -0,0 +1,3 @@
+[interactivity-inert-click.html]
+ [No click event for interactivity:inert element]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-ui/interactivity-inert-fullscreen-ua.html.ini b/tests/wpt/meta/css/css-ui/interactivity-inert-fullscreen-ua.html.ini
new file mode 100644
index 00000000000..6bbb1047652
--- /dev/null
+++ b/tests/wpt/meta/css/css-ui/interactivity-inert-fullscreen-ua.html.ini
@@ -0,0 +1,15 @@
+[interactivity-inert-fullscreen-ua.html]
+ [UA :fullscreen interactivity rule]
+ expected: FAIL
+
+ [UA [inert\] rule wins over UA :fullscreen rule]
+ expected: FAIL
+
+ [UA :fullscreen rule overriding inherited [inert\] 'interactivity:inert' rule]
+ expected: FAIL
+
+ [UA [inert\] rule overriding inherited :fullscreen 'interactivity:auto' rule]
+ expected: FAIL
+
+ [Author 'interactivity:inert' overrides UA :fullscreen 'interactivity:auto' rule]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-ui/resize-iframe-3d-transform.tentative.html.ini b/tests/wpt/meta/css/css-ui/resize-iframe-3d-transform.tentative.html.ini
new file mode 100644
index 00000000000..47d67301d15
--- /dev/null
+++ b/tests/wpt/meta/css/css-ui/resize-iframe-3d-transform.tentative.html.ini
@@ -0,0 +1,3 @@
+[resize-iframe-3d-transform.tentative.html]
+ [resizing of iframe in 3D transform]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-ui/resize-textarea-relative-to-right-001.tentative.html.ini b/tests/wpt/meta/css/css-ui/resize-textarea-relative-to-right-001.tentative.html.ini
new file mode 100644
index 00000000000..0a676777a75
--- /dev/null
+++ b/tests/wpt/meta/css/css-ui/resize-textarea-relative-to-right-001.tentative.html.ini
@@ -0,0 +1,3 @@
+[resize-textarea-relative-to-right-001.tentative.html]
+ [resizing of textarea whose position is anchored to the right side]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-ui/resize-textarea-rtl-001.tentative.html.ini b/tests/wpt/meta/css/css-ui/resize-textarea-rtl-001.tentative.html.ini
new file mode 100644
index 00000000000..c975cdf888f
--- /dev/null
+++ b/tests/wpt/meta/css/css-ui/resize-textarea-rtl-001.tentative.html.ini
@@ -0,0 +1,3 @@
+[resize-textarea-rtl-001.tentative.html]
+ [resizing of RTL textarea in RTL context]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-ui/resize-textarea-rtl-002.tentative.html.ini b/tests/wpt/meta/css/css-ui/resize-textarea-rtl-002.tentative.html.ini
new file mode 100644
index 00000000000..7dbe454f9f5
--- /dev/null
+++ b/tests/wpt/meta/css/css-ui/resize-textarea-rtl-002.tentative.html.ini
@@ -0,0 +1,3 @@
+[resize-textarea-rtl-002.tentative.html]
+ [resizing of RTL textarea whose position is anchored to the left side]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-ui/user-select-001.html.ini b/tests/wpt/meta/css/css-ui/user-select-001.html.ini
new file mode 100644
index 00000000000..d80607e2221
--- /dev/null
+++ b/tests/wpt/meta/css/css-ui/user-select-001.html.ini
@@ -0,0 +1,3 @@
+[user-select-001.html]
+ [Select the text 'word']
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-view-transitions/input-targets-root-while-render-blocked.html.ini b/tests/wpt/meta/css/css-view-transitions/input-targets-root-while-render-blocked.html.ini
new file mode 100644
index 00000000000..5096cb62d77
--- /dev/null
+++ b/tests/wpt/meta/css/css-view-transitions/input-targets-root-while-render-blocked.html.ini
@@ -0,0 +1,3 @@
+[input-targets-root-while-render-blocked.html]
+ [Input when rendering suppressed targets root]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-view-transitions/navigation/hide-before-reveal.html.ini b/tests/wpt/meta/css/css-view-transitions/navigation/hide-before-reveal.html.ini
new file mode 100644
index 00000000000..ba8dd9e3d5d
--- /dev/null
+++ b/tests/wpt/meta/css/css-view-transitions/navigation/hide-before-reveal.html.ini
@@ -0,0 +1,4 @@
+[hide-before-reveal.html]
+ expected: TIMEOUT
+ [View transitions: pagereveal event provides viewTransition]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-view-transitions/navigation/mismatched-snapshot-containing-block-size-skips.html.ini b/tests/wpt/meta/css/css-view-transitions/navigation/mismatched-snapshot-containing-block-size-skips.html.ini
new file mode 100644
index 00000000000..09a3c9a7aba
--- /dev/null
+++ b/tests/wpt/meta/css/css-view-transitions/navigation/mismatched-snapshot-containing-block-size-skips.html.ini
@@ -0,0 +1,3 @@
+[mismatched-snapshot-containing-block-size-skips.html]
+ [\nView transitions: mismatched snapshot containing block size skips transition.\n]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-view-transitions/navigation/pageswap-in-hidden-doc-should-skip-transition.html.ini b/tests/wpt/meta/css/css-view-transitions/navigation/pageswap-in-hidden-doc-should-skip-transition.html.ini
new file mode 100644
index 00000000000..fd4cc7ff46f
--- /dev/null
+++ b/tests/wpt/meta/css/css-view-transitions/navigation/pageswap-in-hidden-doc-should-skip-transition.html.ini
@@ -0,0 +1,4 @@
+[pageswap-in-hidden-doc-should-skip-transition.html]
+ expected: TIMEOUT
+ [Outbound cross-document view transition is not allowed when document is hidden]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-view-transitions/navigation/pageswap-push-from-click.html.ini b/tests/wpt/meta/css/css-view-transitions/navigation/pageswap-push-from-click.html.ini
new file mode 100644
index 00000000000..c61454fb366
--- /dev/null
+++ b/tests/wpt/meta/css/css-view-transitions/navigation/pageswap-push-from-click.html.ini
@@ -0,0 +1,4 @@
+[pageswap-push-from-click.html]
+ expected: ERROR
+ [pageswap on navigation from user click]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-view-transitions/transition-in-hidden-page.html.ini b/tests/wpt/meta/css/css-view-transitions/transition-in-hidden-page.html.ini
new file mode 100644
index 00000000000..2a51a7eb34a
--- /dev/null
+++ b/tests/wpt/meta/css/css-view-transitions/transition-in-hidden-page.html.ini
@@ -0,0 +1,9 @@
+[transition-in-hidden-page.html]
+ [A view transition should be immediately skipped if started when document is hidden]
+ expected: FAIL
+
+ [A view transition should be skipped when a document becomes hidden while processing update callback]
+ expected: FAIL
+
+ [A view transition should be skipped when a document becomes hidden while animating]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-view-transitions/window-resize-aborts-transition-before-ready.html.ini b/tests/wpt/meta/css/css-view-transitions/window-resize-aborts-transition-before-ready.html.ini
new file mode 100644
index 00000000000..eec82bb345e
--- /dev/null
+++ b/tests/wpt/meta/css/css-view-transitions/window-resize-aborts-transition-before-ready.html.ini
@@ -0,0 +1,3 @@
+[window-resize-aborts-transition-before-ready.html]
+ [\nView transitions: Resizing viewport before animating rejects the ready promise.\n]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-view-transitions/window-resize-aborts-transition.html.ini b/tests/wpt/meta/css/css-view-transitions/window-resize-aborts-transition.html.ini
new file mode 100644
index 00000000000..f9efeb7c006
--- /dev/null
+++ b/tests/wpt/meta/css/css-view-transitions/window-resize-aborts-transition.html.ini
@@ -0,0 +1,3 @@
+[window-resize-aborts-transition.html]
+ [View transitions: Resizing viewport skips the transition]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-writing-modes/forms/select-multiple-keyboard-selection.optional.html.ini b/tests/wpt/meta/css/css-writing-modes/forms/select-multiple-keyboard-selection.optional.html.ini
new file mode 100644
index 00000000000..84d72bfefd9
--- /dev/null
+++ b/tests/wpt/meta/css/css-writing-modes/forms/select-multiple-keyboard-selection.optional.html.ini
@@ -0,0 +1,2 @@
+[select-multiple-keyboard-selection.optional.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-writing-modes/forms/select-multiple-options-visual-order.html.ini b/tests/wpt/meta/css/css-writing-modes/forms/select-multiple-options-visual-order.html.ini
new file mode 100644
index 00000000000..b0997b470e4
--- /dev/null
+++ b/tests/wpt/meta/css/css-writing-modes/forms/select-multiple-options-visual-order.html.ini
@@ -0,0 +1,2 @@
+[select-multiple-options-visual-order.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-writing-modes/forms/text-input-vertical-overflow-no-scroll.html.ini b/tests/wpt/meta/css/css-writing-modes/forms/text-input-vertical-overflow-no-scroll.html.ini
new file mode 100644
index 00000000000..04258360700
--- /dev/null
+++ b/tests/wpt/meta/css/css-writing-modes/forms/text-input-vertical-overflow-no-scroll.html.ini
@@ -0,0 +1,2 @@
+[text-input-vertical-overflow-no-scroll.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/cssom-view/mouseEvent-offsetXY-svg.html.ini b/tests/wpt/meta/css/cssom-view/mouseEvent-offsetXY-svg.html.ini
new file mode 100644
index 00000000000..51f726ce72f
--- /dev/null
+++ b/tests/wpt/meta/css/cssom-view/mouseEvent-offsetXY-svg.html.ini
@@ -0,0 +1,4 @@
+[mouseEvent-offsetXY-svg.html]
+ expected: ERROR
+ [MouseEvent.offsetX/Y returns coordinates relative to the root svg]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/cssom-view/smooth-scrollIntoView-with-unrelated-gesture-scroll.html.ini b/tests/wpt/meta/css/cssom-view/smooth-scrollIntoView-with-unrelated-gesture-scroll.html.ini
new file mode 100644
index 00000000000..90ca516d87b
--- /dev/null
+++ b/tests/wpt/meta/css/cssom-view/smooth-scrollIntoView-with-unrelated-gesture-scroll.html.ini
@@ -0,0 +1,4 @@
+[smooth-scrollIntoView-with-unrelated-gesture-scroll.html]
+ expected: TIMEOUT
+ [scrollIntoView is not interrupted by unrelated gesture scroll]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/cssom-view/visual-scrollIntoView-001.html.ini b/tests/wpt/meta/css/cssom-view/visual-scrollIntoView-001.html.ini
new file mode 100644
index 00000000000..a64c2b11169
--- /dev/null
+++ b/tests/wpt/meta/css/cssom-view/visual-scrollIntoView-001.html.ini
@@ -0,0 +1,3 @@
+[visual-scrollIntoView-001.html]
+ [Element.scrollIntoView scrolls visually]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/cssom-view/visual-scrollIntoView-002.html.ini b/tests/wpt/meta/css/cssom-view/visual-scrollIntoView-002.html.ini
new file mode 100644
index 00000000000..7fe8615eb12
--- /dev/null
+++ b/tests/wpt/meta/css/cssom-view/visual-scrollIntoView-002.html.ini
@@ -0,0 +1,3 @@
+[visual-scrollIntoView-002.html]
+ [Element.scrollIntoView scrolls visually to a position: fixed element with non-zero layout scroll offset]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/cssom-view/visual-scrollIntoView-003.html.ini b/tests/wpt/meta/css/cssom-view/visual-scrollIntoView-003.html.ini
new file mode 100644
index 00000000000..bb92b09c95a
--- /dev/null
+++ b/tests/wpt/meta/css/cssom-view/visual-scrollIntoView-003.html.ini
@@ -0,0 +1,3 @@
+[visual-scrollIntoView-003.html]
+ [Element.scrollIntoView scrolls visually to an element in nested position: fixed elements]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-001.html.ini b/tests/wpt/meta/css/selectors/focus-visible-001.html.ini
new file mode 100644
index 00000000000..ce3a3b07a3d
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-001.html.ini
@@ -0,0 +1,3 @@
+[focus-visible-001.html]
+ [Keyboard focus should match :focus-visible]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-002.html.ini b/tests/wpt/meta/css/selectors/focus-visible-002.html.ini
new file mode 100644
index 00000000000..e62b41a13d9
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-002.html.ini
@@ -0,0 +1,43 @@
+[focus-visible-002.html]
+ expected: ERROR
+ [Focus element INPUT#input1 via mouse should match :focus-visible as it supports keyboard input]
+ expected: TIMEOUT
+
+ [Focus element INPUT#input2 via mouse should match :focus-visible as it supports keyboard input]
+ expected: NOTRUN
+
+ [Focus element INPUT#input3 via mouse should match :focus-visible as it supports keyboard input]
+ expected: NOTRUN
+
+ [Focus element INPUT#input4 via mouse should match :focus-visible as it supports keyboard input]
+ expected: NOTRUN
+
+ [Focus element INPUT#input5 via mouse should match :focus-visible as it supports keyboard input]
+ expected: NOTRUN
+
+ [Focus element INPUT#input6 via mouse should match :focus-visible as it supports keyboard input]
+ expected: NOTRUN
+
+ [Focus element INPUT#input7 via mouse should match :focus-visible as it supports keyboard input]
+ expected: NOTRUN
+
+ [Focus element INPUT#input8 via mouse should match :focus-visible as it supports keyboard input]
+ expected: NOTRUN
+
+ [Focus element INPUT#input9 via mouse should match :focus-visible as it supports keyboard input]
+ expected: NOTRUN
+
+ [Focus element INPUT#input10 via mouse should match :focus-visible as it supports keyboard input]
+ expected: NOTRUN
+
+ [Focus element INPUT#input11 via mouse should match :focus-visible as it supports keyboard input]
+ expected: NOTRUN
+
+ [Focus element INPUT#input12 via mouse should match :focus-visible as it supports keyboard input]
+ expected: NOTRUN
+
+ [Focus element INPUT#input13 via mouse should match :focus-visible as it supports keyboard input]
+ expected: NOTRUN
+
+ [Focus element TEXTAREA#input14 via mouse should match :focus-visible as it supports keyboard input]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/selectors/focus-visible-003.html.ini b/tests/wpt/meta/css/selectors/focus-visible-003.html.ini
new file mode 100644
index 00000000000..ab3e7d28a95
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-003.html.ini
@@ -0,0 +1,7 @@
+[focus-visible-003.html]
+ expected: ERROR
+ [Focus element INPUT#el-12 via mouse should NOT match :focus-visible as it does NOT support keyboard input]
+ expected: TIMEOUT
+
+ [Focus element INPUT#el-13 via mouse should NOT match :focus-visible as it does NOT support keyboard input]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/selectors/focus-visible-004.html.ini b/tests/wpt/meta/css/selectors/focus-visible-004.html.ini
new file mode 100644
index 00000000000..2706d2088fd
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-004.html.ini
@@ -0,0 +1,7 @@
+[focus-visible-004.html]
+ expected: ERROR
+ [Focus element INPUT#el-10 via mouse should NOT match :focus-visible as it does NOT support keyboard input - not affected by "appearance: none"]
+ expected: TIMEOUT
+
+ [Focus element INPUT#el-11 via mouse should NOT match :focus-visible as it does NOT support keyboard input - not affected by "appearance: none"]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/selectors/focus-visible-006.html.ini b/tests/wpt/meta/css/selectors/focus-visible-006.html.ini
new file mode 100644
index 00000000000..c7eb061c71c
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-006.html.ini
@@ -0,0 +1,4 @@
+[focus-visible-006.html]
+ expected: TIMEOUT
+ [Focus should always match :focus-visible on content editable divs]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/selectors/focus-visible-007.html.ini b/tests/wpt/meta/css/selectors/focus-visible-007.html.ini
new file mode 100644
index 00000000000..365a89cafac
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-007.html.ini
@@ -0,0 +1,3 @@
+[focus-visible-007.html]
+ [Using keyboard while element is focused should trigger :focus-visible; using mouse without moving focus should not cancel it; moving focus using mouse should cancel it.]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-008.html.ini b/tests/wpt/meta/css/selectors/focus-visible-008.html.ini
new file mode 100644
index 00000000000..9de766f1a2b
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-008.html.ini
@@ -0,0 +1,3 @@
+[focus-visible-008.html]
+ [Programmatic focus after keypress should match :focus-visible]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-011.html.ini b/tests/wpt/meta/css/selectors/focus-visible-011.html.ini
new file mode 100644
index 00000000000..6f5a71cc07a
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-011.html.ini
@@ -0,0 +1,3 @@
+[focus-visible-011.html]
+ [:focus-visible matches even if preventDefault() is called]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-013.html.ini b/tests/wpt/meta/css/selectors/focus-visible-013.html.ini
new file mode 100644
index 00000000000..493b3a5fd21
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-013.html.ini
@@ -0,0 +1,4 @@
+[focus-visible-013.html]
+ expected: TIMEOUT
+ [:focus-visible does not match after mouse click even if previous focused element was matching :focus-visible]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/selectors/focus-visible-016.html.ini b/tests/wpt/meta/css/selectors/focus-visible-016.html.ini
new file mode 100644
index 00000000000..9bdcf0b2a48
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-016.html.ini
@@ -0,0 +1,3 @@
+[focus-visible-016.html]
+ [:focus-visible always match on text inputs]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-018-2.html.ini b/tests/wpt/meta/css/selectors/focus-visible-018-2.html.ini
new file mode 100644
index 00000000000..fcb60a96102
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-018-2.html.ini
@@ -0,0 +1,16 @@
+[focus-visible-018-2.html]
+ expected: TIMEOUT
+ [Mouse focus does not show a focus ring by default in element TABLE]
+ expected: TIMEOUT
+
+ [Mouse focus does not show a focus ring by default in element TD]
+ expected: NOTRUN
+
+ [Mouse focus does not show a focus ring by default in element TIME]
+ expected: NOTRUN
+
+ [Mouse focus does not show a focus ring by default in element UL]
+ expected: NOTRUN
+
+ [Mouse focus does not show a focus ring by default in element U]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/css/selectors/focus-visible-019.html.ini b/tests/wpt/meta/css/selectors/focus-visible-019.html.ini
new file mode 100644
index 00000000000..201a877ed78
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-019.html.ini
@@ -0,0 +1,3 @@
+[focus-visible-019.html]
+ [Focus via script on keyboard event handler matches ':focus-visible']
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-021.html.ini b/tests/wpt/meta/css/selectors/focus-visible-021.html.ini
new file mode 100644
index 00000000000..0c417069344
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-021.html.ini
@@ -0,0 +1,3 @@
+[focus-visible-021.html]
+ [Ctrl key doesn't make an element to stop matching :focus-visible]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-022.tentative.html.ini b/tests/wpt/meta/css/selectors/focus-visible-022.tentative.html.ini
new file mode 100644
index 00000000000..e8647b922d5
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-022.tentative.html.ini
@@ -0,0 +1,3 @@
+[focus-visible-022.tentative.html]
+ [focus-visible-022]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-024.html.ini b/tests/wpt/meta/css/selectors/focus-visible-024.html.ini
new file mode 100644
index 00000000000..26e9c72ee7c
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-024.html.ini
@@ -0,0 +1,6 @@
+[focus-visible-024.html]
+ [:focus-visible matches after accesskey on DIV]
+ expected: FAIL
+
+ [:focus-visible matches after accesskey on BUTTON]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-025.html.ini b/tests/wpt/meta/css/selectors/focus-visible-025.html.ini
new file mode 100644
index 00000000000..72d3695aa9e
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-025.html.ini
@@ -0,0 +1,6 @@
+[focus-visible-025.html]
+ [:focus-visible matches after accesskey on DIV after previous mouse focus]
+ expected: FAIL
+
+ [:focus-visible matches after accesskey on BUTTON after previous mouse focus]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-027.html.ini b/tests/wpt/meta/css/selectors/focus-visible-027.html.ini
new file mode 100644
index 00000000000..05f108357e5
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-027.html.ini
@@ -0,0 +1,3 @@
+[focus-visible-027.html]
+ [CSS Test (Selectors): :focus-visible after click and input type change]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-028.html.ini b/tests/wpt/meta/css/selectors/focus-visible-028.html.ini
new file mode 100644
index 00000000000..8d18671c301
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-028.html.ini
@@ -0,0 +1,3 @@
+[focus-visible-028.html]
+ [Programmatic focus after click and keyboard interaction should match :focus-visible]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-script-focus-002.tentative.html.ini b/tests/wpt/meta/css/selectors/focus-visible-script-focus-002.tentative.html.ini
new file mode 100644
index 00000000000..65557729832
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-script-focus-002.tentative.html.ini
@@ -0,0 +1,3 @@
+[focus-visible-script-focus-002.tentative.html]
+ [Script focus after mouse click does match :focus-visible]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-script-focus-003.tentative.html.ini b/tests/wpt/meta/css/selectors/focus-visible-script-focus-003.tentative.html.ini
new file mode 100644
index 00000000000..4e20816792c
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-script-focus-003.tentative.html.ini
@@ -0,0 +1,3 @@
+[focus-visible-script-focus-003.tentative.html]
+ [Script focus after blur after mouse click does match :focus-visible]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-script-focus-004.html.ini b/tests/wpt/meta/css/selectors/focus-visible-script-focus-004.html.ini
new file mode 100644
index 00000000000..288d594e6ed
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-script-focus-004.html.ini
@@ -0,0 +1,3 @@
+[focus-visible-script-focus-004.html]
+ [Script focus after keyboard event does match :focus-visible]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-script-focus-005.html.ini b/tests/wpt/meta/css/selectors/focus-visible-script-focus-005.html.ini
new file mode 100644
index 00000000000..3ab7e1026a0
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-script-focus-005.html.ini
@@ -0,0 +1,3 @@
+[focus-visible-script-focus-005.html]
+ [Script focus after blur after keyboard event does match :focus-visible]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-script-focus-006.tentative.html.ini b/tests/wpt/meta/css/selectors/focus-visible-script-focus-006.tentative.html.ini
new file mode 100644
index 00000000000..3a87bd8154b
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-script-focus-006.tentative.html.ini
@@ -0,0 +1,3 @@
+[focus-visible-script-focus-006.tentative.html]
+ [Script focus after mouse click on a NOT focusable element does match :focus-visible]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-script-focus-007.tentative.html.ini b/tests/wpt/meta/css/selectors/focus-visible-script-focus-007.tentative.html.ini
new file mode 100644
index 00000000000..573d7ae66b6
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-script-focus-007.tentative.html.ini
@@ -0,0 +1,3 @@
+[focus-visible-script-focus-007.tentative.html]
+ [Script focus after blur after mouse click on a NOT focusable element does match :focus-visible]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-script-focus-010.html.ini b/tests/wpt/meta/css/selectors/focus-visible-script-focus-010.html.ini
new file mode 100644
index 00000000000..1f0bd1ce939
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-script-focus-010.html.ini
@@ -0,0 +1,4 @@
+[focus-visible-script-focus-010.html]
+ expected: ERROR
+ [Script focus after mouse click on a focusable element that matches :focus-visible, does NOT match :focus-visible]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/selectors/focus-visible-script-focus-011.html.ini b/tests/wpt/meta/css/selectors/focus-visible-script-focus-011.html.ini
new file mode 100644
index 00000000000..7cf8cfefb13
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-script-focus-011.html.ini
@@ -0,0 +1,4 @@
+[focus-visible-script-focus-011.html]
+ expected: ERROR
+ [Script focus after blur after mouse click on a focusable element that matches :focus-visible, does NOT match :focus-visible]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/selectors/focus-visible-script-focus-012.html.ini b/tests/wpt/meta/css/selectors/focus-visible-script-focus-012.html.ini
new file mode 100644
index 00000000000..dd1154b0388
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-script-focus-012.html.ini
@@ -0,0 +1,4 @@
+[focus-visible-script-focus-012.html]
+ expected: TIMEOUT
+ [Script focus after keyboard focus does match :focus-visible]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/selectors/focus-visible-script-focus-013.html.ini b/tests/wpt/meta/css/selectors/focus-visible-script-focus-013.html.ini
new file mode 100644
index 00000000000..dd295bd87b6
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-script-focus-013.html.ini
@@ -0,0 +1,4 @@
+[focus-visible-script-focus-013.html]
+ expected: TIMEOUT
+ [Script focus after blur after keyboard focus does match :focus-visible]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/selectors/focus-visible-script-focus-014.html.ini b/tests/wpt/meta/css/selectors/focus-visible-script-focus-014.html.ini
new file mode 100644
index 00000000000..2b3ad3fd5dd
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-script-focus-014.html.ini
@@ -0,0 +1,3 @@
+[focus-visible-script-focus-014.html]
+ [Script focus after keyboard input does match :focus-visible]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-script-focus-015.html.ini b/tests/wpt/meta/css/selectors/focus-visible-script-focus-015.html.ini
new file mode 100644
index 00000000000..9f36343d67a
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-script-focus-015.html.ini
@@ -0,0 +1,3 @@
+[focus-visible-script-focus-015.html]
+ [Script focus after blur after keyboard input does match :focus-visible]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-script-focus-016.tentative.html.ini b/tests/wpt/meta/css/selectors/focus-visible-script-focus-016.tentative.html.ini
new file mode 100644
index 00000000000..05540c03214
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-script-focus-016.tentative.html.ini
@@ -0,0 +1,3 @@
+[focus-visible-script-focus-016.tentative.html]
+ [Script focus after mouse click on a NOT focusable element after editing an input does match :focus-visible]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/focus-visible-script-focus-017.tentative.html.ini b/tests/wpt/meta/css/selectors/focus-visible-script-focus-017.tentative.html.ini
new file mode 100644
index 00000000000..e960e4a376b
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/focus-visible-script-focus-017.tentative.html.ini
@@ -0,0 +1,3 @@
+[focus-visible-script-focus-017.tentative.html]
+ [Script focus after blur after mouse click on a NOT focusable element after editing an input does match :focus-visible]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/has-focus-display-change.html.ini b/tests/wpt/meta/css/selectors/has-focus-display-change.html.ini
new file mode 100644
index 00000000000..89cc2d41f29
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/has-focus-display-change.html.ini
@@ -0,0 +1,3 @@
+[has-focus-display-change.html]
+ [:has(:focus) doesn't cause focusability to be lost]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/fullscreen-pseudo-class-in-has.html.ini b/tests/wpt/meta/css/selectors/invalidation/fullscreen-pseudo-class-in-has.html.ini
new file mode 100644
index 00000000000..94d29a6f79b
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/fullscreen-pseudo-class-in-has.html.ini
@@ -0,0 +1,7 @@
+[fullscreen-pseudo-class-in-has.html]
+ expected: ERROR
+ [:fullscreen pseudo-class invalidation with requestFullscreen + exitFullscreen]
+ expected: FAIL
+
+ [:fullscreen pseudo-class invalidation with requestFullscreen + remove]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/selectors/invalidation/has-with-nesting-parent-containing-complex.html.ini b/tests/wpt/meta/css/selectors/invalidation/has-with-nesting-parent-containing-complex.html.ini
new file mode 100644
index 00000000000..f8bbaffef07
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/has-with-nesting-parent-containing-complex.html.ini
@@ -0,0 +1,54 @@
+[has-with-nesting-parent-containing-complex.html]
+ [#anchor1 becomes rgb(0, 0, 255) after adding .ancestor to #grand_parent1]
+ expected: FAIL
+
+ [#anchor1 becomes rgb(0, 0, 255) after adding .ancestor to #parent1]
+ expected: FAIL
+
+ [#anchor2 becomes rgb(173, 216, 230) after adding .ancestor to #grand_parent2]
+ expected: FAIL
+
+ [#anchor2 becomes rgb(173, 216, 230) after adding .ancestor to #parent2]
+ expected: FAIL
+
+ [#anchor3 becomes rgb(255, 255, 0) after adding .ancestor_prev to #grand_parent_indirect_prev3]
+ expected: FAIL
+
+ [#anchor3 becomes rgb(154, 205, 50) after adding .ancestor to #grand_parent3]
+ expected: FAIL
+
+ [#anchor3 becomes rgb(255, 255, 0) after removing .ancestor from #grand_parent3]
+ expected: FAIL
+
+ [#anchor3 becomes rgb(255, 255, 0) after adding .ancestor_prev to #grand_parent_direct_prev3]
+ expected: FAIL
+
+ [#anchor3 becomes rgb(255, 255, 0) after adding .ancestor_prev to #parent_indirect_prev3]
+ expected: FAIL
+
+ [#anchor3 becomes rgb(154, 205, 50) after adding .ancestor to #parent3]
+ expected: FAIL
+
+ [#anchor3 becomes rgb(255, 255, 0) after removing .ancestor from #parent3]
+ expected: FAIL
+
+ [#anchor3 becomes rgb(255, 255, 0) after adding .ancestor_prev to #parent_direct_prev3]
+ expected: FAIL
+
+ [#anchor3 becomes rgb(255, 255, 0) after adding .ancestor_prev to #anchor_indirect_prev3]
+ expected: FAIL
+
+ [#anchor3 becomes rgb(255, 255, 0) after adding .ancestor_prev to #anchor_direct_prev3]
+ expected: FAIL
+
+ [#anchor4 becomes rgb(0, 128, 0) after adding .prev to #indirect_prev4]
+ expected: FAIL
+
+ [#anchor4 becomes rgb(0, 128, 0) after adding .prev to #direct_prev4]
+ expected: FAIL
+
+ [#anchor5 becomes rgb(144, 238, 144) after adding .prev to #indirect_prev5]
+ expected: FAIL
+
+ [#anchor5 becomes rgb(144, 238, 144) after adding .prev to #direct_prev5]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/has-with-nesting-parent-containing-hover.html.ini b/tests/wpt/meta/css/selectors/invalidation/has-with-nesting-parent-containing-hover.html.ini
new file mode 100644
index 00000000000..8d175439f1d
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/has-with-nesting-parent-containing-hover.html.ini
@@ -0,0 +1,3 @@
+[has-with-nesting-parent-containing-hover.html]
+ [CSS Selector Invalidation: :has() with nesting parent containing :hover]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/link-pseudo-class-in-has.html.ini b/tests/wpt/meta/css/selectors/invalidation/link-pseudo-class-in-has.html.ini
new file mode 100644
index 00000000000..57dd030c546
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/link-pseudo-class-in-has.html.ini
@@ -0,0 +1,6 @@
+[link-pseudo-class-in-has.html]
+ [:any-link & :link pseudo-class invalidation with an HTML link]
+ expected: FAIL
+
+ [:any-link & :link pseudo-class invalidation with an SVG link]
+ 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
index 26a2bc49a56..7edcbdee61b 100644
--- 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
@@ -1,9 +1,19 @@
[modal-pseudo-class-in-has.html]
- [:modal pseudo-class is not active with dialog.show()]
- expected: FAIL
-
+ expected: ERROR
[:modal pseudo-class invalidation with showModal+close]
expected: FAIL
[:modal pseudo-class invalidation with showModal+remove]
expected: FAIL
+
+ [:modal pseudo-class invalidation with showModal + close]
+ expected: FAIL
+
+ [:modal pseudo-class invalidation with showModal + remove]
+ expected: FAIL
+
+ [:modal pseudo-class invalidation with requestFullscreen + exitFullscreen]
+ expected: FAIL
+
+ [:modal pseudo-class invalidation with requestFullscreen + remove]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/selectors/invalidation/user-action-pseudo-classes-in-has.html.ini b/tests/wpt/meta/css/selectors/invalidation/user-action-pseudo-classes-in-has.html.ini
new file mode 100644
index 00000000000..1a095bee0bc
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/user-action-pseudo-classes-in-has.html.ini
@@ -0,0 +1,3 @@
+[user-action-pseudo-classes-in-has.html]
+ [CSS Selectors Invalidation: user-action pseudo classes in :has() argument]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/user-valid-user-invalid.html.ini b/tests/wpt/meta/css/selectors/invalidation/user-valid-user-invalid.html.ini
new file mode 100644
index 00000000000..4be8fd94135
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/user-valid-user-invalid.html.ini
@@ -0,0 +1,3 @@
+[user-valid-user-invalid.html]
+ [:user-valid and :user-invalid should invalidate after user input.]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/modal-pseudo-class.html.ini b/tests/wpt/meta/css/selectors/modal-pseudo-class.html.ini
new file mode 100644
index 00000000000..c62c4338cfc
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/modal-pseudo-class.html.ini
@@ -0,0 +1,6 @@
+[modal-pseudo-class.html]
+ [Test that :modal matches modal