diff options
Diffstat (limited to 'tests')
524 files changed, 12670 insertions, 2720 deletions
diff --git a/tests/wpt/meta/MANIFEST.json b/tests/wpt/meta/MANIFEST.json index acd82d9d4c3..3572a96833c 100644 --- a/tests/wpt/meta/MANIFEST.json +++ b/tests/wpt/meta/MANIFEST.json @@ -410,7 +410,7 @@ }, "ai": { "language_detection": { - "availability-detached-crash.tentative.https.html": [ + "availability-detached-crash.https.html": [ "5f76d59eb3540048bc0586f2a1ac5b3b313a147e", [ null, @@ -2119,6 +2119,13 @@ null, {} ] + ], + "position-sticky-crash.html": [ + "aebebbdc7ac35aca48bde4c2bb203bb8a17e4ef8", + [ + null, + {} + ] ] } }, @@ -5345,6 +5352,13 @@ {} ] ], + "text-decoration-animation-crash.html": [ + "a20f166c427159f87daf082ae19e384f96f10939", + [ + null, + {} + ] + ], "text-decoration-first-line-multi-crash.html": [ "f6176334ad6e6ef2662a8f89785f601f48a762cf", [ @@ -6426,6 +6440,15 @@ ] ] }, + "ranges": { + "Range-compareBoundaryPoints-crash.html": [ + "673eeb6182844b5097d6edb0699a7b480c50b404", + [ + null, + {} + ] + ] + }, "svg-insert-crash.html": [ "80eec1fba7ddc50db35fa53f7f4e72b59e6e31c7", [ @@ -8209,6 +8232,13 @@ {} ] ], + "dialog-requestclose-4-crash.html": [ + "a6b0268cb908ffe3589fca420a18d6454ddc1767", + [ + null, + {} + ] + ], "dialog-requestclose-crash.html": [ "c4c4850a2d3c66c189c1e81810a856f5b6c86ff2", [ @@ -9276,7 +9306,7 @@ } }, "mediacapture-image": { - "ImageCapture-grabFrame-crash.html": [ + "ImageCapture-grabFrame-crash.https.html": [ "d4bf57f0fa9f851db48cf47a78ef62f86e2942fb", [ null, @@ -124224,7 +124254,7 @@ "css-align": { "abspos": { "align-items-static-position.html": [ - "8f3dbb7ae41e5dae167282cfffa522e800f0bbc7", + "0b653ca5d6c2bbaf29b3834aec7d806169c8de55", [ null, [ @@ -124236,6 +124266,32 @@ {} ] ], + "align-self-static-position-001.html": [ + "1ff73ef116d9d59786bf91c73c546a3f0f7e89df", + [ + null, + [ + [ + "/css/css-align/abspos/align-self-static-position-001-ref.html", + "==" + ] + ], + {} + ] + ], + "align-self-static-position-002.html": [ + "4c794bac28732040112ac7e56ff85c0cea4e371a", + [ + null, + [ + [ + "/css/css-align/abspos/align-self-static-position-002-ref.html", + "==" + ] + ], + {} + ] + ], "align-self-stretch-auto-size.tentative.html": [ "74091feacfe63813aa4a6bbc3ef1b4d3e4e8a59c", [ @@ -180072,7 +180128,7 @@ ] ], "overflow-area-001.html": [ - "10685c6e84a1683f75e6822b66d9e02645973ccc", + "ac0573a7282fa1a739143c2fba8887f625a47762", [ null, [ @@ -180085,7 +180141,7 @@ ] ], "overflow-area-002.html": [ - "1287270f1ef645fb4e04a67fb90b368d03b3f208", + "24fb312397dbece40a3262a7ce7678d3ad25b467", [ null, [ @@ -180098,7 +180154,7 @@ ] ], "overflow-area-003.html": [ - "ff86dea30f10bf9e8411871b98a249500d74832b", + "382fb8863393561389aac105ee24c11d446b22b6", [ null, [ @@ -185965,609 +186021,607 @@ ] }, "css-gaps": { - "tentative": { - "flex": { - "flex-gap-decorations-001.html": [ - "0667693f38c77e814a09930461f91956af9e3c85", + "flex": { + "flex-gap-decorations-001.html": [ + "b32e2f13d8cdb39c12e26423f882734f2f5bf4fd", + [ + null, [ - null, [ - [ - "/css/reference/ref-filled-green-100px-square.xht", - "==" - ] - ], - {} - ] - ], - "flex-gap-decorations-002.html": [ - "58740200d4a8cdb2a9c450353adb920df97763fd", + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "flex-gap-decorations-002.html": [ + "58740200d4a8cdb2a9c450353adb920df97763fd", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/agnostic/gap-decorations-001-ref.html", - "==" - ] - ], - {} - ] - ], - "flex-gap-decorations-003.html": [ - "effab7fee24a20936dd0cc487947693c8e87a72d", + "/css/css-gaps/agnostic/gap-decorations-001-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-gap-decorations-003.html": [ + "effab7fee24a20936dd0cc487947693c8e87a72d", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/flex/flex-gap-decorations-003-ref.html", - "==" - ] - ], - {} - ] - ], - "flex-gap-decorations-004.html": [ - "a5c0698e7fa3829cd515323dbb851cc55c30db7d", + "/css/css-gaps/flex/flex-gap-decorations-003-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-gap-decorations-004.html": [ + "a5c0698e7fa3829cd515323dbb851cc55c30db7d", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/flex/flex-gap-decorations-004-ref.html", - "==" - ] - ], - {} - ] - ], - "flex-gap-decorations-005.html": [ - "1688d447d50dbab028f0a8a82815f5661f921d53", + "/css/css-gaps/flex/flex-gap-decorations-004-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-gap-decorations-005.html": [ + "1688d447d50dbab028f0a8a82815f5661f921d53", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/flex/flex-gap-decorations-005-ref.html", - "==" - ] - ], - {} - ] - ], - "flex-gap-decorations-006.html": [ - "3d7dbfd9fedb7513c77b7c5dce132935c8e52617", + "/css/css-gaps/flex/flex-gap-decorations-005-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-gap-decorations-006.html": [ + "3d7dbfd9fedb7513c77b7c5dce132935c8e52617", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/flex/flex-gap-decorations-006-ref.html", - "==" - ] - ], - {} - ] - ], - "flex-gap-decorations-007.html": [ - "34853bb32062009381d7d868fcef8c99fdc9ffa8", + "/css/css-gaps/flex/flex-gap-decorations-006-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-gap-decorations-007.html": [ + "34853bb32062009381d7d868fcef8c99fdc9ffa8", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/flex/flex-gap-decorations-007-ref.html", - "==" - ] - ], - {} - ] - ], - "flex-gap-decorations-008.html": [ - "bd4e73c158c1d329d7c747d69477d19c8ed6c3fd", + "/css/css-gaps/flex/flex-gap-decorations-007-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-gap-decorations-008.html": [ + "bd4e73c158c1d329d7c747d69477d19c8ed6c3fd", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/flex/flex-gap-decorations-008-ref.html", - "==" - ] - ], - {} - ] - ], - "flex-gap-decorations-009.html": [ - "6bb406c5b0155c7eb65d0117e388bad2272a6ac9", + "/css/css-gaps/flex/flex-gap-decorations-008-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-gap-decorations-009.html": [ + "6bb406c5b0155c7eb65d0117e388bad2272a6ac9", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/flex/flex-gap-decorations-009-ref.html", - "==" - ] - ], - {} - ] - ], - "flex-gap-decorations-010.html": [ - "49f6ec962ada962ac2253b148f316df237bbf5e5", + "/css/css-gaps/flex/flex-gap-decorations-009-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-gap-decorations-010.html": [ + "49f6ec962ada962ac2253b148f316df237bbf5e5", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/flex/flex-gap-decorations-010-ref.html", - "==" - ] - ], - {} - ] - ], - "flex-gap-decorations-011.html": [ - "7b142e54ec7d0dade4d8e7b5b46a85c70ca6aa8e", + "/css/css-gaps/flex/flex-gap-decorations-010-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-gap-decorations-011.html": [ + "7b142e54ec7d0dade4d8e7b5b46a85c70ca6aa8e", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/flex/flex-gap-decorations-011-ref.html", - "==" - ] - ], - {} - ] - ], - "flex-gap-decorations-012.html": [ - "2f1f95c00c8c0eed6e11dc10c1e0e90c392ddb6f", + "/css/css-gaps/flex/flex-gap-decorations-011-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-gap-decorations-012.html": [ + "2f1f95c00c8c0eed6e11dc10c1e0e90c392ddb6f", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/flex/flex-gap-decorations-012-ref.html", - "==" - ] - ], - {} - ] - ], - "flex-gap-decorations-013.html": [ - "1cdf1c2749660c9147dffc07f171f698d6a9fd2b", + "/css/css-gaps/flex/flex-gap-decorations-012-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-gap-decorations-013.html": [ + "1cdf1c2749660c9147dffc07f171f698d6a9fd2b", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/flex/flex-gap-decorations-013-ref.html", - "==" - ] - ], - {} - ] - ], - "flex-gap-decorations-014.html": [ - "b7d19549e038ee8efad8d17065071cab00f6b7af", + "/css/css-gaps/flex/flex-gap-decorations-013-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-gap-decorations-014.html": [ + "b7d19549e038ee8efad8d17065071cab00f6b7af", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/flex/flex-gap-decorations-014-ref.html", - "==" - ] - ], - {} - ] - ], - "flex-gap-decorations-015.html": [ - "8d100978205684b4a21dfcc2962f6f47bbe5417a", + "/css/css-gaps/flex/flex-gap-decorations-014-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-gap-decorations-015.html": [ + "8d100978205684b4a21dfcc2962f6f47bbe5417a", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/flex/flex-gap-decorations-015-ref.html", - "==" - ] - ], - {} - ] - ], - "flex-gap-decorations-016.html": [ - "9f956369d48c08793bafca4cd61653dfd963cc77", + "/css/css-gaps/flex/flex-gap-decorations-015-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-gap-decorations-016.html": [ + "9f956369d48c08793bafca4cd61653dfd963cc77", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/flex/flex-gap-decorations-016-ref.html", - "==" - ] - ], - {} - ] - ], - "flex-gap-decorations-017.html": [ - "21fb643a241139915b5d09022513b8f0435b69db", + "/css/css-gaps/flex/flex-gap-decorations-016-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-gap-decorations-017.html": [ + "21fb643a241139915b5d09022513b8f0435b69db", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/flex/flex-gap-decorations-017-ref.html", - "==" - ] - ], - {} - ] - ], - "flex-gap-decorations-018.html": [ - "073fa1b9af7a2830021f3d57e0c648fee6084ce8", + "/css/css-gaps/flex/flex-gap-decorations-017-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-gap-decorations-018.html": [ + "073fa1b9af7a2830021f3d57e0c648fee6084ce8", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/flex/flex-gap-decorations-018-ref.html", - "==" - ] - ], - {} - ] - ], - "flex-gap-decorations-019.html": [ - "93618f71e8f7a0593c5b925eee2bdfd587411db8", + "/css/css-gaps/flex/flex-gap-decorations-018-ref.html", + "==" + ] + ], + {} + ] + ], + "flex-gap-decorations-019.html": [ + "5bad5f00d496827b83905aabd39b794e84beae46", + [ + null, [ - null, [ - [ - "/css/reference/ref-filled-green-100px-square.xht", - "==" - ] - ], - {} - ] + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} ] - }, - "grid": { - "grid-gap-decorations-001.html": [ - "5fe13a11bbfdb6086dfac68ef20412d6f8a87dc5", + ] + }, + "grid": { + "grid-gap-decorations-001.html": [ + "648f3f26e56892732d8db78ae0e8a852694f9679", + [ + null, [ - null, [ - [ - "/css/reference/ref-filled-green-100px-square.xht", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-002.html": [ - "7e7e0e4d325a89d96e9e4978da56d410769a5719", + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-002.html": [ + "7e7e0e4d325a89d96e9e4978da56d410769a5719", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/agnostic/gap-decorations-001-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-003.html": [ - "f9d07a183ec5231a9a71d348d70cacb231fef329", + "/css/css-gaps/agnostic/gap-decorations-001-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-003.html": [ + "f9d07a183ec5231a9a71d348d70cacb231fef329", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-003-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-004.html": [ - "e28988151a537d3f7df0e0964590c9f2c44ce49d", + "/css/css-gaps/grid/grid-gap-decorations-003-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-004.html": [ + "e28988151a537d3f7df0e0964590c9f2c44ce49d", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-004-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-005.html": [ - "741977d2eb47402061fc4976d28bbfcf59d47e13", + "/css/css-gaps/grid/grid-gap-decorations-004-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-005.html": [ + "741977d2eb47402061fc4976d28bbfcf59d47e13", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-005-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-006.html": [ - "7b1187c4e44bed68af665462107fa34d7a2cfc4a", + "/css/css-gaps/grid/grid-gap-decorations-005-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-006.html": [ + "7b1187c4e44bed68af665462107fa34d7a2cfc4a", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-006-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-007.html": [ - "adc98e4bc03dd1305402ab33ed1c146f7f4c5718", + "/css/css-gaps/grid/grid-gap-decorations-006-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-007.html": [ + "adc98e4bc03dd1305402ab33ed1c146f7f4c5718", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-007-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-008.html": [ - "f8dc0df36e2d7a4a30576e60180647bf7b2edb94", + "/css/css-gaps/grid/grid-gap-decorations-007-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-008.html": [ + "f8dc0df36e2d7a4a30576e60180647bf7b2edb94", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-008-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-009.html": [ - "0756b9294be1daae5af190bf27235fdc23f9c5f8", + "/css/css-gaps/grid/grid-gap-decorations-008-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-009.html": [ + "0756b9294be1daae5af190bf27235fdc23f9c5f8", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-009-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-010.html": [ - "d9201b51cea33053cdab2d55ddb10b06acc7f629", + "/css/css-gaps/grid/grid-gap-decorations-009-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-010.html": [ + "d9201b51cea33053cdab2d55ddb10b06acc7f629", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-010-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-011.html": [ - "c0540398d0533e66d2f86a3aa15cf4998a4e74f4", + "/css/css-gaps/grid/grid-gap-decorations-010-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-011.html": [ + "c0540398d0533e66d2f86a3aa15cf4998a4e74f4", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-011-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-012.html": [ - "26ba45a14ff9b1526bfe44e480171e0f95a0e8a7", + "/css/css-gaps/grid/grid-gap-decorations-011-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-012.html": [ + "26ba45a14ff9b1526bfe44e480171e0f95a0e8a7", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-012-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-013.html": [ - "4a056134089e58169ae0769633c30ed1ca160478", + "/css/css-gaps/grid/grid-gap-decorations-012-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-013.html": [ + "4a056134089e58169ae0769633c30ed1ca160478", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-013-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-014.html": [ - "97ad626e1f24cd489a4470c84118d1161b4c46e2", + "/css/css-gaps/grid/grid-gap-decorations-013-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-014.html": [ + "97ad626e1f24cd489a4470c84118d1161b4c46e2", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-014-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-015.html": [ - "e575c134353b2c97e16a1440e25fc5d6a28cadc9", + "/css/css-gaps/grid/grid-gap-decorations-014-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-015.html": [ + "e575c134353b2c97e16a1440e25fc5d6a28cadc9", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-015-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-016.html": [ - "a0618e44b56b3621c6d0730a83837792f3b59c21", + "/css/css-gaps/grid/grid-gap-decorations-015-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-016.html": [ + "a0618e44b56b3621c6d0730a83837792f3b59c21", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-016-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-017.html": [ - "be0f7fc27515b3d35cde376fd99e6b6c87cfdeb4", + "/css/css-gaps/grid/grid-gap-decorations-016-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-017.html": [ + "be0f7fc27515b3d35cde376fd99e6b6c87cfdeb4", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-017-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-018.html": [ - "dc5e2e38e0b2207388c7c7456758fda49935fb88", + "/css/css-gaps/grid/grid-gap-decorations-017-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-018.html": [ + "dc5e2e38e0b2207388c7c7456758fda49935fb88", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-018-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-019.html": [ - "637e0467a80116bac40b7270d69e0f0aae214129", + "/css/css-gaps/grid/grid-gap-decorations-018-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-019.html": [ + "637e0467a80116bac40b7270d69e0f0aae214129", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-019-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-020.html": [ - "eb91644053f7b2287e560c952c1c1600eedf34b1", + "/css/css-gaps/grid/grid-gap-decorations-019-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-020.html": [ + "eb91644053f7b2287e560c952c1c1600eedf34b1", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-020-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-021.html": [ - "63db3b4e04868b867d10919f8a1a919eb846b790", + "/css/css-gaps/grid/grid-gap-decorations-020-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-021.html": [ + "63db3b4e04868b867d10919f8a1a919eb846b790", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-021-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-022.html": [ - "730114aa7634a1965bb9eeec1739f5872361726b", + "/css/css-gaps/grid/grid-gap-decorations-021-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-022.html": [ + "ad73239bade785ca3a9d176599ddf75d795e7df1", + [ + null, [ - null, [ - [ - "/css/reference/ref-filled-green-100px-square.xht", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-023.html": [ - "706f66ebcfac1a0000debf4c753f11ca4f481f16", + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-023.html": [ + "706f66ebcfac1a0000debf4c753f11ca4f481f16", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-023-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-024.html": [ - "104df87c7e22568b93b758c9d17a395ca9f496b8", + "/css/css-gaps/grid/grid-gap-decorations-023-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-024.html": [ + "104df87c7e22568b93b758c9d17a395ca9f496b8", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-024-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-025.html": [ - "fc48f15f5c27d591a0b417355156b1a66f5c31a8", + "/css/css-gaps/grid/grid-gap-decorations-024-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-025.html": [ + "fc48f15f5c27d591a0b417355156b1a66f5c31a8", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-025-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-026.html": [ - "17e0a99dd844d607859d09aa85749b0946431f02", + "/css/css-gaps/grid/grid-gap-decorations-025-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-026.html": [ + "17e0a99dd844d607859d09aa85749b0946431f02", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-026-ref.html", - "==" - ] - ], - {} - ] - ], - "grid-gap-decorations-027.html": [ - "e39305f74b8a432cd5b8a1e386c75daab6c1433d", + "/css/css-gaps/grid/grid-gap-decorations-026-ref.html", + "==" + ] + ], + {} + ] + ], + "grid-gap-decorations-027.html": [ + "e39305f74b8a432cd5b8a1e386c75daab6c1433d", + [ + null, [ - null, [ - [ - "/css/css-gaps/tentative/grid/grid-gap-decorations-027-ref.html", - "==" - ] - ], - {} - ] + "/css/css-gaps/grid/grid-gap-decorations-027-ref.html", + "==" + ] + ], + {} ] - } + ] } }, "css-grid": { @@ -195766,6 +195820,19 @@ {} ] ], + "line-names-014.html": [ + "fe1d5d46633568287d502c09e0ae1d30c74d1658", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "orthogonal-writing-mode-001.html": [ "1cf99a73e2ef7b0e3fe42bbf8c188fa4d2733979", [ @@ -222658,6 +222725,19 @@ {} ] ], + "resize-multicol-with-fixed-size-children-002.html": [ + "9a582bf51771454df6226b8fa26d982c66ec5ea9", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "resize-multicol-with-fixed-size-children.html": [ "a3963d06a3d71d50833f6df382e5b330011fe059", [ @@ -224185,7 +224265,7 @@ ] ], "block-ellipsis-013.html": [ - "c9fe0aba59fbf8e89380e3f31af9f394fc45c068", + "576ec3aec5460f6d0f12de65a73bee8cbbc60292", [ null, [ @@ -224198,7 +224278,7 @@ ] ], "block-ellipsis-014.html": [ - "4961cf3a7a233dab974506cabde867d8136ab748", + "3fa55ddde4da4c04f6b32a6827ac2146e2177355", [ null, [ @@ -224211,7 +224291,7 @@ ] ], "block-ellipsis-015.html": [ - "0a0046711c0965535cdc3a5e31c0d34c05742ed1", + "22b125f0f50140c367eb080333dccb016b06fc19", [ null, [ @@ -224224,7 +224304,7 @@ ] ], "block-ellipsis-016.html": [ - "00e4c601e3667b0878ba864670912bdffcba8927", + "7c7256a953a3a60f5ed06aa6cb25fb036b733ac5", [ null, [ @@ -224237,7 +224317,7 @@ ] ], "block-ellipsis-017.html": [ - "05f7896f5659158648a1a92917b8311c5f10ae2b", + "9c84673e9e8a7a5efdfd14a9db9dec66d75af4af", [ null, [ @@ -224301,6 +224381,19 @@ {} ] ], + "block-ellipsis-022.html": [ + "caa3489e6c5a54fcdb259b092f89dcd107b9bc99", + [ + null, + [ + [ + "/css/css-overflow/line-clamp/reference/block-ellipsis-022-ref.html", + "==" + ] + ], + {} + ] + ], "line-clamp-001.html": [ "c8cfcb1066de1a1d5c98e147c8e47499069046be", [ @@ -224835,7 +224928,7 @@ ] ], "line-clamp-auto-009.tentative.html": [ - "44d111056c6b021c796ea694d744816125314def", + "33d4a9abbae87bf252413324ac61100c7b1c8f55", [ null, [ @@ -224848,7 +224941,7 @@ ] ], "line-clamp-auto-010.tentative.html": [ - "cb706bba08e2c9dd6ff05b926be23eb22c9c25b7", + "6b69dc0030aee0ed209b031f6da6870e4c874c1d", [ null, [ @@ -226031,7 +226124,7 @@ ] ], "webkit-line-clamp-036.html": [ - "b8d7b194f05dd8dc1189900b399188e0d17391d1", + "437a93a711d5611f19ce2f0bc6442a483743b7bb", [ null, [ @@ -226044,7 +226137,7 @@ ] ], "webkit-line-clamp-037.html": [ - "86015228f88e4c622c4bd1c20cb35a20619075c7", + "70c33f75d1107d83ca0e11e567d6a66fe1520cb9", [ null, [ @@ -274871,7 +274964,7 @@ ] ], "decorations-multiple-zorder.html": [ - "22406534b689e1ee810a4ad3eb5e41a86f93e088", + "b221092252b43d1ea9728b80a458564eea13b51a", [ null, [ @@ -274880,7 +274973,23 @@ "==" ] ], - {} + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 45 + ], + [ + 0, + 5 + ] + ] + ] + ] + } ] ], "dynamic-blur.html": [ @@ -274979,7 +275088,7 @@ ] ], "standards-decor-noblur-2.html": [ - "75d95b578dcf08d073576940c7a7a06f6458909e", + "3d1a834ab34d3dfd401741cdad0624ebf676449c", [ null, [ @@ -274995,11 +275104,11 @@ [ [ 0, - 40 + 1 ], [ 0, - 14 + 8 ] ] ] @@ -298675,6 +298784,19 @@ {} ] ], + "native-appearance-disabled-for-value-unset.html": [ + "c720d04bf23b37a0b689871bc7ab6a1960340a58", + [ + null, + [ + [ + "/css/css-ui/reference/native-appearance-disabled-for-value-unset-ref.html", + "==" + ] + ], + {} + ] + ], "negative-outline-offset.html": [ "3d20df08539d917f91fada7063ded4bc541936b5", [ @@ -305554,6 +305676,19 @@ {} ] ], + "empty-render-target-capture.html": [ + "f0be6019a39435cf139b241fe1071c5580f8c207", + [ + null, + [ + [ + "/css/css-view-transitions/empty-render-target-capture-ref.html", + "==" + ] + ], + {} + ] + ], "exit-transition-with-anonymous-layout-object.html": [ "ea2d17b276100111263b1ea5278fbb4167042ee0", [ @@ -305967,7 +306102,7 @@ ] ], "inline-child-with-filter.html": [ - "2c4a8b85ec175ef0e611f92019481b76658ef387", + "61f0f1f6a8c389cd7298c56d8c2e35c3f101027b", [ null, [ @@ -305976,7 +306111,23 @@ "==" ] ], - {} + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 2 + ], + [ + 0, + 2400 + ] + ] + ] + ] + } ] ], "inline-child-with-overflow-shadow.html": [ @@ -315007,7 +315158,7 @@ ] ], "available-size-020.html": [ - "bf09886f30a0762e8a56d0ad01a335b263280b39", + "f20dfe1199aaed7e1112792d285c182ad9cb359b", [ null, [ @@ -315020,7 +315171,7 @@ ] ], "available-size-021.html": [ - "4547ba1934f8ec3432f1f09dfda0c06f84494026", + "63c50fd07d8c8050ea4057568b287a279adf02d6", [ null, [ @@ -323969,6 +324120,71 @@ {} ] ], + "table-cell-align-001.html": [ + "046dc96e8f2257dfae966e20f0972a18f6eceda8", + [ + null, + [ + [ + "/css/css-writing-modes/reference/table-cell-align-001-ref.html", + "==" + ] + ], + {} + ] + ], + "table-cell-align-002.html": [ + "14c201d937daaebbbf66243e45e6a34731489ab8", + [ + null, + [ + [ + "/css/css-writing-modes/reference/table-cell-align-002-ref.html", + "==" + ] + ], + {} + ] + ], + "table-cell-align-003.html": [ + "c32f535c5464c9463bc797f53887747b44160cd1", + [ + null, + [ + [ + "/css/css-writing-modes/reference/table-cell-align-001-ref.html", + "==" + ] + ], + {} + ] + ], + "table-cell-align-004.html": [ + "d9b31bf6f948cd1baa553e7b89ad57b31a6ca139", + [ + null, + [ + [ + "/css/css-writing-modes/reference/table-cell-align-002-ref.html", + "==" + ] + ], + {} + ] + ], + "table-cell-align-005.html": [ + "569a59db08c5b4e8c94ba4da1749749b881e5479", + [ + null, + [ + [ + "/css/css-writing-modes/reference/table-cell-align-005-ref.html", + "==" + ] + ], + {} + ] + ], "table-cell-valign-001.html": [ "f3026810dd58cd04f87df5f3ae2ad474d5c289db", [ @@ -336545,6 +336761,19 @@ ] ] }, + "popover-open-with-has-sibling-selector.html": [ + "85f433e17919c75c799767bf3ec755f1fe16c516", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "remove-hovered-element.html": [ "ec2eed1d47d33ef492c601bda08f9b6d779a28fc", [ @@ -347691,6 +347920,19 @@ ], {} ] + ], + "marquee-with-trusted-types.html": [ + "57f4985032165e989ba261c32c11c9acf0491908", + [ + null, + [ + [ + "/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-with-trusted-types-ref.html", + "==" + ] + ], + {} + ] ] } } @@ -362204,7 +362446,7 @@ ] ], "viewBox-synthesized-in-img-001.tentative.html": [ - "85b555da050d83b0b1bd71c071a0978687e51204", + "4496be9a5c2908171b37616427fd4f0cf6b97c0a", [ null, [ @@ -362213,7 +362455,9 @@ "==" ] ], - {} + { + "timeout": "long" + } ] ] }, @@ -362906,6 +363150,19 @@ {} ] ], + "circle-calc-dynamic-viewport.html": [ + "cff8915d6f0ca9396da0afaaf1c27b86925d8459", + [ + null, + [ + [ + "/svg/geometry/reftests/circle-calc-dynamic-viewport-ref.html", + "==" + ] + ], + {} + ] + ], "ellipse-001.svg": [ "e6d394de206f8831136dbe916d55166038ee94c2", [ @@ -362990,6 +363247,19 @@ {} ] ], + "ellipse-calc-dynamic-viewport.html": [ + "d817b78824633d3c6afea42c86912b0de090ab7c", + [ + null, + [ + [ + "/svg/geometry/reftests/ellipse-calc-dynamic-viewport-ref.html", + "==" + ] + ], + {} + ] + ], "percentage-attribute.svg": [ "44c386d517179621fbf763d0c82c6750ca8d0f63", [ @@ -363067,6 +363337,19 @@ ], {} ] + ], + "rect-calc-dynamic-viewport.html": [ + "6fe39012511d7c57cae0d522a94299b589912f27", + [ + null, + [ + [ + "/svg/geometry/reftests/rect-calc-dynamic-viewport-ref.html", + "==" + ] + ], + {} + ] ] } }, @@ -364671,6 +364954,21 @@ {} ] ] + }, + "reftests": { + "path-zoom.html": [ + "281124334a2fab589fcb424cb66fe405bf8d1438", + [ + null, + [ + [ + "/svg/path/reftests/path-zoom-ref.html", + "==" + ] + ], + {} + ] + ] } }, "pservers": { @@ -370494,6 +370792,10 @@ "d1aafdcb12445a77e4a395ac1aa509f54daf69c7", [] ], + "update_codeowners.yml": [ + "9e3f23efa7df7b362785aea566619253842056e4", + [] + ], "wpt_fyi_notify.yml": [ "8e9a043f2c363e9bb661a9afa1a9fabebfe1fe98", [] @@ -370613,7 +370915,7 @@ ] }, "CODEOWNERS": [ - "c5db991b4007a177feef8441884abbc6f82d03fd", + "da5b3f0d33037a3f2b58a69fd10d19401c9523fd", [] ], "CODE_OF_CONDUCT.md": [ @@ -370933,7 +371235,7 @@ [] ], "importKey_failures.js": [ - "e073c3490fc114e16b98c2e1b44bc95d1a1bd5c4", + "39c70a85470dcadf471735fcc040f9d9b6c81981", [] ], "okp_importKey.js": [ @@ -371199,11 +371501,11 @@ }, "resources": { "locale-util.js": [ - "87d32ae620bbc050830705bfdb8902d30d3968e7", + "cacb11f4f25e04555a4d2a29b9344b19fc79c4d1", [] ], "util.js": [ - "0cbdc68e26058e2d1133bffe26ce9ffa72dbe564", + "3e95a936304f3190066f3774e9483394d31a501f", [] ] }, @@ -413444,7 +413746,15 @@ ], "abspos": { "align-items-static-position-ref.html": [ - "1b36d26bbe15f14c15fd71c98347ca2bdfb5e722", + "fd7093f98748709d0f6d03c9dc9993a7a1447446", + [] + ], + "align-self-static-position-001-ref.html": [ + "94d0b43b2127080e961be8a7277865e2b6013d88", + [] + ], + "align-self-static-position-002-ref.html": [ + "d8bef63aa292aecd1ce6628e27abbc2c196f8a29", [] ], "align-self-with-flex-grid-parent-ref.html": [ @@ -422266,15 +422576,15 @@ [] ], "overflow-area-001-ref.html": [ - "2c2a825f41ef5aaa51f962d0f46d8b9ac099c1a0", + "cd13c7e0915933a662996005d195957a28d2d787", [] ], "overflow-area-002-ref.html": [ - "f5d06c6cf3e3227f9c415c6d5e3e11b3d766bd67", + "6422d4f7dfb80db8a9adfd8e5a6d4f63aa64782a", [] ], "overflow-area-003-ref.html": [ - "2d9bf19922ce5bbe12327bd6c833fbe167bcb856", + "40df8cb5a8b5dd2a865ab23c9ca971bad8a174d7", [] ], "overflow-auto-005-ref.html": [ @@ -430234,177 +430544,175 @@ } }, "css-gaps": { - "tentative": { - "agnostic": { - "gap-decorations-001-ref.html": [ - "a7314fc7dca1545dacd710c261c7594117a3894a", - [] - ] - }, - "flex": { - "flex-gap-decorations-003-ref.html": [ - "137a63474b80d8cae010511de93d21144052366f", - [] - ], - "flex-gap-decorations-004-ref.html": [ - "f77dd318db7747a5a7107e69afe2a21436aafc33", - [] - ], - "flex-gap-decorations-005-ref.html": [ - "04b3e8d1af4eee718bda8b432c157a45c3a3f623", - [] - ], - "flex-gap-decorations-006-ref.html": [ - "46c4fd49e39239b3940911f514e169f86cc613b0", - [] - ], - "flex-gap-decorations-007-ref.html": [ - "8511c66acf4511670a0268f8bf170a883e2d3924", - [] - ], - "flex-gap-decorations-008-ref.html": [ - "8ca5749417f4eac98bbd9145f8a7cdd6bddc8cc0", - [] - ], - "flex-gap-decorations-009-ref.html": [ - "0adb9af6994746b1e80d056a0c92cd48f2106108", - [] - ], - "flex-gap-decorations-010-ref.html": [ - "8756c5d038c147a561b20ce4ce2aa45e0ade0ab7", - [] - ], - "flex-gap-decorations-011-ref.html": [ - "082be2875a4274d8744b098f8858635c0df8c8d3", - [] - ], - "flex-gap-decorations-012-ref.html": [ - "33be4b76212fde92bf4488574228c37b50edc1b6", - [] - ], - "flex-gap-decorations-013-ref.html": [ - "3d999788023d13c8414796f6839ceafcd94803d5", - [] - ], - "flex-gap-decorations-014-ref.html": [ - "59ce37deaec3e993e594c01fb9ac9887ced10668", - [] - ], - "flex-gap-decorations-015-ref.html": [ - "48745eff931a803f4da17ea6a527b62367720560", - [] - ], - "flex-gap-decorations-016-ref.html": [ - "155e0bfac7b35307f211535f4a940edc7af32dfc", - [] - ], - "flex-gap-decorations-017-ref.html": [ - "031be2abaf1b856b6b33a40958a7fe7438a01ed2", - [] - ], - "flex-gap-decorations-018-ref.html": [ - "644a409bd977acb91812666ac2f9a6e1c1b66830", - [] - ] - }, - "grid": { - "grid-gap-decorations-003-ref.html": [ - "15fc305633d377c286ed9d8fefc6f86aef78c467", - [] - ], - "grid-gap-decorations-004-ref.html": [ - "e4e6b8b458f30c5b8ef5cefbeaf23c13571e0c15", - [] - ], - "grid-gap-decorations-005-ref.html": [ - "aebfba5a20e97e826e27e27c0ce962f6f675eba2", - [] - ], - "grid-gap-decorations-006-ref.html": [ - "94d455c1d86af89ff2b3e872eeaf9f59cd4bde0a", - [] - ], - "grid-gap-decorations-007-ref.html": [ - "5d89f414ed5fa6f259eb95ad9de96e260586ccdd", - [] - ], - "grid-gap-decorations-008-ref.html": [ - "3e2562cfccb8d4a5c6ce1f6f5b5a0781421392ad", - [] - ], - "grid-gap-decorations-009-ref.html": [ - "964f2111eb8d97cf0c18f705115027136ee147a3", - [] - ], - "grid-gap-decorations-010-ref.html": [ - "0c07124b0864605d7fafabece01988036b501019", - [] - ], - "grid-gap-decorations-011-ref.html": [ - "c8824a5296ea8b87fe3a59f01195ab456cd7b46b", - [] - ], - "grid-gap-decorations-012-ref.html": [ - "51ca67dd6a2ba00b2618e11535b1447ccfaa28c9", - [] - ], - "grid-gap-decorations-013-ref.html": [ - "7ebf7c00b181f6480975367ca97dedad9a4221c5", - [] - ], - "grid-gap-decorations-014-ref.html": [ - "7631d5287a85997f1f2f89dcf2a727f3c0a07c65", - [] - ], - "grid-gap-decorations-015-ref.html": [ - "f95324d3320bbb7653963c0a260c8a4a78ff41ea", - [] - ], - "grid-gap-decorations-016-ref.html": [ - "c11380a68aa09f730a4bd2b609274ff94424c772", - [] - ], - "grid-gap-decorations-017-ref.html": [ - "ac0bbd1f1e19cfc5729486fe5109af8f400f655d", - [] - ], - "grid-gap-decorations-018-ref.html": [ - "072dc508ea340c5dbebb14aa8baf06bbb9e7a127", - [] - ], - "grid-gap-decorations-019-ref.html": [ - "e9f8a87979d0e66aa708911798d6ea5bd1b40b42", - [] - ], - "grid-gap-decorations-020-ref.html": [ - "6f31b5a09fc8717d5fcee2f67b7e765d1b9ba2a4", - [] - ], - "grid-gap-decorations-021-ref.html": [ - "de36d206606d1dd324ee2eb458a840eedb81e140", - [] - ], - "grid-gap-decorations-023-ref.html": [ - "e630694c6a55a5e710c6517574b8377527db6d19", - [] - ], - "grid-gap-decorations-024-ref.html": [ - "94b1eccd7470157065bbc6fbe2961b311a1762fd", - [] - ], - "grid-gap-decorations-025-ref.html": [ - "3834da46a5d58d0785bb3b767f21cbeff5e2f7d4", - [] - ], - "grid-gap-decorations-026-ref.html": [ - "d57c622810dcc70270db45742f14faaf75d65357", - [] - ], - "grid-gap-decorations-027-ref.html": [ - "7e0d9cbcd6ff64b17bc8fe57616a37ba29a9fd8e", - [] - ] - } + "agnostic": { + "gap-decorations-001-ref.html": [ + "a7314fc7dca1545dacd710c261c7594117a3894a", + [] + ] + }, + "flex": { + "flex-gap-decorations-003-ref.html": [ + "137a63474b80d8cae010511de93d21144052366f", + [] + ], + "flex-gap-decorations-004-ref.html": [ + "f77dd318db7747a5a7107e69afe2a21436aafc33", + [] + ], + "flex-gap-decorations-005-ref.html": [ + "04b3e8d1af4eee718bda8b432c157a45c3a3f623", + [] + ], + "flex-gap-decorations-006-ref.html": [ + "46c4fd49e39239b3940911f514e169f86cc613b0", + [] + ], + "flex-gap-decorations-007-ref.html": [ + "8511c66acf4511670a0268f8bf170a883e2d3924", + [] + ], + "flex-gap-decorations-008-ref.html": [ + "8ca5749417f4eac98bbd9145f8a7cdd6bddc8cc0", + [] + ], + "flex-gap-decorations-009-ref.html": [ + "0adb9af6994746b1e80d056a0c92cd48f2106108", + [] + ], + "flex-gap-decorations-010-ref.html": [ + "8756c5d038c147a561b20ce4ce2aa45e0ade0ab7", + [] + ], + "flex-gap-decorations-011-ref.html": [ + "082be2875a4274d8744b098f8858635c0df8c8d3", + [] + ], + "flex-gap-decorations-012-ref.html": [ + "33be4b76212fde92bf4488574228c37b50edc1b6", + [] + ], + "flex-gap-decorations-013-ref.html": [ + "3d999788023d13c8414796f6839ceafcd94803d5", + [] + ], + "flex-gap-decorations-014-ref.html": [ + "59ce37deaec3e993e594c01fb9ac9887ced10668", + [] + ], + "flex-gap-decorations-015-ref.html": [ + "48745eff931a803f4da17ea6a527b62367720560", + [] + ], + "flex-gap-decorations-016-ref.html": [ + "155e0bfac7b35307f211535f4a940edc7af32dfc", + [] + ], + "flex-gap-decorations-017-ref.html": [ + "031be2abaf1b856b6b33a40958a7fe7438a01ed2", + [] + ], + "flex-gap-decorations-018-ref.html": [ + "644a409bd977acb91812666ac2f9a6e1c1b66830", + [] + ] + }, + "grid": { + "grid-gap-decorations-003-ref.html": [ + "15fc305633d377c286ed9d8fefc6f86aef78c467", + [] + ], + "grid-gap-decorations-004-ref.html": [ + "e4e6b8b458f30c5b8ef5cefbeaf23c13571e0c15", + [] + ], + "grid-gap-decorations-005-ref.html": [ + "aebfba5a20e97e826e27e27c0ce962f6f675eba2", + [] + ], + "grid-gap-decorations-006-ref.html": [ + "94d455c1d86af89ff2b3e872eeaf9f59cd4bde0a", + [] + ], + "grid-gap-decorations-007-ref.html": [ + "5d89f414ed5fa6f259eb95ad9de96e260586ccdd", + [] + ], + "grid-gap-decorations-008-ref.html": [ + "3e2562cfccb8d4a5c6ce1f6f5b5a0781421392ad", + [] + ], + "grid-gap-decorations-009-ref.html": [ + "964f2111eb8d97cf0c18f705115027136ee147a3", + [] + ], + "grid-gap-decorations-010-ref.html": [ + "0c07124b0864605d7fafabece01988036b501019", + [] + ], + "grid-gap-decorations-011-ref.html": [ + "c8824a5296ea8b87fe3a59f01195ab456cd7b46b", + [] + ], + "grid-gap-decorations-012-ref.html": [ + "51ca67dd6a2ba00b2618e11535b1447ccfaa28c9", + [] + ], + "grid-gap-decorations-013-ref.html": [ + "7ebf7c00b181f6480975367ca97dedad9a4221c5", + [] + ], + "grid-gap-decorations-014-ref.html": [ + "7631d5287a85997f1f2f89dcf2a727f3c0a07c65", + [] + ], + "grid-gap-decorations-015-ref.html": [ + "f95324d3320bbb7653963c0a260c8a4a78ff41ea", + [] + ], + "grid-gap-decorations-016-ref.html": [ + "c11380a68aa09f730a4bd2b609274ff94424c772", + [] + ], + "grid-gap-decorations-017-ref.html": [ + "ac0bbd1f1e19cfc5729486fe5109af8f400f655d", + [] + ], + "grid-gap-decorations-018-ref.html": [ + "072dc508ea340c5dbebb14aa8baf06bbb9e7a127", + [] + ], + "grid-gap-decorations-019-ref.html": [ + "e9f8a87979d0e66aa708911798d6ea5bd1b40b42", + [] + ], + "grid-gap-decorations-020-ref.html": [ + "6f31b5a09fc8717d5fcee2f67b7e765d1b9ba2a4", + [] + ], + "grid-gap-decorations-021-ref.html": [ + "de36d206606d1dd324ee2eb458a840eedb81e140", + [] + ], + "grid-gap-decorations-023-ref.html": [ + "e630694c6a55a5e710c6517574b8377527db6d19", + [] + ], + "grid-gap-decorations-024-ref.html": [ + "94b1eccd7470157065bbc6fbe2961b311a1762fd", + [] + ], + "grid-gap-decorations-025-ref.html": [ + "3834da46a5d58d0785bb3b767f21cbeff5e2f7d4", + [] + ], + "grid-gap-decorations-026-ref.html": [ + "d57c622810dcc70270db45742f14faaf75d65357", + [] + ], + "grid-gap-decorations-027-ref.html": [ + "7e0d9cbcd6ff64b17bc8fe57616a37ba29a9fd8e", + [] + ] } }, "css-gcpm": { @@ -437024,6 +437332,10 @@ "7a801508e2e564bad79b512c4e327632399c2ce7", [] ], + "block-ellipsis-022-ref.html": [ + "1e89789852b9ed51a0ae9e6ab6995ad996b8f438", + [] + ], "line-clamp-010-ref.html": [ "46ca731c5446db88ba4e5fc8a3d6b8b43c4fc056", [] @@ -437321,11 +437633,11 @@ [] ], "webkit-line-clamp-036-ref.html": [ - "0de35e98ab353519664996fba8ab8ef6916a18d0", + "321cce96bb34d11082e15e92416214e9aa055a95", [] ], "webkit-line-clamp-037-ref.html": [ - "2927716d76dbc8ebc8b98169c533301214a517aa", + "c5050d5d41453102c2b64faa2e2fd2634c2503ac", [] ], "webkit-line-clamp-038-ref.html": [ @@ -450041,6 +450353,10 @@ "dc8f37feaeefa314f3f6bde2ec031eb4e9b9cf02", [] ], + "native-appearance-disabled-for-value-unset-ref.html": [ + "f3f8a11ed88b9cb9f72ff086021af8d856d442e0", + [] + ], "outline-006-ref.html": [ "3c15fcbf6cc0870159c4fe7ddaff8b61747126be", [] @@ -452008,6 +452324,10 @@ "698b32956b31634f8ddce8502633f91a6a4fc75d", [] ], + "empty-render-target-capture-ref.html": [ + "a8c2732cd85013a8f2ecea3f2057c0ff89b30149", + [] + ], "exit-transition-with-anonymous-layout-object-ref.html": [ "10e04ac58a44e9005d7297ca17c63666ed2c542a", [] @@ -453500,7 +453820,7 @@ [] ], "available-size-020-ref.html": [ - "ecd3ac273a2be4c198abba2730ef8355f4b52111", + "07eb33e3ec1239cc1e6d34e03c044f94a0be28b8", [] ], "available-size-022-ref.html": [ @@ -454015,6 +454335,18 @@ "e5b895aa956bd26084737a174c31628c9c51db90", [] ], + "table-cell-align-001-ref.html": [ + "b324e3c308326db8ff19cae1ba822d71c40a468b", + [] + ], + "table-cell-align-002-ref.html": [ + "eaacb7786baace57795f85fc3f73cb9cf9aff5fe", + [] + ], + "table-cell-align-005-ref.html": [ + "c5cd6fe28a97343b94989193c4583ddd2393538a", + [] + ], "table-cell-valign-001-ref.html": [ "03cb9ec9e4c6b1d7b6e0973b57f3c93ce293b1e4", [] @@ -462015,7 +462347,7 @@ [] ], "single_identifier_accounts.py": [ - "fb80ef7cf6d402ca9080f9fb174efe3a413329f9", + "38eff8c35716e8d2664077342b0d54f5d8fba806", [] ], "token.py": [ @@ -468124,14 +468456,6 @@ "6f44d8a83ecade23c4b02707c56981d25ed62811", [] ], - "close_noopener_beforeunload-1.html": [ - "fc114bc443e500819487efc92f9e1042c2dcfa60", - [] - ], - "close_noopener_beforeunload-2.html": [ - "4cce1e2e6f7dd058ed0129abb2a14e5f879aa340", - [] - ], "close_pagehide-1.html": [ "5631b539a6af1ffee4f77b265b03eed3255f364f", [] @@ -468187,7 +468511,11 @@ "a9d42e26dea16afa9743d31aa7b72f3f09e46e68", [] ] - } + }, + "self-close.html": [ + "d409e9f423d521327e1853dc1e1b4728ac3d107c", + [] + ] }, "support": { "BarProp-target.html": [ @@ -476659,6 +476987,10 @@ "marquee-min-intrinsic-size-ref.html": [ "7a79361fc399301161400ef4ba75c876369329f7", [] + ], + "marquee-with-trusted-types-ref.html": [ + "b177f47b757cc278abe79f5b59d9063f6911dbd3", + [] ] } } @@ -480053,7 +480385,7 @@ [] ], "popover-utils.js": [ - "6ab5a08898d53bbfec92be2664e68897600b035f", + "7878b125f2f6b1f6d39d1972f7387e8014b6dcf8", [] ] } @@ -481660,7 +481992,7 @@ ], "resources": { "invoker-utils.js": [ - "67d2aa841c97fef3025fe8981fbfcf63d66146dc", + "bc43e738c34e58f450874d8ccc99e110e07e7800", [] ] } @@ -484488,6 +484820,14 @@ "c733dac7c389f68cdea6d6a94c8884d6075360e9", [] ], + "get_all_cookies.sub.https.html.ini": [ + "ede46b74c64027d7e350664f331c858eeae9a81f", + [] + ], + "get_named_cookie.sub.https.html.ini": [ + "05352bf82a1347bbb966f12fe99a0f30205fc829", + [] + ], "minimize_restore_popup.html.ini": [ "6075b58d09cc51dc5069e446287246df76b1d5e8", [] @@ -489162,7 +489502,7 @@ }, "nav-tracking-mitigations": { "META.yml": [ - "00a8c7b72a17b91a7438358ff7d311516544d36f", + "9e7ffe47ba90b4a60c96648861fb60f2e80e46b7", [] ], "resources": { @@ -489340,7 +489680,7 @@ ], "resources": { "helpers.mjs": [ - "341befc10565d0759fd517258b2a6883fe6d564a", + "22752e4cfed7baaf26afc52db6569feb1af07e2a", [] ], "notify-top-early.html": [ @@ -493737,7 +494077,7 @@ [] ], "webxr-test.js": [ - "41340aa27e09fbd7b5fc848abda0e9464555731e", + "0885b559e6335d7bcd8a539b7d7e03f5843c74a5", [] ], "webxr-test.js.headers": [ @@ -493771,7 +494111,7 @@ [] ], "conftest.py": [ - "723087d31841b831b598edcd2cf7bc7cf290f495", + "1301e7a9f7701d40390ad19d9439d7d95bfc9ebc", [] ], "harness.html": [ @@ -494246,7 +494586,7 @@ [] ], "testharness.js": [ - "8ef0574f1f0e1ae72e491a249f719913957073bf", + "d1d9d61eab890f2090e06a286aa76aedc98db7c7", [] ], "testharness.js.headers": [ @@ -494296,7 +494636,7 @@ [] ], "sethtml-safety.sub.dat": [ - "6969835d66d7142625ebf19dfddaa01baaeeef38", + "314d5ac37b135f9303a76ad84bce5d8065524140", [] ], "sethtml-tree-construction.sub.dat": [ @@ -494304,7 +494644,7 @@ [] ], "sethtml-unsafety.sub.dat": [ - "bc162c04e5f7dee88414c2f8cb1794ed58c7e5b7", + "3b132a254cac94b46679e80bf9623819ec7ae7f2", [] ], "support": { @@ -498516,19 +498856,11 @@ }, "resources": { "authenticate.py": [ - "8820781709d30f11cb842f54d8e25d1ed24a4a8e", + "ea0c546afffb5ab7701557ce9d7bf54aa8fbc95a", [] ], "basic-service-worker.js": [ - "07beb37d660ed465e6eef57131f3d140cefbb27a", - [] - ], - "cacheable-executor.sub.html": [ - "ba1b3acb0c1198284c74c345b3de5c6d98fc2421", - [] - ], - "cacheable-executor.sub.html.headers": [ - "0ee6ec2ab103e45685829452b0b50b3ac8e3f343", + "18432ed62eddb209488a5dd00f39e9c77e071498", [] ], "conditional-status.py": [ @@ -498536,7 +498868,7 @@ [] ], "cookies.py": [ - "304f999570b22f432681f93c17db4d06d439ad5b", + "54aaabee70e697283fddd5016358b0775bf9d0a6", [] ], "counting-executor.py": [ @@ -498544,7 +498876,7 @@ [] ], "executor.sub.html": [ - "6e4f18ba85405fc5688f6af1b8e7c89f6262576d", + "d27acfe100a6a3567606bd64df0b8cd1c5bdbfc1", [] ], "executor.sub.html.headers": [ @@ -498556,7 +498888,7 @@ [] ], "prefetch_nvs_hint.py": [ - "d912eff90a5b9cc7f726a2a9c9d5da7eb4103fa6", + "223135dc8b82ea8f32b7abab8e1e3ed0d77d0bbd", [] ], "random_redirect.py": [ @@ -498579,8 +498911,12 @@ "dd8a9631b4e8d25e0f3a4258806b909b07e682d7", [] ], + "util.py": [ + "1ef6778badf0078af48e06b8ff1b289c8eb5935e", + [] + ], "utils.sub.js": [ - "61411073aecf8b6082938de0cce69e2e54474438", + "a90459fdf03822446dc445b294e974587e507717", [] ] }, @@ -499277,11 +499613,11 @@ [] ], "storage-access-beyond-cookies-iframe-iframe.html": [ - "8b3720a6354ef574b1d7fa80e5bbd401732391be", + "09eef3fe52fbb3d2370a6f9e631057eb4e39460b", [] ], "storage-access-beyond-cookies-iframe.sub.html": [ - "6c60c962b1ba323c61f3fc9b7381597831234382", + "2e10d1cae157bbef7e7ca5a181335dca4152e39b", [] ] } @@ -499525,7 +499861,7 @@ ] }, "viewBox-synthesized-in-img-001-ref.html": [ - "dc27ce9a4e8c5af5ea6ad05599d723fcd7928246", + "306b4f6b1910f62cc34406e76c7720584adf6d5e", [] ] }, @@ -499629,10 +499965,18 @@ }, "geometry": { "reftests": { + "circle-calc-dynamic-viewport-ref.html": [ + "dfd1f609496d760807e93b4c6e4e90d6f3a383b6", + [] + ], "circle-ref.svg": [ "36ccde7fce5f82093b4930f314f3a2558a5518f9", [] ], + "ellipse-calc-dynamic-viewport-ref.html": [ + "70576349bc034b9fc255061400218649f1e4103e", + [] + ], "ellipse-ref.svg": [ "57e6f4d5e854cd1672f987d5f639bcb1e6186d5e", [] @@ -499641,6 +499985,10 @@ "09fd10f287ba2f0b51f91048ff416d8e03ead34d", [] ], + "rect-calc-dynamic-viewport-ref.html": [ + "84971d4b811c2eb0b0d6d0f8446e326676bae775", + [] + ], "rect-ref.svg": [ "ddfd51eed1f2403e2c6a964cee6a307c0d3838fb", [] @@ -500235,6 +500583,12 @@ [] ] } + }, + "reftests": { + "path-zoom-ref.html": [ + "4b09749e2c2bfad2f7c7323b077836e014b5e620", + [] + ] } }, "pservers": { @@ -500989,7 +501343,7 @@ [] ], "commands.json": [ - "f26baddacadefc150ec36db11ef0f83dc20e6ca1", + "7c54fb72cbfda4aa4241df50b91bc3749faf156f", [] ], "epochs_update.sh": [ @@ -501029,7 +501383,7 @@ [] ], "requirements_tc.txt": [ - "a70216679708b4d3cdc6e72c435992d06fff481f", + "cb4ba1947784f9b9ba39b3e43237640c7d1e802d", [] ], "run_tc.py": [ @@ -501130,6 +501484,10 @@ "76a64d0accac0954faf9a61c42230656d55140b2", [] ], + "update_codeowners.py": [ + "4e36e2679bfd68e0038ba0f3d2952392399feffe", + [] + ], "website_build.sh": [ "adfdf41ae73812de177978ac07f87d6c8eb10b10", [] @@ -501636,7 +501994,7 @@ [] ], "requirements_mypy.txt": [ - "06fb778ea664256d5bdc515fc9df5bf856a45961", + "5edf2d9614d60e520aa53406d450dd6dc8344114", [] ], "requirements_pytest.txt": [ @@ -501644,7 +502002,7 @@ [] ], "requirements_tests.txt": [ - "9bb2dceafe4e5d9dd616bdc3e09bb8fbfb99053d", + "833fdb3b8761b3d790fcd9bf70ba536bd8dd3251", [] ], "runner": { @@ -512053,7 +512411,7 @@ [] ], "android.py": [ - "b4720ada41b656ae3c560091c5f217a4c69118d2", + "cbde92b8d5cc2b8c8374c39145f1e3e2ee43d899", [] ], "browser.py": [ @@ -512061,7 +512419,7 @@ [] ], "commands.json": [ - "de825c79b76027d82f13b36fbba032ed57de0226", + "72e1ec7d42341416554d971df09bddf6be09098a", [] ], "create.py": [ @@ -512076,6 +512434,10 @@ "e1d8c4ebfeb24f00ee275b4867f700c01ab79570", [] ], + "metadata.py": [ + "2e91da7c658f5662458a7f329d433f74fe2ffd72", + [] + ], "paths": [ "5a1303362b368be0dce52433adb1528de515a510", [] @@ -512089,7 +512451,7 @@ [] ], "requirements_install.txt": [ - "f7df06548c9424a1039db27f9772845b217ef124", + "9da7570da49bbe87171a2e23eb2c94b0113993a4", [] ], "revlist.py": [ @@ -512257,7 +512619,7 @@ ] }, "requirements.txt": [ - "4074b20618ae15add1e1f216041e8178032f6c74", + "97b569379553f692f8420efc98504edbb82f84dc", [] ], "requirements_chromium.txt": [ @@ -512369,11 +512731,11 @@ ] }, "servo.py": [ - "d0bf0a38ea3f48ef1921360e25ea9ec63e44ca7a", + "00d7eac0dfd5b235df36724be983d574a9dd9737", [] ], "servodriver.py": [ - "bd16d7987e539a3325d88876982462ea1a3eb638", + "7121e1dafcc2d55ebc18bdf3e922ce9978b94ee1", [] ], "webkit.py": [ @@ -512873,7 +513235,7 @@ [] ], "base.py": [ - "f47308d88df27d21469f0e80f92fd98681a1dd70", + "1897d224761d14e33f4c3dc854efca905d1f50a8", [] ], "docroot": { @@ -514424,6 +514786,20 @@ [] ] }, + "viewport-segments": { + "META.yml": [ + "38eb8c0cb93a2199986c84460769a920eb122bda", + [] + ], + "README.md": [ + "50e724bd711c02faf304433667b3738a25aed584", + [] + ], + "WEB_FEATURES.yml": [ + "ebb7d6a73d30469d3084bd2353c89833dae2e5ca", + [] + ] + }, "virtual-keyboard": { "META.yml": [ "a925b52d6f0e9d2ef1b291d50486713d0ee83744", @@ -518132,7 +518508,7 @@ [] ], "helpers.py": [ - "0bd27a39acd5d8c2b6bba106bc24e17f4945a8d2", + "f4763deca141b4cf2bb592a740b7fbdd2a4d2869", [] ], "html": { @@ -518535,7 +518911,7 @@ }, "resources": { "utils.js": [ - "f5802aa11375a28e54ff693057b4f9c15112fe7f", + "d19cb7cf760f63d60b26f008af7329fad0a568a1", [] ], "utils_validation.js": [ @@ -521405,7 +521781,11 @@ [] ], "inactiveFrameTests.js": [ - "b310f01ef871a248bdde3da0efef6b2126f13cd0", + "0cc425955374e214cd5dd9bdb75a654c7c69faa9", + [] + ], + "pauseResumeTests.js": [ + "e7513ef61c13b856ea9e49ff93ad9088e57163b3", [] ], "staleViewsTests.js": [ @@ -549815,17 +550195,17 @@ }, "ai": { "language_detection": { - "detector-iframe.tentative.https.html": [ + "detector-iframe.https.html": [ "3e90d36b5aa63a556b82337cdf7a26410b80ac36", [ null, {} ] ], - "detector-locale.https.tentative.any.js": [ - "1991ac3ecfb5259c15b9e561138e8b9c6efebe6c", + "detector-locale.https.window.js": [ + "a1c67db912961d8850bb4a430f92f7be4b450c87", [ - "ai/language_detection/detector-locale.https.tentative.any.html", + "ai/language_detection/detector-locale.https.window.html", { "script_metadata": [ [ @@ -549848,10 +550228,10 @@ } ] ], - "detector.https.tentative.any.js": [ - "bdff2364b0b884047bcc8027f82bc762eb28ef9b", + "detector.https.window.js": [ + "e85ea6d249b17d3ed1505f206f5ac6659b6dfd94", [ - "ai/language_detection/detector.https.tentative.any.html", + "ai/language_detection/detector.https.window.html", { "script_metadata": [ [ @@ -549860,55 +550240,24 @@ ], [ "global", - "window,worker" - ], - [ - "script", - "../resources/util.js" - ] - ] - } - ], - [ - "ai/language_detection/detector.https.tentative.any.serviceworker.html", - { - "script_metadata": [ - [ - "title", - "Detect english" - ], - [ - "global", - "window,worker" + "window" ], [ "script", "../resources/util.js" - ] - ] - } - ], - [ - "ai/language_detection/detector.https.tentative.any.sharedworker.html", - { - "script_metadata": [ - [ - "title", - "Detect english" - ], - [ - "global", - "window,worker" ], [ "script", - "../resources/util.js" + "../resources/locale-util.js" ] ] } - ], + ] + ], + "detector.optional.https.window.js": [ + "7ffa1362dd5f97b68e7c678463dd5afa186d10dc", [ - "ai/language_detection/detector.https.tentative.any.worker.html", + "ai/language_detection/detector.optional.https.window.html", { "script_metadata": [ [ @@ -549917,7 +550266,7 @@ ], [ "global", - "window,worker" + "window" ], [ "script", @@ -550231,7 +550580,7 @@ ] ], "summarizer-summarize-streaming.tentative.https.any.js": [ - "b88ccb325e2c3ec3e4f9a41986b5a7c7c5e2b91d", + "dbf41cdadbc679e68279886506660262952f0b5e", [ "ai/summarizer/summarizer-summarize-streaming.tentative.https.any.html", { @@ -550274,7 +550623,7 @@ ] ], "summarizer-summarize.tentative.https.any.js": [ - "f019746fbdd8f59664a23290b0d914177bcc98dd", + "62a780a3fc7960f30b2f4ab6beab89f9e570699f", [ "ai/summarizer/summarizer-summarize.tentative.https.any.html", { @@ -550318,70 +550667,10 @@ ] }, "translator": { - "translator_bad_input.tentative.https.any.js": [ - "2879543f29a1239e912b52ed4833db9de4ff5021", - [ - "ai/translator/translator_bad_input.tentative.https.any.html", - { - "script_metadata": [ - [ - "title", - "translator.create without options do not crash" - ], - [ - "global", - "window,worker" - ], - [ - "timeout", - "long" - ] - ], - "timeout": "long" - } - ], - [ - "ai/translator/translator_bad_input.tentative.https.any.serviceworker.html", - { - "script_metadata": [ - [ - "title", - "translator.create without options do not crash" - ], - [ - "global", - "window,worker" - ], - [ - "timeout", - "long" - ] - ], - "timeout": "long" - } - ], - [ - "ai/translator/translator_bad_input.tentative.https.any.sharedworker.html", - { - "script_metadata": [ - [ - "title", - "translator.create without options do not crash" - ], - [ - "global", - "window,worker" - ], - [ - "timeout", - "long" - ] - ], - "timeout": "long" - } - ], + "translator-bad-input.tentative.https.window.js": [ + "53a184bfd196f6006e7df9c908518ba47deacda6", [ - "ai/translator/translator_bad_input.tentative.https.any.worker.html", + "ai/translator/translator-bad-input.tentative.https.window.html", { "script_metadata": [ [ @@ -550390,7 +550679,7 @@ ], [ "global", - "window,worker" + "window" ], [ "timeout", @@ -550401,10 +550690,10 @@ } ] ], - "translator_translate.tentative.https.any.js": [ + "translator-translate.tentative.https.window.js": [ "a8aad5e03e1f46db43a47966d66f7aecc526b255", [ - "ai/translator/translator_translate.tentative.https.any.html", + "ai/translator/translator-translate.tentative.https.window.html", { "script_metadata": [ [ @@ -570822,31 +571111,6 @@ ] ] }, - "tentative": { - "require-sri-for": { - "script-allowed-meta.https.html": [ - "087498f0c573da8a7212f31348898769e070bb7d", - [ - null, - {} - ] - ], - "script-blocked-meta.https.html": [ - "fe69c61f5b6c68bfefc4c88a18c6f48b6466060e", - [ - null, - {} - ] - ], - "script.https.html": [ - "65553e523ccac1764b957dbe7af34f42acdfc551", - [ - null, - {} - ] - ] - } - }, "unsafe-eval": { "eval-allowed.sub.html": [ "186996311b707e1fc646885c847e082797847a9b", @@ -577005,14 +577269,14 @@ ] ], "position-area-align-justify-wm-dir.html": [ - "25b53d44f788b3b2412a84b07cd394cfa89462e8", + "82a11a8868a0b216f34b33da3e4a78d3ae559c07", [ null, {} ] ], "position-area-align-justify.html": [ - "e0bce2c82683243ecff838f71a56e805bd1fac7e", + "483a9d6ec0affaf8840e4e1148f4c2e277bf75b3", [ null, {} @@ -577054,7 +577318,7 @@ ] ], "position-area-in-grid.html": [ - "b258f57bc8a10a9bd9ab598266169bdebdb16ded", + "3407fcbc351ec3601436d96a31b6181826944ee0", [ null, {} @@ -577333,6 +577597,13 @@ {} ] ], + "remove-position-try-rules-001.html": [ + "56ad5cf7b3268304a457ef9cf06fa794cfeb98b0", + [ + null, + {} + ] + ], "try-tactic-alignment.html": [ "b39a92983717e40a37d6092583cbc95ce7b967f5", [ @@ -578226,6 +578497,13 @@ {} ] ], + "keyframe-selectors.html": [ + "900cba5a05a3917649a9b0dc8d21096281ca64f0", + [ + null, + {} + ] + ], "keyframes-allowed-properties.html": [ "f682920b35769e7a6479dad625510b9f163e56fd", [ @@ -581328,7 +581606,7 @@ ] ], "color-valid-relative-color.html": [ - "f1f31b93d414df9198c9a6612a543ffe79b11afe", + "142f96bcf9b562e399b9b47b5cf1babadcb2ad72", [ null, {} @@ -583676,6 +583954,15 @@ {} ] ], + "display-contents-pseudo-click-target.html": [ + "2620c97312fe207aad532ca413b6218312e055d7", + [ + null, + { + "testdriver": true + } + ] + ], "display-contents-svg-anchor-child.html": [ "d0119d7fff3d2dcb833136eacd6654394f9f737f", [ @@ -586693,7 +586980,7 @@ ] ], "font-shorthand-serialization-font-stretch.html": [ - "3079cc06e7e4a0c88203ed3521d63570c34d9575", + "7bc591ec73dbfcb53030cb46937e40469ac0e298", [ null, {} @@ -587611,160 +587898,158 @@ } }, "css-gaps": { - "tentative": { - "grid": { - "grid-gap-decorations-028.html": [ - "125a34ca9668ecfc430f76e26365c62da17e3b4b", - [ - null, - {} - ] + "grid": { + "grid-gap-decorations-028.html": [ + "125a34ca9668ecfc430f76e26365c62da17e3b4b", + [ + null, + {} ] - }, - "parsing": { - "gap-decorations-bidirectional-shorthands.html": [ - "95b5bf6aea84bc27e728b67cfd98ab9842997cbe", - [ - null, - {} - ] - ], - "gap-decorations-color-computed.html": [ - "fbc3c3f4c976b344d48a9bd927547214f072e3ab", - [ - null, - {} - ] - ], - "gap-decorations-color-invalid.html": [ - "5a0128e2303ebaef9469330ddfdb290ebeeff912", - [ - null, - {} - ] - ], - "gap-decorations-color-valid.html": [ - "f4cc0156e3f432d6193c1041d65077295496f1c3", - [ - null, - {} - ] - ], - "gap-decorations-style-computed.html": [ - "4de870c09847f7eb3fbf98f26a9196e4dcb52214", - [ - null, - {} - ] - ], - "gap-decorations-style-invalid.html": [ - "af1d5ccae57f47d960b4d3886588955efbaec784", - [ - null, - {} - ] - ], - "gap-decorations-style-valid.html": [ - "1f41238345c4d42e95a0ada017b67860fa2f6bb0", - [ - null, - {} - ] - ], - "gap-decorations-width-computed.html": [ - "299cbe0f3bbd8bc495912e59f6866b19513da914", - [ - null, - {} - ] - ], - "gap-decorations-width-invalid.html": [ - "025d52636266b1961cd5c0295a552eb612cf6455", - [ - null, - {} - ] - ], - "gap-decorations-width-valid.html": [ - "bd42d8356234cd51968877986b1927c7af301a12", - [ - null, - {} - ] - ], - "rule-break-computed.html": [ - "0490428f3e723f0e108aa6875cdaa676e145a859", - [ - null, - {} - ] - ], - "rule-break-invalid.html": [ - "a6eb68a1644ba848d86e7f92d0c8d121d0280403", - [ - null, - {} - ] - ], - "rule-break-valid.html": [ - "02f338806196110a12cd8c4a1b36d04b88a6905a", - [ - null, - {} - ] - ], - "rule-outset-computed.html": [ - "dd59018ccf5356a987cba45e4f1bddba2c6c4bd7", - [ - null, - {} - ] - ], - "rule-outset-invalid.html": [ - "f39139ade83af7d4b79d400f24c07a10a498d715", - [ - null, - {} - ] - ], - "rule-outset-valid.html": [ - "6ad45bbc7acd1eb95fd0b015b31dc41667c480d1", - [ - null, - {} - ] - ], - "rule-paint-order-computed.html": [ - "441be8670d782ccc6dbb252bea4288f87e43918e", - [ - null, - {} - ] - ], - "rule-paint-order-invalid.html": [ - "b18349a1aedadf9eda10fdea21ab03c99d9b0825", - [ - null, - {} - ] - ], - "rule-paint-order-valid.html": [ - "6a4294f7f4b5c07ea3b556e6cade62f47c6f72b3", - [ - null, - {} - ] + ] + }, + "parsing": { + "gap-decorations-bidirectional-shorthands.html": [ + "9ff3815c21f0f2707c4813b1c32423dbdfe15c19", + [ + null, + {} ] - }, - "serialization": { - "gap-decorations-properties.html": [ - "4985b5550f25f0ee0a2be125900f16c65c6ec0cf", - [ - null, - {} - ] + ], + "gap-decorations-color-computed.html": [ + "fbc3c3f4c976b344d48a9bd927547214f072e3ab", + [ + null, + {} ] - } + ], + "gap-decorations-color-invalid.html": [ + "5a0128e2303ebaef9469330ddfdb290ebeeff912", + [ + null, + {} + ] + ], + "gap-decorations-color-valid.html": [ + "f4cc0156e3f432d6193c1041d65077295496f1c3", + [ + null, + {} + ] + ], + "gap-decorations-style-computed.html": [ + "8c78bf618e3226609ad451e27ff97816b6b73cf6", + [ + null, + {} + ] + ], + "gap-decorations-style-invalid.html": [ + "48ac0680338de220caaa23eae06fbbffdabab634", + [ + null, + {} + ] + ], + "gap-decorations-style-valid.html": [ + "1eb259a82bce43751f6d511f33134a924f5b2aab", + [ + null, + {} + ] + ], + "gap-decorations-width-computed.html": [ + "299cbe0f3bbd8bc495912e59f6866b19513da914", + [ + null, + {} + ] + ], + "gap-decorations-width-invalid.html": [ + "025d52636266b1961cd5c0295a552eb612cf6455", + [ + null, + {} + ] + ], + "gap-decorations-width-valid.html": [ + "bd42d8356234cd51968877986b1927c7af301a12", + [ + null, + {} + ] + ], + "rule-break-computed.html": [ + "0490428f3e723f0e108aa6875cdaa676e145a859", + [ + null, + {} + ] + ], + "rule-break-invalid.html": [ + "a6eb68a1644ba848d86e7f92d0c8d121d0280403", + [ + null, + {} + ] + ], + "rule-break-valid.html": [ + "02f338806196110a12cd8c4a1b36d04b88a6905a", + [ + null, + {} + ] + ], + "rule-outset-computed.html": [ + "dd59018ccf5356a987cba45e4f1bddba2c6c4bd7", + [ + null, + {} + ] + ], + "rule-outset-invalid.html": [ + "f39139ade83af7d4b79d400f24c07a10a498d715", + [ + null, + {} + ] + ], + "rule-outset-valid.html": [ + "6ad45bbc7acd1eb95fd0b015b31dc41667c480d1", + [ + null, + {} + ] + ], + "rule-paint-order-computed.html": [ + "441be8670d782ccc6dbb252bea4288f87e43918e", + [ + null, + {} + ] + ], + "rule-paint-order-invalid.html": [ + "b18349a1aedadf9eda10fdea21ab03c99d9b0825", + [ + null, + {} + ] + ], + "rule-paint-order-valid.html": [ + "6a4294f7f4b5c07ea3b556e6cade62f47c6f72b3", + [ + null, + {} + ] + ] + }, + "serialization": { + "gap-decorations-properties.html": [ + "4985b5550f25f0ee0a2be125900f16c65c6ec0cf", + [ + null, + {} + ] + ] } }, "css-grid": { @@ -594436,6 +594721,13 @@ ] ] }, + "resize-multicol-with-fixed-size-children-003.html": [ + "7e73c8373ed115002f6fb650f6ab5def0c673902", + [ + null, + {} + ] + ], "scroll-width-height.tentative.html": [ "9efaf1bff881264e2da85e28aa911c479d7739cf", [ @@ -607890,7 +608182,7 @@ ] ], "parseAll-invalid.html": [ - "45fad409bbfea4b8485514ed43087df62680dd24", + "1f66f448425b102437df7b3c44040f3d394f7c34", [ null, {} @@ -607941,7 +608233,7 @@ ] ], "cssTransformValue.tentative.html": [ - "7f9edda3939e559cf4bd4c041dc2a06b80cf69df", + "db877b526426f5f5da27db6a17eff1a84b61b6fa", [ null, {} @@ -610534,6 +610826,15 @@ {} ] ], + "interactivity-inert-animated.html": [ + "8fc86dabbfd7245c1a88246597757931d7bb3ba3", + [ + null, + { + "testdriver": true + } + ] + ], "interactivity-inert-click-002.html": [ "4304aa47cf8d4042a731d532f72a4e84800c8d36", [ @@ -611330,7 +611631,7 @@ ] ], "calc-size-interpolation-expansion.html": [ - "c3de4d7ab9e1c88ab450c3914039d7fa452bc5f9", + "0b2a60cde7ff5ff93b492d9a1b7a53a231d3e445", [ null, {} @@ -611480,14 +611781,14 @@ ] ], "calc-size-parsing.html": [ - "3d63f0dbe00de8dba9c6701a18044e96a67172cd", + "a7e948497e7a6a06c6ad75e26183a2cb1e8a67c5", [ null, {} ] ], "calc-size-typed-om.html": [ - "37400823f9d2ef81fa25442db0835c7d22691b34", + "606de7f50605d2617e79ff00a7f72a8c98f18556", [ null, {} @@ -611621,7 +611922,7 @@ ] ], "exp-log-compute.html": [ - "4bdd507fa33d90ece79a17560f39b90e03a0d536", + "9b11fe25b3256b7d04766c9ac74fca02c050b80c", [ null, {} @@ -611894,7 +612195,7 @@ ] ], "minmax-length-serialize.html": [ - "bd00ee058859b3b805e621474fa9221f2cd44d17", + "1ab6f84637913eb34dd16ac56dd5c7d22dbfbf35", [ null, {} @@ -613222,6 +613523,13 @@ ] ], "scoped": { + "capture.html": [ + "06f848d2de16d7a26defcc3279d24622ceb32f54", + [ + null, + {} + ] + ], "start-view-transition.html": [ "a1bc95891956e6678c8ee2ecd51be7d6e94b70ca", [ @@ -619092,7 +619400,7 @@ ] ], "open-pseudo.html": [ - "0f3b9f3c37966fa0be02d583ba8549c663e54df1", + "c215bf18645c1fda60bd15fffe650e0ba0edcc80", [ null, { @@ -620235,7 +620543,7 @@ ] ], "CustomElementRegistry-initialize.html": [ - "142dc56746c4fa3766285796f37cbb91bb8a745c", + "c4b291751eca8c135657845e1cda244397607cbf", [ null, {} @@ -620420,6 +620728,13 @@ ] ] }, + "scoped-registry-initialize.html": [ + "18dbd0ebeddc0d115d596058fc11d863397c4ee5", + [ + null, + {} + ] + ], "state": { "ElementInternals-states.html": [ "1521a8098a36f0c0339fc1e7dceac12d149de385", @@ -625657,7 +625972,7 @@ ] ], "observable-from.any.js": [ - "3caf99052c84162043cbada1dea784a3d0885676", + "20b2c8010ccf3b870bfb9d731b2e0273bdc2384c", [ "dom/observable/tentative/observable-from.any.html", {} @@ -626845,6 +627160,24 @@ } ] ], + "delete-at-end-boundary-of-div-followed-by-inline-element-containing-hidden-select-element-with-non-editable-node.html": [ + "5c362d4963f6c2ccc955a38775ff4a054ff65b53", + [ + null, + { + "testdriver": true + } + ] + ], + "delete-at-start-boundary-of-div-containing-hidden-select-element-with-non-editable-node.html": [ + "0ed42e5729235f8baca7519e781bbf74871dfc0a", + [ + null, + { + "testdriver": true + } + ] + ], "delete-in-child-of-head.tentative.html": [ "978cf83d47add5ef754e588074844d0e624dfa27", [ @@ -646783,7 +647116,7 @@ ] ], "trust-token-redemption-supported-by-feature-policy.tentative.html": [ - "e349eadc5d1f79b4423052bee9b1903ae6c5e437", + "646f8eee548bc186a445b02fca3e6c04c809e07f", [ null, {} @@ -660634,7 +660967,7 @@ ] ], "no-vary-search.tentative.any.js": [ - "379da6a059491f89b2cd1dd2e28a6e84144740ce", + "6c5a714e2875e6a0c5ef752de98e38f2ef887383", [ "fetch/http-cache/no-vary-search.tentative.any.html", { @@ -688263,7 +688596,7 @@ ] ], "location_hash_set_empty_string.html": [ - "bfde4e638290c0ef1b4068b399e7428d090544b2", + "8eef392e611f5fbe6afa07b4c8ea77a8aef2c440", [ null, {} @@ -690317,7 +690650,7 @@ ] ], "close_noopener_beforeunload.html": [ - "6862a70b8c1489a1d6ab8450cc01772d753fbe4d", + "4db39fcb7c7b2133f672165c984c303dbf0bedb2", [ null, {} @@ -690555,6 +690888,13 @@ null, {} ] + ], + "script-closable.html": [ + "2a7278c2ce810a39afbc8a4a0fc1bca96e3a63dc", + [ + null, + {} + ] ] }, "proxy-getOwnPropertyDescriptor.html": [ @@ -717803,12 +718143,16 @@ ] ], "credentialless-cache.tentative.window.js": [ - "99a0f077102b4ab914c553897426c6b160d6ee0a", + "0c52d6ced32e1f7b1f20cf04d7fdc5b6250b3f11", [ "html/document-isolation-policy/credentialless-cache.tentative.window.html", { "script_metadata": [ [ + "timeout", + "long" + ], + [ "script", "/common/get-host-info.sub.js" ], @@ -717824,7 +718168,8 @@ "script", "./resources/common.js" ] - ] + ], + "timeout": "long" } ] ], @@ -720502,7 +720847,7 @@ ] }, "platform": { - "mousedown-move-inner-when-dragging.html": [ + "mousedown-move-inner-when-dragging-1.html": [ "81ee4f03751aaa8c2115e6d842501c6042b61efd", [ null, @@ -720510,6 +720855,24 @@ "testdriver": true } ] + ], + "mousedown-move-inner-when-dragging-2.html": [ + "1cabc554923b3a2a9c0b185e4f3fe0a27336fe4d", + [ + null, + { + "testdriver": true + } + ] + ], + "pointerdown-add-overflow-hidden.html": [ + "ac953adfd874b19ab42379039dc26ac0efb67b7b", + [ + null, + { + "testdriver": true + } + ] ] }, "synthetic": { @@ -727331,7 +727694,7 @@ ] ], "imagedata.html": [ - "e124f8ff6ea869d23a7c28418f8435a3d21e2677", + "123654a528a4bde858a479d63ee058ac2b9c2c61", [ null, {} @@ -732341,7 +732704,7 @@ ] ], "select-iterate-before-beginning.tentative.html": [ - "5ccaa111499d55a1ebe8446e045bc672ff0943d7", + "0e8c16f8fdac6412dac0da80a09fe2be93122584", [ null, { @@ -733360,7 +733723,7 @@ ] ], "dialog-requestclose.html": [ - "f63bc91ab475e3d21bd6002ffae1c669e8a493c2", + "9a9c87167d5eaf93bd31c1f979450415dd9fba0d", [ null, { @@ -733598,7 +733961,7 @@ ] ], "toggle-events.html": [ - "555dc03b019e6293047322c278febf80d9e99cbe", + "ba04b7cc391973edf233b31cb759afca3e49a484", [ null, {} @@ -733942,7 +734305,7 @@ ] ], "invalid-css-properties.tentative.html": [ - "2f6fc07b3922e230201e42307f9269bbe0ec48b0", + "f8dd5b681161e86a62bc353062d3e1bc83cf334e", [ null, {} @@ -734139,9 +734502,23 @@ ] ], "popover-focus-2.html": [ - "cd03c6a8434f821183ebf64fc2ff2136f387f8b0", + "9cacd2b8757748c1da7ae3a31a3a55efb72c0245", [ - null, + "html/semantics/popovers/popover-focus-2.html?test1", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "html/semantics/popovers/popover-focus-2.html?test2", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "html/semantics/popovers/popover-focus-2.html?test3", { "testdriver": true, "timeout": "long" @@ -739160,7 +739537,7 @@ ] ], "on-popover-behavior.html": [ - "77325b5f0f64524766a254ac6f30a13bdbadfe42", + "44496e9b3869ac159ffe390fe4ac69d55f98046d", [ null, { @@ -739282,9 +739659,16 @@ ] ], "interesttarget-hide-delay.tentative.html": [ - "9ec1c229c01aaca68ca6fb379f56b0b17a383c14", + "8828d879cac2b55e485b67511e41d64609a635e0", [ - null, + "html/semantics/the-button-element/interest-target/interesttarget-hide-delay.tentative.html?method=focus", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "html/semantics/the-button-element/interest-target/interesttarget-hide-delay.tentative.html?method=hover", { "testdriver": true, "timeout": "long" @@ -739292,7 +739676,7 @@ ] ], "interesttarget-keyboard-behavior.tentative.html": [ - "3ae653400d1b590337e13122acc76fbd57b3f8df", + "7040019e7504da05d46cc6d1745d6491f72574b4", [ null, { @@ -739311,7 +739695,7 @@ ] ], "interesttarget-popover-focus.tentative.html": [ - "6cf64d953fea80d0f1a0db88fe7649d0c990e5af", + "9dfc39a37a60d438ecf9287d0ddffc0212e7a21c", [ null, { @@ -739320,18 +739704,54 @@ ] ], "interesttarget-pseudo-classes.tentative.html": [ - "348d9ae7310310d23d0afc8116c622fd1b6eb75e", + "7cd50ebfe20b006c1d07af9941b98c5391993563", [ null, { - "testdriver": true + "testdriver": true, + "timeout": "long" } ] ], "interesttarget-show-delay.tentative.html": [ - "ca47c0f237d1fb0e94589fc2a0dc694bf97dc863", + "8d7b78de7fc6ae38a25ee70c413939aad7932f8e", [ - null, + "html/semantics/the-button-element/interest-target/interesttarget-show-delay.tentative.html?layout=nested&method=focus", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "html/semantics/the-button-element/interest-target/interesttarget-show-delay.tentative.html?layout=nested&method=hover", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "html/semantics/the-button-element/interest-target/interesttarget-show-delay.tentative.html?layout=nested-offset&method=focus", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "html/semantics/the-button-element/interest-target/interesttarget-show-delay.tentative.html?layout=nested-offset&method=hover", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "html/semantics/the-button-element/interest-target/interesttarget-show-delay.tentative.html?layout=plain&method=focus", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "html/semantics/the-button-element/interest-target/interesttarget-show-delay.tentative.html?layout=plain&method=hover", { "testdriver": true, "timeout": "long" @@ -743724,6 +744144,13 @@ {} ] ], + "new-scroll-event-dispatched-at-next-updating-rendering-time.html": [ + "a858c205d051ee15d2cd2e47cedb9668ffe32cc4", + [ + null, + {} + ] + ], "task_microtask_ordering.html": [ "c14a043b6ab10ab5e9e08d5bae1088f8dbf5e9c3", [ @@ -744946,7 +745373,7 @@ }, "update-rendering": { "child-document-raf-order.html": [ - "222c1af444e5c3f7aab2ac466b6bd1a7e2c93e3e", + "eccc1bde7fb83449275ed61e0dacaeb13d684456", [ null, {} @@ -747002,7 +747429,7 @@ ] ], "get_all_cookies.sub.https.html": [ - "e94167133b3aa852a54f06b49e850e66e2873f65", + "70a4ff773333dbd764ce04e99da2f49d5c74f47b", [ null, { @@ -747020,7 +747447,7 @@ ] ], "get_named_cookie.sub.https.html": [ - "8e8f44338128b9f110c22861b067cd6af1ef2e09", + "32b3bed459e8a282481a7b3e293155691ee0ab6a", [ null, { @@ -754220,14 +754647,14 @@ } ] ], - "ImageCapture-grabFrame.html": [ + "ImageCapture-grabFrame.https.html": [ "a9a6930aafc577d9d554491341473287b0454d79", [ null, {} ] ], - "ImageCapture-track.html": [ + "ImageCapture-track.https.html": [ "774970ad0c4330983574f78aa3f3aabb9d18fd90", [ null, @@ -754325,14 +754752,14 @@ {} ] ], - "getPhotoCapabilities.html": [ + "getPhotoCapabilities.https.html": [ "8b6ab891ff8cead9d99ac017db5065ed4dad709f", [ null, {} ] ], - "getPhotoSettings.html": [ + "getPhotoSettings.https.html": [ "04a7a5395fc72f13284af4b0e6f0a92b6b15737a", [ null, @@ -754346,10 +754773,10 @@ {} ] ], - "idlharness.window.js": [ + "idlharness.https.window.js": [ "2977138647b11c5c9a48b779ec2a9f8507221b46", [ - "mediacapture-image/idlharness.window.html", + "mediacapture-image/idlharness.https.window.html", { "script_metadata": [ [ @@ -754369,14 +754796,14 @@ } ] ], - "takePhoto-reject.html": [ - "fff36e1a3b8bcf46c6a6f3ac765a509f37c45a07", + "takePhoto-reject.https.html": [ + "669512ca5161fd3834b9077c6038828d436fe303", [ null, {} ] ], - "takePhoto-with-PhotoSettings.html": [ + "takePhoto-with-PhotoSettings.https.html": [ "2946e782d0b99166c0b0c928e6ea32da76c01562", [ null, @@ -754390,7 +754817,7 @@ {} ] ], - "takePhoto.html": [ + "takePhoto.https.html": [ "44586406c470cef6a591a3a94081fdfd0a90f7ea", [ null, @@ -759843,7 +760270,7 @@ ] ], "intercept-async.html": [ - "d402340b068837ab29807f5d2b083565034e1e8c", + "4fa7c88833e0232bd743c206d0d10605c7357d1a", [ "navigation-api/ordering-and-transition/intercept-async.html?currententrychange", {} @@ -759933,7 +760360,7 @@ ] ], "navigate-double-intercept.html": [ - "8baea7bf1ea00ccfa919cb178c12ce8deb16ad5d", + "0598fb554e0a8d57b0dfcb0ba365058a2f83dbd5", [ "navigation-api/ordering-and-transition/navigate-double-intercept.html?currententrychange", {} @@ -759944,7 +760371,7 @@ ] ], "navigate-in-transition-finished.html": [ - "6f8b667ce314dae6c7ae06965dbf5369ca5d0a06", + "8b3811dd36fd5586930492e5d1d514d61453fc66", [ "navigation-api/ordering-and-transition/navigate-in-transition-finished.html?currententrychange", {} @@ -759955,7 +760382,7 @@ ] ], "navigate-intercept-precommitHandler-redirect.html": [ - "90cf813d0587c2c6bf3c299360890060255ed275", + "2f60bfd749d271808cc1f56e2e2566768c607866", [ "navigation-api/ordering-and-transition/navigate-intercept-precommitHandler-redirect.html?currententrychange", {} @@ -759965,8 +760392,19 @@ {} ] ], + "navigate-intercept-precommitHandler-reject.tentative.html": [ + "6d19614f7437fa95f41ba5c6cabf977f44bbdcc2", + [ + "navigation-api/ordering-and-transition/navigate-intercept-precommitHandler-reject.tentative.html?currententrychange", + {} + ], + [ + "navigation-api/ordering-and-transition/navigate-intercept-precommitHandler-reject.tentative.html?no-currententrychange", + {} + ] + ], "navigate-intercept-precommitHandler.html": [ - "27e317cfc6759c8efc01ba40648a315304744e63", + "8257e56d44e15e9a29d74c3990f8f29afd58b0d7", [ "navigation-api/ordering-and-transition/navigate-intercept-precommitHandler.html?currententrychange", {} @@ -759977,7 +760415,7 @@ ] ], "navigate-intercept-stop.html": [ - "189475d5de1edabd6d33032885b2f4aa9fdd1811", + "1a7faa4e0eebc7ef490c15805086ac16de385fb1", [ "navigation-api/ordering-and-transition/navigate-intercept-stop.html?currententrychange", {} @@ -759988,7 +760426,7 @@ ] ], "navigate-intercept.html": [ - "cdbd8f6ef668432b939477260c5f9b0ced1b80d0", + "eec9d3ca119b82406cdd93ad4de6af93f0ef1cf2", [ "navigation-api/ordering-and-transition/navigate-intercept.html?currententrychange", {} @@ -759999,7 +760437,7 @@ ] ], "navigate-same-document-intercept-reentrant.html": [ - "0106e997c9fdc4f408fef6c77046ee877f7da4df", + "88715fda355252a1ec299df1c00ce0277fe5fcd2", [ "navigation-api/ordering-and-transition/navigate-same-document-intercept-reentrant.html?currententrychange", {} @@ -760010,7 +760448,7 @@ ] ], "navigate-same-document-intercept-reject.html": [ - "6713edca2d9234ae7e90c04540ffe96894273a14", + "05f295177a062bc9f471952cf8d821b7bfad3bce", [ "navigation-api/ordering-and-transition/navigate-same-document-intercept-reject.html?currententrychange", {} @@ -760039,7 +760477,7 @@ ] ], "reload-intercept-reject.html": [ - "7394ce4d17a06887d2c8281ad777e2c8fb8125ad", + "96833f314f464724ec32c71837c7439cb687a46a", [ "navigation-api/ordering-and-transition/reload-intercept-reject.html?currententrychange", {} @@ -760050,7 +760488,7 @@ ] ], "reload-intercept.html": [ - "18ff6191c0d05078c097333f9a360d37f6bcdee6", + "1494136e199c508564a7449586c2f5579d9be69c", [ "navigation-api/ordering-and-transition/reload-intercept.html?currententrychange", {} @@ -760061,7 +760499,7 @@ ] ], "reload-no-popstate.html": [ - "9c1186344dc7f1c988166b459e67b8b482ba9413", + "6c4592b67cc1417e1aa69491c41bb69cc8caba6e", [ null, {} @@ -760190,6 +760628,13 @@ {} ] ], + "precommitHandler-redirect-options.html": [ + "06542d7e084f9232d8c7704090d1a184b9b6cec5", + [ + null, + {} + ] + ], "precommitHandler-redirect-push.html": [ "de75198d9754a5510adb449f5845fa5daa7ea63b", [ @@ -760205,7 +760650,7 @@ ] ], "precommitHandler-redirect-throws.html": [ - "353daa1a48bc9dac85453d32f56ec35bc6b59ddb", + "b459271201050717bed97920dea3cb41cc772201", [ null, {} @@ -785800,7 +786245,7 @@ ] ], "getallscreensmedia-exposure.tentative.https.window.js": [ - "9be2fa07dd6148fb4f29aced39d8c6b2eb3bd33d", + "983fd6fbc9a97e9f3014a38ac6d48152118efb08", [ "screen-capture/getallscreensmedia-exposure.tentative.https.window.html", {} @@ -787070,7 +787515,7 @@ ] ], "scroll-timeline-invalidation.html": [ - "a26500989ed0c64ca715f94f120b79ee19f45bd7", + "a0d33c28e088b90e74e3528d625892ebc9459c64", [ null, {} @@ -788017,6 +788462,15 @@ "testdriver": true } ] + ], + "move-around-generated-content.html": [ + "ea22a399ae83e012f55c3a097840a535080cee23", + [ + null, + { + "testdriver": true + } + ] ] }, "caret-position-should-be-correct-while-moveup-movedown.html": [ @@ -793042,6 +793496,16 @@ ], "reading-flow": { "tentative": { + "carousel-grid-order.html": [ + "89b3f8dd928f33fe73fa6b9bd987ad0402e7f255", + [ + null, + { + "testdriver": true, + "timeout": "long" + } + ] + ], "flex-flow.html": [ "a956ae476fae8febccf32054d50f6b550ac4bbd6", [ @@ -795855,7 +796319,7 @@ "speculation-rules": { "prefetch": { "anonymous-client.https.html": [ - "bf5896b2dd0626a14e80fe694bd443fea784c4b7", + "902724cdb0e08e603d0d41566a2fe889646088f0", [ null, {} @@ -795914,7 +796378,7 @@ ] ], "cross-origin-cookies.https.html": [ - "a16872fcef9c1b836b6b24a380bd12f068d55209", + "95c95197a70e200542bf3691f10ee1a73a4deb76", [ null, { @@ -796527,7 +796991,7 @@ ] ], "prefetch-uses-cache.sub.https.html": [ - "c0e9e73c75e877f4e130a26de6764c8966ef8620", + "59071c82021ccb3726f58c73a6c5fdf5036fb240", [ "speculation-rules/prefetch/prefetch-uses-cache.sub.https.html?cross-site", { @@ -796605,7 +797069,7 @@ ] ], "referrer-policy-from-rules.https.html": [ - "5024052eb464a38a0f5c244af1deac239af6f30c", + "f877bd848246fff7b2145edd106ae48af696b24b", [ "speculation-rules/prefetch/referrer-policy-from-rules.https.html?1-1", {} @@ -796655,7 +797119,7 @@ ] ], "referrer-policy.https.html": [ - "8eb24c45815fd2601d19a7f46152ecc36cb0e6a9", + "a1d2aa4b188de828d93174eab1e59d219c56a067", [ "speculation-rules/prefetch/referrer-policy.https.html?1-1", {} @@ -796691,7 +797155,7 @@ ] ], "sec-fetch-headers.https.html": [ - "730f0720995b9b548617e437d7d748f66c83335f", + "3d1d1770d789e6a8591c742c4129fb276e7bc289", [ null, { @@ -796702,7 +797166,7 @@ "tentative": { "service-worker": { "basic.sub.https.html": [ - "e4c103535cc9f3ff2ba23fbe2ca7ff4bfb82a576", + "bee8e2ff1f4515afa805fa37e86f25effe66c22e", [ "speculation-rules/prefetch/tentative/service-worker/basic.sub.https.html?origin=cross-site&sw=fetch-handler", { @@ -796734,6 +797198,18 @@ } ], [ + "speculation-rules/prefetch/tentative/service-worker/basic.sub.https.html?origin=same-site&sw=fetch-handler-modify-referrer", + { + "timeout": "long" + } + ], + [ + "speculation-rules/prefetch/tentative/service-worker/basic.sub.https.html?origin=same-site&sw=fetch-handler-modify-url", + { + "timeout": "long" + } + ], + [ "speculation-rules/prefetch/tentative/service-worker/basic.sub.https.html?origin=same-site&sw=fetch-handler-to-fallback", { "timeout": "long" @@ -796755,7 +797231,7 @@ } }, "user-pass.https.html": [ - "011e6137e61ad8afb21070a7d3e341a42061c000", + "c6cc51bdb04ba860142de6a789bc30f9d36cf740", [ "speculation-rules/prefetch/user-pass.https.html?cross-origin=false", { @@ -796771,7 +797247,7 @@ ] }, "prerender": { - "about-blank-iframes.html": [ + "about-blank-iframes.https.html": [ "af289197c6e62c952064f967022b39ac580260a8", [ null, @@ -796789,7 +797265,7 @@ } ] ], - "activation-start.html": [ + "activation-start.https.html": [ "7aee20c3465dcfb02e370ada84b62af6e99f35d0", [ null, @@ -796798,7 +797274,7 @@ } ] ], - "blob_object_url.html": [ + "blob_object_url.https.html": [ "49fb7c9e2c3618a59245090379961c6ab4b5b1ca", [ null, @@ -796852,7 +797328,7 @@ } ] ], - "credentialed-prerender-not-opt-in.html": [ + "credentialed-prerender-not-opt-in.https.html": [ "697382a6dc8569600a34f866288f4a2405d62188", [ null, @@ -796861,7 +797337,7 @@ } ] ], - "credentialed-prerender-opt-in.html": [ + "credentialed-prerender-opt-in.https.html": [ "91626bafce677b96fef8115a1a90ca533dd31482", [ null, @@ -796870,16 +797346,16 @@ } ] ], - "cross-origin-iframe.html": [ + "cross-origin-iframe.https.html": [ "0fc92fcce1c4583a39d09ef80abef7e5a804c2b8", [ - "speculation-rules/prerender/cross-origin-iframe.html?target_hint=_blank", + "speculation-rules/prerender/cross-origin-iframe.https.html?target_hint=_blank", { "timeout": "long" } ], [ - "speculation-rules/prerender/cross-origin-iframe.html?target_hint=_self", + "speculation-rules/prerender/cross-origin-iframe.https.html?target_hint=_self", { "timeout": "long" } @@ -796900,91 +797376,91 @@ } ] ], - "csp-script-src-elem-inline-speculation-rules.html": [ + "csp-script-src-elem-inline-speculation-rules.https.html": [ "7f33c32793bef2afa773abf27be3158797fbdd30", [ - "speculation-rules/prerender/csp-script-src-elem-inline-speculation-rules.html?target_hint=_blank", + "speculation-rules/prerender/csp-script-src-elem-inline-speculation-rules.https.html?target_hint=_blank", { "timeout": "long" } ], [ - "speculation-rules/prerender/csp-script-src-elem-inline-speculation-rules.html?target_hint=_self", + "speculation-rules/prerender/csp-script-src-elem-inline-speculation-rules.https.html?target_hint=_self", { "timeout": "long" } ] ], - "csp-script-src-inline-speculation-rules.html": [ + "csp-script-src-inline-speculation-rules.https.html": [ "1d5b35c30fba7c963e4c7c62bc487352dd07804f", [ - "speculation-rules/prerender/csp-script-src-inline-speculation-rules.html?target_hint=_blank", + "speculation-rules/prerender/csp-script-src-inline-speculation-rules.https.html?target_hint=_blank", { "timeout": "long" } ], [ - "speculation-rules/prerender/csp-script-src-inline-speculation-rules.html?target_hint=_self", + "speculation-rules/prerender/csp-script-src-inline-speculation-rules.https.html?target_hint=_self", { "timeout": "long" } ] ], - "csp-script-src-self.html": [ + "csp-script-src-self.https.html": [ "86cf9def4a5a0d3f7e1d005e439670571bafaca6", [ - "speculation-rules/prerender/csp-script-src-self.html?target_hint=_blank", + "speculation-rules/prerender/csp-script-src-self.https.html?target_hint=_blank", { "timeout": "long" } ], [ - "speculation-rules/prerender/csp-script-src-self.html?target_hint=_self", + "speculation-rules/prerender/csp-script-src-self.https.html?target_hint=_self", { "timeout": "long" } ] ], - "csp-script-src-strict-dynamic.html": [ + "csp-script-src-strict-dynamic.https.html": [ "d5d8079401127cec27cad30e3cfbb66b997b509b", [ - "speculation-rules/prerender/csp-script-src-strict-dynamic.html?target_hint=_blank", + "speculation-rules/prerender/csp-script-src-strict-dynamic.https.html?target_hint=_blank", { "timeout": "long" } ], [ - "speculation-rules/prerender/csp-script-src-strict-dynamic.html?target_hint=_self", + "speculation-rules/prerender/csp-script-src-strict-dynamic.https.html?target_hint=_self", { "timeout": "long" } ] ], - "csp-script-src-unsafe-inline.html": [ + "csp-script-src-unsafe-inline.https.html": [ "b9b3092a1282bd1876d9cb0d93c382a4a851923f", [ - "speculation-rules/prerender/csp-script-src-unsafe-inline.html?target_hint=_blank", + "speculation-rules/prerender/csp-script-src-unsafe-inline.https.html?target_hint=_blank", { "timeout": "long" } ], [ - "speculation-rules/prerender/csp-script-src-unsafe-inline.html?target_hint=_self", + "speculation-rules/prerender/csp-script-src-unsafe-inline.https.html?target_hint=_self", { "timeout": "long" } ] ], - "fetch-blob.html": [ + "fetch-blob.https.html": [ "37577f3b5bcc386c4a7c1db6bf01a6e015f3b856", [ - "speculation-rules/prerender/fetch-blob.html?target_hint=_blank", + "speculation-rules/prerender/fetch-blob.https.html?target_hint=_blank", { "timeout": "long" } ], [ - "speculation-rules/prerender/fetch-blob.html?target_hint=_self", + "speculation-rules/prerender/fetch-blob.https.html?target_hint=_self", { "timeout": "long" } @@ -796999,7 +797475,7 @@ } ] ], - "iframe-added-post-activation.html": [ + "iframe-added-post-activation.https.html": [ "d22b511e108d8b7c7f0b63f28e5bf485eca98758", [ null, @@ -797008,7 +797484,7 @@ } ] ], - "indexeddb.html": [ + "indexeddb.https.html": [ "f8240014dee43382e7320abf99eaa270e04fd434", [ null, @@ -797017,16 +797493,16 @@ } ] ], - "local-storage.html": [ + "local-storage.https.html": [ "2f7428746cc5be76ec683e6cf1eeaa49ce1adfb6", [ - "speculation-rules/prerender/local-storage.html?target_hint=_blank", + "speculation-rules/prerender/local-storage.https.html?target_hint=_blank", { "timeout": "long" } ], [ - "speculation-rules/prerender/local-storage.html?target_hint=_self", + "speculation-rules/prerender/local-storage.https.html?target_hint=_self", { "timeout": "long" } @@ -797041,7 +797517,7 @@ } ] ], - "media-autoplay.html": [ + "media-autoplay.https.html": [ "f5d3291ffdca4ebf4beef6d3eb13c15fa3ec8f62", [ null, @@ -797050,7 +797526,7 @@ } ] ], - "navigation-api-location-replace.html": [ + "navigation-api-location-replace.https.html": [ "e3ecf1b72b61f5cfbb610906c2c4049ace2d51eb", [ null, @@ -797059,7 +797535,7 @@ } ] ], - "navigation-api-multiple-entries.html": [ + "navigation-api-multiple-entries.https.html": [ "e8e0f874597081ca12e653e04c3c9c43716778cf", [ null, @@ -797068,7 +797544,7 @@ } ] ], - "navigation-api.html": [ + "navigation-api.https.html": [ "fd25e94b5b32d56faac7875f88f48fe484cde3d0", [ null, @@ -797086,7 +797562,7 @@ } ] ], - "navigator-plugins.html": [ + "navigator-plugins.https.html": [ "4d7fa4902acad9d0edb7562136fbcc8af5bc0380", [ null, @@ -797458,7 +797934,7 @@ } ] ], - "prerender-while-prerender.html": [ + "prerender-while-prerender.https.html": [ "8aa80baf5253f749ce1307b8ca013d753a84e96c", [ null, @@ -797496,22 +797972,22 @@ } ] ], - "referrer-policy-from-rules.html": [ + "referrer-policy-from-rules.https.html": [ "7e3b65fe6127c9ecd6f5448d0d31be8962ff8db2", [ - "speculation-rules/prerender/referrer-policy-from-rules.html?1-1", + "speculation-rules/prerender/referrer-policy-from-rules.https.html?1-1", { "timeout": "long" } ], [ - "speculation-rules/prerender/referrer-policy-from-rules.html?2-last", + "speculation-rules/prerender/referrer-policy-from-rules.https.html?2-last", { "timeout": "long" } ] ], - "referrer-policy-mismatch.html": [ + "referrer-policy-mismatch.https.html": [ "fa2d424660a3674ba7c7db7a248df70ba6acde73", [ null, @@ -797520,7 +797996,7 @@ } ] ], - "referrer-policy-no-referrer.html": [ + "referrer-policy-no-referrer.https.html": [ "a0d1763f95bd749c7ed3fe49a3f22348d591b6b8", [ null, @@ -797529,7 +798005,7 @@ } ] ], - "referrer-policy-origin.html": [ + "referrer-policy-origin.https.html": [ "95eb8ba72f7ed48c213f6cf5d85ff687719bdf28", [ null, @@ -797538,7 +798014,7 @@ } ] ], - "referrer-policy-strict-origin.html": [ + "referrer-policy-strict-origin.https.html": [ "0861012fa44cdf5ad10512cb43beb2de783a071b", [ null, @@ -797547,7 +798023,7 @@ } ] ], - "referrer.html": [ + "referrer.https.html": [ "c0ecc845b56e6e67b4c62f32cf778fd6ab6b9474", [ null, @@ -797565,110 +798041,110 @@ } ] ], - "remove-script-element.html": [ + "remove-script-element.https.html": [ "31f5f4bb4b9604e459b26ebd612ea12e00581ce7", [ null, {} ] ], - "response-code-non-successful.html": [ + "response-code-non-successful.https.html": [ "68cd505b2ba56f987ec3918acd2d439fce8c1dab", [ - "speculation-rules/prerender/response-code-non-successful.html?code=204", + "speculation-rules/prerender/response-code-non-successful.https.html?code=204", { "timeout": "long" } ], [ - "speculation-rules/prerender/response-code-non-successful.html?code=205", + "speculation-rules/prerender/response-code-non-successful.https.html?code=205", { "timeout": "long" } ], [ - "speculation-rules/prerender/response-code-non-successful.html?code=402", + "speculation-rules/prerender/response-code-non-successful.https.html?code=402", { "timeout": "long" } ], [ - "speculation-rules/prerender/response-code-non-successful.html?code=404", + "speculation-rules/prerender/response-code-non-successful.https.html?code=404", { "timeout": "long" } ], [ - "speculation-rules/prerender/response-code-non-successful.html?code=500", + "speculation-rules/prerender/response-code-non-successful.https.html?code=500", { "timeout": "long" } ], [ - "speculation-rules/prerender/response-code-non-successful.html?code=503", + "speculation-rules/prerender/response-code-non-successful.https.html?code=503", { "timeout": "long" } ] ], - "response-code-successful.html": [ + "response-code-successful.https.html": [ "eca7f38c8c3d0b4e989ef68192c6248882d44cfe", [ - "speculation-rules/prerender/response-code-successful.html?code=200", + "speculation-rules/prerender/response-code-successful.https.html?code=200", { "timeout": "long" } ], [ - "speculation-rules/prerender/response-code-successful.html?code=201", + "speculation-rules/prerender/response-code-successful.https.html?code=201", { "timeout": "long" } ], [ - "speculation-rules/prerender/response-code-successful.html?code=202", + "speculation-rules/prerender/response-code-successful.https.html?code=202", { "timeout": "long" } ], [ - "speculation-rules/prerender/response-code-successful.html?code=203", + "speculation-rules/prerender/response-code-successful.https.html?code=203", { "timeout": "long" } ], [ - "speculation-rules/prerender/response-code-successful.html?code=232", + "speculation-rules/prerender/response-code-successful.https.html?code=232", { "timeout": "long" } ] ], - "restriction-audio-setSinkId-with-invalid-sinkId.https.tentative.html": [ + "restriction-audio-setSinkId-with-invalid-sinkId.https.tentative.https.html": [ "f4a362894c877d7e1d22c59da4b3ffb4f0422301", [ - "speculation-rules/prerender/restriction-audio-setSinkId-with-invalid-sinkId.https.tentative.html?target_hint=_blank", + "speculation-rules/prerender/restriction-audio-setSinkId-with-invalid-sinkId.https.tentative.https.html?target_hint=_blank", { "timeout": "long" } ], [ - "speculation-rules/prerender/restriction-audio-setSinkId-with-invalid-sinkId.https.tentative.html?target_hint=_self", + "speculation-rules/prerender/restriction-audio-setSinkId-with-invalid-sinkId.https.tentative.https.html?target_hint=_self", { "timeout": "long" } ] ], - "restriction-audio-setSinkId.https.tentative.html": [ + "restriction-audio-setSinkId.https.tentative.https.html": [ "a3b6db5041817a49480a7b26f9a85332fd878441", [ - "speculation-rules/prerender/restriction-audio-setSinkId.https.tentative.html?target_hint=_blank", + "speculation-rules/prerender/restriction-audio-setSinkId.https.tentative.https.html?target_hint=_blank", { "timeout": "long" } ], [ - "speculation-rules/prerender/restriction-audio-setSinkId.https.tentative.html?target_hint=_self", + "speculation-rules/prerender/restriction-audio-setSinkId.https.tentative.https.html?target_hint=_self", { "timeout": "long" } @@ -797732,7 +798208,7 @@ } ] ], - "restriction-broadcast-channel.html": [ + "restriction-broadcast-channel.https.html": [ "167f5f9bc4d1992a4f97d49a72b02ac4b9c03f28", [ null, @@ -797768,7 +798244,7 @@ } ] ], - "restriction-focus.html": [ + "restriction-focus.https.html": [ "b606d1f8bf97586c3d056adec12f7adc8f9479cb", [ null, @@ -797795,16 +798271,16 @@ } ] ], - "restriction-media-auto-play-attribute.html": [ + "restriction-media-auto-play-attribute.https.html": [ "10db174db9fdc9c8a2c7c2694bb22799984867bc", [ - "speculation-rules/prerender/restriction-media-auto-play-attribute.html?target_hint=_blank", + "speculation-rules/prerender/restriction-media-auto-play-attribute.https.html?target_hint=_blank", { "timeout": "long" } ], [ - "speculation-rules/prerender/restriction-media-auto-play-attribute.html?target_hint=_self", + "speculation-rules/prerender/restriction-media-auto-play-attribute.https.html?target_hint=_self", { "timeout": "long" } @@ -797889,22 +798365,22 @@ } ] ], - "restriction-media-play.html": [ + "restriction-media-play.https.html": [ "3db8c22c4178f8161b21fad6fc18d8b41a7b3e3e", [ - "speculation-rules/prerender/restriction-media-play.html?target_hint=_blank", + "speculation-rules/prerender/restriction-media-play.https.html?target_hint=_blank", { "timeout": "long" } ], [ - "speculation-rules/prerender/restriction-media-play.html?target_hint=_self", + "speculation-rules/prerender/restriction-media-play.https.html?target_hint=_self", { "timeout": "long" } ] ], - "restriction-message-boxes.html": [ + "restriction-message-boxes.https.html": [ "a40df1acc2ba00d215c2b45b80cf5b621ec2f977", [ null, @@ -797952,7 +798428,7 @@ } ] ], - "restriction-prompt-by-before-unload.html": [ + "restriction-prompt-by-before-unload.https.html": [ "63a4b11fc3a3fc4a9bea991831e90896cfa018ab", [ null, @@ -797971,7 +798447,7 @@ } ] ], - "restriction-request-picture-in-picture.html": [ + "restriction-request-picture-in-picture.https.html": [ "743254d3d9cdf00c2cf5621b0168ec89532d3b06", [ null, @@ -798099,7 +798575,7 @@ } ] ], - "restriction-speech-synthesis.html": [ + "restriction-speech-synthesis.https.html": [ "9dbdf9fd45b0e4d31d13d37f89b7b2eb8626ded8", [ null, @@ -798211,7 +798687,7 @@ } ] ], - "restriction-window-move.html": [ + "restriction-window-move.https.html": [ "232760db36576e4079850aeb2339684e92f4293d", [ null, @@ -798220,7 +798696,7 @@ } ] ], - "restriction-window-open.html": [ + "restriction-window-open.https.html": [ "7397d31e65ce13785b5d01e6e420a827715740f9", [ null, @@ -798229,7 +798705,7 @@ } ] ], - "restriction-window-resize.html": [ + "restriction-window-resize.https.html": [ "a2466c48b36ea0f9d2048fcfafd2e9d85ef2b611", [ null, @@ -798238,7 +798714,7 @@ } ] ], - "restrictions.html": [ + "restrictions.https.html": [ "817a1995bc561c945c81862fdf41877977aaf368", [ null, @@ -798277,7 +798753,7 @@ } ] ], - "sandbox-iframe.html": [ + "sandbox-iframe.https.html": [ "469b8aadc31137d412faad400523af61922c6c0b", [ null, @@ -798286,7 +798762,7 @@ } ] ], - "script-supports-speculationrules.html": [ + "script-supports-speculationrules.https.html": [ "2dc856fce5da7c8fa2fb24a8df70348fe5aa84e8", [ null, @@ -798295,16 +798771,16 @@ } ] ], - "send-beacon.html": [ + "send-beacon.https.html": [ "34843efcde78c5338116ab2ae2dfbfab023df389", [ - "speculation-rules/prerender/send-beacon.html?target_hint=_blank", + "speculation-rules/prerender/send-beacon.https.html?target_hint=_blank", { "timeout": "long" } ], [ - "speculation-rules/prerender/send-beacon.html?target_hint=_self", + "speculation-rules/prerender/send-beacon.https.html?target_hint=_self", { "timeout": "long" } @@ -798373,7 +798849,7 @@ } ] ], - "session-storage.tentative.html": [ + "session-storage.tentative.https.html": [ "92d73285cce8df081691cb13d7bd288ab79b6b52", [ null, @@ -798382,7 +798858,7 @@ } ] ], - "state-and-event.html": [ + "state-and-event.https.html": [ "7e8e7fd0a92b7175d2f761f128723404f4a3ba08", [ null, @@ -798391,7 +798867,7 @@ } ] ], - "visibility-state.html": [ + "visibility-state.https.html": [ "e9e8548c4f686bd55b56210f8b9dd94d5900f7fa", [ null, @@ -798427,7 +798903,7 @@ } ] ], - "workers-in-cross-origin-iframe.html": [ + "workers-in-cross-origin-iframe.https.html": [ "260bc8eacbf0e0081d1209deafecb07e60be502d", [ null, @@ -798436,7 +798912,7 @@ } ] ], - "workers.html": [ + "workers.https.html": [ "3abae233a5fbbc1abfdd2c845fb0ba4fe4256f25", [ null, @@ -800188,6 +800664,24 @@ } ] ], + "storage-access-beyond-cookies.BlobURLSharedWorker.sub.https.tentative.window.js": [ + "f0559984230abc417d7b481ac1e9b549c69ef565", + [ + "storage-access-api/storage-access-beyond-cookies.BlobURLSharedWorker.sub.https.tentative.window.html", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/resources/testdriver-vendor.js" + ] + ] + } + ] + ], "storage-access-beyond-cookies.BroadcastChannel.sub.https.window.js": [ "feb268b4b8146290eec743779c4a8d9567bc74b3", [ @@ -805505,6 +805999,71 @@ } ] ], + "crashtests": { + "garbage-collection.any.js": [ + "b2ba5cd4c27e9120a9e69c358e6ff5be31b107fd", + [ + "streams/readable-streams/crashtests/garbage-collection.any.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "/common/gc.js" + ] + ] + } + ], + [ + "streams/readable-streams/crashtests/garbage-collection.any.serviceworker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "/common/gc.js" + ] + ] + } + ], + [ + "streams/readable-streams/crashtests/garbage-collection.any.sharedworker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "/common/gc.js" + ] + ] + } + ], + [ + "streams/readable-streams/crashtests/garbage-collection.any.worker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "/common/gc.js" + ] + ] + } + ] + ] + }, "cross-realm-crash.window.js": [ "5fc7ce37a5f6d2dbd90b5f898bcd7b198f0c50b0", [ @@ -815009,7 +815568,7 @@ }, "scripted": { "SVGMarkerElement-orientType-synchronization.html": [ - "041421283105b1fbc1cacabbe81267b9babfb5ac", + "a409183189a828fd33c28adfe6160a6bd027b8ab", [ null, {} @@ -817805,6 +818364,31 @@ ] } ] + ], + "useragentdata.https.tentative.any.js": [ + "3af48ee416ac217d7c5d488d6874e445bc6edf1e", + [ + "ua-client-hints/useragentdata.https.tentative.any.html", + { + "script_metadata": [ + [ + "title", + "tests for navigator.userAgentData on Linux" + ] + ] + } + ], + [ + "ua-client-hints/useragentdata.https.tentative.any.worker.html", + { + "script_metadata": [ + [ + "title", + "tests for navigator.userAgentData on Linux" + ] + ] + } + ] ] }, "uievents": { @@ -822130,6 +822714,35 @@ ] ] }, + "viewport-segments": { + "viewport-segments-change-event.https.html": [ + "f039d5514d0ae2974d793342c8b95e10cc1c0a63", + [ + null, + { + "testdriver": true + } + ] + ], + "viewport-segments-env-variables.https.html": [ + "6004398b2ce20ca0580380b6bc570f6bf8108683", + [ + null, + { + "testdriver": true + } + ] + ], + "viewport-segments-segments-property.https.html": [ + "852e49fa7fecea5badf92dfafb6befa49800dd39", + [ + null, + { + "testdriver": true + } + ] + ] + }, "virtual-keyboard": { "idlharness.https.window.js": [ "8a40e68575f0fc7383f660346e8b98c646c798e2", @@ -837998,7 +838611,7 @@ ] ], "audio-data.any.js": [ - "c18606e2b7054a1965233f9dc602e1b6fdfeaadc", + "dd199c485fb22370d7af03cb8b3df6601a825dbe", [ "webcodecs/audio-data.any.html", { @@ -838196,7 +838809,7 @@ ] ], "audioDecoder-codec-specific.https.any.js": [ - "32eb6598c66451b366ad014635c73049589565f4", + "b0791813f21dc056a0e523b349fe114a35ff457c", [ "webcodecs/audioDecoder-codec-specific.https.any.html?adts_aac", { @@ -850655,7 +851268,7 @@ ] ], "dequantizeLinear.https.any.js": [ - "35c15055661d4cde7033faca57d6436795f02fc8", + "900bb57bacfd379bc81a24b1ec622d914a3e5455", [ "webnn/conformance_tests/dequantizeLinear.https.any.html?cpu", { @@ -856732,8 +857345,443 @@ } ] ], + "qdq_subgraph.https.any.js": [ + "8f6f2246b04f8a6fc9570eced30b31b841da5a06", + [ + "webnn/conformance_tests/qdq_subgraph.https.any.html?cpu", + { + "script_metadata": [ + [ + "title", + "test WebNN `dequantization -> operators -> quantization` subgraph" + ], + [ + "global", + "window,worker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ], + [ + "script", + "../resources/utils.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ], + [ + "webnn/conformance_tests/qdq_subgraph.https.any.html?gpu", + { + "script_metadata": [ + [ + "title", + "test WebNN `dequantization -> operators -> quantization` subgraph" + ], + [ + "global", + "window,worker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ], + [ + "script", + "../resources/utils.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ], + [ + "webnn/conformance_tests/qdq_subgraph.https.any.html?npu", + { + "script_metadata": [ + [ + "title", + "test WebNN `dequantization -> operators -> quantization` subgraph" + ], + [ + "global", + "window,worker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ], + [ + "script", + "../resources/utils.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ], + [ + "webnn/conformance_tests/qdq_subgraph.https.any.serviceworker.html?cpu", + { + "script_metadata": [ + [ + "title", + "test WebNN `dequantization -> operators -> quantization` subgraph" + ], + [ + "global", + "window,worker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ], + [ + "script", + "../resources/utils.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ], + [ + "webnn/conformance_tests/qdq_subgraph.https.any.serviceworker.html?gpu", + { + "script_metadata": [ + [ + "title", + "test WebNN `dequantization -> operators -> quantization` subgraph" + ], + [ + "global", + "window,worker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ], + [ + "script", + "../resources/utils.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ], + [ + "webnn/conformance_tests/qdq_subgraph.https.any.serviceworker.html?npu", + { + "script_metadata": [ + [ + "title", + "test WebNN `dequantization -> operators -> quantization` subgraph" + ], + [ + "global", + "window,worker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ], + [ + "script", + "../resources/utils.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ], + [ + "webnn/conformance_tests/qdq_subgraph.https.any.sharedworker.html?cpu", + { + "script_metadata": [ + [ + "title", + "test WebNN `dequantization -> operators -> quantization` subgraph" + ], + [ + "global", + "window,worker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ], + [ + "script", + "../resources/utils.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ], + [ + "webnn/conformance_tests/qdq_subgraph.https.any.sharedworker.html?gpu", + { + "script_metadata": [ + [ + "title", + "test WebNN `dequantization -> operators -> quantization` subgraph" + ], + [ + "global", + "window,worker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ], + [ + "script", + "../resources/utils.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ], + [ + "webnn/conformance_tests/qdq_subgraph.https.any.sharedworker.html?npu", + { + "script_metadata": [ + [ + "title", + "test WebNN `dequantization -> operators -> quantization` subgraph" + ], + [ + "global", + "window,worker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ], + [ + "script", + "../resources/utils.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ], + [ + "webnn/conformance_tests/qdq_subgraph.https.any.worker.html?cpu", + { + "script_metadata": [ + [ + "title", + "test WebNN `dequantization -> operators -> quantization` subgraph" + ], + [ + "global", + "window,worker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ], + [ + "script", + "../resources/utils.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ], + [ + "webnn/conformance_tests/qdq_subgraph.https.any.worker.html?gpu", + { + "script_metadata": [ + [ + "title", + "test WebNN `dequantization -> operators -> quantization` subgraph" + ], + [ + "global", + "window,worker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ], + [ + "script", + "../resources/utils.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ], + [ + "webnn/conformance_tests/qdq_subgraph.https.any.worker.html?npu", + { + "script_metadata": [ + [ + "title", + "test WebNN `dequantization -> operators -> quantization` subgraph" + ], + [ + "global", + "window,worker" + ], + [ + "variant", + "?cpu" + ], + [ + "variant", + "?gpu" + ], + [ + "variant", + "?npu" + ], + [ + "script", + "../resources/utils.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ] + ], "quantizeLinear.https.any.js": [ - "0e9fe5e6b4a9f610b62ce3fae9add857fa8cba37", + "af46c8945a3dcbedf573543c58b8299d86e5f2ff", [ "webnn/conformance_tests/quantizeLinear.https.any.html?cpu", { @@ -860639,7 +861687,7 @@ ] ], "subgraph.https.any.js": [ - "a494a8b7a95d7ff9b4a4be717d7f876a1b061b26", + "9b21d6e4f9453fb72c3f7a6850c5690cc9ed87cf", [ "webnn/conformance_tests/subgraph.https.any.html?cpu", { @@ -879272,7 +880320,7 @@ ] ], "script-metadata-transform.https.html": [ - "11c88b469363e3faeff5723e07628f9ba2f1c6b1", + "106593879c24e1903beebc146f6c804854cc441b", [ null, { @@ -879302,7 +880350,7 @@ ] ], "script-transform-sendKeyFrameRequest.https.html": [ - "51b797eb68346e928bba18bff94c39f1c9d7a4e4", + "9bc75bd7a0e0894cdecab7ffb7eb70d9bf967159", [ null, { @@ -895869,7 +896917,7 @@ ] ], "depth_sensing_cpu_inactiveFrame.https.html": [ - "92c20cecbf677900a474f0fd6694bf3c024ce4b1", + "c6ac8c60b0a765ecc893d7b5e0e7555c3ddabf51", [ null, {} @@ -895889,6 +896937,13 @@ {} ] ], + "depth_sensing_cpu_pauseResume.https.html": [ + "47469f4a0ea186e981843db8c00a1d72bc938907", + [ + null, + {} + ] + ], "depth_sensing_cpu_staleView.https.html": [ "6a411ace451f817ba20c69a3eca22b55c536a56a", [ @@ -895898,7 +896953,7 @@ ] }, "depth_sensing_attributes_throw_not_enabled.https.html": [ - "43adba74a047e926d1d65ec4752533072996274c", + "4e1f2e8c76d19a6e4e23534d0ab7fdd65065031b", [ null, {} @@ -895934,7 +896989,7 @@ ] ], "depth_sensing_gpu_inactiveFrame.https.html": [ - "6116f7a0414e578e88ada99508d67f8318578b8d", + "8528b4f80d85b44dad93dafc92ce598b8ea79bb0", [ null, {} @@ -895947,6 +897002,13 @@ {} ] ], + "depth_sensing_gpu_pauseResume.https.html": [ + "d51edb8cd3b85192fc5904df9f488e7c32356080", + [ + null, + {} + ] + ], "depth_sensing_gpu_staleView.https.html": [ "ecd0d479f7aac7222d512edeafef9565993add1d", [ @@ -897601,6 +898663,13 @@ {} ] ], + "WorkerNavigator_userAgentData.https.tentative.html": [ + "e4026e2ff06873c24c37cd59108b0a83dc69fd9a", + [ + null, + {} + ] + ], "WorkerPerformanceNow.html": [ "286832fd947138c3e13b3c10cd5632706f57b335", [ diff --git a/tests/wpt/meta/WebCryptoAPI/import_export/okp_importKey_failures_Ed25519.https.any.js.ini b/tests/wpt/meta/WebCryptoAPI/import_export/okp_importKey_failures_Ed25519.https.any.js.ini index 95e6f053ad3..07da8e79d19 100644 --- a/tests/wpt/meta/WebCryptoAPI/import_export/okp_importKey_failures_Ed25519.https.any.js.ini +++ b/tests/wpt/meta/WebCryptoAPI/import_export/okp_importKey_failures_Ed25519.https.any.js.ini @@ -767,6 +767,18 @@ [Invalid 'crv' field: importKey(jwk (public) , {name: Ed25519}, true, [verify\])] expected: FAIL + [Invalid 'alg' field 'ed25519': importKey(jwk(private), {name: Ed25519}, true, [sign\])] + expected: FAIL + + [Invalid 'alg' field 'ED25519': importKey(jwk(private), {name: Ed25519}, true, [sign\])] + expected: FAIL + + [Invalid 'alg' field 'ed25519': importKey(jwk (public) , {name: Ed25519}, true, [verify\])] + expected: FAIL + + [Invalid 'alg' field 'ED25519': importKey(jwk (public) , {name: Ed25519}, true, [verify\])] + expected: FAIL + [okp_importKey_failures_Ed25519.https.any.html] [Bad usages: importKey(spki, {name: Ed25519}, true, [encrypt\])] @@ -1536,3 +1548,15 @@ [Invalid 'crv' field: importKey(jwk (public) , {name: Ed25519}, true, [verify\])] expected: FAIL + + [Invalid 'alg' field 'ed25519': importKey(jwk(private), {name: Ed25519}, true, [sign\])] + expected: FAIL + + [Invalid 'alg' field 'ED25519': importKey(jwk(private), {name: Ed25519}, true, [sign\])] + expected: FAIL + + [Invalid 'alg' field 'ed25519': importKey(jwk (public) , {name: Ed25519}, true, [verify\])] + expected: FAIL + + [Invalid 'alg' field 'ED25519': importKey(jwk (public) , {name: Ed25519}, true, [verify\])] + expected: FAIL diff --git a/tests/wpt/meta/WebCryptoAPI/import_export/okp_importKey_failures_Ed448.https.any.js.ini b/tests/wpt/meta/WebCryptoAPI/import_export/okp_importKey_failures_Ed448.https.any.js.ini index 41d6a029444..88c26c527ee 100644 --- a/tests/wpt/meta/WebCryptoAPI/import_export/okp_importKey_failures_Ed448.https.any.js.ini +++ b/tests/wpt/meta/WebCryptoAPI/import_export/okp_importKey_failures_Ed448.https.any.js.ini @@ -773,6 +773,18 @@ [Invalid 'crv' field: importKey(jwk (public) , {name: Ed448}, true, [verify\])] expected: FAIL + [Invalid 'alg' field 'ed448': importKey(jwk(private), {name: Ed448}, true, [sign\])] + expected: FAIL + + [Invalid 'alg' field 'ED448': importKey(jwk(private), {name: Ed448}, true, [sign\])] + expected: FAIL + + [Invalid 'alg' field 'ed448': importKey(jwk (public) , {name: Ed448}, true, [verify\])] + expected: FAIL + + [Invalid 'alg' field 'ED448': importKey(jwk (public) , {name: Ed448}, true, [verify\])] + expected: FAIL + [okp_importKey_failures_Ed448.https.any.html] [Bad usages: importKey(spki, {name: Ed448}, true, [encrypt\])] @@ -1548,3 +1560,15 @@ [Invalid 'crv' field: importKey(jwk (public) , {name: Ed448}, true, [verify\])] expected: FAIL + + [Invalid 'alg' field 'ed448': importKey(jwk(private), {name: Ed448}, true, [sign\])] + expected: FAIL + + [Invalid 'alg' field 'ED448': importKey(jwk(private), {name: Ed448}, true, [sign\])] + expected: FAIL + + [Invalid 'alg' field 'ed448': importKey(jwk (public) , {name: Ed448}, true, [verify\])] + expected: FAIL + + [Invalid 'alg' field 'ED448': importKey(jwk (public) , {name: Ed448}, true, [verify\])] + expected: FAIL diff --git a/tests/wpt/meta/content-security-policy/default-src/default-src-sri_hash.sub.html.ini b/tests/wpt/meta/content-security-policy/default-src/default-src-sri_hash.sub.html.ini index b86623fcf06..ee237b70bc4 100644 --- a/tests/wpt/meta/content-security-policy/default-src/default-src-sri_hash.sub.html.ini +++ b/tests/wpt/meta/content-security-policy/default-src/default-src-sri_hash.sub.html.ini @@ -2,8 +2,11 @@ [multiple matching integrity] expected: FAIL - [partially matching integrity] + [matching integrity] expected: FAIL - [External script in a script tag with matching SRI hash should run.] + [matching integrity (case-insensitive algorithm)] + expected: FAIL + + [matching plus unsupported integrity] expected: FAIL diff --git a/tests/wpt/meta/content-security-policy/generic/304-response-should-update-csp.sub.html.ini b/tests/wpt/meta/content-security-policy/generic/304-response-should-update-csp.sub.html.ini deleted file mode 100644 index f4f10d1a85c..00000000000 --- a/tests/wpt/meta/content-security-policy/generic/304-response-should-update-csp.sub.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[304-response-should-update-csp.sub.html] - [Test that the first frame does not use nonce def] - expected: FAIL - - [Test that the second frame does not use nonce abc] - expected: FAIL diff --git a/tests/wpt/meta/content-security-policy/generic/only-valid-whitespaces-are-allowed.html.ini b/tests/wpt/meta/content-security-policy/generic/only-valid-whitespaces-are-allowed.html.ini index 9b5f8ad8451..a8dd0149615 100644 --- a/tests/wpt/meta/content-security-policy/generic/only-valid-whitespaces-are-allowed.html.ini +++ b/tests/wpt/meta/content-security-policy/generic/only-valid-whitespaces-are-allowed.html.ini @@ -6,20 +6,50 @@ [U+000C FF should be properly parsed inside directive value - HTTP header] expected: TIMEOUT - [Should load image without any CSP - meta tag] + [Should not load image with 'none' CSP - meta tag] expected: FAIL - [Should load image without any CSP - HTTP header] + [Should not load image with 'none' CSP - HTTP header] expected: FAIL - [U+00A0 NBSP should not be parsed between directive name and value - meta tag] + [U+0009 TAB should be properly parsed between directive name and value - meta tag] expected: FAIL - [U+00A0 NBSP should not be parsed between directive name and value - HTTP header] + [U+0009 TAB should be properly parsed between directive name and value - HTTP header] expected: FAIL - [U+00A0 NBSP should not be parsed inside directive value - meta tag] + [U+000C FF should be properly parsed between directive name and value - meta tag] expected: FAIL - [U+00A0 NBSP should not be parsed inside directive value - HTTP header] + [U+000A LF should be properly parsed between directive name and value - meta tag] + expected: FAIL + + [U+000D CR should be properly parsed between directive name and value - meta tag] + expected: FAIL + + [U+0020 SPACE should be properly parsed between directive name and value - meta tag] + expected: FAIL + + [U+0020 SPACE should be properly parsed between directive name and value - HTTP header] + expected: FAIL + + [U+0009 TAB should be properly parsed inside directive value - meta tag] + expected: FAIL + + [U+0009 TAB should be properly parsed inside directive value - HTTP header] + expected: FAIL + + [U+000C FF should be properly parsed inside directive value - meta tag] + expected: FAIL + + [U+000A LF should be properly parsed inside directive value - meta tag] + expected: FAIL + + [U+000D CR should be properly parsed inside directive value - meta tag] + expected: FAIL + + [U+0020 SPACE should be properly parsed inside directive value - meta tag] + expected: FAIL + + [U+0020 SPACE should be properly parsed inside directive value - HTTP header] expected: FAIL diff --git a/tests/wpt/meta/content-security-policy/img-src/img-src-self-unique-origin.html.ini b/tests/wpt/meta/content-security-policy/img-src/img-src-self-unique-origin.html.ini deleted file mode 100644 index f5ccd49ccee..00000000000 --- a/tests/wpt/meta/content-security-policy/img-src/img-src-self-unique-origin.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[img-src-self-unique-origin.html] - expected: TIMEOUT - [Image's url must not match with 'self'. Image must be blocked.] - expected: TIMEOUT diff --git a/tests/wpt/meta/content-security-policy/resource-hints/prefetch-generate-directives.html.ini b/tests/wpt/meta/content-security-policy/resource-hints/prefetch-generate-directives.html.ini index 7843cf2984c..df10ea63fd6 100644 --- a/tests/wpt/meta/content-security-policy/resource-hints/prefetch-generate-directives.html.ini +++ b/tests/wpt/meta/content-security-policy/resource-hints/prefetch-generate-directives.html.ini @@ -1,19 +1,19 @@ [prefetch-generate-directives.html] expected: TIMEOUT [Test that script-src enabled with everything else disabled allows prefetching] - expected: FAIL + expected: TIMEOUT [Test that script-src enabled with default-src disabled allows prefetching] - expected: FAIL + expected: NOTRUN [Test that img-src enabled with everything else disabled allows prefetching] - expected: FAIL + expected: NOTRUN [Test that img-src enabled with default-src disabled allows prefetching] - expected: FAIL + expected: NOTRUN [Test that connect-src enabled with everything else disabled allows prefetching] - expected: TIMEOUT + expected: NOTRUN [Test that connect-src enabled with default-src disabled allows prefetching] expected: NOTRUN diff --git a/tests/wpt/meta/content-security-policy/script-src/script-src-report-only-policy-works-with-external-hash-policy.html.ini b/tests/wpt/meta/content-security-policy/script-src/script-src-report-only-policy-works-with-external-hash-policy.html.ini deleted file mode 100644 index 6ff412416ae..00000000000 --- a/tests/wpt/meta/content-security-policy/script-src/script-src-report-only-policy-works-with-external-hash-policy.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[script-src-report-only-policy-works-with-external-hash-policy.html] - [Should fire securitypolicyviolation event] - expected: FAIL - - [External script in a script tag with matching SRI hash should run.] - expected: FAIL diff --git a/tests/wpt/meta/content-security-policy/script-src/script-src-sri_hash.sub.html.ini b/tests/wpt/meta/content-security-policy/script-src/script-src-sri_hash.sub.html.ini index 7ce862f5a16..3324bf91bd7 100644 --- a/tests/wpt/meta/content-security-policy/script-src/script-src-sri_hash.sub.html.ini +++ b/tests/wpt/meta/content-security-policy/script-src/script-src-sri_hash.sub.html.ini @@ -2,8 +2,11 @@ [multiple matching integrity] expected: FAIL - [partially matching integrity] + [matching integrity] expected: FAIL - [External script in a script tag with matching SRI hash should run.] + [matching integrity (case-insensitive algorithm)] + expected: FAIL + + [matching plus unsupported integrity] expected: FAIL diff --git a/tests/wpt/meta/content-security-policy/script-src/script-src-strict_dynamic_discard_source_expressions.html.ini b/tests/wpt/meta/content-security-policy/script-src/script-src-strict_dynamic_discard_source_expressions.html.ini deleted file mode 100644 index 63cfa444854..00000000000 --- a/tests/wpt/meta/content-security-policy/script-src/script-src-strict_dynamic_discard_source_expressions.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[script-src-strict_dynamic_discard_source_expressions.html] - [Allowed scripts without a correct nonce are not permitted with `strict-dynamic`.] - expected: FAIL diff --git a/tests/wpt/meta/content-security-policy/script-src/script-src-strict_dynamic_double_policy_honor_source_expressions.sub.html.ini b/tests/wpt/meta/content-security-policy/script-src/script-src-strict_dynamic_double_policy_honor_source_expressions.sub.html.ini deleted file mode 100644 index c9d74462151..00000000000 --- a/tests/wpt/meta/content-security-policy/script-src/script-src-strict_dynamic_double_policy_honor_source_expressions.sub.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[script-src-strict_dynamic_double_policy_honor_source_expressions.sub.html] - [Non-allowed script injected via `appendChild` is not permitted with `strict-dynamic` + a nonce+allowed double policy.] - expected: FAIL diff --git a/tests/wpt/meta/content-security-policy/script-src/script-src-strict_dynamic_parser_inserted.html.ini b/tests/wpt/meta/content-security-policy/script-src/script-src-strict_dynamic_parser_inserted.html.ini index 44bc930f887..67a423f9b8a 100644 --- a/tests/wpt/meta/content-security-policy/script-src/script-src-strict_dynamic_parser_inserted.html.ini +++ b/tests/wpt/meta/content-security-policy/script-src/script-src-strict_dynamic_parser_inserted.html.ini @@ -1,29 +1,5 @@ [script-src-strict_dynamic_parser_inserted.html] expected: TIMEOUT - [Parser-inserted script via `document.write` without a correct nonce is not allowed with `strict-dynamic`.] - expected: FAIL - - [Parser-inserted script via `document.writeln` without a correct nonce is not allowed with `strict-dynamic`.] - expected: FAIL - - [Parser-inserted deferred script via `document.write` without a correct nonce is not allowed with `strict-dynamic`.] - expected: FAIL - - [Parser-inserted deferred script via `document.writeln` without a correct nonce is not allowed with `strict-dynamic`.] - expected: FAIL - - [Parser-inserted async script via `document.write` without a correct nonce is not allowed with `strict-dynamic`.] - expected: FAIL - - [Parser-inserted async script via `document.writeln` without a correct nonce is not allowed with `strict-dynamic`.] - expected: FAIL - - [Parser-inserted deferred async script via `document.write` without a correct nonce is not allowed with `strict-dynamic`.] - expected: FAIL - - [Parser-inserted deferred async script via `document.writeln` without a correct nonce is not allowed with `strict-dynamic`.] - expected: TIMEOUT - [Script injected via `innerHTML` is not allowed with `strict-dynamic`.] expected: TIMEOUT diff --git a/tests/wpt/meta/content-security-policy/securitypolicyviolation/upgrade-insecure-requests-reporting.https.html.ini b/tests/wpt/meta/content-security-policy/securitypolicyviolation/upgrade-insecure-requests-reporting.https.html.ini index da41ac13664..f84e31682d3 100644 --- a/tests/wpt/meta/content-security-policy/securitypolicyviolation/upgrade-insecure-requests-reporting.https.html.ini +++ b/tests/wpt/meta/content-security-policy/securitypolicyviolation/upgrade-insecure-requests-reporting.https.html.ini @@ -1,8 +1,5 @@ [upgrade-insecure-requests-reporting.https.html] expected: TIMEOUT - [Upgraded image is reported] - expected: TIMEOUT - [Upgraded iframe is reported] expected: TIMEOUT diff --git a/tests/wpt/meta/content-security-policy/tentative/require-sri-for/script-blocked-meta.https.html.ini b/tests/wpt/meta/content-security-policy/tentative/require-sri-for/script-blocked-meta.https.html.ini deleted file mode 100644 index 9e618be4547..00000000000 --- a/tests/wpt/meta/content-security-policy/tentative/require-sri-for/script-blocked-meta.https.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[script-blocked-meta.https.html] - expected: TIMEOUT - [Test that meta require-sri-for blocks scripts with no SRI] - expected: TIMEOUT diff --git a/tests/wpt/meta/content-security-policy/tentative/require-sri-for/script.https.html.ini b/tests/wpt/meta/content-security-policy/tentative/require-sri-for/script.https.html.ini deleted file mode 100644 index 6139cc9c782..00000000000 --- a/tests/wpt/meta/content-security-policy/tentative/require-sri-for/script.https.html.ini +++ /dev/null @@ -1,9 +0,0 @@ -[script.https.html] - [Ensure that a script without integrity did not run] - expected: FAIL - - [Ensure that a script with unknown integrity algorithm did not run] - expected: FAIL - - [Ensure that a no-cors script gets blocked] - expected: FAIL diff --git a/tests/wpt/meta/css/compositing/mix-blend-mode/mix-blend-mode-video-sibling.html.ini b/tests/wpt/meta/css/compositing/mix-blend-mode/mix-blend-mode-video-sibling.html.ini new file mode 100644 index 00000000000..55551102b45 --- /dev/null +++ b/tests/wpt/meta/css/compositing/mix-blend-mode/mix-blend-mode-video-sibling.html.ini @@ -0,0 +1,2 @@ +[mix-blend-mode-video-sibling.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-align/abspos/align-self-static-position-001.html.ini b/tests/wpt/meta/css/css-align/abspos/align-self-static-position-001.html.ini new file mode 100644 index 00000000000..6937145efa4 --- /dev/null +++ b/tests/wpt/meta/css/css-align/abspos/align-self-static-position-001.html.ini @@ -0,0 +1,2 @@ +[align-self-static-position-001.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-align/abspos/align-self-static-position-002.html.ini b/tests/wpt/meta/css/css-align/abspos/align-self-static-position-002.html.ini new file mode 100644 index 00000000000..99090212432 --- /dev/null +++ b/tests/wpt/meta/css/css-align/abspos/align-self-static-position-002.html.ini @@ -0,0 +1,2 @@ +[align-self-static-position-002.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-animations/parsing/keyframe-selectors.html.ini b/tests/wpt/meta/css/css-animations/parsing/keyframe-selectors.html.ini new file mode 100644 index 00000000000..c8555cba39d --- /dev/null +++ b/tests/wpt/meta/css/css-animations/parsing/keyframe-selectors.html.ini @@ -0,0 +1,6 @@ +[keyframe-selectors.html] + ['entry 10%' should be a valid keyframe selector] + expected: FAIL + + ['exit 60%' should be a valid keyframe selector] + expected: FAIL diff --git a/tests/wpt/meta/css/css-color/parsing/color-valid-relative-color.html.ini b/tests/wpt/meta/css/css-color/parsing/color-valid-relative-color.html.ini index 8bd889e74dd..0c307e06026 100644 --- a/tests/wpt/meta/css/css-color/parsing/color-valid-relative-color.html.ini +++ b/tests/wpt/meta/css/css-color/parsing/color-valid-relative-color.html.ini @@ -532,6 +532,3 @@ [e.style['color'\] = "rgb(from color(srgb 0.4 0.2 0.6) r g b)" should set the property value] expected: FAIL - - [e.style['color'\] = "oklch(from red calc(1 / l) c h)" should set the property value] - expected: FAIL diff --git a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-001.html.ini b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-001.html.ini index 7c470f39fc1..7c470f39fc1 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-001.html.ini +++ b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-001.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-002.html.ini b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-002.html.ini index 35e281db355..35e281db355 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-002.html.ini +++ b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-002.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-003.html.ini b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-003.html.ini index 065750a2637..065750a2637 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-003.html.ini +++ b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-003.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-004.html.ini b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-004.html.ini index 33a8389bbd0..33a8389bbd0 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-004.html.ini +++ b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-004.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-005.html.ini b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-005.html.ini index 44a99785f78..44a99785f78 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-005.html.ini +++ b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-005.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-006.html.ini b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-006.html.ini index eb292ead119..eb292ead119 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-006.html.ini +++ b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-006.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-007.html.ini b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-007.html.ini index 3886670391a..3886670391a 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-007.html.ini +++ b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-007.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-008.html.ini b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-008.html.ini index e93e69af6ff..e93e69af6ff 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-008.html.ini +++ b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-008.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-009.html.ini b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-009.html.ini index dad33643f33..dad33643f33 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-009.html.ini +++ b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-009.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-010.html.ini b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-010.html.ini index f3e2ddf5b5f..f3e2ddf5b5f 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-010.html.ini +++ b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-010.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-011.html.ini b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-011.html.ini index bb03468b7da..bb03468b7da 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-011.html.ini +++ b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-011.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-012.html.ini b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-012.html.ini index ad9928fe9aa..ad9928fe9aa 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-012.html.ini +++ b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-012.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-013.html.ini b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-013.html.ini index e30d5b33be0..e30d5b33be0 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-013.html.ini +++ b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-013.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-014.html.ini b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-014.html.ini index 324e614ac6e..324e614ac6e 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-014.html.ini +++ b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-014.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-015.html.ini b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-015.html.ini index 7abe6f62b5a..7abe6f62b5a 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-015.html.ini +++ b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-015.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-016.html.ini b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-016.html.ini index 8b59b4a6052..8b59b4a6052 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-016.html.ini +++ b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-016.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-019.html.ini b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-019.html.ini index 609484e7af3..609484e7af3 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/flex/flex-gap-decorations-019.html.ini +++ b/tests/wpt/meta/css/css-gaps/flex/flex-gap-decorations-019.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-001.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-001.html.ini index a4670ddf7a7..a4670ddf7a7 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-001.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-001.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-002.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-002.html.ini index 7a9e7840141..7a9e7840141 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-002.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-002.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-003.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-003.html.ini index 752b0258c9f..752b0258c9f 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-003.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-003.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-004.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-004.html.ini index 3c987480a94..3c987480a94 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-004.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-004.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-005.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-005.html.ini index 8ff84c0e286..8ff84c0e286 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-005.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-005.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-006.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-006.html.ini index c7b6f64746b..c7b6f64746b 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-006.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-006.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-007.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-007.html.ini index 78c144577df..78c144577df 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-007.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-007.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-008.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-008.html.ini index 0d707b027b1..0d707b027b1 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-008.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-008.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-009.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-009.html.ini index 47829d9a1f4..47829d9a1f4 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-009.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-009.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-010.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-010.html.ini index 3604969e91b..3604969e91b 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-010.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-010.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-011.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-011.html.ini index a19940da849..a19940da849 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-011.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-011.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-012.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-012.html.ini index 9d4c60da0ee..9d4c60da0ee 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-012.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-012.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-013.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-013.html.ini index e8909f26d4b..e8909f26d4b 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-013.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-013.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-014.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-014.html.ini index c6bb632ecd6..c6bb632ecd6 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-014.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-014.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-015.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-015.html.ini index 82c738da9f5..82c738da9f5 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-015.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-015.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-016.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-016.html.ini index d540ae8a7bd..d540ae8a7bd 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-016.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-016.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-017.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-017.html.ini index 4e579e8d253..4e579e8d253 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-017.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-017.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-018.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-018.html.ini index 66237ae937d..66237ae937d 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-018.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-018.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-019.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-019.html.ini index 87433c54943..87433c54943 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-019.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-019.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-022.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-022.html.ini index 230b2658f27..230b2658f27 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-022.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-022.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-023.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-023.html.ini index bdb184d6539..bdb184d6539 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-023.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-023.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-024.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-024.html.ini index af150778186..af150778186 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-024.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-024.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-025.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-025.html.ini index 022f9b1d57a..022f9b1d57a 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-025.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-025.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-026.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-026.html.ini index 9d9062851b2..9d9062851b2 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-026.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-026.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-027.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-027.html.ini index 2e6b48820cd..2e6b48820cd 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-027.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-027.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-028.html.ini b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-028.html.ini index b851b19644a..b851b19644a 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/grid/grid-gap-decorations-028.html.ini +++ b/tests/wpt/meta/css/css-gaps/grid/grid-gap-decorations-028.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/parsing/gap-decorations-bidirectional-shorthands.html.ini b/tests/wpt/meta/css/css-gaps/parsing/gap-decorations-bidirectional-shorthands.html.ini index 617ef78eb22..796cecfb56e 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/parsing/gap-decorations-bidirectional-shorthands.html.ini +++ b/tests/wpt/meta/css/css-gaps/parsing/gap-decorations-bidirectional-shorthands.html.ini @@ -4,3 +4,6 @@ [rule-width shorthand computed from longhand values] expected: FAIL + + [rule-style shorthand computed from longhand values] + expected: FAIL diff --git a/tests/wpt/meta/css/css-gaps/tentative/parsing/gap-decorations-color-computed.html.ini b/tests/wpt/meta/css/css-gaps/parsing/gap-decorations-color-computed.html.ini index 5d5ffad0d95..5d5ffad0d95 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/parsing/gap-decorations-color-computed.html.ini +++ b/tests/wpt/meta/css/css-gaps/parsing/gap-decorations-color-computed.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/parsing/gap-decorations-color-valid.html.ini b/tests/wpt/meta/css/css-gaps/parsing/gap-decorations-color-valid.html.ini index 8edf4d06199..8edf4d06199 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/parsing/gap-decorations-color-valid.html.ini +++ b/tests/wpt/meta/css/css-gaps/parsing/gap-decorations-color-valid.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/parsing/gap-decorations-style-computed.html.ini b/tests/wpt/meta/css/css-gaps/parsing/gap-decorations-style-computed.html.ini index b8662e42336..e0109319b93 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/parsing/gap-decorations-style-computed.html.ini +++ b/tests/wpt/meta/css/css-gaps/parsing/gap-decorations-style-computed.html.ini @@ -124,3 +124,66 @@ [Property row-rule-style value 'ridge repeat(auto, solid) ridge'] expected: FAIL + + [Property rule-style value 'none'] + expected: FAIL + + [Property rule-style value 'hidden'] + expected: FAIL + + [Property rule-style value 'dotted'] + expected: FAIL + + [Property rule-style value 'dashed'] + expected: FAIL + + [Property rule-style value 'solid'] + expected: FAIL + + [Property rule-style value 'double'] + expected: FAIL + + [Property rule-style value 'groove'] + expected: FAIL + + [Property rule-style value 'ridge'] + expected: FAIL + + [Property rule-style value 'inset'] + expected: FAIL + + [Property rule-style value 'dotted dashed solid'] + expected: FAIL + + [Property rule-style value 'repeat(10, double)'] + expected: FAIL + + [Property rule-style value 'repeat(3, groove) repeat(4, ridge)'] + expected: FAIL + + [Property rule-style value 'repeat(auto, solid)'] + expected: FAIL + + [Property rule-style value 'repeat(auto, dotted solid inset)'] + expected: FAIL + + [Property rule-style value 'repeat(4, none ridge solid) repeat(auto, hidden)'] + expected: FAIL + + [Property rule-style value 'inset repeat(auto, solid ridge) repeat(4, none groove hidden)'] + expected: FAIL + + [Property rule-style value 'repeat(calc(5 + 3), ridge)'] + expected: FAIL + + [Property rule-style value 'repeat(4, dotted double dashed) repeat(auto, solid) ridge'] + expected: FAIL + + [Property rule-style value 'repeat(4, dotted double dashed) repeat(auto, solid) repeat(4, none groove hidden)'] + expected: FAIL + + [Property rule-style value 'ridge repeat(auto, solid)'] + expected: FAIL + + [Property rule-style value 'ridge repeat(auto, solid) ridge'] + expected: FAIL diff --git a/tests/wpt/meta/css/css-gaps/parsing/gap-decorations-style-valid.html.ini b/tests/wpt/meta/css/css-gaps/parsing/gap-decorations-style-valid.html.ini new file mode 100644 index 00000000000..ca1d59405cf --- /dev/null +++ b/tests/wpt/meta/css/css-gaps/parsing/gap-decorations-style-valid.html.ini @@ -0,0 +1,135 @@ +[gap-decorations-style-valid.html] + [e.style['column-rule-style'\] = "repeat(4, dotted)" should set the property value] + expected: FAIL + + [e.style['column-rule-style'\] = "repeat(3, dashed double dotted)" should set the property value] + expected: FAIL + + [e.style['column-rule-style'\] = "repeat(1, dashed double dotted solid)" should set the property value] + expected: FAIL + + [e.style['column-rule-style'\] = "dashed" should set the property value] + expected: FAIL + + [e.style['column-rule-style'\] = "repeat(4, double)" should set the property value] + expected: FAIL + + [e.style['column-rule-style'\] = "dotted ridge" should set the property value] + expected: FAIL + + [e.style['column-rule-style'\] = "dotted dashed solid groove ridge" should set the property value] + expected: FAIL + + [e.style['column-rule-style'\] = "repeat(3, groove) repeat(4, ridge)" should set the property value] + expected: FAIL + + [e.style['column-rule-style'\] = "inset repeat(3, ridge) none repeat(4, groove hidden dashed)" should set the property value] + expected: FAIL + + [e.style['column-rule-style'\] = "repeat(4, none ridge solid) repeat(5, hidden) double" should set the property value] + expected: FAIL + + [e.style['column-rule-style'\] = "repeat(auto, solid)" should set the property value] + expected: FAIL + + [e.style['column-rule-style'\] = "repeat(auto, dotted solid inset)" should set the property value] + expected: FAIL + + [e.style['column-rule-style'\] = "repeat(auto, dashed groove) ridge" should set the property value] + expected: FAIL + + [e.style['column-rule-style'\] = "repeat(4, dotted double dashed) repeat(auto, solid)" should set the property value] + expected: FAIL + + [e.style['column-rule-style'\] = "inset repeat(auto, solid ridge) repeat(4, none groove hidden)" should set the property value] + expected: FAIL + + [e.style['row-rule-style'\] = "repeat(4, dotted)" should set the property value] + expected: FAIL + + [e.style['row-rule-style'\] = "repeat(3, dashed double dotted)" should set the property value] + expected: FAIL + + [e.style['row-rule-style'\] = "repeat(1, dashed double dotted solid)" should set the property value] + expected: FAIL + + [e.style['row-rule-style'\] = "dashed" should set the property value] + expected: FAIL + + [e.style['row-rule-style'\] = "repeat(4, double)" should set the property value] + expected: FAIL + + [e.style['row-rule-style'\] = "dotted ridge" should set the property value] + expected: FAIL + + [e.style['row-rule-style'\] = "dotted dashed solid groove ridge" should set the property value] + expected: FAIL + + [e.style['row-rule-style'\] = "repeat(3, groove) repeat(4, ridge)" should set the property value] + expected: FAIL + + [e.style['row-rule-style'\] = "inset repeat(3, ridge) none repeat(4, groove hidden dashed)" should set the property value] + expected: FAIL + + [e.style['row-rule-style'\] = "repeat(4, none ridge solid) repeat(5, hidden) double" should set the property value] + expected: FAIL + + [e.style['row-rule-style'\] = "repeat(auto, solid)" should set the property value] + expected: FAIL + + [e.style['row-rule-style'\] = "repeat(auto, dotted solid inset)" should set the property value] + expected: FAIL + + [e.style['row-rule-style'\] = "repeat(auto, dashed groove) ridge" should set the property value] + expected: FAIL + + [e.style['row-rule-style'\] = "repeat(4, dotted double dashed) repeat(auto, solid)" should set the property value] + expected: FAIL + + [e.style['row-rule-style'\] = "inset repeat(auto, solid ridge) repeat(4, none groove hidden)" should set the property value] + expected: FAIL + + [e.style['rule-style'\] = "repeat(4, dotted)" should set the property value] + expected: FAIL + + [e.style['rule-style'\] = "repeat(3, dashed double dotted)" should set the property value] + expected: FAIL + + [e.style['rule-style'\] = "repeat(1, dashed double dotted solid)" should set the property value] + expected: FAIL + + [e.style['rule-style'\] = "dashed" should set the property value] + expected: FAIL + + [e.style['rule-style'\] = "repeat(4, double)" should set the property value] + expected: FAIL + + [e.style['rule-style'\] = "dotted ridge" should set the property value] + expected: FAIL + + [e.style['rule-style'\] = "dotted dashed solid groove ridge" should set the property value] + expected: FAIL + + [e.style['rule-style'\] = "repeat(3, groove) repeat(4, ridge)" should set the property value] + expected: FAIL + + [e.style['rule-style'\] = "inset repeat(3, ridge) none repeat(4, groove hidden dashed)" should set the property value] + expected: FAIL + + [e.style['rule-style'\] = "repeat(4, none ridge solid) repeat(5, hidden) double" should set the property value] + expected: FAIL + + [e.style['rule-style'\] = "repeat(auto, solid)" should set the property value] + expected: FAIL + + [e.style['rule-style'\] = "repeat(auto, dotted solid inset)" should set the property value] + expected: FAIL + + [e.style['rule-style'\] = "repeat(auto, dashed groove) ridge" should set the property value] + expected: FAIL + + [e.style['rule-style'\] = "repeat(4, dotted double dashed) repeat(auto, solid)" should set the property value] + expected: FAIL + + [e.style['rule-style'\] = "inset repeat(auto, solid ridge) repeat(4, none groove hidden)" should set the property value] + expected: FAIL diff --git a/tests/wpt/meta/css/css-gaps/tentative/parsing/gap-decorations-width-computed.html.ini b/tests/wpt/meta/css/css-gaps/parsing/gap-decorations-width-computed.html.ini index 9a94074889e..9a94074889e 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/parsing/gap-decorations-width-computed.html.ini +++ b/tests/wpt/meta/css/css-gaps/parsing/gap-decorations-width-computed.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/parsing/gap-decorations-width-valid.html.ini b/tests/wpt/meta/css/css-gaps/parsing/gap-decorations-width-valid.html.ini index b70d55a67e8..b70d55a67e8 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/parsing/gap-decorations-width-valid.html.ini +++ b/tests/wpt/meta/css/css-gaps/parsing/gap-decorations-width-valid.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/parsing/rule-break-computed.html.ini b/tests/wpt/meta/css/css-gaps/parsing/rule-break-computed.html.ini index 25c64baa4b6..25c64baa4b6 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/parsing/rule-break-computed.html.ini +++ b/tests/wpt/meta/css/css-gaps/parsing/rule-break-computed.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/parsing/rule-break-valid.html.ini b/tests/wpt/meta/css/css-gaps/parsing/rule-break-valid.html.ini index 32d14a1ed9a..32d14a1ed9a 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/parsing/rule-break-valid.html.ini +++ b/tests/wpt/meta/css/css-gaps/parsing/rule-break-valid.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/parsing/rule-outset-computed.html.ini b/tests/wpt/meta/css/css-gaps/parsing/rule-outset-computed.html.ini index d21eda14d85..d21eda14d85 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/parsing/rule-outset-computed.html.ini +++ b/tests/wpt/meta/css/css-gaps/parsing/rule-outset-computed.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/parsing/rule-outset-valid.html.ini b/tests/wpt/meta/css/css-gaps/parsing/rule-outset-valid.html.ini index bd2ef152a30..bd2ef152a30 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/parsing/rule-outset-valid.html.ini +++ b/tests/wpt/meta/css/css-gaps/parsing/rule-outset-valid.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/parsing/rule-paint-order-computed.html.ini b/tests/wpt/meta/css/css-gaps/parsing/rule-paint-order-computed.html.ini index 26963ba3ba3..26963ba3ba3 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/parsing/rule-paint-order-computed.html.ini +++ b/tests/wpt/meta/css/css-gaps/parsing/rule-paint-order-computed.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/parsing/rule-paint-order-valid.html.ini b/tests/wpt/meta/css/css-gaps/parsing/rule-paint-order-valid.html.ini index 9582fa9e3e4..9582fa9e3e4 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/parsing/rule-paint-order-valid.html.ini +++ b/tests/wpt/meta/css/css-gaps/parsing/rule-paint-order-valid.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/serialization/gap-decorations-properties.html.ini b/tests/wpt/meta/css/css-gaps/serialization/gap-decorations-properties.html.ini index bc4c6eb5666..bc4c6eb5666 100644 --- a/tests/wpt/meta/css/css-gaps/tentative/serialization/gap-decorations-properties.html.ini +++ b/tests/wpt/meta/css/css-gaps/serialization/gap-decorations-properties.html.ini diff --git a/tests/wpt/meta/css/css-gaps/tentative/parsing/gap-decorations-style-valid.html.ini b/tests/wpt/meta/css/css-gaps/tentative/parsing/gap-decorations-style-valid.html.ini deleted file mode 100644 index 17f6bc639cf..00000000000 --- a/tests/wpt/meta/css/css-gaps/tentative/parsing/gap-decorations-style-valid.html.ini +++ /dev/null @@ -1,90 +0,0 @@ -[gap-decorations-style-valid.html] - [e.style['column-rule-style'\] = "repeat(4, dotted)" should set the property value] - expected: FAIL - - [e.style['column-rule-style'\] = "repeat(3, dashed double dotted)" should set the property value] - expected: FAIL - - [e.style['column-rule-style'\] = "repeat(1, dashed double dotted solid)" should set the property value] - expected: FAIL - - [e.style['column-rule-style'\] = "dashed" should set the property value] - expected: FAIL - - [e.style['column-rule-style'\] = "repeat(4, double)" should set the property value] - expected: FAIL - - [e.style['column-rule-style'\] = "dotted ridge" should set the property value] - expected: FAIL - - [e.style['column-rule-style'\] = "dotted dashed solid groove ridge" should set the property value] - expected: FAIL - - [e.style['column-rule-style'\] = "repeat(3, groove) repeat(4, ridge)" should set the property value] - expected: FAIL - - [e.style['column-rule-style'\] = "inset repeat(3, ridge) none repeat(4, groove hidden dashed)" should set the property value] - expected: FAIL - - [e.style['column-rule-style'\] = "repeat(4, none ridge solid) repeat(5, hidden) double" should set the property value] - expected: FAIL - - [e.style['column-rule-style'\] = "repeat(auto, solid)" should set the property value] - expected: FAIL - - [e.style['column-rule-style'\] = "repeat(auto, dotted solid inset)" should set the property value] - expected: FAIL - - [e.style['column-rule-style'\] = "repeat(auto, dashed groove) ridge" should set the property value] - expected: FAIL - - [e.style['column-rule-style'\] = "repeat(4, dotted double dashed) repeat(auto, solid)" should set the property value] - expected: FAIL - - [e.style['column-rule-style'\] = "inset repeat(auto, solid ridge) repeat(4, none groove hidden)" should set the property value] - expected: FAIL - - [e.style['row-rule-style'\] = "repeat(5, dashed)" should set the property value] - expected: FAIL - - [e.style['row-rule-style'\] = "repeat(4, dashed dotted)" should set the property value] - expected: FAIL - - [e.style['row-rule-style'\] = "repeat(1, dashed double dotted solid)" should set the property value] - expected: FAIL - - [e.style['row-rule-style'\] = "ridge" should set the property value] - expected: FAIL - - [e.style['row-rule-style'\] = "repeat(5, solid)" should set the property value] - expected: FAIL - - [e.style['row-rule-style'\] = "dotted" should set the property value] - expected: FAIL - - [e.style['row-rule-style'\] = "dotted dashed ridge" should set the property value] - expected: FAIL - - [e.style['row-rule-style'\] = "repeat(4, solid) repeat(5, double) repeat(6, dotted)" should set the property value] - expected: FAIL - - [e.style['row-rule-style'\] = "ridge repeat(4, solid) double repeat(6, dotted)" should set the property value] - expected: FAIL - - [e.style['row-rule-style'\] = "repeat(4, none ridge solid) solid repeat(5, hidden) double" should set the property value] - expected: FAIL - - [e.style['row-rule-style'\] = "repeat(auto, dotted)" should set the property value] - expected: FAIL - - [e.style['row-rule-style'\] = "repeat(auto, dashed solid inset double)" should set the property value] - expected: FAIL - - [e.style['row-rule-style'\] = "repeat(auto, dashed groove) repeat(4, solid) double" should set the property value] - expected: FAIL - - [e.style['row-rule-style'\] = "repeat(4, dotted double dashed) repeat(auto, solid) repeat(4, none groove hidden)" should set the property value] - expected: FAIL - - [e.style['row-rule-style'\] = "dotted repeat(auto, solid ridge) solid" should set the property value] - expected: FAIL diff --git a/tests/wpt/meta/css/css-grid/alignment/grid-content-alignment-with-abspos-001.html.ini b/tests/wpt/meta/css/css-grid/alignment/grid-content-alignment-with-abspos-001.html.ini deleted file mode 100644 index efff2a2620a..00000000000 --- a/tests/wpt/meta/css/css-grid/alignment/grid-content-alignment-with-abspos-001.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[grid-content-alignment-with-abspos-001.html] - [.grid 1] - expected: FAIL diff --git a/tests/wpt/meta/css/css-grid/subgrid/line-names-014.html.ini b/tests/wpt/meta/css/css-grid/subgrid/line-names-014.html.ini new file mode 100644 index 00000000000..4c1cfd6bc3c --- /dev/null +++ b/tests/wpt/meta/css/css-grid/subgrid/line-names-014.html.ini @@ -0,0 +1,2 @@ +[line-names-014.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-overflow/line-clamp/block-ellipsis-022.html.ini b/tests/wpt/meta/css/css-overflow/line-clamp/block-ellipsis-022.html.ini new file mode 100644 index 00000000000..4bbe85e1042 --- /dev/null +++ b/tests/wpt/meta/css/css-overflow/line-clamp/block-ellipsis-022.html.ini @@ -0,0 +1,2 @@ +[block-ellipsis-022.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-overflow/line-clamp/line-clamp-auto-010.tentative.html.ini b/tests/wpt/meta/css/css-overflow/line-clamp/line-clamp-auto-010.tentative.html.ini new file mode 100644 index 00000000000..1be7dc44f47 --- /dev/null +++ b/tests/wpt/meta/css/css-overflow/line-clamp/line-clamp-auto-010.tentative.html.ini @@ -0,0 +1,2 @@ +[line-clamp-auto-010.tentative.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-overflow/line-clamp/webkit-line-clamp-037.html.ini b/tests/wpt/meta/css/css-overflow/line-clamp/webkit-line-clamp-037.html.ini new file mode 100644 index 00000000000..ea4c9b1cda3 --- /dev/null +++ b/tests/wpt/meta/css/css-overflow/line-clamp/webkit-line-clamp-037.html.ini @@ -0,0 +1,2 @@ +[webkit-line-clamp-037.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-sizing/dynamic-available-size-iframe.html.ini b/tests/wpt/meta/css/css-sizing/dynamic-available-size-iframe.html.ini new file mode 100644 index 00000000000..35256741d38 --- /dev/null +++ b/tests/wpt/meta/css/css-sizing/dynamic-available-size-iframe.html.ini @@ -0,0 +1,2 @@ +[dynamic-available-size-iframe.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-values/calc-size/animation/calc-size-interpolation-expansion.html.ini b/tests/wpt/meta/css/css-values/calc-size/animation/calc-size-interpolation-expansion.html.ini index dfa15d5b1d3..a74533ee690 100644 --- a/tests/wpt/meta/css/css-values/calc-size/animation/calc-size-interpolation-expansion.html.ini +++ b/tests/wpt/meta/css/css-values/calc-size/animation/calc-size-interpolation-expansion.html.ini @@ -52,3 +52,6 @@ [value at progress 0.75 in animation of "width" from "calc-size(80px, size)" to "calc-size(calc-size(10px, (2 * size)), size + 20px)"] expected: FAIL + + [value at progress 0.75 in animation of "width" from "calc-size(fit-content, 20px)" to "calc-size(calc-size(fit-content, 3 * size + 10px), min(size + 20px, 2 * size - 30px) + ((2 * size) + 80px))"] + expected: FAIL diff --git a/tests/wpt/meta/css/css-values/exp-log-compute.html.ini b/tests/wpt/meta/css/css-values/exp-log-compute.html.ini index 2c175897064..edaecc48548 100644 --- a/tests/wpt/meta/css/css-values/exp-log-compute.html.ini +++ b/tests/wpt/meta/css/css-values/exp-log-compute.html.ini @@ -4,3 +4,6 @@ [calc(e - exp(sibling-index())) should be used-value-equivalent to 0] expected: FAIL + + [calc(log(exp(2 * sibling-index()))) should be used-value-equivalent to 2] + expected: FAIL diff --git a/tests/wpt/meta/css/cssom-view/getBoundingClientRect-shy.html.ini b/tests/wpt/meta/css/cssom-view/getBoundingClientRect-shy.html.ini index 536f7aaacff..b8b7564f112 100644 --- a/tests/wpt/meta/css/cssom-view/getBoundingClientRect-shy.html.ini +++ b/tests/wpt/meta/css/cssom-view/getBoundingClientRect-shy.html.ini @@ -29,8 +29,5 @@ [Rendered soft-hyphen should have a width.] expected: FAIL - [Collapsed soft-hyphen in a span should be 0 width.] - expected: FAIL - [Rendered soft-hyphen in a span should have a width.] expected: FAIL diff --git a/tests/wpt/meta/css/cssom-view/offsetParent-block-in-inline.html.ini b/tests/wpt/meta/css/cssom-view/offsetParent-block-in-inline.html.ini deleted file mode 100644 index aa1109f1600..00000000000 --- a/tests/wpt/meta/css/cssom-view/offsetParent-block-in-inline.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[offsetParent-block-in-inline.html] - [offsetParent-block-in-inline] - expected: FAIL diff --git a/tests/wpt/meta/css/filter-effects/backdrop-filter-edge-clipping-2.html.ini b/tests/wpt/meta/css/filter-effects/backdrop-filter-edge-clipping-2.html.ini new file mode 100644 index 00000000000..4a08b41acc2 --- /dev/null +++ b/tests/wpt/meta/css/filter-effects/backdrop-filter-edge-clipping-2.html.ini @@ -0,0 +1,2 @@ +[backdrop-filter-edge-clipping-2.html] + expected: FAIL diff --git a/tests/wpt/meta/css/filter-effects/backdrop-filter-edge-mirror.html.ini b/tests/wpt/meta/css/filter-effects/backdrop-filter-edge-mirror.html.ini new file mode 100644 index 00000000000..51318cbb1d2 --- /dev/null +++ b/tests/wpt/meta/css/filter-effects/backdrop-filter-edge-mirror.html.ini @@ -0,0 +1,2 @@ +[backdrop-filter-edge-mirror.html] + expected: FAIL diff --git a/tests/wpt/meta/css/filter-effects/backdrop-filter-edge-pixels-2.html.ini b/tests/wpt/meta/css/filter-effects/backdrop-filter-edge-pixels-2.html.ini new file mode 100644 index 00000000000..19d53f587ad --- /dev/null +++ b/tests/wpt/meta/css/filter-effects/backdrop-filter-edge-pixels-2.html.ini @@ -0,0 +1,2 @@ +[backdrop-filter-edge-pixels-2.html] + expected: FAIL diff --git a/tests/wpt/meta/css/selectors/popover-open-with-has-sibling-selector.html.ini b/tests/wpt/meta/css/selectors/popover-open-with-has-sibling-selector.html.ini new file mode 100644 index 00000000000..0e3b2c9605c --- /dev/null +++ b/tests/wpt/meta/css/selectors/popover-open-with-has-sibling-selector.html.ini @@ -0,0 +1,2 @@ +[popover-open-with-has-sibling-selector.html] + expected: TIMEOUT diff --git a/tests/wpt/meta/custom-elements/registries/CustomElementRegistry-initialize.html.ini b/tests/wpt/meta/custom-elements/registries/CustomElementRegistry-initialize.html.ini index f15268ae654..6d81603246a 100644 --- a/tests/wpt/meta/custom-elements/registries/CustomElementRegistry-initialize.html.ini +++ b/tests/wpt/meta/custom-elements/registries/CustomElementRegistry-initialize.html.ini @@ -19,3 +19,9 @@ [initialize is no-op on a subtree with a non-null registry] expected: FAIL + + [initialize works on Document] + expected: FAIL + + [initialize works on DocumentFragment] + expected: FAIL diff --git a/tests/wpt/meta/custom-elements/scoped-registry-initialize.html.ini b/tests/wpt/meta/custom-elements/scoped-registry-initialize.html.ini new file mode 100644 index 00000000000..6d287fe1563 --- /dev/null +++ b/tests/wpt/meta/custom-elements/scoped-registry-initialize.html.ini @@ -0,0 +1,2 @@ +[scoped-registry-initialize.html] + expected: ERROR diff --git a/tests/wpt/meta/dom/observable/tentative/observable-from.any.js.ini b/tests/wpt/meta/dom/observable/tentative/observable-from.any.js.ini index 2d7096ed7cd..b5247a9905f 100644 --- a/tests/wpt/meta/dom/observable/tentative/observable-from.any.js.ini +++ b/tests/wpt/meta/dom/observable/tentative/observable-from.any.js.ini @@ -152,6 +152,9 @@ [from(): Sync iterable multiple in-flight subscriptions] expected: FAIL + [No error is reported when aborting a subscription to a sync iterator that has no `return()` implementation] + expected: FAIL + [observable-from.any.html] [from(): Observable.from() is a function] @@ -306,3 +309,6 @@ [from(): Sync iterable multiple in-flight subscriptions] expected: FAIL + + [No error is reported when aborting a subscription to a sync iterator that has no `return()` implementation] + expected: FAIL diff --git a/tests/wpt/meta/fetch/http-cache/no-vary-search.tentative.any.js.ini b/tests/wpt/meta/fetch/http-cache/no-vary-search.tentative.any.js.ini index 48ef0549bc3..c72fab80f3d 100644 --- a/tests/wpt/meta/fetch/http-cache/no-vary-search.tentative.any.js.ini +++ b/tests/wpt/meta/fetch/http-cache/no-vary-search.tentative.any.js.ini @@ -2,6 +2,9 @@ [When params is set to true, URL differs only by their parameters (other than `dispatch` and `uuid`) should not be cached as different entries.] expected: FAIL + [When key-order is set , URLs should be compared in an order-insensitive way. Matched cases:] + expected: FAIL + [no-vary-search.tentative.any.sharedworker.html] expected: ERROR @@ -10,6 +13,9 @@ [When params is set to true, URL differs only by their parameters (other than `dispatch` and `uuid`) should not be cached as different entries.] expected: FAIL + [When key-order is set , URLs should be compared in an order-insensitive way. Matched cases:] + expected: FAIL + [no-vary-search.tentative.any.serviceworker.html] expected: ERROR diff --git a/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html.ini b/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html.ini deleted file mode 100644 index 3e07e6b7d1f..00000000000 --- a/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[empty-iframe-load-event.html] - [Check execution order from nested timeout] - expected: FAIL - - [Check execution order on load handler] - expected: FAIL diff --git a/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/refresh/same-document-refresh.html.ini b/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/refresh/same-document-refresh.html.ini deleted file mode 100644 index d55bacae6b4..00000000000 --- a/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/refresh/same-document-refresh.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[same-document-refresh.html] - [Same-Document Referrer from Refresh] - expected: FAIL diff --git a/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini b/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini deleted file mode 100644 index 60a4fa51f8a..00000000000 --- a/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[a-click.html] - [aElement.click() before the load event must NOT replace] - expected: FAIL diff --git a/tests/wpt/meta/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-nav-cross-document-nav.html.ini b/tests/wpt/meta/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-nav-cross-document-nav.html.ini deleted file mode 100644 index 407f9d191c7..00000000000 --- a/tests/wpt/meta/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-nav-cross-document-nav.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[cross-document-nav-cross-document-nav.html] - [cross-document navigation then cross-document navigation] - expected: FAIL diff --git a/tests/wpt/meta/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/meta/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini deleted file mode 100644 index 7a5fcb79165..00000000000 --- a/tests/wpt/meta/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[traverse_the_history_5.html] - [Multiple history traversals, last would be aborted] - expected: FAIL diff --git a/tests/wpt/meta/html/browsers/history/the-location-interface/location_hash_set_empty_string.html.ini b/tests/wpt/meta/html/browsers/history/the-location-interface/location_hash_set_empty_string.html.ini new file mode 100644 index 00000000000..0f38e817c9f --- /dev/null +++ b/tests/wpt/meta/html/browsers/history/the-location-interface/location_hash_set_empty_string.html.ini @@ -0,0 +1,3 @@ +[location_hash_set_empty_string.html] + [window.location.hash is an empty string] + expected: FAIL diff --git a/tests/wpt/meta/html/canvas/element/canvas-host/2d.canvas.host.size.large.html.ini b/tests/wpt/meta/html/canvas/element/canvas-host/2d.canvas.host.size.large.html.ini new file mode 100644 index 00000000000..f6455f9bd76 --- /dev/null +++ b/tests/wpt/meta/html/canvas/element/canvas-host/2d.canvas.host.size.large.html.ini @@ -0,0 +1,2 @@ +[2d.canvas.host.size.large.html] + expected: CRASH diff --git a/tests/wpt/meta/html/canvas/offscreen/canvas-host/2d.canvas.host.size.large.worker.js.ini b/tests/wpt/meta/html/canvas/offscreen/canvas-host/2d.canvas.host.size.large.worker.js.ini new file mode 100644 index 00000000000..d571dfa4cf9 --- /dev/null +++ b/tests/wpt/meta/html/canvas/offscreen/canvas-host/2d.canvas.host.size.large.worker.js.ini @@ -0,0 +1,2 @@ +[2d.canvas.host.size.large.worker.html] + expected: CRASH diff --git a/tests/wpt/meta/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini b/tests/wpt/meta/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini index d4de58a2275..ddd65fdcec8 100644 --- a/tests/wpt/meta/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini +++ b/tests/wpt/meta/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini @@ -1,19 +1,15 @@ [supported-elements.html] - expected: TIMEOUT [Contenteditable element should support autofocus] expected: FAIL [Host element with delegatesFocus including no focusable descendants should be skipped] - expected: NOTRUN + expected: FAIL [Element with tabindex should support autofocus] expected: FAIL [Area element should support autofocus] - expected: NOTRUN + expected: FAIL [Host element with delegatesFocus should support autofocus] - expected: NOTRUN - - [Non-HTMLElement should not support autofocus] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/meta/html/semantics/embedded-content/media-elements/seeking/seek-to-negative-time.htm.ini b/tests/wpt/meta/html/semantics/embedded-content/media-elements/seeking/seek-to-negative-time.htm.ini index 3a23570ca3a..e0bef4ec8c6 100644 --- a/tests/wpt/meta/html/semantics/embedded-content/media-elements/seeking/seek-to-negative-time.htm.ini +++ b/tests/wpt/meta/html/semantics/embedded-content/media-elements/seeking/seek-to-negative-time.htm.ini @@ -1,4 +1,3 @@ [seek-to-negative-time.htm] [seek to negative time] expected: FAIL - diff --git a/tests/wpt/meta/html/semantics/the-button-element/command-and-commandfor/on-popover-behavior.html.ini b/tests/wpt/meta/html/semantics/the-button-element/command-and-commandfor/on-popover-behavior.html.ini index 4574b231ccd..050621e0a32 100644 --- a/tests/wpt/meta/html/semantics/the-button-element/command-and-commandfor/on-popover-behavior.html.ini +++ b/tests/wpt/meta/html/semantics/the-button-element/command-and-commandfor/on-popover-behavior.html.ini @@ -64,3 +64,6 @@ [invoking (as show-popover) open popover is noop] expected: FAIL + + [invoking (as show-popover) should create an implicit anchor reference for anchor positioning.] + expected: FAIL diff --git a/tests/wpt/meta/html/webappapis/scripting/event-loops/new-scroll-event-dispatched-at-next-updating-rendering-time.html.ini b/tests/wpt/meta/html/webappapis/scripting/event-loops/new-scroll-event-dispatched-at-next-updating-rendering-time.html.ini new file mode 100644 index 00000000000..dcc8d0052c0 --- /dev/null +++ b/tests/wpt/meta/html/webappapis/scripting/event-loops/new-scroll-event-dispatched-at-next-updating-rendering-time.html.ini @@ -0,0 +1,4 @@ +[new-scroll-event-dispatched-at-next-updating-rendering-time.html] + expected: TIMEOUT + [new-scroll-event-dispatched-at-next-updating-rendering-time] + expected: TIMEOUT diff --git a/tests/wpt/meta/resize-observer/eventloop.html.ini b/tests/wpt/meta/resize-observer/eventloop.html.ini deleted file mode 100644 index 6ed748ec951..00000000000 --- a/tests/wpt/meta/resize-observer/eventloop.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[eventloop.html] - [test0: multiple notifications inside same event loop] - expected: FAIL diff --git a/tests/wpt/meta/shadow-dom/offsetParent-across-shadow-boundaries.html.ini b/tests/wpt/meta/shadow-dom/offsetParent-across-shadow-boundaries.html.ini deleted file mode 100644 index afd8ee2cf06..00000000000 --- a/tests/wpt/meta/shadow-dom/offsetParent-across-shadow-boundaries.html.ini +++ /dev/null @@ -1,24 +0,0 @@ -[offsetParent-across-shadow-boundaries.html] - [offsetParent must skip offset parents of an element when the context object is assigned to a slot in a shadow tree of open mode] - expected: FAIL - - [offsetParent must skip offset parents of an element when the context object is assigned to a slot in a shadow tree of closed mode] - expected: FAIL - - [offsetParent must skip multiple offset parents of an element when the context object is assigned to a slot in a shadow tree of open mode] - expected: FAIL - - [offsetParent must skip multiple offset parents of an element when the context object is assigned to a slot in a shadow tree of closed mode] - expected: FAIL - - [offsetParent must skip offset parents of an element when the context object is assigned to a slot in nested shadow trees of open mode] - expected: FAIL - - [offsetParent must skip offset parents of an element when the context object is assigned to a slot in nested shadow trees of closed mode] - expected: FAIL - - [offsetParent must find the first offset parent which is a shadow-including ancestor of the context object even some shadow tree of open mode did not have any offset parent] - expected: FAIL - - [offsetParent must find the first offset parent which is a shadow-including ancestor of the context object even some shadow tree of closed mode did not have any offset parent] - expected: FAIL diff --git a/tests/wpt/meta/shadow-dom/offsetTop-offsetLeft-across-shadow-boundaries.html.ini b/tests/wpt/meta/shadow-dom/offsetTop-offsetLeft-across-shadow-boundaries.html.ini index 88f45f3b6a7..5ebeb149de3 100644 --- a/tests/wpt/meta/shadow-dom/offsetTop-offsetLeft-across-shadow-boundaries.html.ini +++ b/tests/wpt/meta/shadow-dom/offsetTop-offsetLeft-across-shadow-boundaries.html.ini @@ -4,6 +4,3 @@ [Verifies that HTMLElement.offsetTop accounts for shadow boundaries when nested in multiple shadow roots.] expected: FAIL - - [Verifies that HTMLElement.offsetLeft accounts for shadow boundaries.] - expected: FAIL diff --git a/tests/wpt/meta/streams/readable-streams/crashtests/garbage-collection.any.js.ini b/tests/wpt/meta/streams/readable-streams/crashtests/garbage-collection.any.js.ini new file mode 100644 index 00000000000..0c16120d4d8 --- /dev/null +++ b/tests/wpt/meta/streams/readable-streams/crashtests/garbage-collection.any.js.ini @@ -0,0 +1,9 @@ +[garbage-collection.any.sharedworker.html] + expected: ERROR + +[garbage-collection.any.worker.html] + +[garbage-collection.any.html] + +[garbage-collection.any.serviceworker.html] + expected: ERROR diff --git a/tests/wpt/meta/trusted-types/should-trusted-type-policy-creation-be-blocked-by-csp-001.html.ini b/tests/wpt/meta/trusted-types/should-trusted-type-policy-creation-be-blocked-by-csp-001.html.ini deleted file mode 100644 index 097af84d4ee..00000000000 --- a/tests/wpt/meta/trusted-types/should-trusted-type-policy-creation-be-blocked-by-csp-001.html.ini +++ /dev/null @@ -1,30 +0,0 @@ -[should-trusted-type-policy-creation-be-blocked-by-csp-001.html] - [single report-only policy with directive "trusted-type tt-policy-name"] - expected: FAIL - - [single report-only policy with directive "trusted-type *"] - expected: FAIL - - [single report-only policy with directive "trusted-type 'none'"] - expected: FAIL - - [single report-only policy with directive "trusted-type 'allow-duplicates'"] - expected: FAIL - - [single report-only policy with directive "trusted-type tt-policy-name 'allow-duplicates'"] - expected: FAIL - - [single report-only policy with directive "trusted-type 'none' 'allow-duplicates'"] - expected: FAIL - - [single report-only policy with directive "trusted-type 'none' tt-policy-name"] - expected: FAIL - - [single report-only policy with directive "trusted-type 'none' *"] - expected: FAIL - - [single report-only policy with directive "trusted-type tt-policy-name *"] - expected: FAIL - - [single report-only policy with directive "trusted-type tt-policy-name1 tt-policy-name2 tt-policy-name3"] - expected: FAIL diff --git a/tests/wpt/meta/trusted-types/should-trusted-type-policy-creation-be-blocked-by-csp-002.html.ini b/tests/wpt/meta/trusted-types/should-trusted-type-policy-creation-be-blocked-by-csp-002.html.ini index b42c980eebc..65aaf704101 100644 --- a/tests/wpt/meta/trusted-types/should-trusted-type-policy-creation-be-blocked-by-csp-002.html.ini +++ b/tests/wpt/meta/trusted-types/should-trusted-type-policy-creation-be-blocked-by-csp-002.html.ini @@ -1,8 +1,5 @@ [should-trusted-type-policy-creation-be-blocked-by-csp-002.html] expected: TIMEOUT - [invalid tt-policy-name name "policy name"] - expected: FAIL - [invalid tt-policy-name name "policy*name"] expected: FAIL diff --git a/tests/wpt/meta/trusted-types/should-trusted-type-policy-creation-be-blocked-by-csp-003.html.ini b/tests/wpt/meta/trusted-types/should-trusted-type-policy-creation-be-blocked-by-csp-003.html.ini deleted file mode 100644 index d18359a0c91..00000000000 --- a/tests/wpt/meta/trusted-types/should-trusted-type-policy-creation-be-blocked-by-csp-003.html.ini +++ /dev/null @@ -1,15 +0,0 @@ -[should-trusted-type-policy-creation-be-blocked-by-csp-003.html] - [Multiple report-only trusted-types directives.] - expected: FAIL - - [One violated report-only trusted-types directive followed by multiple enforce directives.] - expected: FAIL - - [One violated enforce trusted-types directive followed by multiple report-only directives.] - expected: FAIL - - [Mixing enforce and report-only policies with trusted-types directives] - expected: FAIL - - [Mixing enforce and report-only policies with trusted-types directives (duplicate policy)] - expected: FAIL diff --git a/tests/wpt/meta/trusted-types/should-trusted-type-policy-creation-be-blocked-by-csp-004-worker.html.ini b/tests/wpt/meta/trusted-types/should-trusted-type-policy-creation-be-blocked-by-csp-004-worker.html.ini deleted file mode 100644 index e9ae8caa720..00000000000 --- a/tests/wpt/meta/trusted-types/should-trusted-type-policy-creation-be-blocked-by-csp-004-worker.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[should-trusted-type-policy-creation-be-blocked-by-csp-004-worker.html] - [Exception and violations for CSP with multiple enforce and report-only policies.] - expected: FAIL - - [Location of trusted-types violations.] - expected: FAIL diff --git a/tests/wpt/meta/trusted-types/should-trusted-type-policy-creation-be-blocked-by-csp-005.html.ini b/tests/wpt/meta/trusted-types/should-trusted-type-policy-creation-be-blocked-by-csp-005.html.ini deleted file mode 100644 index 7a8b7095515..00000000000 --- a/tests/wpt/meta/trusted-types/should-trusted-type-policy-creation-be-blocked-by-csp-005.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[should-trusted-type-policy-creation-be-blocked-by-csp-005.html] - [Location of trusted-types violations.] - expected: FAIL diff --git a/tests/wpt/meta/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.html.ini b/tests/wpt/meta/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.html.ini index 927b135f628..d3440d323c2 100644 --- a/tests/wpt/meta/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.html.ini +++ b/tests/wpt/meta/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.html.ini @@ -4,6 +4,3 @@ [Trusted Type violation report: evaluating a Trusted Script violates script-src.] expected: FAIL - - [Trusted Type violation report: script-src restrictions apply after the default policy runs.] - expected: FAIL diff --git a/tests/wpt/meta/trusted-types/trusted-types-reporting.html.ini b/tests/wpt/meta/trusted-types/trusted-types-reporting.html.ini index 8347bf66f28..27c9a258d53 100644 --- a/tests/wpt/meta/trusted-types/trusted-types-reporting.html.ini +++ b/tests/wpt/meta/trusted-types/trusted-types-reporting.html.ini @@ -1,7 +1,4 @@ [trusted-types-reporting.html] - [Trusted Type violation report: creating a forbidden policy.] - expected: FAIL - [Trusted Type violation report: creating a report-only-forbidden policy.] expected: FAIL diff --git a/tests/wpt/meta/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/meta/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini index 86e64b24eff..a8e069b27e7 100644 --- a/tests/wpt/meta/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini +++ b/tests/wpt/meta/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini @@ -751,3 +751,12 @@ [X SNR (-204.5968680501149 dB) is not greater than or equal to 65.737. Got -204.5968680501149.] expected: FAIL + + [X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[14680\]\t6.4559834464256000e+14\t2.0512369275093079e-1\t6.4559834464255975e+14\t3.1473611652773360e+15\t3.8985999999999999e-3\n\t[14681\]\t1.1480505578219891e-2\t1.4340442419052124e-1\t1.3192391861230135e-1\t9.1994315626575540e-1\t3.8985999999999999e-3\n\tMax AbsError of 6.4559834464255975e+14 at index of 14680.\n\tMax RelError of 3.1473611652773360e+15 at index of 14680.\n] + expected: FAIL + + [X SNR (-252.7651622190615 dB) is not greater than or equal to 65.737. Got -252.7651622190615.] + expected: FAIL + + [X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[14680\]\t1.7249685451109781e-36\t2.0512369275093079e-1\t2.0512369275093079e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[14681\]\t1.1480505578219891e-2\t1.4340442419052124e-1\t1.3192391861230135e-1\t9.1994315626575540e-1\t3.8985999999999999e-3\n\tMax AbsError of 2.0512369275093079e-1 at index of 14680.\n\tMax RelError of 1.0000000000000000e+0 at index of 14680.\n] + expected: FAIL diff --git a/tests/wpt/meta/webxr/depth-sensing/cpu/depth_sensing_cpu_inactiveFrame.https.html.ini b/tests/wpt/meta/webxr/depth-sensing/cpu/depth_sensing_cpu_inactiveFrame.https.html.ini index bd9620affc4..7a87b24f90b 100644 --- a/tests/wpt/meta/webxr/depth-sensing/cpu/depth_sensing_cpu_inactiveFrame.https.html.ini +++ b/tests/wpt/meta/webxr/depth-sensing/cpu/depth_sensing_cpu_inactiveFrame.https.html.ini @@ -5,3 +5,9 @@ [Ensures getDepthInformation() throws when not run in an active frame, `cpu-optimized` - webgl2] expected: FAIL + + [Ensures appropriate depth methods and attributes throw when not run in an active frame, `cpu-optimized` - webgl] + expected: FAIL + + [Ensures appropriate depth methods and attributes throw when not run in an active frame, `cpu-optimized` - webgl2] + expected: FAIL diff --git a/tests/wpt/meta/webxr/depth-sensing/cpu/depth_sensing_cpu_pauseResume.https.html.ini b/tests/wpt/meta/webxr/depth-sensing/cpu/depth_sensing_cpu_pauseResume.https.html.ini new file mode 100644 index 00000000000..ca6a05243bf --- /dev/null +++ b/tests/wpt/meta/webxr/depth-sensing/cpu/depth_sensing_cpu_pauseResume.https.html.ini @@ -0,0 +1,7 @@ +[depth_sensing_cpu_pauseResume.https.html] + expected: ERROR + [Ensures appropriate data availability with (pause|resume)DepthSensing, `cpu-optimized` - webgl] + expected: FAIL + + [Ensures appropriate data availability with (pause|resume)DepthSensing, `cpu-optimized` - webgl2] + expected: FAIL diff --git a/tests/wpt/meta/webxr/depth-sensing/gpu/depth_sensing_gpu_pauseResume.https.html.ini b/tests/wpt/meta/webxr/depth-sensing/gpu/depth_sensing_gpu_pauseResume.https.html.ini new file mode 100644 index 00000000000..1a75367f8bb --- /dev/null +++ b/tests/wpt/meta/webxr/depth-sensing/gpu/depth_sensing_gpu_pauseResume.https.html.ini @@ -0,0 +1,7 @@ +[depth_sensing_gpu_pauseResume.https.html] + expected: ERROR + [Ensures appropriate data availability with (pause|resume)DepthSensing, `gpu-optimized` - webgl] + expected: FAIL + + [Ensures appropriate data availability with (pause|resume)DepthSensing, `gpu-optimized` - webgl2] + expected: FAIL diff --git a/tests/wpt/meta/workers/WorkerNavigator_userAgentData.https.tentative.html.ini b/tests/wpt/meta/workers/WorkerNavigator_userAgentData.https.tentative.html.ini new file mode 100644 index 00000000000..76300218f64 --- /dev/null +++ b/tests/wpt/meta/workers/WorkerNavigator_userAgentData.https.tentative.html.ini @@ -0,0 +1,3 @@ +[WorkerNavigator_userAgentData.https.tentative.html] + [Platform version and wow64-ness on Linux should contain fixed values] + expected: FAIL diff --git a/tests/wpt/meta/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/meta/workers/constructors/Worker/Worker-constructor.html.ini deleted file mode 100644 index 80f9a4f15b8..00000000000 --- a/tests/wpt/meta/workers/constructors/Worker/Worker-constructor.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[Worker-constructor.html] - expected: ERROR diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index 2cf09181acc..d3a939eab57 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -9,6 +9,15 @@ {} ] ], + "canvas": { + "toblob-then-change-size-crash.html": [ + "355474b4832dde985a73baad925702bbb0cbc73f", + [ + null, + {} + ] + ] + }, "datatransferitem-crash.html": [ "d11355ab38c1e99e0ba3e10d7dfed18bf26af60b", [ @@ -43,6 +52,13 @@ null, {} ] + ], + "window_resizeTo_not_permitted-crash.html": [ + "7b6a67ff81436a91048bdb627f303f7fab2762f7", + [ + null, + {} + ] ] } }, @@ -14321,7 +14337,7 @@ ] ], "window_resizeTo.html": [ - "87d60498e80bcd01b5790feb3f9e104410cb6e1b", + "3f6c5a610d52b64bf4457d478b929e95d79e9ab8", [ null, {} diff --git a/tests/wpt/mozilla/tests/mozilla/canvas/toblob-then-change-size-crash.html b/tests/wpt/mozilla/tests/mozilla/canvas/toblob-then-change-size-crash.html new file mode 100644 index 00000000000..355474b4832 --- /dev/null +++ b/tests/wpt/mozilla/tests/mozilla/canvas/toblob-then-change-size-crash.html @@ -0,0 +1,8 @@ +<!DOCTYPE html> +<!-- https://github.com/servo/servo/issues/36702 --> +<canvas id="canvas"></canvas> +<script> + canvas.toBlob(() => {}); + canvas.width = 0; +</script> + diff --git a/tests/wpt/mozilla/tests/mozilla/window_resizeTo.html b/tests/wpt/mozilla/tests/mozilla/window_resizeTo.html index 87d60498e80..3f6c5a610d5 100644 --- a/tests/wpt/mozilla/tests/mozilla/window_resizeTo.html +++ b/tests/wpt/mozilla/tests/mozilla/window_resizeTo.html @@ -1,16 +1,21 @@ <!doctype html> <meta charset="utf-8"> -<title>Verify that the resize event is fired when the window is resized (particularly in headless mode)</title> +<title>Verify that the resize event is fired when the window is resized (in popup)</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script> async_test(function (t) { - window.onresize = t.step_func(function () { - assert_equals(window.innerWidth, 200); - assert_equals(window.innerHeight, 200); - t.done(); - }); + var popup = window.open("about:blank", "_blank", "width=100,height=100"); + assert_not_equals(popup, null, "Popup must be successfully opened"); - window.resizeTo(200, 200); - }, "onresize"); + popup.onload = function () { + popup.onresize = t.step_func(function () { + assert_approx_equals(popup.innerWidth, 200, 10, "Popup width should be ~200"); + assert_approx_equals(popup.innerHeight, 200, 10, "Popup height should be ~200"); + t.done(); + }); + + popup.resizeTo(200, 200); + }; + }, "Popup onresize event fires after resizeTo"); </script> diff --git a/tests/wpt/mozilla/tests/mozilla/window_resizeTo_not_permitted-crash.html b/tests/wpt/mozilla/tests/mozilla/window_resizeTo_not_permitted-crash.html new file mode 100644 index 00000000000..7b6a67ff814 --- /dev/null +++ b/tests/wpt/mozilla/tests/mozilla/window_resizeTo_not_permitted-crash.html @@ -0,0 +1,6 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Test that calling resizeTo() on normal window does not crash</title> +<script> + window.resizeTo(-1, -1); +</script> diff --git a/tests/wpt/tests/.github/workflows/update_codeowners.yml b/tests/wpt/tests/.github/workflows/update_codeowners.yml new file mode 100644 index 00000000000..9e3f23efa7d --- /dev/null +++ b/tests/wpt/tests/.github/workflows/update_codeowners.yml @@ -0,0 +1,39 @@ +name: update codeowners +on: + schedule: + - cron: 0 0 * * * + workflow_dispatch: +jobs: + update: + runs-on: ubuntu-24.04 + if: github.repository == 'web-platform-tests/wpt' + steps: + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + - name: Checkout wpt + uses: actions/checkout@v4 + with: + path: wpt + - name: Checkout wpt-metadata + uses: actions/checkout@v4 + with: + path: wpt-metadata + repository: web-platform-tests/wpt-metadata + - name: Update codeowners + run: | + cd wpt + ./wpt update-codeowners ../wpt-metadata + - name: Commit and create pull request + uses: peter-evans/create-pull-request@v6 + with: + token: ${{ secrets.GITHUB_TOKEN }} + author: wpt-pr-bot <wpt-pr-bot@users.noreply.github.com> + commit-message: Automated update of CODEOWNERS + title: Update CODEOWNERS + body: | + This automated pull request updates CODEOWNERS + + See the [workflow](https://github.com/web-platform-tests/wpt/blob/master/.github/workflows/update_codeowners.yml) for how this pull request was created. + branch: actions/update-codeowners diff --git a/tests/wpt/tests/CODEOWNERS b/tests/wpt/tests/CODEOWNERS index c5db991b400..da5b3f0d330 100644 --- a/tests/wpt/tests/CODEOWNERS +++ b/tests/wpt/tests/CODEOWNERS @@ -11,3 +11,3752 @@ tools/docker/Dockerfile @web-platform-tests/wpt-core-team @web-platform-tests/ad # Prevent accidentally touching wasm/core which is updated by a workflow wasm/core/ @web-platform-tests/wpt-core-team + +# GENERATED: interop-tests +css/css-anchor-position/anchor-as-multicol-crash.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-composited-scrolling-001-crash.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-composited-scrolling-002-crash.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-composited-scrolling-003-crash.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-composited-scrolling-004-crash.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-composited-scrolling-005-crash.html @web-platform-tests/interop +css/css-anchor-position/grid-anchor-center-crash.html @web-platform-tests/interop +css/css-anchor-position/inline-grid-try-fallbacks-crash.html @web-platform-tests/interop +css/css-anchor-position/position-try-invalid-anchor-crash.html @web-platform-tests/interop +css/css-cascade/scope-declaration-list-crash.html @web-platform-tests/interop +css/css-flexbox/contain-size-layout-abspos-flex-container-crash.html @web-platform-tests/interop +css/css-flexbox/fixedpos-video-in-abspos-quirk-crash.html @web-platform-tests/interop +css/css-flexbox/flex-shrink-large-value-crash.html @web-platform-tests/interop +css/css-flexbox/frameset-crash.html @web-platform-tests/interop +css/css-flexbox/inline-flex-editing-crash.html @web-platform-tests/interop +css/css-flexbox/inline-flex-editing-with-updating-text-crash.html @web-platform-tests/interop +css/css-flexbox/inline-flex-frameset-main-axis-crash.html @web-platform-tests/interop +css/css-flexbox/negative-flex-margins-crash.html @web-platform-tests/interop +css/css-flexbox/negative-flex-rounding-crash.html @web-platform-tests/interop +css/css-flexbox/negative-item-margins-002-crash.html @web-platform-tests/interop +css/css-flexbox/negative-item-margins-crash.html @web-platform-tests/interop +css/css-flexbox/orthogonal-flex-item-crash.html @web-platform-tests/interop +css/css-flexbox/position-relative-with-scrollable-with-abspos-crash.html @web-platform-tests/interop +css/css-flexbox/remove-out-of-flow-child-crash.html @web-platform-tests/interop +css/css-flexbox/zero-content-size-with-scrollbar-crash.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-crash.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-add-item-with-positioned-items-crash.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-add-positioned-block-item-after-inline-item-crash.html @web-platform-tests/interop +css/css-grid/subgrid/crashtests/contain-strict-nested-subgrid.html @web-platform-tests/interop +css/css-grid/subgrid/crashtests/contain-strict-subgrid.html @web-platform-tests/interop +css/css-grid/subgrid/crashtests/subgrid-reflow-root.html @web-platform-tests/interop +css/css-view-transitions/document-element-detached-crash.html @web-platform-tests/interop +css/css-view-transitions/empty-render-target-crash.html @web-platform-tests/interop +css/css-view-transitions/get-computed-style-crash.html @web-platform-tests/interop +css/css-view-transitions/iframe-transition-destroyed-document-crash.html @web-platform-tests/interop +css/css-view-transitions/list-style-position-style-change-crash.html @web-platform-tests/interop +css/css-view-transitions/root-element-cv-hidden-crash.html @web-platform-tests/interop +css/css-view-transitions/root-element-display-none-crash.html @web-platform-tests/interop +css/css-view-transitions/root-element-display-none-during-transition-crash.html @web-platform-tests/interop +css/css-viewport/zoom/perspective-small-effective-zoom-crash.html @web-platform-tests/interop +css/css-viewport/zoom/scroll-corner-crash.html @web-platform-tests/interop +css/css-viewport/zoom/scrollbar-crash.html @web-platform-tests/interop +css/css-viewport/zoom/textarea-very-small-zoom-crash.html @web-platform-tests/interop +css/css-writing-modes/link-writing-mode-dependency-crash.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-feimage-crash.html @web-platform-tests/interop +html/rendering/the-details-element/details-autofocus-crash.html @web-platform-tests/interop +html/rendering/the-details-element/empty-crash.html @web-platform-tests/interop +html/rendering/the-details-element/two-summaries-removal-crash.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-005-print.html @web-platform-tests/interop +css/css-cascade/scope-implicit-crash-print.html @web-platform-tests/interop +css/css-anchor-position/anchor-center-002.html @web-platform-tests/interop +css/css-anchor-position/anchor-center-scroll.html @web-platform-tests/interop +css/css-anchor-position/anchor-in-css-min-max-function.html @web-platform-tests/interop +css/css-anchor-position/anchor-name-005.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-circular.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-dynamic-005.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-multicol-007.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-multicol-008.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-multicol-011.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-top-layer-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-top-layer-002.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-top-layer-003.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-top-layer-004.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-top-layer-005.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-top-layer-006.html @web-platform-tests/interop +css/css-anchor-position/anchor-scope-scroll.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-chained-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-chained-002.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-chained-003.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-chained-004.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-chained-fallback.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-composited-scrolling-006.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-fixedpos-002.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-fixedpos.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-nested.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-overflow-hidden.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-position-try-012.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-scrollable-anchor.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-to-sticky-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-to-sticky-002.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-to-sticky-003.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-to-sticky-004.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-update-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-update-002.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-update-003.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-update-004.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-update-005.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-update-006.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-update-007.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-vlr.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-vrl.html @web-platform-tests/interop +css/css-anchor-position/position-anchor-001.html @web-platform-tests/interop +css/css-anchor-position/position-anchor-002.html @web-platform-tests/interop +css/css-anchor-position/position-anchor-004.html @web-platform-tests/interop +css/css-anchor-position/position-anchor-target-with-children.html @web-platform-tests/interop +css/css-anchor-position/position-area-abs-inline-container.html @web-platform-tests/interop +css/css-anchor-position/position-area-inline-container.html @web-platform-tests/interop +css/css-anchor-position/position-area-scroll-adjust.html @web-platform-tests/interop +css/css-anchor-position/position-try-switch-from-fixed-anchor.html @web-platform-tests/interop +css/css-anchor-position/position-try-switch-to-fixed-anchor.html @web-platform-tests/interop +css/css-anchor-position/position-visibility-add-no-overflow.html @web-platform-tests/interop +css/css-anchor-position/position-visibility-anchors-visible-after-scroll-in.html @web-platform-tests/interop +css/css-anchor-position/position-visibility-anchors-visible-after-scroll-out.html @web-platform-tests/interop +css/css-anchor-position/position-visibility-anchors-visible-chained-001.html @web-platform-tests/interop +css/css-anchor-position/position-visibility-anchors-visible-chained-002.html @web-platform-tests/interop +css/css-anchor-position/position-visibility-anchors-visible-chained-003.html @web-platform-tests/interop +css/css-anchor-position/position-visibility-anchors-visible-chained-004.html @web-platform-tests/interop +css/css-anchor-position/position-visibility-anchors-visible-change-anchor.html @web-platform-tests/interop +css/css-anchor-position/position-visibility-anchors-visible-change-css-visibility.html @web-platform-tests/interop +css/css-anchor-position/position-visibility-anchors-visible-css-visibility.html @web-platform-tests/interop +css/css-anchor-position/position-visibility-anchors-visible-non-intervening-container.html @web-platform-tests/interop +css/css-anchor-position/position-visibility-anchors-visible-stacked-child.html @web-platform-tests/interop +css/css-anchor-position/position-visibility-anchors-visible-with-position.html @web-platform-tests/interop +css/css-anchor-position/position-visibility-anchors-visible.html @web-platform-tests/interop +css/css-anchor-position/position-visibility-no-overflow-scroll.html @web-platform-tests/interop +css/css-anchor-position/position-visibility-no-overflow-stacked-child.html @web-platform-tests/interop +css/css-anchor-position/position-visibility-no-overflow.html @web-platform-tests/interop +css/css-anchor-position/position-visibility-remove-anchors-visible.html @web-platform-tests/interop +css/css-anchor-position/position-visibility-remove-no-overflow.html @web-platform-tests/interop +css/css-anchor-position/sticky-anchor-position-invalid.html @web-platform-tests/interop +css/css-break/transform-025.html @web-platform-tests/interop +css/css-cascade/scope-featureless.html @web-platform-tests/interop +css/css-cascade/scope-part.html @web-platform-tests/interop +css/css-cascade/scope-pseudo-element.html @web-platform-tests/interop +css/css-cascade/scope-shadow-sharing.html @web-platform-tests/interop +css/css-cascade/scope-visited.html @web-platform-tests/interop +css/css-flexbox/abspos/abspos-autopos-htb-ltr.html @web-platform-tests/interop +css/css-flexbox/abspos/abspos-autopos-htb-rtl.html @web-platform-tests/interop +css/css-flexbox/abspos/abspos-autopos-vlr-ltr.html @web-platform-tests/interop +css/css-flexbox/abspos/abspos-autopos-vlr-rtl.html @web-platform-tests/interop +css/css-flexbox/abspos/abspos-autopos-vrl-ltr.html @web-platform-tests/interop +css/css-flexbox/abspos/abspos-autopos-vrl-rtl.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-align-self-safe-001.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-fallback-justify-content-001.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-justify-self-001.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-margin-001.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-margin-002.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-margin-003.html @web-platform-tests/interop +css/css-flexbox/abspos/flexbox-abspos-child-001a.html @web-platform-tests/interop +css/css-flexbox/abspos/flexbox-abspos-child-001b.html @web-platform-tests/interop +css/css-flexbox/abspos/flexbox-abspos-child-002.html @web-platform-tests/interop +css/css-flexbox/abspos/flexbox_absolute-atomic.html @web-platform-tests/interop +css/css-flexbox/abspos/flexbox_inline-abspos.html @web-platform-tests/interop +css/css-flexbox/abspos/position-absolute-005.html @web-platform-tests/interop +css/css-flexbox/abspos/position-absolute-006.html @web-platform-tests/interop +css/css-flexbox/abspos/position-absolute-007.html @web-platform-tests/interop +css/css-flexbox/abspos/position-absolute-008.html @web-platform-tests/interop +css/css-flexbox/abspos/position-absolute-009.html @web-platform-tests/interop +css/css-flexbox/abspos/position-absolute-010.html @web-platform-tests/interop +css/css-flexbox/abspos/position-absolute-011.html @web-platform-tests/interop +css/css-flexbox/abspos/position-absolute-containing-block-001.html @web-platform-tests/interop +css/css-flexbox/abspos/position-absolute-containing-block-002.html @web-platform-tests/interop +css/css-flexbox/align-baseline.html @web-platform-tests/interop +css/css-flexbox/align-content-001.htm @web-platform-tests/interop +css/css-flexbox/align-content-002.htm @web-platform-tests/interop +css/css-flexbox/align-content-003.htm @web-platform-tests/interop +css/css-flexbox/align-content-004.htm @web-platform-tests/interop +css/css-flexbox/align-content-005.htm @web-platform-tests/interop +css/css-flexbox/align-content-006.htm @web-platform-tests/interop +css/css-flexbox/align-content-wrap-004.html @web-platform-tests/interop +css/css-flexbox/align-content_center.html @web-platform-tests/interop +css/css-flexbox/align-content_flex-end.html @web-platform-tests/interop +css/css-flexbox/align-content_flex-start.html @web-platform-tests/interop +css/css-flexbox/align-content_space-around.html @web-platform-tests/interop +css/css-flexbox/align-content_space-between.html @web-platform-tests/interop +css/css-flexbox/align-content_stretch.html @web-platform-tests/interop +css/css-flexbox/align-items-001.htm @web-platform-tests/interop +css/css-flexbox/align-items-002.htm @web-platform-tests/interop +css/css-flexbox/align-items-003.htm @web-platform-tests/interop +css/css-flexbox/align-items-004.htm @web-platform-tests/interop +css/css-flexbox/align-items-005.htm @web-platform-tests/interop +css/css-flexbox/align-items-006.html @web-platform-tests/interop +css/css-flexbox/align-items-007.html @web-platform-tests/interop +css/css-flexbox/align-items-008.html @web-platform-tests/interop +css/css-flexbox/align-items-009.html @web-platform-tests/interop +css/css-flexbox/align-items-baseline-column-horz.html @web-platform-tests/interop +css/css-flexbox/align-items-baseline-column-vert.html @web-platform-tests/interop +css/css-flexbox/align-items-baseline-overflow-non-visible.html @web-platform-tests/interop +css/css-flexbox/align-items-baseline-row-horz.html @web-platform-tests/interop +css/css-flexbox/align-items-baseline-row-vert.html @web-platform-tests/interop +css/css-flexbox/align-self-001.html @web-platform-tests/interop +css/css-flexbox/align-self-002.html @web-platform-tests/interop +css/css-flexbox/align-self-003.html @web-platform-tests/interop +css/css-flexbox/align-self-004.html @web-platform-tests/interop +css/css-flexbox/align-self-005.html @web-platform-tests/interop +css/css-flexbox/align-self-007.html @web-platform-tests/interop +css/css-flexbox/align-self-008.html @web-platform-tests/interop +css/css-flexbox/align-self-009.html @web-platform-tests/interop +css/css-flexbox/align-self-011.html @web-platform-tests/interop +css/css-flexbox/align-self-012.html @web-platform-tests/interop +css/css-flexbox/align-self-013.html @web-platform-tests/interop +css/css-flexbox/align-self-015.html @web-platform-tests/interop +css/css-flexbox/anonymous-block.html @web-platform-tests/interop +css/css-flexbox/anonymous-flex-item-001.html @web-platform-tests/interop +css/css-flexbox/anonymous-flex-item-002.html @web-platform-tests/interop +css/css-flexbox/anonymous-flex-item-003.html @web-platform-tests/interop +css/css-flexbox/anonymous-flex-item-004.html @web-platform-tests/interop +css/css-flexbox/anonymous-flex-item-005.html @web-platform-tests/interop +css/css-flexbox/anonymous-flex-item-006.html @web-platform-tests/interop +css/css-flexbox/aspect-ratio-intrinsic-size-001.html @web-platform-tests/interop +css/css-flexbox/aspect-ratio-intrinsic-size-002.html @web-platform-tests/interop +css/css-flexbox/aspect-ratio-intrinsic-size-003.html @web-platform-tests/interop +css/css-flexbox/aspect-ratio-intrinsic-size-004.html @web-platform-tests/interop +css/css-flexbox/aspect-ratio-intrinsic-size-005.html @web-platform-tests/interop +css/css-flexbox/aspect-ratio-intrinsic-size-006.html @web-platform-tests/interop +css/css-flexbox/aspect-ratio-intrinsic-size-007.html @web-platform-tests/interop +css/css-flexbox/auto-height-column-with-border-and-padding.html @web-platform-tests/interop +css/css-flexbox/auto-height-with-flex.html @web-platform-tests/interop +css/css-flexbox/auto-margins-001.html @web-platform-tests/interop +css/css-flexbox/auto-margins-002.html @web-platform-tests/interop +css/css-flexbox/auto-margins-003.html @web-platform-tests/interop +css/css-flexbox/baseline-synthesis-001.html @web-platform-tests/interop +css/css-flexbox/baseline-synthesis-002.html @web-platform-tests/interop +css/css-flexbox/baseline-synthesis-003.html @web-platform-tests/interop +css/css-flexbox/baseline-synthesis-004.html @web-platform-tests/interop +css/css-flexbox/canvas-contain-size.html @web-platform-tests/interop +css/css-flexbox/content-height-with-scrollbars.html @web-platform-tests/interop +css/css-flexbox/cross-axis-scrollbar.html @web-platform-tests/interop +css/css-flexbox/css-box-justify-content.html @web-platform-tests/interop +css/css-flexbox/css-flexbox-img-expand-evenly.html @web-platform-tests/interop +css/css-flexbox/css-flexbox-row-reverse-wrap-reverse.html @web-platform-tests/interop +css/css-flexbox/css-flexbox-row-reverse-wrap.html @web-platform-tests/interop +css/css-flexbox/css-flexbox-row-reverse.html @web-platform-tests/interop +css/css-flexbox/css-flexbox-row-wrap-reverse.html @web-platform-tests/interop +css/css-flexbox/css-flexbox-row-wrap.html @web-platform-tests/interop +css/css-flexbox/css-flexbox-row.html @web-platform-tests/interop +css/css-flexbox/css-flexbox-test1.html @web-platform-tests/interop +css/css-flexbox/display-flex-001.htm @web-platform-tests/interop +css/css-flexbox/dynamic-baseline-change-nested.html @web-platform-tests/interop +css/css-flexbox/dynamic-baseline-change.html @web-platform-tests/interop +css/css-flexbox/dynamic-bsize-change.html @web-platform-tests/interop +css/css-flexbox/dynamic-change-simplified-layout-002.html @web-platform-tests/interop +css/css-flexbox/dynamic-change-simplified-layout.html @web-platform-tests/interop +css/css-flexbox/dynamic-isize-change-001.html @web-platform-tests/interop +css/css-flexbox/dynamic-isize-change-002.html @web-platform-tests/interop +css/css-flexbox/dynamic-isize-change-003.html @web-platform-tests/interop +css/css-flexbox/dynamic-isize-change-004.html @web-platform-tests/interop +css/css-flexbox/dynamic-stretch-change.html @web-platform-tests/interop +css/css-flexbox/fieldset-as-item-dynamic.html @web-platform-tests/interop +css/css-flexbox/fieldset-as-item-overflow.html @web-platform-tests/interop +css/css-flexbox/fieldset-baseline-alignment.html @web-platform-tests/interop +css/css-flexbox/fit-content-item-001.html @web-platform-tests/interop +css/css-flexbox/fit-content-item-002.html @web-platform-tests/interop +css/css-flexbox/fit-content-item-003.html @web-platform-tests/interop +css/css-flexbox/fit-content-item-004.html @web-platform-tests/interop +css/css-flexbox/fixed-table-layout-with-percentage-width-in-flex-item.html @web-platform-tests/interop +css/css-flexbox/flex-001.htm @web-platform-tests/interop +css/css-flexbox/flex-002.htm @web-platform-tests/interop +css/css-flexbox/flex-003.htm @web-platform-tests/interop +css/css-flexbox/flex-004.htm @web-platform-tests/interop +css/css-flexbox/flex-align-content-center.html @web-platform-tests/interop +css/css-flexbox/flex-align-content-end.html @web-platform-tests/interop +css/css-flexbox/flex-align-content-space-around.html @web-platform-tests/interop +css/css-flexbox/flex-align-content-space-between.html @web-platform-tests/interop +css/css-flexbox/flex-align-content-start.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-column-001.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-column-002.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-column-003.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-column-004.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-column-005.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-column-006.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-column-007.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-column-008.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-column-009.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-column-010.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-column-012.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-column-013.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-column-014.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-column-015.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-column-016.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-column-018.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-row-001.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-row-002.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-row-003.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-row-004.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-row-006.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-row-007.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-row-008.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-row-009.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-row-010.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-row-011.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-row-012.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-row-014.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-row-015.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-row-016.html @web-platform-tests/interop +css/css-flexbox/flex-basis-001.html @web-platform-tests/interop +css/css-flexbox/flex-basis-002.html @web-platform-tests/interop +css/css-flexbox/flex-basis-003.html @web-platform-tests/interop +css/css-flexbox/flex-basis-004.html @web-platform-tests/interop +css/css-flexbox/flex-basis-005.html @web-platform-tests/interop +css/css-flexbox/flex-basis-006.html @web-platform-tests/interop +css/css-flexbox/flex-basis-007.html @web-platform-tests/interop +css/css-flexbox/flex-basis-008.html @web-platform-tests/interop +css/css-flexbox/flex-basis-010.html @web-platform-tests/interop +css/css-flexbox/flex-basis-011.html @web-platform-tests/interop +css/css-flexbox/flex-basis-012.html @web-platform-tests/interop +css/css-flexbox/flex-basis-item-margins-001.html @web-platform-tests/interop +css/css-flexbox/flex-box-wrap.html @web-platform-tests/interop +css/css-flexbox/flex-child-percent-basis-resize-1.html @web-platform-tests/interop +css/css-flexbox/flex-container-margin.html @web-platform-tests/interop +css/css-flexbox/flex-direction-column-reverse.html @web-platform-tests/interop +css/css-flexbox/flex-direction-column.html @web-platform-tests/interop +css/css-flexbox/flex-direction-modify.html @web-platform-tests/interop +css/css-flexbox/flex-direction-row-reverse.html @web-platform-tests/interop +css/css-flexbox/flex-direction-row-vertical.html @web-platform-tests/interop +css/css-flexbox/flex-direction-with-element-insert.html @web-platform-tests/interop +css/css-flexbox/flex-direction.html @web-platform-tests/interop +css/css-flexbox/flex-flow-001.html @web-platform-tests/interop +css/css-flexbox/flex-flow-002.html @web-platform-tests/interop +css/css-flexbox/flex-flow-003.html @web-platform-tests/interop +css/css-flexbox/flex-flow-004.html @web-platform-tests/interop +css/css-flexbox/flex-flow-005.html @web-platform-tests/interop +css/css-flexbox/flex-flow-006.html @web-platform-tests/interop +css/css-flexbox/flex-flow-007.html @web-platform-tests/interop +css/css-flexbox/flex-flow-008.html @web-platform-tests/interop +css/css-flexbox/flex-flow-009.html @web-platform-tests/interop +css/css-flexbox/flex-flow-010.html @web-platform-tests/interop +css/css-flexbox/flex-flow-011.html @web-platform-tests/interop +css/css-flexbox/flex-flow-012.html @web-platform-tests/interop +css/css-flexbox/flex-grow-001.xht @web-platform-tests/interop +css/css-flexbox/flex-grow-002.html @web-platform-tests/interop +css/css-flexbox/flex-grow-003.html @web-platform-tests/interop +css/css-flexbox/flex-grow-004.html @web-platform-tests/interop +css/css-flexbox/flex-grow-005.html @web-platform-tests/interop +css/css-flexbox/flex-grow-006.html @web-platform-tests/interop +css/css-flexbox/flex-grow-007.html @web-platform-tests/interop +css/css-flexbox/flex-grow-008.html @web-platform-tests/interop +css/css-flexbox/flex-height-min-content.html @web-platform-tests/interop +css/css-flexbox/flex-inline.html @web-platform-tests/interop +css/css-flexbox/flex-item-and-percentage-abspos.html @web-platform-tests/interop +css/css-flexbox/flex-item-contains-size-layout-001.html @web-platform-tests/interop +css/css-flexbox/flex-item-transferred-sizes-padding-border-sizing.html @web-platform-tests/interop +css/css-flexbox/flex-item-transferred-sizes-padding-content-sizing.html @web-platform-tests/interop +css/css-flexbox/flex-item-vertical-align.html @web-platform-tests/interop +css/css-flexbox/flex-item-z-ordering-001.html @web-platform-tests/interop +css/css-flexbox/flex-lines/multi-line-wrap-reverse-column-reverse.html @web-platform-tests/interop +css/css-flexbox/flex-lines/multi-line-wrap-reverse-row-reverse.html @web-platform-tests/interop +css/css-flexbox/flex-lines/multi-line-wrap-with-column-reverse.html @web-platform-tests/interop +css/css-flexbox/flex-lines/multi-line-wrap-with-row-reverse.html @web-platform-tests/interop +css/css-flexbox/flex-margin-no-collapse.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-001.xht @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-002.xht @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-003.xht @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-004.xht @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-005.xht @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-006.xht @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-007.xht @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-008.xht @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-011.xht @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-013.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-014.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-015.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-016.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-017.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-018.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-019.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-020.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-021.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-022.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-023.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-024.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-026.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-027.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-028.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-029.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-030.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-width-flex-items-001.xht @web-platform-tests/interop +css/css-flexbox/flex-minimum-width-flex-items-002.xht @web-platform-tests/interop +css/css-flexbox/flex-minimum-width-flex-items-003.xht @web-platform-tests/interop +css/css-flexbox/flex-minimum-width-flex-items-004.xht @web-platform-tests/interop +css/css-flexbox/flex-minimum-width-flex-items-005.xht @web-platform-tests/interop +css/css-flexbox/flex-minimum-width-flex-items-006.xht @web-platform-tests/interop +css/css-flexbox/flex-minimum-width-flex-items-007.xht @web-platform-tests/interop +css/css-flexbox/flex-minimum-width-flex-items-008.xht @web-platform-tests/interop +css/css-flexbox/flex-minimum-width-flex-items-009.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-width-flex-items-010.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-width-flex-items-011.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-width-flex-items-012.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-width-flex-items-013.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-width-flex-items-015.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-width-flex-items-016.html @web-platform-tests/interop +css/css-flexbox/flex-order.html @web-platform-tests/interop +css/css-flexbox/flex-shrink-001.html @web-platform-tests/interop +css/css-flexbox/flex-shrink-002.html @web-platform-tests/interop +css/css-flexbox/flex-shrink-003.html @web-platform-tests/interop +css/css-flexbox/flex-shrink-004.html @web-platform-tests/interop +css/css-flexbox/flex-shrink-005.html @web-platform-tests/interop +css/css-flexbox/flex-shrink-006.html @web-platform-tests/interop +css/css-flexbox/flex-shrink-007.html @web-platform-tests/interop +css/css-flexbox/flex-shrink-008.html @web-platform-tests/interop +css/css-flexbox/flex-vertical-align-effect.html @web-platform-tests/interop +css/css-flexbox/flex-wrap-002.html @web-platform-tests/interop +css/css-flexbox/flex-wrap-003.html @web-platform-tests/interop +css/css-flexbox/flex-wrap-004.html @web-platform-tests/interop +css/css-flexbox/flex-wrap-005.html @web-platform-tests/interop +css/css-flexbox/flex-wrap-006.html @web-platform-tests/interop +css/css-flexbox/flexbox-align-items-center-nested-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-baseline-horiz-001a.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-baseline-horiz-001b.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-baseline-horiz-002.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-baseline-horiz-003.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-baseline-horiz-004.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-baseline-horiz-005.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-baseline-horiz-006.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-baseline-horiz-007.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-baseline-horiz-008.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-horiz-001-block.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-horiz-001-table.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-horiz-002.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-horiz-003.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-horiz-004.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-horiz-005.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-stretch-vert-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-stretch-vert-002.html @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-vert-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-vert-002.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-vert-003.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-vert-004.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-vert-rtl-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-vert-rtl-002.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-vert-rtl-003.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-vert-rtl-004.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-align-self-vert-rtl-005.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-anonymous-items-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-baseline-align-self-baseline-horiz-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-baseline-align-self-baseline-vert-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-baseline-empty-001a.html @web-platform-tests/interop +css/css-flexbox/flexbox-baseline-empty-001b.html @web-platform-tests/interop +css/css-flexbox/flexbox-baseline-multi-item-horiz-001a.html @web-platform-tests/interop +css/css-flexbox/flexbox-baseline-multi-item-horiz-001b.html @web-platform-tests/interop +css/css-flexbox/flexbox-baseline-multi-item-vert-001a.html @web-platform-tests/interop +css/css-flexbox/flexbox-baseline-multi-item-vert-001b.html @web-platform-tests/interop +css/css-flexbox/flexbox-baseline-multi-line-horiz-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-baseline-multi-line-horiz-002.html @web-platform-tests/interop +css/css-flexbox/flexbox-baseline-multi-line-horiz-003.html @web-platform-tests/interop +css/css-flexbox/flexbox-baseline-multi-line-horiz-004.html @web-platform-tests/interop +css/css-flexbox/flexbox-baseline-multi-line-vert-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-baseline-multi-line-vert-002.html @web-platform-tests/interop +css/css-flexbox/flexbox-baseline-nested-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-baseline-single-item-001a.html @web-platform-tests/interop +css/css-flexbox/flexbox-baseline-single-item-001b.html @web-platform-tests/interop +css/css-flexbox/flexbox-basic-block-horiz-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-basic-block-horiz-001v.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-basic-block-vert-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-basic-block-vert-001v.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-basic-canvas-horiz-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-basic-canvas-horiz-001v.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-basic-canvas-vert-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-basic-canvas-vert-001v.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-basic-fieldset-horiz-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-basic-fieldset-vert-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-basic-iframe-horiz-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-basic-iframe-vert-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-basic-img-horiz-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-basic-img-vert-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-basic-textarea-horiz-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-basic-textarea-vert-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-basic-video-horiz-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-basic-video-vert-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-break-request-horiz-001a.html @web-platform-tests/interop +css/css-flexbox/flexbox-break-request-horiz-001b.html @web-platform-tests/interop +css/css-flexbox/flexbox-break-request-horiz-002a.html @web-platform-tests/interop +css/css-flexbox/flexbox-break-request-horiz-002b.html @web-platform-tests/interop +css/css-flexbox/flexbox-break-request-vert-001a.html @web-platform-tests/interop +css/css-flexbox/flexbox-break-request-vert-001b.html @web-platform-tests/interop +css/css-flexbox/flexbox-break-request-vert-002a.html @web-platform-tests/interop +css/css-flexbox/flexbox-break-request-vert-002b.html @web-platform-tests/interop +css/css-flexbox/flexbox-column-row-gap-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-column-row-gap-002.html @web-platform-tests/interop +css/css-flexbox/flexbox-column-row-gap-003.html @web-platform-tests/interop +css/css-flexbox/flexbox-column-row-gap-004.html @web-platform-tests/interop +css/css-flexbox/flexbox-definite-cross-size-constrained-percentage.html @web-platform-tests/interop +css/css-flexbox/flexbox-definite-sizes-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-definite-sizes-002.html @web-platform-tests/interop +css/css-flexbox/flexbox-definite-sizes-003.html @web-platform-tests/interop +css/css-flexbox/flexbox-definite-sizes-004.html @web-platform-tests/interop +css/css-flexbox/flexbox-definite-sizes-005.html @web-platform-tests/interop +css/css-flexbox/flexbox-definite-sizes-006.html @web-platform-tests/interop +css/css-flexbox/flexbox-dyn-resize-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-flex-basis-content-001a.html @web-platform-tests/interop +css/css-flexbox/flexbox-flex-basis-content-001b.html @web-platform-tests/interop +css/css-flexbox/flexbox-flex-basis-content-002a.html @web-platform-tests/interop +css/css-flexbox/flexbox-flex-basis-content-002b.html @web-platform-tests/interop +css/css-flexbox/flexbox-flex-basis-content-003a.html @web-platform-tests/interop +css/css-flexbox/flexbox-flex-basis-content-003b.html @web-platform-tests/interop +css/css-flexbox/flexbox-flex-basis-content-004a.html @web-platform-tests/interop +css/css-flexbox/flexbox-flex-basis-content-004b.html @web-platform-tests/interop +css/css-flexbox/flexbox-flex-direction-column-percentage-ignored.html @web-platform-tests/interop +css/css-flexbox/flexbox-flex-direction-column-reverse.htm @web-platform-tests/interop +css/css-flexbox/flexbox-flex-direction-column.htm @web-platform-tests/interop +css/css-flexbox/flexbox-flex-direction-default.htm @web-platform-tests/interop +css/css-flexbox/flexbox-flex-direction-row-reverse.htm @web-platform-tests/interop +css/css-flexbox/flexbox-flex-direction-row.htm @web-platform-tests/interop +css/css-flexbox/flexbox-flex-flow-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-flex-flow-002.html @web-platform-tests/interop +css/css-flexbox/flexbox-flex-wrap-default.htm @web-platform-tests/interop +css/css-flexbox/flexbox-flex-wrap-flexing.html @web-platform-tests/interop +css/css-flexbox/flexbox-flex-wrap-horiz-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-flex-wrap-horiz-002.html @web-platform-tests/interop +css/css-flexbox/flexbox-flex-wrap-nowrap.htm @web-platform-tests/interop +css/css-flexbox/flexbox-flex-wrap-vert-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-flex-wrap-vert-002.html @web-platform-tests/interop +css/css-flexbox/flexbox-flex-wrap-wrap-reverse.htm @web-platform-tests/interop +css/css-flexbox/flexbox-flex-wrap-wrap.htm @web-platform-tests/interop +css/css-flexbox/flexbox-gap-position-absolute.html @web-platform-tests/interop +css/css-flexbox/flexbox-iframe-intrinsic-size-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-items-as-stacking-contexts-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-items-as-stacking-contexts-002.html @web-platform-tests/interop +css/css-flexbox/flexbox-items-as-stacking-contexts-003.html @web-platform-tests/interop +css/css-flexbox/flexbox-justify-content-horiz-001a.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-justify-content-horiz-001b.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-justify-content-horiz-002.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-justify-content-horiz-003.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-justify-content-horiz-004.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-justify-content-horiz-005.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-justify-content-horiz-006.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-justify-content-vert-001a.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-justify-content-vert-001b.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-justify-content-vert-002.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-justify-content-vert-003.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-justify-content-vert-004.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-justify-content-vert-005.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-justify-content-vert-006.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-justify-content-wmvert-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-margin-auto-horiz-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-margin-auto-horiz-002.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-mbp-horiz-001-reverse.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-mbp-horiz-001-rtl-reverse.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-mbp-horiz-001-rtl.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-mbp-horiz-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-mbp-horiz-002a.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-mbp-horiz-002b.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-mbp-horiz-002v.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-mbp-horiz-003-reverse.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-mbp-horiz-003.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-mbp-horiz-003v.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-mbp-horiz-004.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-min-height-auto-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-min-height-auto-002a.html @web-platform-tests/interop +css/css-flexbox/flexbox-min-height-auto-002b.html @web-platform-tests/interop +css/css-flexbox/flexbox-min-height-auto-002c.html @web-platform-tests/interop +css/css-flexbox/flexbox-min-height-auto-003.html @web-platform-tests/interop +css/css-flexbox/flexbox-min-height-auto-004.html @web-platform-tests/interop +css/css-flexbox/flexbox-min-width-auto-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-min-width-auto-002a.html @web-platform-tests/interop +css/css-flexbox/flexbox-min-width-auto-002b.html @web-platform-tests/interop +css/css-flexbox/flexbox-min-width-auto-002c.html @web-platform-tests/interop +css/css-flexbox/flexbox-min-width-auto-003.html @web-platform-tests/interop +css/css-flexbox/flexbox-min-width-auto-004.html @web-platform-tests/interop +css/css-flexbox/flexbox-min-width-auto-005.html @web-platform-tests/interop +css/css-flexbox/flexbox-min-width-auto-006.html @web-platform-tests/interop +css/css-flexbox/flexbox-order-only-flexitems.html @web-platform-tests/interop +css/css-flexbox/flexbox-overflow-horiz-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-overflow-horiz-002.html @web-platform-tests/interop +css/css-flexbox/flexbox-overflow-horiz-003.html @web-platform-tests/interop +css/css-flexbox/flexbox-overflow-horiz-004.html @web-platform-tests/interop +css/css-flexbox/flexbox-overflow-horiz-005.html @web-platform-tests/interop +css/css-flexbox/flexbox-overflow-padding-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-overflow-padding-002.html @web-platform-tests/interop +css/css-flexbox/flexbox-overflow-vert-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-overflow-vert-002.html @web-platform-tests/interop +css/css-flexbox/flexbox-overflow-vert-003.html @web-platform-tests/interop +css/css-flexbox/flexbox-overflow-vert-004.html @web-platform-tests/interop +css/css-flexbox/flexbox-overflow-vert-005.html @web-platform-tests/interop +css/css-flexbox/flexbox-paint-ordering-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-paint-ordering-002.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-paint-ordering-003.html @web-platform-tests/interop +css/css-flexbox/flexbox-root-node-001a.html @web-platform-tests/interop +css/css-flexbox/flexbox-root-node-001b.html @web-platform-tests/interop +css/css-flexbox/flexbox-safe-overflow-position-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-single-line-clamp-1.html @web-platform-tests/interop +css/css-flexbox/flexbox-single-line-clamp-2.html @web-platform-tests/interop +css/css-flexbox/flexbox-single-line-clamp-3.html @web-platform-tests/interop +css/css-flexbox/flexbox-sizing-horiz-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-sizing-horiz-002.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-sizing-vert-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-sizing-vert-002.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-table-fixup-001.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-whitespace-handling-001a.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-whitespace-handling-001b.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-whitespace-handling-002.xhtml @web-platform-tests/interop +css/css-flexbox/flexbox-with-multi-column-property.html @web-platform-tests/interop +css/css-flexbox/flexbox-with-pseudo-elements-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-with-pseudo-elements-002.html @web-platform-tests/interop +css/css-flexbox/flexbox-with-pseudo-elements-003.html @web-platform-tests/interop +css/css-flexbox/flexbox-writing-mode-001.html @web-platform-tests/interop +css/css-flexbox/flexbox-writing-mode-002.html @web-platform-tests/interop +css/css-flexbox/flexbox-writing-mode-003.html @web-platform-tests/interop +css/css-flexbox/flexbox-writing-mode-004.html @web-platform-tests/interop +css/css-flexbox/flexbox-writing-mode-005.html @web-platform-tests/interop +css/css-flexbox/flexbox-writing-mode-006.html @web-platform-tests/interop +css/css-flexbox/flexbox-writing-mode-007.html @web-platform-tests/interop +css/css-flexbox/flexbox-writing-mode-008.html @web-platform-tests/interop +css/css-flexbox/flexbox-writing-mode-009.html @web-platform-tests/interop +css/css-flexbox/flexbox-writing-mode-010.html @web-platform-tests/interop +css/css-flexbox/flexbox-writing-mode-011.html @web-platform-tests/interop +css/css-flexbox/flexbox-writing-mode-012.html @web-platform-tests/interop +css/css-flexbox/flexbox-writing-mode-013.html @web-platform-tests/interop +css/css-flexbox/flexbox-writing-mode-014.html @web-platform-tests/interop +css/css-flexbox/flexbox-writing-mode-015.html @web-platform-tests/interop +css/css-flexbox/flexbox-writing-mode-016.html @web-platform-tests/interop +css/css-flexbox/flexbox-writing-mode-slr-row-mix.html @web-platform-tests/interop +css/css-flexbox/flexbox-writing-mode-slr-rtl.html @web-platform-tests/interop +css/css-flexbox/flexbox-writing-mode-slr.html @web-platform-tests/interop +css/css-flexbox/flexbox-writing-mode-srl-row-mix.html @web-platform-tests/interop +css/css-flexbox/flexbox-writing-mode-srl-rtl.html @web-platform-tests/interop +css/css-flexbox/flexbox-writing-mode-srl.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-content-center.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-content-flexend.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-content-flexstart.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-content-spacearound.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-content-spacebetween.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-content-stretch-2.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-content-stretch.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-items-baseline.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-items-center-2.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-items-center-3.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-items-center.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-items-flexend-2.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-items-flexend.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-items-flexstart-2.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-items-flexstart.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-items-stretch-2.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-items-stretch-3.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-items-stretch-4.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-items-stretch.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-self-auto.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-self-baseline.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-self-center.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-self-flexend.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-self-flexstart.html @web-platform-tests/interop +css/css-flexbox/flexbox_align-self-stretch.html @web-platform-tests/interop +css/css-flexbox/flexbox_block.html @web-platform-tests/interop +css/css-flexbox/flexbox_box-clear.html @web-platform-tests/interop +css/css-flexbox/flexbox_columns-flexitems-2.html @web-platform-tests/interop +css/css-flexbox/flexbox_columns-flexitems.html @web-platform-tests/interop +css/css-flexbox/flexbox_columns.html @web-platform-tests/interop +css/css-flexbox/flexbox_direction-column-reverse.html @web-platform-tests/interop +css/css-flexbox/flexbox_direction-column.html @web-platform-tests/interop +css/css-flexbox/flexbox_direction-row-reverse.html @web-platform-tests/interop +css/css-flexbox/flexbox_display.html @web-platform-tests/interop +css/css-flexbox/flexbox_fbfc.html @web-platform-tests/interop +css/css-flexbox/flexbox_fbfc2.html @web-platform-tests/interop +css/css-flexbox/flexbox_first-line.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-0-0-unitless.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-0-0.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-0-1-unitless-basis.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-0-N-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-0-N-unitless-basis.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-0-N.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-0-Npercent-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-0-Npercent.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-0-auto-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-0-auto.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-0.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-1-0-unitless.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-1-0.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-1-1-unitless-basis.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-1-N-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-1-N-unitless-basis.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-1-N.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-1-Npercent-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-1-Npercent.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-1-auto-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-1-auto.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-1.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-N-0-unitless.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-N-0.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-N-N-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-N-N.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-N-Npercent-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-N-Npercent.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-N-auto-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-N-auto.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-N.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-0-auto.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-0-0-unitless.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-0-0.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-0-N-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-0-N.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-0-Npercent-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-0-Npercent.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-0-auto-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-0-auto.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-0.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-1-0-unitless.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-1-0.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-1-N-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-1-N.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-1-Npercent-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-1-Npercent.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-1-auto-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-1-auto.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-1.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-N-0-unitless.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-N-0.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-N-N-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-N-N.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-N-Npercent-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-N-Npercent.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-N-auto-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-N-auto.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-1-N.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-0-0-unitless.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-0-0.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-0-N-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-0-N.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-0-Npercent-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-0-Npercent.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-0-auto-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-0-auto.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-0.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-1-0-unitless.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-1-0.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-1-N-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-1-N.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-1-Npercent-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-1-Npercent.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-1-auto-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-1-auto.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-1.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-N-0-unitless.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-N-0.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-N-N-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-N-N.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-N-Npercent-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-N-Npercent.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-N-auto-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-N-auto.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-N-N.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-auto.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-basis-shrink.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-basis.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-formatting-interop.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-initial-2.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-initial.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-natural-mixed-basis-auto.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-natural-mixed-basis.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-natural-variable-auto-basis.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-natural-variable-zero-basis.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-natural.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-none-wrappable-content.html @web-platform-tests/interop +css/css-flexbox/flexbox_flex-none.html @web-platform-tests/interop +css/css-flexbox/flexbox_flow-column-reverse-wrap-reverse.html @web-platform-tests/interop +css/css-flexbox/flexbox_flow-column-reverse-wrap.html @web-platform-tests/interop +css/css-flexbox/flexbox_flow-column-wrap-reverse.html @web-platform-tests/interop +css/css-flexbox/flexbox_flow-column-wrap.html @web-platform-tests/interop +css/css-flexbox/flexbox_flow-row-wrap-reverse.html @web-platform-tests/interop +css/css-flexbox/flexbox_flow-row-wrap.html @web-platform-tests/interop +css/css-flexbox/flexbox_generated-flex.html @web-platform-tests/interop +css/css-flexbox/flexbox_generated-nested-flex.html @web-platform-tests/interop +css/css-flexbox/flexbox_generated.html @web-platform-tests/interop +css/css-flexbox/flexbox_inline-float.html @web-platform-tests/interop +css/css-flexbox/flexbox_inline.html @web-platform-tests/interop +css/css-flexbox/flexbox_item-bottom-float.html @web-platform-tests/interop +css/css-flexbox/flexbox_item-clear.html @web-platform-tests/interop +css/css-flexbox/flexbox_item-float.html @web-platform-tests/interop +css/css-flexbox/flexbox_item-top-float.html @web-platform-tests/interop +css/css-flexbox/flexbox_item-vertical-align.html @web-platform-tests/interop +css/css-flexbox/flexbox_justifycontent-center.html @web-platform-tests/interop +css/css-flexbox/flexbox_justifycontent-end-rtl.html @web-platform-tests/interop +css/css-flexbox/flexbox_justifycontent-end.html @web-platform-tests/interop +css/css-flexbox/flexbox_justifycontent-flex-end.html @web-platform-tests/interop +css/css-flexbox/flexbox_justifycontent-flex-start.html @web-platform-tests/interop +css/css-flexbox/flexbox_justifycontent-left-001.html @web-platform-tests/interop +css/css-flexbox/flexbox_justifycontent-left-002.html @web-platform-tests/interop +css/css-flexbox/flexbox_justifycontent-right-001.html @web-platform-tests/interop +css/css-flexbox/flexbox_justifycontent-right-002.html @web-platform-tests/interop +css/css-flexbox/flexbox_justifycontent-spacearound-negative.html @web-platform-tests/interop +css/css-flexbox/flexbox_justifycontent-spacearound-only.html @web-platform-tests/interop +css/css-flexbox/flexbox_justifycontent-spacearound.html @web-platform-tests/interop +css/css-flexbox/flexbox_justifycontent-spacebetween-negative.html @web-platform-tests/interop +css/css-flexbox/flexbox_justifycontent-spacebetween-only.html @web-platform-tests/interop +css/css-flexbox/flexbox_justifycontent-spacebetween.html @web-platform-tests/interop +css/css-flexbox/flexbox_justifycontent-start-rtl.html @web-platform-tests/interop +css/css-flexbox/flexbox_justifycontent-start.html @web-platform-tests/interop +css/css-flexbox/flexbox_margin-auto-overflow.html @web-platform-tests/interop +css/css-flexbox/flexbox_margin-auto.html @web-platform-tests/interop +css/css-flexbox/flexbox_margin-left-ex.html @web-platform-tests/interop +css/css-flexbox/flexbox_margin.html @web-platform-tests/interop +css/css-flexbox/flexbox_nested-flex.html @web-platform-tests/interop +css/css-flexbox/flexbox_object.html @web-platform-tests/interop +css/css-flexbox/flexbox_order-abspos-space-around.html @web-platform-tests/interop +css/css-flexbox/flexbox_order-box.html @web-platform-tests/interop +css/css-flexbox/flexbox_order-noninteger-invalid.html @web-platform-tests/interop +css/css-flexbox/flexbox_order.html @web-platform-tests/interop +css/css-flexbox/flexbox_quirks_body.html @web-platform-tests/interop +css/css-flexbox/flexbox_rowspan-overflow-automatic.html @web-platform-tests/interop +css/css-flexbox/flexbox_rowspan-overflow.html @web-platform-tests/interop +css/css-flexbox/flexbox_rowspan.html @web-platform-tests/interop +css/css-flexbox/flexbox_rtl-direction.html @web-platform-tests/interop +css/css-flexbox/flexbox_rtl-flow-reverse.html @web-platform-tests/interop +css/css-flexbox/flexbox_rtl-flow.html @web-platform-tests/interop +css/css-flexbox/flexbox_rtl-order.html @web-platform-tests/interop +css/css-flexbox/flexbox_stf-abspos.html @web-platform-tests/interop +css/css-flexbox/flexbox_stf-fixpos.html @web-platform-tests/interop +css/css-flexbox/flexbox_stf-float.html @web-platform-tests/interop +css/css-flexbox/flexbox_stf-inline-block.html @web-platform-tests/interop +css/css-flexbox/flexbox_stf-table-caption.html @web-platform-tests/interop +css/css-flexbox/flexbox_stf-table-cell.html @web-platform-tests/interop +css/css-flexbox/flexbox_stf-table-row-group.html @web-platform-tests/interop +css/css-flexbox/flexbox_stf-table-row.html @web-platform-tests/interop +css/css-flexbox/flexbox_stf-table-singleline-2.html @web-platform-tests/interop +css/css-flexbox/flexbox_stf-table-singleline.html @web-platform-tests/interop +css/css-flexbox/flexbox_stf-table.html @web-platform-tests/interop +css/css-flexbox/flexbox_table-fixed-layout.html @web-platform-tests/interop +css/css-flexbox/flexbox_width-overflow.html @web-platform-tests/interop +css/css-flexbox/flexbox_wrap-long.html @web-platform-tests/interop +css/css-flexbox/flexbox_wrap-reverse.html @web-platform-tests/interop +css/css-flexbox/flexbox_wrap.html @web-platform-tests/interop +css/css-flexbox/flexbox_writing_mode_vertical_lays_out_contents_from_top_to_bottom.html @web-platform-tests/interop +css/css-flexbox/flexible-box-float.html @web-platform-tests/interop +css/css-flexbox/flexible-order.html @web-platform-tests/interop +css/css-flexbox/flexitem-stretch-range.html @web-platform-tests/interop +css/css-flexbox/gap-001-lr.html @web-platform-tests/interop +css/css-flexbox/gap-001-ltr.html @web-platform-tests/interop +css/css-flexbox/gap-001-rl.html @web-platform-tests/interop +css/css-flexbox/gap-001-rtl.html @web-platform-tests/interop +css/css-flexbox/gap-002-lr.html @web-platform-tests/interop +css/css-flexbox/gap-002-ltr.html @web-platform-tests/interop +css/css-flexbox/gap-002-rl.html @web-platform-tests/interop +css/css-flexbox/gap-002-rtl.html @web-platform-tests/interop +css/css-flexbox/gap-003-lr.html @web-platform-tests/interop +css/css-flexbox/gap-003-ltr.html @web-platform-tests/interop +css/css-flexbox/gap-003-rl.html @web-platform-tests/interop +css/css-flexbox/gap-003-rtl.html @web-platform-tests/interop +css/css-flexbox/gap-004-lr.html @web-platform-tests/interop +css/css-flexbox/gap-004-ltr.html @web-platform-tests/interop +css/css-flexbox/gap-004-rl.html @web-platform-tests/interop +css/css-flexbox/gap-004-rtl.html @web-platform-tests/interop +css/css-flexbox/gap-005-lr.html @web-platform-tests/interop +css/css-flexbox/gap-005-ltr.html @web-platform-tests/interop +css/css-flexbox/gap-005-rl.html @web-platform-tests/interop +css/css-flexbox/gap-005-rtl.html @web-platform-tests/interop +css/css-flexbox/gap-006-lr.html @web-platform-tests/interop +css/css-flexbox/gap-006-ltr.html @web-platform-tests/interop +css/css-flexbox/gap-006-rl.html @web-platform-tests/interop +css/css-flexbox/gap-006-rtl.html @web-platform-tests/interop +css/css-flexbox/gap-007-lr.html @web-platform-tests/interop +css/css-flexbox/gap-007-ltr.html @web-platform-tests/interop +css/css-flexbox/gap-007-rl.html @web-platform-tests/interop +css/css-flexbox/gap-007-rtl.html @web-platform-tests/interop +css/css-flexbox/gap-008-ltr.html @web-platform-tests/interop +css/css-flexbox/gap-009-ltr.html @web-platform-tests/interop +css/css-flexbox/gap-010-ltr.html @web-platform-tests/interop +css/css-flexbox/gap-011.html @web-platform-tests/interop +css/css-flexbox/gap-012.html @web-platform-tests/interop +css/css-flexbox/gap-013.html @web-platform-tests/interop +css/css-flexbox/gap-014.html @web-platform-tests/interop +css/css-flexbox/gap-015.html @web-platform-tests/interop +css/css-flexbox/gap-016.html @web-platform-tests/interop +css/css-flexbox/grid-flex-item-001.html @web-platform-tests/interop +css/css-flexbox/grid-flex-item-002.html @web-platform-tests/interop +css/css-flexbox/grid-flex-item-003.html @web-platform-tests/interop +css/css-flexbox/grid-flex-item-004.html @web-platform-tests/interop +css/css-flexbox/grid-flex-item-005.html @web-platform-tests/interop +css/css-flexbox/grid-flex-item-006.html @web-platform-tests/interop +css/css-flexbox/image-items-flake-001.html @web-platform-tests/interop +css/css-flexbox/image-nested-within-definite-column-flexbox.html @web-platform-tests/interop +css/css-flexbox/inline-flex-min-content-height.html @web-platform-tests/interop +css/css-flexbox/item-with-max-height-and-scrollbar.html @web-platform-tests/interop +css/css-flexbox/item-with-table-with-infinite-max-intrinsic-width.html @web-platform-tests/interop +css/css-flexbox/justify-content-001.htm @web-platform-tests/interop +css/css-flexbox/justify-content-002.htm @web-platform-tests/interop +css/css-flexbox/justify-content-003.htm @web-platform-tests/interop +css/css-flexbox/justify-content-004.htm @web-platform-tests/interop +css/css-flexbox/justify-content-005.htm @web-platform-tests/interop +css/css-flexbox/justify-content-sideways-001.html @web-platform-tests/interop +css/css-flexbox/layout-algorithm_algo-cross-line-001.html @web-platform-tests/interop +css/css-flexbox/layout-algorithm_algo-cross-line-002.html @web-platform-tests/interop +css/css-flexbox/multiline-column-max-height.html @web-platform-tests/interop +css/css-flexbox/multiline-reverse-wrap-baseline.html @web-platform-tests/interop +css/css-flexbox/negative-margins-001.html @web-platform-tests/interop +css/css-flexbox/nested-orthogonal-flexbox-relayout.html @web-platform-tests/interop +css/css-flexbox/order/order-abs-children-painting-order.html @web-platform-tests/interop +css/css-flexbox/order/order-with-column-reverse.html @web-platform-tests/interop +css/css-flexbox/order/order-with-row-reverse.html @web-platform-tests/interop +css/css-flexbox/order-painting.html @web-platform-tests/interop +css/css-flexbox/ortho-table-item-001.html @web-platform-tests/interop +css/css-flexbox/overflow-area-001.html @web-platform-tests/interop +css/css-flexbox/overflow-area-002.html @web-platform-tests/interop +css/css-flexbox/overflow-area-003.html @web-platform-tests/interop +css/css-flexbox/overflow-auto-001.html @web-platform-tests/interop +css/css-flexbox/overflow-auto-005.html @web-platform-tests/interop +css/css-flexbox/overflow-auto-007.html @web-platform-tests/interop +css/css-flexbox/overflow-top-left.html @web-platform-tests/interop +css/css-flexbox/padding-overflow.html @web-platform-tests/interop +css/css-flexbox/percentage-descendant-of-anonymous-flex-item.html @web-platform-tests/interop +css/css-flexbox/percentage-heights-002.html @web-platform-tests/interop +css/css-flexbox/percentage-heights-004.html @web-platform-tests/interop +css/css-flexbox/percentage-heights-005.html @web-platform-tests/interop +css/css-flexbox/percentage-heights-006.html @web-platform-tests/interop +css/css-flexbox/percentage-heights-007.html @web-platform-tests/interop +css/css-flexbox/percentage-heights-008.html @web-platform-tests/interop +css/css-flexbox/percentage-heights-009.html @web-platform-tests/interop +css/css-flexbox/percentage-heights-010.html @web-platform-tests/interop +css/css-flexbox/percentage-heights-014.html @web-platform-tests/interop +css/css-flexbox/percentage-heights-015.html @web-platform-tests/interop +css/css-flexbox/percentage-heights-016.html @web-platform-tests/interop +css/css-flexbox/percentage-heights-017.html @web-platform-tests/interop +css/css-flexbox/percentage-heights-018.html @web-platform-tests/interop +css/css-flexbox/percentage-heights-019.html @web-platform-tests/interop +css/css-flexbox/percentage-max-height-001.html @web-platform-tests/interop +css/css-flexbox/percentage-max-height-002.html @web-platform-tests/interop +css/css-flexbox/percentage-max-height-003.html @web-platform-tests/interop +css/css-flexbox/percentage-max-height-004.html @web-platform-tests/interop +css/css-flexbox/percentage-padding-002.html @web-platform-tests/interop +css/css-flexbox/percentage-size-subitems-001.html @web-platform-tests/interop +css/css-flexbox/percentage-widths-001.html @web-platform-tests/interop +css/css-flexbox/position-absolute-scrollbar-freeze.html @web-platform-tests/interop +css/css-flexbox/position-fixed-001.html @web-platform-tests/interop +css/css-flexbox/position-relative-percentage-top-002.html @web-platform-tests/interop +css/css-flexbox/position-relative-percentage-top-003.html @web-platform-tests/interop +css/css-flexbox/scrollbars-auto.html @web-platform-tests/interop +css/css-flexbox/scrollbars-no-margin.html @web-platform-tests/interop +css/css-flexbox/scrollbars.html @web-platform-tests/interop +css/css-flexbox/select-element-zero-height-001.html @web-platform-tests/interop +css/css-flexbox/select-element-zero-height-002.html @web-platform-tests/interop +css/css-flexbox/stretch-flex-item-checkbox-input.html @web-platform-tests/interop +css/css-flexbox/stretch-flex-item-radio-input.html @web-platform-tests/interop +css/css-flexbox/stretch-input-in-column.html @web-platform-tests/interop +css/css-flexbox/stretch-obeys-min-max-001.html @web-platform-tests/interop +css/css-flexbox/stretch-obeys-min-max-002.html @web-platform-tests/interop +css/css-flexbox/stretch-obeys-min-max-003.html @web-platform-tests/interop +css/css-flexbox/stretching-orthogonal-flows.html @web-platform-tests/interop +css/css-flexbox/svg-no-natural-size-grandchild.html @web-platform-tests/interop +css/css-flexbox/svg-root-as-flex-item-001.html @web-platform-tests/interop +css/css-flexbox/svg-root-as-flex-item-002.html @web-platform-tests/interop +css/css-flexbox/svg-root-as-flex-item-003.html @web-platform-tests/interop +css/css-flexbox/svg-root-as-flex-item-004.html @web-platform-tests/interop +css/css-flexbox/svg-root-as-flex-item-005.html @web-platform-tests/interop +css/css-flexbox/synthesize-vrl-baseline.html @web-platform-tests/interop +css/css-flexbox/table-as-item-auto-min-width.html @web-platform-tests/interop +css/css-flexbox/table-as-item-change-cell.html @web-platform-tests/interop +css/css-flexbox/table-as-item-fixed-min-width-2.html @web-platform-tests/interop +css/css-flexbox/table-as-item-fixed-min-width-3.html @web-platform-tests/interop +css/css-flexbox/table-as-item-fixed-min-width.html @web-platform-tests/interop +css/css-flexbox/table-as-item-flex-cross-size.html @web-platform-tests/interop +css/css-flexbox/table-as-item-inflexible-in-column-1.html @web-platform-tests/interop +css/css-flexbox/table-as-item-inflexible-in-column-2.html @web-platform-tests/interop +css/css-flexbox/table-as-item-inflexible-in-row-1.html @web-platform-tests/interop +css/css-flexbox/table-as-item-inflexible-in-row-2.html @web-platform-tests/interop +css/css-flexbox/table-as-item-large-intrinsic-size.html @web-platform-tests/interop +css/css-flexbox/table-as-item-min-content-height-1.tentative.html @web-platform-tests/interop +css/css-flexbox/table-as-item-min-content-height-2.tentative.html @web-platform-tests/interop +css/css-flexbox/table-as-item-min-height-1.html @web-platform-tests/interop +css/css-flexbox/table-as-item-narrow-content-2.html @web-platform-tests/interop +css/css-flexbox/table-as-item-narrow-content.html @web-platform-tests/interop +css/css-flexbox/table-as-item-percent-width-cell-001.html @web-platform-tests/interop +css/css-flexbox/table-as-item-specified-height.html @web-platform-tests/interop +css/css-flexbox/table-as-item-specified-width-vertical.html @web-platform-tests/interop +css/css-flexbox/table-as-item-specified-width.html @web-platform-tests/interop +css/css-flexbox/table-as-item-stretch-cross-size-2.html @web-platform-tests/interop +css/css-flexbox/table-as-item-stretch-cross-size-3.html @web-platform-tests/interop +css/css-flexbox/table-as-item-stretch-cross-size-4.html @web-platform-tests/interop +css/css-flexbox/table-as-item-stretch-cross-size-5.html @web-platform-tests/interop +css/css-flexbox/table-as-item-stretch-cross-size.html @web-platform-tests/interop +css/css-flexbox/table-as-item-wide-content.html @web-platform-tests/interop +css/css-flexbox/table-item-flex-percentage-min-width.html @web-platform-tests/interop +css/css-flexbox/table-item-flex-percentage-width.html @web-platform-tests/interop +css/css-flexbox/table-with-float-paint.html @web-platform-tests/interop +css/css-flexbox/table-with-infinite-max-intrinsic-width.html @web-platform-tests/interop +css/css-flexbox/text-overflow-on-flexbox-001.html @web-platform-tests/interop +css/css-flexbox/whitespace-in-flexitem-001.html @web-platform-tests/interop +css/css-grid/abspos/absolute-positioning-changing-containing-block-001.html @web-platform-tests/interop +css/css-grid/abspos/descendant-static-position-001.html @web-platform-tests/interop +css/css-grid/abspos/descendant-static-position-002.html @web-platform-tests/interop +css/css-grid/abspos/descendant-static-position-003.html @web-platform-tests/interop +css/css-grid/abspos/descendant-static-position-004.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-002.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-img-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-img-002.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-img-last-baseline-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-img-last-baseline-002.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-last-baseline-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-last-baseline-002.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-002.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-003.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-004.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-002.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-003.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-004.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-safe-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-002.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-003.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-004.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-last-baseline-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-last-baseline-002.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-last-baseline-003.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-last-baseline-004.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-002.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-002.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-last-baseline-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-last-baseline-002.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-last-baseline-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-last-baseline-002.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-002.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-003.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-004.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-002.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-003.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-004.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-002.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-003.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-004.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-002.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-003.html @web-platform-tests/interop +css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-004.html @web-platform-tests/interop +css/css-grid/abspos/grid-item-absolute-positioning-dynamic-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-paint-positioned-children-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-children-writing-modes-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-item-dynamic-change-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-item-dynamic-change-002.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-item-dynamic-change-003.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-item-dynamic-change-004.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-item-dynamic-change-005.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-item-dynamic-change-006.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-item-dynamic-change-007.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-items-background-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-items-background-rtl-001.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-items-001.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-items-002.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-items-003.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-items-004.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-items-005.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-items-006.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-items-007.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-items-008.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-items-009.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-items-010.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-items-011.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-items-012.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-items-013.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-items-014.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-items-015.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-items-016.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-items-017.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-descendants-017.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-001.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-002.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-003.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-004.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-005.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-006.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-007.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-008.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-009.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-010.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-011.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-012.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-013.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-014.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-015.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-016.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-017.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-018.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-019.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-020.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-021.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-022.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-023.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-024.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-025.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-negative-indices-001.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-negative-indices-002.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-negative-indices-003.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-sizing-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-005.html @web-platform-tests/interop +css/css-grid/alignment/grid-baseline-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-baseline-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-baseline-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-baseline-align-cycles-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-block-axis-alignment-auto-margins-008.html @web-platform-tests/interop +css/css-grid/alignment/grid-container-auto-margins-scrollbars-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-004.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-005.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-006.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-007.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-008.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-009.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-010.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-011.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-012.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-013.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-014.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-015.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-016.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-017.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-018.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-019.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-020.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-021.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-022.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-023.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-024.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-025.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-026.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-027.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-028.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-004.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-005.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-006.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-007.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-008.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-009.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-010.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-011.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-012.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-013.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-014.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-015.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-016.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-017.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-018.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-019.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-020.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-021.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-022.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-023.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-024.html @web-platform-tests/interop +css/css-grid/alignment/grid-gutters-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-gutters-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-gutters-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-gutters-004.html @web-platform-tests/interop +css/css-grid/alignment/grid-gutters-005.html @web-platform-tests/interop +css/css-grid/alignment/grid-gutters-006.html @web-platform-tests/interop +css/css-grid/alignment/grid-gutters-007.html @web-platform-tests/interop +css/css-grid/alignment/grid-gutters-008.html @web-platform-tests/interop +css/css-grid/alignment/grid-gutters-009.html @web-platform-tests/interop +css/css-grid/alignment/grid-gutters-010.html @web-platform-tests/interop +css/css-grid/alignment/grid-gutters-011.html @web-platform-tests/interop +css/css-grid/alignment/grid-gutters-012.html @web-platform-tests/interop +css/css-grid/alignment/grid-gutters-013.html @web-platform-tests/interop +css/css-grid/alignment/grid-gutters-014.html @web-platform-tests/interop +css/css-grid/alignment/grid-gutters-015.html @web-platform-tests/interop +css/css-grid/alignment/grid-gutters-016.html @web-platform-tests/interop +css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-008.html @web-platform-tests/interop +css/css-grid/alignment/grid-inline-baseline.html @web-platform-tests/interop +css/css-grid/alignment/grid-item-aspect-ratio-stretch-1.html @web-platform-tests/interop +css/css-grid/alignment/grid-item-aspect-ratio-stretch-2.html @web-platform-tests/interop +css/css-grid/alignment/grid-item-aspect-ratio-stretch-3.html @web-platform-tests/interop +css/css-grid/alignment/grid-item-aspect-ratio-stretch-4.html @web-platform-tests/interop +css/css-grid/alignment/grid-item-auto-margins-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-item-auto-margins-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-1.html @web-platform-tests/interop +css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-2.html @web-platform-tests/interop +css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-3.html @web-platform-tests/interop +css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4.html @web-platform-tests/interop +css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5.html @web-platform-tests/interop +css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6.html @web-platform-tests/interop +css/css-grid/alignment/grid-item-self-baseline-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-justify-baseline-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-baseline-with-grid-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-baseline-with-grid-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-baseline-with-grid-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-baseline-with-grid-004.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-input-range.html @web-platform-tests/interop +css/css-grid/alignment/replaced-alignment-with-aspect-ratio-001.html @web-platform-tests/interop +css/css-grid/alignment/replaced-alignment-with-aspect-ratio-002.html @web-platform-tests/interop +css/css-grid/alignment/replaced-alignment-with-aspect-ratio-003.tentative.html @web-platform-tests/interop +css/css-grid/alignment/replaced-alignment-with-aspect-ratio-004.html @web-platform-tests/interop +css/css-grid/alignment/replaced-alignment-with-aspect-ratio-005.html @web-platform-tests/interop +css/css-grid/alignment/replaced-alignment-with-aspect-ratio-006.html @web-platform-tests/interop +css/css-grid/alignment/replaced-alignment-with-aspect-ratio-007.html @web-platform-tests/interop +css/css-grid/alignment/replaced-alignment-with-aspect-ratio-008.html @web-platform-tests/interop +css/css-grid/alignment/replaced-alignment-with-aspect-ratio-009.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-001.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-002-b.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-002.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-003.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-004.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-005.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-006.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-007.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-008.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-001.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-002.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-003.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-004.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-005.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-006.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-007.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-008.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-009.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-010.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-011.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-012.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-001.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-002.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-003.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-004.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-005.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-006.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-007.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-001.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-002.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-003.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-004.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-005.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-006.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-007.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-001.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-002.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-003.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-004.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-005.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-006.html @web-platform-tests/interop +css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-007.html @web-platform-tests/interop +css/css-grid/animation/grid-template-columns-001.html @web-platform-tests/interop +css/css-grid/animation/grid-template-rows-001.html @web-platform-tests/interop +css/css-grid/anonymous-grid-items-001.html @web-platform-tests/interop +css/css-grid/child-border-box-and-max-content-001.html @web-platform-tests/interop +css/css-grid/child-border-box-and-max-content-002.html @web-platform-tests/interop +css/css-grid/chrome-bug-001.html @web-platform-tests/interop +css/css-grid/dynamic-grid-with-auto-fill.html @web-platform-tests/interop +css/css-grid/dynamic-grid-within-flexbox.html @web-platform-tests/interop +css/css-grid/empty-grid-within-flexbox.html @web-platform-tests/interop +css/css-grid/grid-child-percent-basis-resize-1.html @web-platform-tests/interop +css/css-grid/grid-container-baseline-synthesized-001.html @web-platform-tests/interop +css/css-grid/grid-container-baseline-synthesized-002.html @web-platform-tests/interop +css/css-grid/grid-container-baseline-synthesized-003.html @web-platform-tests/interop +css/css-grid/grid-container-baseline-synthesized-004.html @web-platform-tests/interop +css/css-grid/grid-definition/flex-item-grid-container-percentage-rows-001.html @web-platform-tests/interop +css/css-grid/grid-definition/fr-unit-with-percentage.html @web-platform-tests/interop +css/css-grid/grid-definition/fr-unit.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-repeat-aspect-ratio-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-repeat-aspect-ratio-002.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-repeat-dynamic-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-repeat-dynamic-002.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-repeat-dynamic-003.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-repeat-minmax.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-repeat-multiple-values-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-repeat-multiple-values-002.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-repeat-multiple-values-003.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-repeat-multiple-values-004.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-repeat-multiple-values-005.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-repeat-positioned-container-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-layout-auto-tracks.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-layout-basic.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-layout-repeat-notation.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-repeat-max-width-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-support-named-grid-lines-002.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-support-named-grid-lines-003.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-template-columns-fit-content-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-template-rows-fit-content-001.html @web-platform-tests/interop +css/css-grid/grid-item-non-auto-height-stretch-001.html @web-platform-tests/interop +css/css-grid/grid-item-non-auto-height-stretch-002.html @web-platform-tests/interop +css/css-grid/grid-item-non-auto-height-stretch-003.html @web-platform-tests/interop +css/css-grid/grid-item-non-auto-height-stretch-004.html @web-platform-tests/interop +css/css-grid/grid-item-percentage-quirk-001.html @web-platform-tests/interop +css/css-grid/grid-item-percentage-quirk-002.html @web-platform-tests/interop +css/css-grid/grid-items/anonymous-grid-item-001.html @web-platform-tests/interop +css/css-grid/grid-items/aspect-ratio-001.html @web-platform-tests/interop +css/css-grid/grid-items/aspect-ratio-002.html @web-platform-tests/interop +css/css-grid/grid-items/aspect-ratio-003.html @web-platform-tests/interop +css/css-grid/grid-items/aspect-ratio-004.html @web-platform-tests/interop +css/css-grid/grid-items/aspect-ratio-005.html @web-platform-tests/interop +css/css-grid/grid-items/explicitly-sized-grid-item-as-table.html @web-platform-tests/interop +css/css-grid/grid-items/grid-auto-margin-and-replaced-item-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-img-item-percent-max-height-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-items-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-items-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-items-003.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-items-inline-blocks-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-order-property-auto-placement-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-order-property-auto-placement-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-order-property-auto-placement-003.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-order-property-auto-placement-004.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-order-property-auto-placement-005.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-order-property-painting-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-order-property-painting-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-order-property-painting-003.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-order-property-painting-004.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-order-property-painting-005.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-z-axis-ordering-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-z-axis-ordering-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-z-axis-ordering-003.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-z-axis-ordering-004.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-z-axis-ordering-005.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-003.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-004.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-005.html @web-platform-tests/interop +css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-006.html @web-platform-tests/interop +css/css-grid/grid-items/grid-intrinsic-maximums.html @web-platform-tests/interop +css/css-grid/grid-items/grid-item-containing-block-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-item-containing-block-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-item-containing-block-003.html @web-platform-tests/interop +css/css-grid/grid-items/grid-item-containing-block-004.html @web-platform-tests/interop +css/css-grid/grid-items/grid-item-inline-contribution-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-item-inline-contribution-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-item-inline-contribution-003.html @web-platform-tests/interop +css/css-grid/grid-items/grid-item-margins-and-writing-modes-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-item-overflow-auto-max-height-percentage.html @web-platform-tests/interop +css/css-grid/grid-items/grid-item-percentage-sizes-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-item-percentage-sizes-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-item-percentage-sizes-003.html @web-platform-tests/interop +css/css-grid/grid-items/grid-item-rel-pos-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-item-rel-pos-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-item-script-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-003.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-contribution-negative-margins.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-inline-blocks-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-margins-003.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-margins-004.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-margins-005.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-margins-006.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-margins-007.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-margins-008.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-margins-009.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-margins-010.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-margins-011.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-margins-012.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-margins-013.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-margins-014.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-paddings-003.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-paddings-004.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-paddings-005.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-paddings-006.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-paddings-007.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-paddings-008.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-paddings-009.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-paddings-010.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-paddings-011.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-paddings-012.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-paddings-013.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-paddings-014.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-sizing-alignment-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-layout-grid-in-grid.html @web-platform-tests/interop +css/css-grid/grid-items/grid-layout-z-order-a.html @web-platform-tests/interop +css/css-grid/grid-items/grid-layout-z-order-b.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-003.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-004.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-005.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-006.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-007.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-008.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-009.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-010.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-011.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-012.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-013.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-014.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-015.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-016.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-017.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-018.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-019.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-020.html @web-platform-tests/interop +css/css-grid/grid-items/grid-order-property-auto-placement-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-order-property-auto-placement-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-order-property-auto-placement-003.html @web-platform-tests/interop +css/css-grid/grid-items/grid-order-property-auto-placement-004.html @web-platform-tests/interop +css/css-grid/grid-items/grid-order-property-auto-placement-005.html @web-platform-tests/interop +css/css-grid/grid-items/grid-order-property-painting-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-order-property-painting-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-order-property-painting-003.html @web-platform-tests/interop +css/css-grid/grid-items/grid-order-property-painting-004.html @web-platform-tests/interop +css/css-grid/grid-items/grid-order-property-painting-005.html @web-platform-tests/interop +css/css-grid/grid-items/grid-size-with-orthogonal-child-dynamic.html @web-platform-tests/interop +css/css-grid/grid-items/grid-z-axis-ordering-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-z-axis-ordering-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-z-axis-ordering-003.html @web-platform-tests/interop +css/css-grid/grid-items/grid-z-axis-ordering-004.html @web-platform-tests/interop +css/css-grid/grid-items/grid-z-axis-ordering-005.html @web-platform-tests/interop +css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-003.html @web-platform-tests/interop +css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-004.html @web-platform-tests/interop +css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-005.html @web-platform-tests/interop +css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-006.html @web-platform-tests/interop +css/css-grid/grid-items/item-with-table-with-infinite-max-intrinsic-width.html @web-platform-tests/interop +css/css-grid/grid-items/percentage-margin-dynamic.html @web-platform-tests/interop +css/css-grid/grid-items/percentage-size-indefinite-replaced.html @web-platform-tests/interop +css/css-grid/grid-items/percentage-size-replaced-subitems-001.html @web-platform-tests/interop +css/css-grid/grid-items/percentage-size-subitems-001.html @web-platform-tests/interop +css/css-grid/grid-items/percentage-size-subitems-002.html @web-platform-tests/interop +css/css-grid/grid-items/remove-svg-grid-item-001.html @web-platform-tests/interop +css/css-grid/grid-items/replaced-element-001.html @web-platform-tests/interop +css/css-grid/grid-items/replaced-element-002.html @web-platform-tests/interop +css/css-grid/grid-items/replaced-element-007.html @web-platform-tests/interop +css/css-grid/grid-items/replaced-element-010.html @web-platform-tests/interop +css/css-grid/grid-items/replaced-element-011.html @web-platform-tests/interop +css/css-grid/grid-items/replaced-element-012.html @web-platform-tests/interop +css/css-grid/grid-items/replaced-element-013.html @web-platform-tests/interop +css/css-grid/grid-items/replaced-element-014.html @web-platform-tests/interop +css/css-grid/grid-items/replaced-element-015.html @web-platform-tests/interop +css/css-grid/grid-items/table-with-infinite-max-intrinsic-width.html @web-platform-tests/interop +css/css-grid/grid-items/whitespace-in-grid-item-001.html @web-platform-tests/interop +css/css-grid/grid-model/column-property-should-not-apply-on-grid-container-001.html @web-platform-tests/interop +css/css-grid/grid-model/display-grid.html @web-platform-tests/interop +css/css-grid/grid-model/display-inline-grid.html @web-platform-tests/interop +css/css-grid/grid-model/grid-areas-overflowing-grid-container-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-areas-overflowing-grid-container-002.html @web-platform-tests/interop +css/css-grid/grid-model/grid-areas-overflowing-grid-container-003.html @web-platform-tests/interop +css/css-grid/grid-model/grid-areas-overflowing-grid-container-004.html @web-platform-tests/interop +css/css-grid/grid-model/grid-areas-overflowing-grid-container-005.html @web-platform-tests/interop +css/css-grid/grid-model/grid-areas-overflowing-grid-container-006.html @web-platform-tests/interop +css/css-grid/grid-model/grid-areas-overflowing-grid-container-007.html @web-platform-tests/interop +css/css-grid/grid-model/grid-areas-overflowing-grid-container-008.html @web-platform-tests/interop +css/css-grid/grid-model/grid-areas-overflowing-grid-container-009.html @web-platform-tests/interop +css/css-grid/grid-model/grid-container-ignores-first-letter-002.html @web-platform-tests/interop +css/css-grid/grid-model/grid-container-scrollbar-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-container-scrollbar-vertical-lr-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-container-scrollbar-vertical-rl-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-container-scrollbars-sizing-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-container-scrollbars-sizing-002.html @web-platform-tests/interop +css/css-grid/grid-model/grid-display-grid-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-display-inline-grid-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-first-letter-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-first-letter-002.html @web-platform-tests/interop +css/css-grid/grid-model/grid-first-letter-003.html @web-platform-tests/interop +css/css-grid/grid-model/grid-first-line-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-first-line-002.html @web-platform-tests/interop +css/css-grid/grid-model/grid-first-line-003.html @web-platform-tests/interop +css/css-grid/grid-model/grid-float-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-floats-no-intrude-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-floats-no-intrude-002.html @web-platform-tests/interop +css/css-grid/grid-model/grid-inline-first-letter-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-inline-first-letter-002.html @web-platform-tests/interop +css/css-grid/grid-model/grid-inline-first-letter-003.html @web-platform-tests/interop +css/css-grid/grid-model/grid-inline-first-line-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-inline-first-line-002.html @web-platform-tests/interop +css/css-grid/grid-model/grid-inline-first-line-003.html @web-platform-tests/interop +css/css-grid/grid-model/grid-inline-float-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-inline-floats-no-intrude-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-inline-margins-no-collapse-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-inline-multicol-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-inline-vertical-align-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-layout-stale-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-layout-stale-002.html @web-platform-tests/interop +css/css-grid/grid-model/grid-margins-no-collapse-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-margins-no-collapse-002.html @web-platform-tests/interop +css/css-grid/grid-model/grid-multicol-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-overflow-padding-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-overflow-padding-002.html @web-platform-tests/interop +css/css-grid/grid-model/grid-vertical-align-001.html @web-platform-tests/interop +css/css-grid/grid-with-content-dynamic-display-001.html @web-platform-tests/interop +css/css-grid/grid-with-content-dynamic-display-002.html @web-platform-tests/interop +css/css-grid/grid-with-dynamic-img.html @web-platform-tests/interop +css/css-grid/grid-with-orthogonal-child-within-flexbox.html @web-platform-tests/interop +css/css-grid/grid-within-flexbox-definite-change.html @web-platform-tests/interop +css/css-grid/grid-within-flexbox-indefinite.html @web-platform-tests/interop +css/css-grid/implicit-grids/grid-support-grid-auto-columns-rows-001.html @web-platform-tests/interop +css/css-grid/implicit-grids/grid-support-grid-auto-columns-rows-002.html @web-platform-tests/interop +css/css-grid/implicit-grids/grid-support-grid-auto-columns-rows-003.html @web-platform-tests/interop +css/css-grid/layout-algorithm/auto-margins-ignored-during-track-sizing-001.html @web-platform-tests/interop +css/css-grid/layout-algorithm/flex-and-intrinsic-sizes-002.html @web-platform-tests/interop +css/css-grid/layout-algorithm/flex-sizing-rows-indefinite-height.html @web-platform-tests/interop +css/css-grid/layout-algorithm/flex-tracks-with-fractional-size.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-001.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-002.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-003.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-004.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-005.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-006.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-007.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-008.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-find-fr-size-restart-algorithm.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-intrinsic-size-dynamic-block-size.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-layout-free-space-unit.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-percent-cols-filled-shrinkwrap-001.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-percent-cols-spanned-shrinkwrap-001.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-percent-rows-filled-shrinkwrap-001.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-percent-rows-spanned-shrinkwrap-001.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-stretch-respects-min-size-001.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-template-flexible-rerun-track-sizing.html @web-platform-tests/interop +css/css-grid/nested-grid-item-block-size-001.html @web-platform-tests/interop +css/css-grid/placement/grid-layout-grid-span.html @web-platform-tests/interop +css/css-grid/placement/grid-layout-lines-shorthands.html @web-platform-tests/interop +css/css-grid/placement/grid-layout-lines.html @web-platform-tests/interop +css/css-grid/placement/grid-layout-placement-shorthands.html @web-platform-tests/interop +css/css-grid/placement/grid-placement-items-spanning-multiple-rows-001.html @web-platform-tests/interop +css/css-grid/placement/grid-placement-items-spanning-multiple-rows-002.html @web-platform-tests/interop +css/css-grid/placement/grid-placement-using-named-grid-lines-001.html @web-platform-tests/interop +css/css-grid/placement/grid-placement-using-named-grid-lines-002.html @web-platform-tests/interop +css/css-grid/placement/grid-placement-using-named-grid-lines-003.html @web-platform-tests/interop +css/css-grid/placement/grid-placement-using-named-grid-lines-004.html @web-platform-tests/interop +css/css-grid/placement/grid-placement-using-named-grid-lines-005.html @web-platform-tests/interop +css/css-grid/placement/grid-placement-using-named-grid-lines-006.html @web-platform-tests/interop +css/css-grid/placement/grid-placement-using-named-grid-lines-007.html @web-platform-tests/interop +css/css-grid/placement/grid-placement-using-named-grid-lines-008.html @web-platform-tests/interop +css/css-grid/placement/grid-placement-using-named-grid-lines-009.html @web-platform-tests/interop +css/css-grid/placement/grid-template-areas-must-keep-named-columns-order-001.html @web-platform-tests/interop +css/css-grid/relative-grandchild.html @web-platform-tests/interop +css/css-grid/stretch-grid-item-checkbox-input.html @web-platform-tests/interop +css/css-grid/stretch-grid-item-radio-input.html @web-platform-tests/interop +css/css-grid/subgrid/abs-pos-001.html @web-platform-tests/interop +css/css-grid/subgrid/abs-pos-002.html @web-platform-tests/interop +css/css-grid/subgrid/auto-track-sizing-001.html @web-platform-tests/interop +css/css-grid/subgrid/auto-track-sizing-002.html @web-platform-tests/interop +css/css-grid/subgrid/auto-track-sizing-003.html @web-platform-tests/interop +css/css-grid/subgrid/baseline-001.html @web-platform-tests/interop +css/css-grid/subgrid/contribution-size-flex-tracks-001.html @web-platform-tests/interop +css/css-grid/subgrid/grid-gap-001.html @web-platform-tests/interop +css/css-grid/subgrid/grid-gap-002.html @web-platform-tests/interop +css/css-grid/subgrid/grid-gap-003.html @web-platform-tests/interop +css/css-grid/subgrid/grid-gap-004.html @web-platform-tests/interop +css/css-grid/subgrid/grid-gap-005.html @web-platform-tests/interop +css/css-grid/subgrid/grid-gap-006.html @web-platform-tests/interop +css/css-grid/subgrid/grid-gap-007.html @web-platform-tests/interop +css/css-grid/subgrid/grid-gap-008.html @web-platform-tests/interop +css/css-grid/subgrid/grid-gap-009.html @web-platform-tests/interop +css/css-grid/subgrid/grid-gap-010.html @web-platform-tests/interop +css/css-grid/subgrid/grid-gap-011.html @web-platform-tests/interop +css/css-grid/subgrid/grid-gap-larger-001.html @web-platform-tests/interop +css/css-grid/subgrid/grid-gap-larger-002.html @web-platform-tests/interop +css/css-grid/subgrid/grid-gap-normal-001.html @web-platform-tests/interop +css/css-grid/subgrid/grid-gap-smaller-001.html @web-platform-tests/interop +css/css-grid/subgrid/independent-formatting-context.html @web-platform-tests/interop +css/css-grid/subgrid/item-percentage-height-001.html @web-platform-tests/interop +css/css-grid/subgrid/line-names-001.html @web-platform-tests/interop +css/css-grid/subgrid/line-names-002.html @web-platform-tests/interop +css/css-grid/subgrid/line-names-003.html @web-platform-tests/interop +css/css-grid/subgrid/line-names-004.html @web-platform-tests/interop +css/css-grid/subgrid/line-names-005.html @web-platform-tests/interop +css/css-grid/subgrid/line-names-006.html @web-platform-tests/interop +css/css-grid/subgrid/line-names-007.html @web-platform-tests/interop +css/css-grid/subgrid/line-names-008.html @web-platform-tests/interop +css/css-grid/subgrid/line-names-009.html @web-platform-tests/interop +css/css-grid/subgrid/line-names-010.html @web-platform-tests/interop +css/css-grid/subgrid/line-names-011.html @web-platform-tests/interop +css/css-grid/subgrid/line-names-012.html @web-platform-tests/interop +css/css-grid/subgrid/orthogonal-writing-mode-001.html @web-platform-tests/interop +css/css-grid/subgrid/orthogonal-writing-mode-002.html @web-platform-tests/interop +css/css-grid/subgrid/orthogonal-writing-mode-003.html @web-platform-tests/interop +css/css-grid/subgrid/orthogonal-writing-mode-004.html @web-platform-tests/interop +css/css-grid/subgrid/orthogonal-writing-mode-005.html @web-platform-tests/interop +css/css-grid/subgrid/orthogonal-writing-mode-006.html @web-platform-tests/interop +css/css-grid/subgrid/parent-repeat-auto-fit-001.html @web-platform-tests/interop +css/css-grid/subgrid/parent-repeat-auto-fit-002.html @web-platform-tests/interop +css/css-grid/subgrid/placement-implicit-001.html @web-platform-tests/interop +css/css-grid/subgrid/repeat-auto-fill-001.html @web-platform-tests/interop +css/css-grid/subgrid/repeat-auto-fill-002.html @web-platform-tests/interop +css/css-grid/subgrid/repeat-auto-fill-003.html @web-platform-tests/interop +css/css-grid/subgrid/repeat-auto-fill-004.html @web-platform-tests/interop +css/css-grid/subgrid/repeat-auto-fill-005.html @web-platform-tests/interop +css/css-grid/subgrid/repeat-auto-fill-006.html @web-platform-tests/interop +css/css-grid/subgrid/repeat-auto-fill-007.html @web-platform-tests/interop +css/css-grid/subgrid/repeat-auto-fill-008.html @web-platform-tests/interop +css/css-grid/subgrid/subgrid-baseline-001.html @web-platform-tests/interop +css/css-grid/subgrid/subgrid-baseline-002.html @web-platform-tests/interop +css/css-grid/subgrid/subgrid-baseline-003.html @web-platform-tests/interop +css/css-grid/subgrid/subgrid-baseline-004.html @web-platform-tests/interop +css/css-grid/subgrid/subgrid-item-block-size-001.html @web-platform-tests/interop +css/css-grid/subgrid/subgrid-no-items-on-edges-001.html @web-platform-tests/interop +css/css-grid/subgrid/subgrid-no-items-on-edges-002.html @web-platform-tests/interop +css/css-grid/subgrid/subgrid-stretch.html @web-platform-tests/interop +css/css-grid/subgrid/writing-directions-001.html @web-platform-tests/interop +css/css-grid/subgrid/writing-directions-002.html @web-platform-tests/interop +css/css-grid/subgrid/writing-directions-003.html @web-platform-tests/interop +css/css-grid/table-grid-item-dynamic-001.html @web-platform-tests/interop +css/css-grid/table-grid-item-dynamic-002.html @web-platform-tests/interop +css/css-grid/table-grid-item-dynamic-003.html @web-platform-tests/interop +css/css-grid/table-grid-item-dynamic-004.html @web-platform-tests/interop +css/css-grid/whitespace-reattach.html @web-platform-tests/interop +css/css-lists/list-style-position-001.html @web-platform-tests/interop +css/css-multicol/multicol-span-all-rule-002.html @web-platform-tests/interop +css/css-shapes/shape-outside/shape-box/shape-outside-border-box-border-radius-009.html @web-platform-tests/interop +css/css-shapes/shape-outside/shape-box/shape-outside-border-box-border-radius-010.html @web-platform-tests/interop +css/css-shapes/shape-outside/shape-box/shape-outside-border-box-border-radius-011.html @web-platform-tests/interop +css/css-shapes/shape-outside/shape-box/shape-outside-border-box-border-radius-012.html @web-platform-tests/interop +css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-007.html @web-platform-tests/interop +css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-008.html @web-platform-tests/interop +css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-013.html @web-platform-tests/interop +css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-014.html @web-platform-tests/interop +css/css-shapes/shape-outside/supported-shapes/circle/shape-outside-circle-052.html @web-platform-tests/interop +css/css-shapes/shape-outside/supported-shapes/circle/shape-outside-circle-053.html @web-platform-tests/interop +css/css-shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-050.html @web-platform-tests/interop +css/css-shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-051.html @web-platform-tests/interop +css/css-shapes/shape-outside/supported-shapes/inset/shape-outside-inset-026.html @web-platform-tests/interop +css/css-shapes/shape-outside/supported-shapes/inset/shape-outside-inset-027.html @web-platform-tests/interop +css/css-shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-024.html @web-platform-tests/interop +css/css-shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-025.html @web-platform-tests/interop +css/css-text-decor/text-decoration-skip-ink-sidewayslr-001.html @web-platform-tests/interop +css/css-text-decor/text-decoration-skip-ink-sidewayslr-002.html @web-platform-tests/interop +css/css-text-decor/text-decoration-skip-ink-sidewaysrl-001.html @web-platform-tests/interop +css/css-text-decor/text-decoration-skip-ink-sidewaysrl-002.html @web-platform-tests/interop +css/css-text-decor/text-underline-offset-vertical-002.html @web-platform-tests/interop +css/css-text-decor/text-underline-position-001a.html @web-platform-tests/interop +css/css-text-decor/text-underline-position-001b.html @web-platform-tests/interop +css/css-ui/compute-kind-widget-generated/grouped-kind-of-widget-fallback-background-attachment-001.html @web-platform-tests/interop +css/css-ui/compute-kind-widget-generated/grouped-kind-of-widget-fallback-background-color-001.html @web-platform-tests/interop +css/css-ui/compute-kind-widget-generated/grouped-kind-of-widget-fallback-border-block-start-color-001.html @web-platform-tests/interop +css/css-ui/compute-kind-widget-generated/grouped-kind-of-widget-fallback-border-block-start-style-001.html @web-platform-tests/interop +css/css-ui/compute-kind-widget-generated/grouped-kind-of-widget-fallback-border-block-start-width-001.html @web-platform-tests/interop +css/css-ui/compute-kind-widget-generated/grouped-kind-of-widget-fallback-border-image-source-001.html @web-platform-tests/interop +css/css-ui/compute-kind-widget-generated/grouped-kind-of-widget-fallback-border-top-color-001.html @web-platform-tests/interop +css/css-ui/compute-kind-widget-generated/grouped-kind-of-widget-fallback-border-top-left-radius-001.html @web-platform-tests/interop +css/css-ui/compute-kind-widget-generated/grouped-kind-of-widget-fallback-border-top-style-001.html @web-platform-tests/interop +css/css-ui/compute-kind-widget-generated/grouped-kind-of-widget-fallback-border-top-width-001.html @web-platform-tests/interop +css/css-view-transitions/3d-transform-incoming.html @web-platform-tests/interop +css/css-view-transitions/3d-transform-outgoing.html @web-platform-tests/interop +css/css-view-transitions/active-view-transition-on-non-root.html @web-platform-tests/interop +css/css-view-transitions/active-view-transition-pseudo-class-match.html @web-platform-tests/interop +css/css-view-transitions/active-view-transition-type-on-non-root.html @web-platform-tests/interop +css/css-view-transitions/animating-new-content-subset.html @web-platform-tests/interop +css/css-view-transitions/animating-new-content.html @web-platform-tests/interop +css/css-view-transitions/auto-name-from-id-shadow.html @web-platform-tests/interop +css/css-view-transitions/auto-name-from-id.html @web-platform-tests/interop +css/css-view-transitions/auto-name.html @web-platform-tests/interop +css/css-view-transitions/backdrop-filter-animated.html @web-platform-tests/interop +css/css-view-transitions/backdrop-filter-captured.html @web-platform-tests/interop +css/css-view-transitions/block-with-overflowing-text.html @web-platform-tests/interop +css/css-view-transitions/break-inside-avoid-child.html @web-platform-tests/interop +css/css-view-transitions/capture-old-state-error-flag-cleanup.html @web-platform-tests/interop +css/css-view-transitions/capture-with-offscreen-child-translated.html @web-platform-tests/interop +css/css-view-transitions/capture-with-offscreen-child.html @web-platform-tests/interop +css/css-view-transitions/capture-with-opacity-zero-child.html @web-platform-tests/interop +css/css-view-transitions/capture-with-visibility-hidden-child.html @web-platform-tests/interop +css/css-view-transitions/capture-with-visibility-mixed-descendants.html @web-platform-tests/interop +css/css-view-transitions/class-specificity.html @web-platform-tests/interop +css/css-view-transitions/clip-path-larger-than-border-box-on-child-of-named-element.html @web-platform-tests/interop +css/css-view-transitions/content-smaller-than-box-size.html @web-platform-tests/interop +css/css-view-transitions/content-visibility-auto-shared-element.html @web-platform-tests/interop +css/css-view-transitions/content-with-child-with-transparent-background.html @web-platform-tests/interop +css/css-view-transitions/content-with-clip-root.html @web-platform-tests/interop +css/css-view-transitions/content-with-clip.html @web-platform-tests/interop +css/css-view-transitions/content-with-inline-child.html @web-platform-tests/interop +css/css-view-transitions/content-with-transform-new-image.html @web-platform-tests/interop +css/css-view-transitions/content-with-transform-old-image.html @web-platform-tests/interop +css/css-view-transitions/content-with-transparent-background.html @web-platform-tests/interop +css/css-view-transitions/css-tags-paint-order-with-entry.html @web-platform-tests/interop +css/css-view-transitions/css-tags-paint-order.html @web-platform-tests/interop +css/css-view-transitions/css-tags-shared-element.html @web-platform-tests/interop +css/css-view-transitions/dialog-in-rtl-iframe.html @web-platform-tests/interop +css/css-view-transitions/dialog-in-top-layer-during-transition-new.html @web-platform-tests/interop +css/css-view-transitions/dialog-in-top-layer-during-transition-old.html @web-platform-tests/interop +css/css-view-transitions/element-is-grouping-during-animation.html @web-platform-tests/interop +css/css-view-transitions/element-stops-grouping-after-animation.html @web-platform-tests/interop +css/css-view-transitions/element-with-overflow.html @web-platform-tests/interop +css/css-view-transitions/exit-transition-with-anonymous-layout-object.html @web-platform-tests/interop +css/css-view-transitions/far-away-capture.html @web-platform-tests/interop +css/css-view-transitions/fractional-box-new.html @web-platform-tests/interop +css/css-view-transitions/fractional-box-old.html @web-platform-tests/interop +css/css-view-transitions/fractional-box-with-overflow-children-new.html @web-platform-tests/interop +css/css-view-transitions/fractional-box-with-overflow-children-old.html @web-platform-tests/interop +css/css-view-transitions/fractional-box-with-shadow-new.html @web-platform-tests/interop +css/css-view-transitions/fractional-box-with-shadow-old.html @web-platform-tests/interop +css/css-view-transitions/fractional-translation-from-position.html @web-platform-tests/interop +css/css-view-transitions/fractional-translation-from-transform.html @web-platform-tests/interop +css/css-view-transitions/fragmented-at-start-ignored.html @web-platform-tests/interop +css/css-view-transitions/fragmented-during-transition-skips.html @web-platform-tests/interop +css/css-view-transitions/hit-test-unpainted-element.html @web-platform-tests/interop +css/css-view-transitions/hit-test-unrelated-element.html @web-platform-tests/interop +css/css-view-transitions/iframe-and-main-frame-transition-new-main-new-iframe.html @web-platform-tests/interop +css/css-view-transitions/iframe-and-main-frame-transition-new-main-old-iframe.html @web-platform-tests/interop +css/css-view-transitions/iframe-and-main-frame-transition-old-main-new-iframe.html @web-platform-tests/interop +css/css-view-transitions/iframe-and-main-frame-transition-old-main-old-iframe.html @web-platform-tests/interop +css/css-view-transitions/iframe-and-main-frame-transition-old-main.html @web-platform-tests/interop +css/css-view-transitions/iframe-and-main-frame-transition-with-name-on-iframe.html @web-platform-tests/interop +css/css-view-transitions/iframe-new-has-scrollbar.html @web-platform-tests/interop +css/css-view-transitions/iframe-old-has-scrollbar.html @web-platform-tests/interop +css/css-view-transitions/iframe-transition.sub.html @web-platform-tests/interop +css/css-view-transitions/inline-child-with-filter.html @web-platform-tests/interop +css/css-view-transitions/inline-child-with-overflow-shadow.html @web-platform-tests/interop +css/css-view-transitions/inline-element-size.html @web-platform-tests/interop +css/css-view-transitions/inline-with-offset-from-containing-block.html @web-platform-tests/interop +css/css-view-transitions/japanese-tag.html @web-platform-tests/interop +css/css-view-transitions/massive-element-below-and-on-top-of-viewport-partially-onscreen-new.html @web-platform-tests/interop +css/css-view-transitions/massive-element-below-and-on-top-of-viewport-partially-onscreen-old.html @web-platform-tests/interop +css/css-view-transitions/massive-element-below-viewport-offscreen-new.html @web-platform-tests/interop +css/css-view-transitions/massive-element-below-viewport-offscreen-old.html @web-platform-tests/interop +css/css-view-transitions/massive-element-below-viewport-partially-onscreen-new.html @web-platform-tests/interop +css/css-view-transitions/massive-element-below-viewport-partially-onscreen-old.html @web-platform-tests/interop +css/css-view-transitions/massive-element-left-of-viewport-offscreen-new.html @web-platform-tests/interop +css/css-view-transitions/massive-element-left-of-viewport-offscreen-old.html @web-platform-tests/interop +css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-new.html @web-platform-tests/interop +css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-old.html @web-platform-tests/interop +css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-new.html @web-platform-tests/interop +css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-old.html @web-platform-tests/interop +css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-new.html @web-platform-tests/interop +css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-old.html @web-platform-tests/interop +css/css-view-transitions/massive-element-right-and-left-of-viewport-partially-onscreen-new.html @web-platform-tests/interop +css/css-view-transitions/massive-element-right-and-left-of-viewport-partially-onscreen-old.html @web-platform-tests/interop +css/css-view-transitions/massive-element-right-of-viewport-offscreen-new.html @web-platform-tests/interop +css/css-view-transitions/massive-element-right-of-viewport-offscreen-old.html @web-platform-tests/interop +css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-new.html @web-platform-tests/interop +css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-old.html @web-platform-tests/interop +css/css-view-transitions/match-element-name.html @web-platform-tests/interop +css/css-view-transitions/modify-style-via-cssom.html @web-platform-tests/interop +css/css-view-transitions/multiline-span-with-overflowing-text-and-box-decorations.html @web-platform-tests/interop +css/css-view-transitions/named-element-with-fix-pos-child-new.html @web-platform-tests/interop +css/css-view-transitions/named-element-with-fix-pos-child-old.html @web-platform-tests/interop +css/css-view-transitions/names-are-tree-scoped.html @web-platform-tests/interop +css/css-view-transitions/nested-elements-in-overflow.html @web-platform-tests/interop +css/css-view-transitions/new-and-old-sizes-match.html @web-platform-tests/interop +css/css-view-transitions/new-content-ancestor-clipped-2.html @web-platform-tests/interop +css/css-view-transitions/new-content-ancestor-clipped.html @web-platform-tests/interop +css/css-view-transitions/new-content-captures-clip-path.html @web-platform-tests/interop +css/css-view-transitions/new-content-captures-different-size.html @web-platform-tests/interop +css/css-view-transitions/new-content-captures-opacity.html @web-platform-tests/interop +css/css-view-transitions/new-content-captures-positioned-spans.html @web-platform-tests/interop +css/css-view-transitions/new-content-captures-root.html @web-platform-tests/interop +css/css-view-transitions/new-content-captures-spans.html @web-platform-tests/interop +css/css-view-transitions/new-content-changes-overflow-left.html @web-platform-tests/interop +css/css-view-transitions/new-content-changes-overflow.html @web-platform-tests/interop +css/css-view-transitions/new-content-container-writing-modes.html @web-platform-tests/interop +css/css-view-transitions/new-content-element-writing-modes.html @web-platform-tests/interop +css/css-view-transitions/new-content-escapes-clip-with-abspos-child.html @web-platform-tests/interop +css/css-view-transitions/new-content-flat-transform-ancestor.html @web-platform-tests/interop +css/css-view-transitions/new-content-from-root-display-none.html @web-platform-tests/interop +css/css-view-transitions/new-content-has-scrollbars.html @web-platform-tests/interop +css/css-view-transitions/new-content-inline-with-offset-from-containing-block-clipped.html @web-platform-tests/interop +css/css-view-transitions/new-content-intrinsic-aspect-ratio.html @web-platform-tests/interop +css/css-view-transitions/new-content-is-empty-div.html @web-platform-tests/interop +css/css-view-transitions/new-content-is-inline.html @web-platform-tests/interop +css/css-view-transitions/new-content-object-fit-fill.html @web-platform-tests/interop +css/css-view-transitions/new-content-object-fit-none.html @web-platform-tests/interop +css/css-view-transitions/new-content-preserve-3d-ancestor.html @web-platform-tests/interop +css/css-view-transitions/new-content-root-scrollbar-with-fixed-background.html @web-platform-tests/interop +css/css-view-transitions/new-content-scaling.html @web-platform-tests/interop +css/css-view-transitions/new-content-transform-position-fixed.html @web-platform-tests/interop +css/css-view-transitions/new-content-with-overflow-zoomed.html @web-platform-tests/interop +css/css-view-transitions/new-content-with-overflow.html @web-platform-tests/interop +css/css-view-transitions/new-element-on-start.html @web-platform-tests/interop +css/css-view-transitions/new-root-vertical-writing-mode.html @web-platform-tests/interop +css/css-view-transitions/no-named-elements.html @web-platform-tests/interop +css/css-view-transitions/no-painting-while-render-blocked.html @web-platform-tests/interop +css/css-view-transitions/no-root-capture.html @web-platform-tests/interop +css/css-view-transitions/no-white-flash-before-activation.html @web-platform-tests/interop +css/css-view-transitions/nothing-captured.html @web-platform-tests/interop +css/css-view-transitions/offscreen-element-modified-before-coming-onscreen.html @web-platform-tests/interop +css/css-view-transitions/old-content-captures-clip-path.html @web-platform-tests/interop +css/css-view-transitions/old-content-captures-different-size.html @web-platform-tests/interop +css/css-view-transitions/old-content-captures-opacity.html @web-platform-tests/interop +css/css-view-transitions/old-content-captures-root.html @web-platform-tests/interop +css/css-view-transitions/old-content-container-writing-modes.html @web-platform-tests/interop +css/css-view-transitions/old-content-element-writing-modes.html @web-platform-tests/interop +css/css-view-transitions/old-content-escapes-clip-with-abspos-child.html @web-platform-tests/interop +css/css-view-transitions/old-content-has-scrollbars.html @web-platform-tests/interop +css/css-view-transitions/old-content-inline-with-offset-from-containing-block-clipped.html @web-platform-tests/interop +css/css-view-transitions/old-content-intrinsic-aspect-ratio.html @web-platform-tests/interop +css/css-view-transitions/old-content-is-empty-div.html @web-platform-tests/interop +css/css-view-transitions/old-content-is-inline.html @web-platform-tests/interop +css/css-view-transitions/old-content-object-fit-fill.html @web-platform-tests/interop +css/css-view-transitions/old-content-object-fit-none.html @web-platform-tests/interop +css/css-view-transitions/old-content-root-scrollbar-with-fixed-background.html @web-platform-tests/interop +css/css-view-transitions/old-content-with-overflow-zoomed.html @web-platform-tests/interop +css/css-view-transitions/old-content-with-overflow.html @web-platform-tests/interop +css/css-view-transitions/old-root-vertical-writing-mode.html @web-platform-tests/interop +css/css-view-transitions/outer-padding-inner-background.html @web-platform-tests/interop +css/css-view-transitions/paint-holding-in-iframe.html @web-platform-tests/interop +css/css-view-transitions/pseudo-element-overflow-hidden.html @web-platform-tests/interop +css/css-view-transitions/pseudo-element-preserve-3d.html @web-platform-tests/interop +css/css-view-transitions/pseudo-rendering-invalidation.html @web-platform-tests/interop +css/css-view-transitions/pseudo-with-classes-entry.html @web-platform-tests/interop +css/css-view-transitions/pseudo-with-classes-exit.html @web-platform-tests/interop +css/css-view-transitions/pseudo-with-classes-match-ident.html @web-platform-tests/interop +css/css-view-transitions/pseudo-with-classes-match-multiple-wildcard.html @web-platform-tests/interop +css/css-view-transitions/pseudo-with-classes-match-multiple.html @web-platform-tests/interop +css/css-view-transitions/pseudo-with-classes-match-wildcard-no-star.html @web-platform-tests/interop +css/css-view-transitions/pseudo-with-classes-match-wildcard.html @web-platform-tests/interop +css/css-view-transitions/pseudo-with-classes-mismatch-ident.html @web-platform-tests/interop +css/css-view-transitions/pseudo-with-classes-mismatch-partial.html @web-platform-tests/interop +css/css-view-transitions/pseudo-with-classes-mismatch-wildcard.html @web-platform-tests/interop +css/css-view-transitions/pseudo-with-classes-multiple-vt-classes.html @web-platform-tests/interop +css/css-view-transitions/pseudo-with-classes-new-with-class-old-without.html @web-platform-tests/interop +css/css-view-transitions/pseudo-with-classes-old-with-class-new-without.html @web-platform-tests/interop +css/css-view-transitions/pseudo-with-classes-view-transition-group.html @web-platform-tests/interop +css/css-view-transitions/pseudo-with-classes-view-transition-image-pair.html @web-platform-tests/interop +css/css-view-transitions/reset-state-after-scrolled-view-transition.html @web-platform-tests/interop +css/css-view-transitions/root-captured-as-different-tag.html @web-platform-tests/interop +css/css-view-transitions/root-style-change-during-animation.html @web-platform-tests/interop +css/css-view-transitions/root-to-shared-animation-end.html @web-platform-tests/interop +css/css-view-transitions/root-to-shared-animation-incoming.html @web-platform-tests/interop +css/css-view-transitions/root-to-shared-animation-start.html @web-platform-tests/interop +css/css-view-transitions/rotated-cat-off-top-edge.html @web-platform-tests/interop +css/css-view-transitions/rtl-with-scrollbar.html @web-platform-tests/interop +css/css-view-transitions/scroller-child-abspos.html @web-platform-tests/interop +css/css-view-transitions/scroller-child.html @web-platform-tests/interop +css/css-view-transitions/scroller.html @web-platform-tests/interop +css/css-view-transitions/set-current-time-transform.html @web-platform-tests/interop +css/css-view-transitions/set-current-time.html @web-platform-tests/interop +css/css-view-transitions/set-universal-specificity.html @web-platform-tests/interop +css/css-view-transitions/shadow-part-with-class-inside-shadow-important.html @web-platform-tests/interop +css/css-view-transitions/shadow-part-with-class-inside-shadow.html @web-platform-tests/interop +css/css-view-transitions/shadow-part-with-class.html @web-platform-tests/interop +css/css-view-transitions/shadow-part-with-name-nested.html @web-platform-tests/interop +css/css-view-transitions/shadow-part-with-name-overridden-by-important.html @web-platform-tests/interop +css/css-view-transitions/shadow-part-with-name.html @web-platform-tests/interop +css/css-view-transitions/sibling-frames-transition.html @web-platform-tests/interop +css/css-view-transitions/snapshot-containing-block-absolute.html @web-platform-tests/interop +css/css-view-transitions/snapshot-containing-block-includes-scrollbar-gutter.html @web-platform-tests/interop +css/css-view-transitions/snapshot-containing-block-static.html @web-platform-tests/interop +css/css-view-transitions/span-with-overflowing-text-and-box-decorations.html @web-platform-tests/interop +css/css-view-transitions/span-with-overflowing-text-hidden.html @web-platform-tests/interop +css/css-view-transitions/span-with-overflowing-text.html @web-platform-tests/interop +css/css-view-transitions/transform-origin-view-transition-group.html @web-platform-tests/interop +css/css-view-transitions/transformed-element-scroll-transform.html @web-platform-tests/interop +css/css-view-transitions/transition-in-empty-iframe.html @web-platform-tests/interop +css/css-view-transitions/update-callback-called-once.html @web-platform-tests/interop +css/css-view-transitions/view-transition-name-is-backdrop-filter-root.html @web-platform-tests/interop +css/css-view-transitions/view-transition-name-is-grouping.html @web-platform-tests/interop +css/css-view-transitions/view-transition-name-on-document-root.html @web-platform-tests/interop +css/css-view-transitions/view-transition-name-removed-mid-transition.html @web-platform-tests/interop +css/css-view-transitions/web-animations-api-parse-pseudo-argument.html @web-platform-tests/interop +css/css-view-transitions/web-animations-api.html @web-platform-tests/interop +css/css-view-transitions/writing-mode-container-resize.html @web-platform-tests/interop +css/css-viewport/zoom/background-image.html @web-platform-tests/interop +css/css-viewport/zoom/basic.html @web-platform-tests/interop +css/css-viewport/zoom/border-spacing.html @web-platform-tests/interop +css/css-viewport/zoom/canvas.html @web-platform-tests/interop +css/css-viewport/zoom/container-queries.html @web-platform-tests/interop +css/css-viewport/zoom/font-size.html @web-platform-tests/interop +css/css-viewport/zoom/iframe-zoom-nested.html @web-platform-tests/interop +css/css-viewport/zoom/iframe-zoom.sub.html @web-platform-tests/interop +css/css-viewport/zoom/image-intrinsic-size.html @web-platform-tests/interop +css/css-viewport/zoom/inherited-length.html @web-platform-tests/interop +css/css-viewport/zoom/inherited.html @web-platform-tests/interop +css/css-viewport/zoom/letter-spacing.html @web-platform-tests/interop +css/css-viewport/zoom/line-height.html @web-platform-tests/interop +css/css-viewport/zoom/list-style-image.html @web-platform-tests/interop +css/css-viewport/zoom/relative-units-from-parent.html @web-platform-tests/interop +css/css-viewport/zoom/stroke.html @web-platform-tests/interop +css/css-viewport/zoom/svg-path-simple.html @web-platform-tests/interop +css/css-viewport/zoom/svg-path.html @web-platform-tests/interop +css/css-viewport/zoom/svg-transform.html @web-platform-tests/interop +css/css-viewport/zoom/svg-viewBox.html @web-platform-tests/interop +css/css-viewport/zoom/svg.html @web-platform-tests/interop +css/css-viewport/zoom/text-indent.html @web-platform-tests/interop +css/css-viewport/zoom/text-shadow.html @web-platform-tests/interop +css/css-viewport/zoom/text-stroke-width.html @web-platform-tests/interop +css/css-viewport/zoom/text-underline-offset.html @web-platform-tests/interop +css/css-viewport/zoom/word-spacing.html @web-platform-tests/interop +css/css-writing-modes/abs-pos-border-offset-002.html @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-slr-043.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-slr-047.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-slr-048.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-slr-050.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-slr-054.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-slr-055.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-slr-056.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-slr-058.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-slr-060.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-slr-062.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-slr-063.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-slr-066.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-srl-042.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-srl-045.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-srl-046.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-srl-049.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-srl-051.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-srl-052.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-srl-053.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-srl-057.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-srl-059.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-srl-061.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-srl-064.xht @web-platform-tests/interop +css/css-writing-modes/block-flow-direction-srl-065.xht @web-platform-tests/interop +css/css-writing-modes/inline-block-alignment-slr-009.xht @web-platform-tests/interop +css/css-writing-modes/inline-block-alignment-srl-008.xht @web-platform-tests/interop +css/css-writing-modes/line-box-direction-slr-043.xht @web-platform-tests/interop +css/css-writing-modes/line-box-direction-slr-047.xht @web-platform-tests/interop +css/css-writing-modes/line-box-direction-slr-048.xht @web-platform-tests/interop +css/css-writing-modes/line-box-direction-slr-050.xht @web-platform-tests/interop +css/css-writing-modes/line-box-direction-slr-053.xht @web-platform-tests/interop +css/css-writing-modes/line-box-direction-slr-054.xht @web-platform-tests/interop +css/css-writing-modes/line-box-direction-slr-056.xht @web-platform-tests/interop +css/css-writing-modes/line-box-direction-slr-058.xht @web-platform-tests/interop +css/css-writing-modes/line-box-direction-slr-060.xht @web-platform-tests/interop +css/css-writing-modes/line-box-direction-srl-042.xht @web-platform-tests/interop +css/css-writing-modes/line-box-direction-srl-045.xht @web-platform-tests/interop +css/css-writing-modes/line-box-direction-srl-046.xht @web-platform-tests/interop +css/css-writing-modes/line-box-direction-srl-049.xht @web-platform-tests/interop +css/css-writing-modes/line-box-direction-srl-051.xht @web-platform-tests/interop +css/css-writing-modes/line-box-direction-srl-052.xht @web-platform-tests/interop +css/css-writing-modes/line-box-direction-srl-055.xht @web-platform-tests/interop +css/css-writing-modes/line-box-direction-srl-057.xht @web-platform-tests/interop +css/css-writing-modes/line-box-direction-srl-059.xht @web-platform-tests/interop +css/css-writing-modes/logical-physical-mapping-001.html @web-platform-tests/interop +css/css-writing-modes/row-progression-slr-023.xht @web-platform-tests/interop +css/css-writing-modes/row-progression-slr-029.xht @web-platform-tests/interop +css/css-writing-modes/row-progression-srl-022.xht @web-platform-tests/interop +css/css-writing-modes/row-progression-srl-028.xht @web-platform-tests/interop +css/css-writing-modes/row-progression-vlr-009.xht @web-platform-tests/interop +css/css-writing-modes/slr-alongside-vlr-floats.html @web-platform-tests/interop +css/css-writing-modes/srl-alongside-vrl-floats.html @web-platform-tests/interop +css/css-writing-modes/table-column-order-slr-007.xht @web-platform-tests/interop +css/css-writing-modes/table-column-order-srl-006.xht @web-platform-tests/interop +css/css-writing-modes/table-progression-slr-001.html @web-platform-tests/interop +css/css-writing-modes/table-progression-slr-002.html @web-platform-tests/interop +css/css-writing-modes/table-progression-srl-001.html @web-platform-tests/interop +css/css-writing-modes/table-progression-srl-002.html @web-platform-tests/interop +css/css-writing-modes/text-baseline-slr-009.xht @web-platform-tests/interop +css/css-writing-modes/text-baseline-srl-008.xht @web-platform-tests/interop +css/css-writing-modes/text-combine-upright-sideways-001.html @web-platform-tests/interop +css/css-writing-modes/text-combine-upright-sideways-002.html @web-platform-tests/interop +css/css-writing-modes/text-orientation-mixed-srl-016.xht @web-platform-tests/interop +css/css-writing-modes/text-orientation-upright-directionality-001.html @web-platform-tests/interop +css/css-writing-modes/text-orientation-upright-srl-018.xht @web-platform-tests/interop +css/css-writing-modes/vertical-alignment-slr-029.xht @web-platform-tests/interop +css/css-writing-modes/vertical-alignment-slr-031.xht @web-platform-tests/interop +css/css-writing-modes/vertical-alignment-slr-033.xht @web-platform-tests/interop +css/css-writing-modes/vertical-alignment-slr-035.xht @web-platform-tests/interop +css/css-writing-modes/vertical-alignment-slr-041.xht @web-platform-tests/interop +css/css-writing-modes/vertical-alignment-srl-028.xht @web-platform-tests/interop +css/css-writing-modes/vertical-alignment-srl-030.xht @web-platform-tests/interop +css/css-writing-modes/vertical-alignment-srl-032.xht @web-platform-tests/interop +css/css-writing-modes/vertical-alignment-srl-034.xht @web-platform-tests/interop +css/css-writing-modes/vertical-alignment-srl-040.xht @web-platform-tests/interop +css/css-writing-modes/wm-propagation-body-032.html @web-platform-tests/interop +css/css-writing-modes/wm-propagation-body-033.html @web-platform-tests/interop +css/css-writing-modes/wm-propagation-body-034.html @web-platform-tests/interop +css/css-writing-modes/wm-propagation-body-035.html @web-platform-tests/interop +css/css-writing-modes/wm-propagation-body-036.html @web-platform-tests/interop +css/css-writing-modes/wm-propagation-body-037.html @web-platform-tests/interop +css/css-writing-modes/wm-propagation-body-038.html @web-platform-tests/interop +css/css-writing-modes/wm-propagation-body-039.html @web-platform-tests/interop +css/css-writing-modes/wm-propagation-body-040.html @web-platform-tests/interop +css/css-writing-modes/wm-propagation-body-041.html @web-platform-tests/interop +css/css-writing-modes/wm-propagation-body-043.html @web-platform-tests/interop +css/css-writing-modes/wm-propagation-body-044.html @web-platform-tests/interop +css/css-writing-modes/wm-propagation-body-045.html @web-platform-tests/interop +css/css-writing-modes/wm-propagation-body-046.html @web-platform-tests/interop +css/css-writing-modes/wm-propagation-body-048.html @web-platform-tests/interop +css/css-writing-modes/wm-propagation-body-050.html @web-platform-tests/interop +css/css-writing-modes/wm-propagation-body-051.html @web-platform-tests/interop +css/css-writing-modes/wm-propagation-body-052.html @web-platform-tests/interop +css/css-writing-modes/wm-propagation-body-053.html @web-platform-tests/interop +css/css-writing-modes/wm-propagation-body-055.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-backdrop-root-backdrop-filter.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-backdrop-root-clip-path.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-backdrop-root-filter.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-backdrop-root-mix-blend-mode.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-backdrop-root-opacity.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-basic-blur.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-basic-opacity-2.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-basic-opacity.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-basic.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-boundary.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-clip-radius-zoom.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-clip-rect-2.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-clip-rect-zoom.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-clip-rect.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-clip-rounded-clip.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-clipped.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-containing-block.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-edge-behavior.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-edge-clipping-2.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-edge-clipping.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-edge-mirror.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-edge-pixels-2.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-edge-pixels.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-fixed-clip.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-invalid.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-isolation-fixed.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-isolation-isolate.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-opacity-rounded-clip.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-paint-order.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-plus-filter.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-plus-mask-large.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-plus-mask.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-plus-opacity.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-plus-will-change-opacity.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-reference-filter-mutated.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-reference-filter.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-root-element.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-svg-background-image-blur.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-svg-foreignObject.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-svg.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-transform.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-update.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-zero-size.html @web-platform-tests/interop +css/filter-effects/backdrop-filters-brightness.html @web-platform-tests/interop +css/filter-effects/backdrop-filters-contrast.html @web-platform-tests/interop +css/filter-effects/backdrop-filters-grayscale-001.html @web-platform-tests/interop +css/filter-effects/backdrop-filters-grayscale-002.html @web-platform-tests/interop +css/filter-effects/backdrop-filters-grayscale-003.html @web-platform-tests/interop +css/filter-effects/backdrop-filters-hue-rotate.html @web-platform-tests/interop +css/filter-effects/backdrop-filters-invert.html @web-platform-tests/interop +css/filter-effects/backdrop-filters-opacity.html @web-platform-tests/interop +css/filter-effects/backdrop-filters-saturate.html @web-platform-tests/interop +css/filter-effects/backdrop-filters-sepia.html @web-platform-tests/interop +css/filter-effects/css-backdrop-filters-animation-blur.html @web-platform-tests/interop +css/filter-effects/css-backdrop-filters-animation-brightness.html @web-platform-tests/interop +css/filter-effects/css-backdrop-filters-animation-combined.html @web-platform-tests/interop +css/filter-effects/css-backdrop-filters-animation-contrast.html @web-platform-tests/interop +css/filter-effects/css-backdrop-filters-animation-drop-shadow.html @web-platform-tests/interop +css/filter-effects/css-backdrop-filters-animation-grayscale.html @web-platform-tests/interop +css/filter-effects/css-backdrop-filters-animation-hue-rotate.html @web-platform-tests/interop +css/filter-effects/css-backdrop-filters-animation-invert.html @web-platform-tests/interop +css/filter-effects/css-backdrop-filters-animation-opacity.html @web-platform-tests/interop +css/filter-effects/css-backdrop-filters-animation-saturate.html @web-platform-tests/interop +css/filter-effects/css-backdrop-filters-animation-sepia.html @web-platform-tests/interop +css/filter-effects/repaint-added-backdrop-filter.html @web-platform-tests/interop +html/editing/the-hidden-attribute/hidden-until-found-001.html @web-platform-tests/interop +html/editing/the-hidden-attribute/hidden-until-found-004.html @web-platform-tests/interop +html/editing/the-hidden-attribute/hidden-until-found-005.html @web-platform-tests/interop +html/editing/the-hidden-attribute/hidden-until-found-007.html @web-platform-tests/interop +html/rendering/the-details-element/details-after.html @web-platform-tests/interop +html/rendering/the-details-element/details-before.html @web-platform-tests/interop +html/rendering/the-details-element/details-display-type-001-ref.html @web-platform-tests/interop +html/rendering/the-details-element/details-display-type-001.html @web-platform-tests/interop +html/rendering/the-details-element/details-display-type-002.html @web-platform-tests/interop +html/rendering/the-details-element/details-pseudo-elements-001.html @web-platform-tests/interop +html/rendering/the-details-element/details-pseudo-elements-002.html @web-platform-tests/interop +html/rendering/the-details-element/details-pseudo-elements-003.html @web-platform-tests/interop +html/rendering/the-details-element/details-pseudo-elements-004.html @web-platform-tests/interop +html/rendering/the-details-element/details-pseudo-elements-005.html @web-platform-tests/interop +html/rendering/the-details-element/details-revert.html @web-platform-tests/interop +html/rendering/the-details-element/details-summary-display-inline-001.html @web-platform-tests/interop +html/rendering/the-details-element/details-summary-display-inline-002.html @web-platform-tests/interop +html/rendering/the-details-element/summary-display-flex.html @web-platform-tests/interop +html/rendering/the-details-element/summary-display-grid.html @web-platform-tests/interop +html/rendering/the-details-element/summary-display-inline-flex.html @web-platform-tests/interop +html/rendering/the-details-element/summary-display-inline-grid.html @web-platform-tests/interop +html/rendering/the-details-element/summary-display-list-item-001.html @web-platform-tests/interop +html/rendering/the-details-element/summary-display-list-item-002.html @web-platform-tests/interop +html/rendering/the-details-element/summary-in-ol.html @web-platform-tests/interop +html/rendering/the-details-element/summary-text-decoration.html @web-platform-tests/interop +css/css-anchor-position/anchor-center-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-center-htb-htb.html @web-platform-tests/interop +css/css-anchor-position/anchor-center-htb-vrl.html @web-platform-tests/interop +css/css-anchor-position/anchor-center-offset-change.html @web-platform-tests/interop +css/css-anchor-position/anchor-center-vrl-htb.html @web-platform-tests/interop +css/css-anchor-position/anchor-center-vrl-vrl.html @web-platform-tests/interop +css/css-anchor-position/anchor-fallback-invalidation.html @web-platform-tests/interop +css/css-anchor-position/anchor-getComputedStyle-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-getComputedStyle-002.html @web-platform-tests/interop +css/css-anchor-position/anchor-getComputedStyle-003.html @web-platform-tests/interop +css/css-anchor-position/anchor-inherited.html @web-platform-tests/interop +css/css-anchor-position/anchor-inside-outside.html @web-platform-tests/interop +css/css-anchor-position/anchor-invalid-fallback.html @web-platform-tests/interop +css/css-anchor-position/anchor-name-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-name-002.html @web-platform-tests/interop +css/css-anchor-position/anchor-name-003.html @web-platform-tests/interop +css/css-anchor-position/anchor-name-004.html @web-platform-tests/interop +css/css-anchor-position/anchor-name-basics.html @web-platform-tests/interop +css/css-anchor-position/anchor-name-cross-shadow.html @web-platform-tests/interop +css/css-anchor-position/anchor-name-in-shadow-002.html @web-platform-tests/interop +css/css-anchor-position/anchor-name-in-shadow.html @web-platform-tests/interop +css/css-anchor-position/anchor-name-inline-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-name-multicol-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-name-multicol-002.html @web-platform-tests/interop +css/css-anchor-position/anchor-name-multicol-003.html @web-platform-tests/interop +css/css-anchor-position/anchor-name-multicol-004.html @web-platform-tests/interop +css/css-anchor-position/anchor-parse-invalid.html @web-platform-tests/interop +css/css-anchor-position/anchor-parse-valid.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-002.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-003.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-004.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-borders-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-borders-002.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-dynamic-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-dynamic-002.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-dynamic-003.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-dynamic-004.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-grid-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-inline-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-inline-002.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-inline-003.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-inline-004.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-multicol-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-multicol-002.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-multicol-003.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-multicol-004.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-multicol-005.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-multicol-006.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-multicol-colspan-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-multicol-colspan-002.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-multicol-fixed-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-multicol-nested-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-principal-box.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-top-layer-007.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-writing-modes-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-position-writing-modes-002.html @web-platform-tests/interop +css/css-anchor-position/anchor-query-custom-property-registration.html @web-platform-tests/interop +css/css-anchor-position/anchor-query-fallback.html @web-platform-tests/interop +css/css-anchor-position/anchor-scope-basic.html @web-platform-tests/interop +css/css-anchor-position/anchor-scope-dynamic.html @web-platform-tests/interop +css/css-anchor-position/anchor-scope-shadow-all.html @web-platform-tests/interop +css/css-anchor-position/anchor-scope-shadow-flat-tree.html @web-platform-tests/interop +css/css-anchor-position/anchor-scope-shadow-names.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-002.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-003.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-004.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-005.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-006.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-007.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-cleanup.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-js-expose.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-position-try-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-position-try-002.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-position-try-003.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-position-try-004.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-position-try-005.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-position-try-006.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-position-try-007.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-position-try-008.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-position-try-009.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-position-try-010.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-position-try-011.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-position-try-013.html @web-platform-tests/interop +css/css-anchor-position/anchor-scroll-position-try-014.html @web-platform-tests/interop +css/css-anchor-position/anchor-size-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-size-minmax-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-size-parse-invalid.html @web-platform-tests/interop +css/css-anchor-position/anchor-size-parse-valid.html @web-platform-tests/interop +css/css-anchor-position/anchor-size-replaced-001.html @web-platform-tests/interop +css/css-anchor-position/anchor-size-writing-modes-001.html @web-platform-tests/interop +css/css-anchor-position/at-position-try-allowed-declarations.html @web-platform-tests/interop +css/css-anchor-position/at-position-try-cssom.html @web-platform-tests/interop +css/css-anchor-position/at-position-try-invalidation-shadow-dom.html @web-platform-tests/interop +css/css-anchor-position/at-position-try-invalidation.html @web-platform-tests/interop +css/css-anchor-position/at-position-try-parse.html @web-platform-tests/interop +css/css-anchor-position/auto-margins-position-area.html @web-platform-tests/interop +css/css-anchor-position/base-style-invalidation.html @web-platform-tests/interop +css/css-anchor-position/idlharness.html @web-platform-tests/interop +css/css-anchor-position/last-successful-basic.html @web-platform-tests/interop +css/css-anchor-position/last-successful-change-fallbacks.html @web-platform-tests/interop +css/css-anchor-position/last-successful-change-try-rule.html @web-platform-tests/interop +css/css-anchor-position/last-successful-iframe.html @web-platform-tests/interop +css/css-anchor-position/last-successful-intermediate-ignored.html @web-platform-tests/interop +css/css-anchor-position/parsing/anchor-scope-computed.html @web-platform-tests/interop +css/css-anchor-position/parsing/anchor-scope-parsing.html @web-platform-tests/interop +css/css-anchor-position/parsing/position-try-computed.html @web-platform-tests/interop +css/css-anchor-position/parsing/position-try-fallbacks-computed.html @web-platform-tests/interop +css/css-anchor-position/parsing/position-try-fallbacks-parsing.html @web-platform-tests/interop +css/css-anchor-position/parsing/position-try-order-computed.html @web-platform-tests/interop +css/css-anchor-position/parsing/position-try-order-parsing.html @web-platform-tests/interop +css/css-anchor-position/parsing/position-try-parsing.html @web-platform-tests/interop +css/css-anchor-position/popover-implicit-anchor.html @web-platform-tests/interop +css/css-anchor-position/position-anchor-003.html @web-platform-tests/interop +css/css-anchor-position/position-anchor-basics.html @web-platform-tests/interop +css/css-anchor-position/position-area-align-justify-wm-dir.html @web-platform-tests/interop +css/css-anchor-position/position-area-align-justify.html @web-platform-tests/interop +css/css-anchor-position/position-area-anchor-outside.html @web-platform-tests/interop +css/css-anchor-position/position-area-anchor-partially-outside.html @web-platform-tests/interop +css/css-anchor-position/position-area-basic.html @web-platform-tests/interop +css/css-anchor-position/position-area-computed-insets.html @web-platform-tests/interop +css/css-anchor-position/position-area-computed.html @web-platform-tests/interop +css/css-anchor-position/position-area-in-grid.html @web-platform-tests/interop +css/css-anchor-position/position-area-in-position-try.html @web-platform-tests/interop +css/css-anchor-position/position-area-interpolation.html @web-platform-tests/interop +css/css-anchor-position/position-area-parsing.html @web-platform-tests/interop +css/css-anchor-position/position-area-value.html @web-platform-tests/interop +css/css-anchor-position/position-area-with-insets.html @web-platform-tests/interop +css/css-anchor-position/position-area-wm-dir.html @web-platform-tests/interop +css/css-anchor-position/position-try-001.html @web-platform-tests/interop +css/css-anchor-position/position-try-002.html @web-platform-tests/interop +css/css-anchor-position/position-try-003.html @web-platform-tests/interop +css/css-anchor-position/position-try-004.html @web-platform-tests/interop +css/css-anchor-position/position-try-backdrop.html @web-platform-tests/interop +css/css-anchor-position/position-try-cascade-layer-reorder.html @web-platform-tests/interop +css/css-anchor-position/position-try-cascade.html @web-platform-tests/interop +css/css-anchor-position/position-try-container-query.html @web-platform-tests/interop +css/css-anchor-position/position-try-custom-property.html @web-platform-tests/interop +css/css-anchor-position/position-try-dynamic.html @web-platform-tests/interop +css/css-anchor-position/position-try-fallbacks-limit.html @web-platform-tests/interop +css/css-anchor-position/position-try-grid-001.html @web-platform-tests/interop +css/css-anchor-position/position-try-order-basic.html @web-platform-tests/interop +css/css-anchor-position/position-try-order-position-area.html @web-platform-tests/interop +css/css-anchor-position/position-try-position-anchor.html @web-platform-tests/interop +css/css-anchor-position/position-try-pseudo-element.html @web-platform-tests/interop +css/css-anchor-position/position-try-tree-scoped.html @web-platform-tests/interop +css/css-anchor-position/property-interpolations.html @web-platform-tests/interop +css/css-anchor-position/pseudo-element-anchor-dynamic.html @web-platform-tests/interop +css/css-anchor-position/pseudo-element-anchor.html @web-platform-tests/interop +css/css-anchor-position/remove-anchor-dirty-layout.html @web-platform-tests/interop +css/css-anchor-position/try-tactic-alignment.html @web-platform-tests/interop +css/css-anchor-position/try-tactic-anchor.html @web-platform-tests/interop +css/css-anchor-position/try-tactic-back-to-base.html @web-platform-tests/interop +css/css-anchor-position/try-tactic-base.html @web-platform-tests/interop +css/css-anchor-position/try-tactic-basic.html @web-platform-tests/interop +css/css-anchor-position/try-tactic-margin.html @web-platform-tests/interop +css/css-anchor-position/try-tactic-percentage.html @web-platform-tests/interop +css/css-anchor-position/try-tactic-position-area.html @web-platform-tests/interop +css/css-anchor-position/try-tactic-sizing.html @web-platform-tests/interop +css/css-anchor-position/try-tactic-wm.html @web-platform-tests/interop +css/css-cascade/at-scope-parsing.html @web-platform-tests/interop +css/css-cascade/at-scope-relative-syntax.html @web-platform-tests/interop +css/css-cascade/scope-container.html @web-platform-tests/interop +css/css-cascade/scope-cssom.html @web-platform-tests/interop +css/css-cascade/scope-declarations.html @web-platform-tests/interop +css/css-cascade/scope-deep.html @web-platform-tests/interop +css/css-cascade/scope-evaluation.html @web-platform-tests/interop +css/css-cascade/scope-focus.html @web-platform-tests/interop +css/css-cascade/scope-hover.html @web-platform-tests/interop +css/css-cascade/scope-implicit-external.html @web-platform-tests/interop +css/css-cascade/scope-implicit.html @web-platform-tests/interop +css/css-cascade/scope-invalidation.html @web-platform-tests/interop +css/css-cascade/scope-layer.html @web-platform-tests/interop +css/css-cascade/scope-media.html @web-platform-tests/interop +css/css-cascade/scope-name-defining-rules.html @web-platform-tests/interop +css/css-cascade/scope-nesting.html @web-platform-tests/interop +css/css-cascade/scope-overlapping-has.html @web-platform-tests/interop +css/css-cascade/scope-proximity.html @web-platform-tests/interop +css/css-cascade/scope-shadow.html @web-platform-tests/interop +css/css-cascade/scope-specificity.html @web-platform-tests/interop +css/css-cascade/scope-starting-style.html @web-platform-tests/interop +css/css-cascade/scope-style-sharing-001.html @web-platform-tests/interop +css/css-cascade/scope-style-sharing-002.html @web-platform-tests/interop +css/css-cascade/scope-supports.html @web-platform-tests/interop +css/css-cascade/scope-visited-cssom.html @web-platform-tests/interop +css/css-flexbox/abspos/abspos-descendent-001.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-align-content-001.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-align-self-001.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-align-self-002.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-align-self-003.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-align-self-004.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-align-self-005.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-align-self-006.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-align-self-007.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-align-self-008.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-align-self-rtl-001.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-align-self-rtl-002.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-align-self-rtl-003.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-align-self-rtl-004.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-align-self-vertWM-001.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-align-self-vertWM-002.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-align-self-vertWM-003.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-align-self-vertWM-004.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-001.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-002.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-003.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-004.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-005.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-006.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-007.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-008.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-rtl-001.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-rtl-002.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-vertWM-001.html @web-platform-tests/interop +css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-vertWM-002.html @web-platform-tests/interop +css/css-flexbox/abspos/position-absolute-001.html @web-platform-tests/interop +css/css-flexbox/abspos/position-absolute-002.html @web-platform-tests/interop +css/css-flexbox/abspos/position-absolute-003.html @web-platform-tests/interop +css/css-flexbox/abspos/position-absolute-004.html @web-platform-tests/interop +css/css-flexbox/abspos/position-absolute-012.html @web-platform-tests/interop +css/css-flexbox/abspos/position-absolute-013.html @web-platform-tests/interop +css/css-flexbox/abspos/position-absolute-014.html @web-platform-tests/interop +css/css-flexbox/abspos/position-absolute-015.html @web-platform-tests/interop +css/css-flexbox/align-content-horiz-001a.html @web-platform-tests/interop +css/css-flexbox/align-content-horiz-001b.html @web-platform-tests/interop +css/css-flexbox/align-content-horiz-002.html @web-platform-tests/interop +css/css-flexbox/align-content-vert-001a.html @web-platform-tests/interop +css/css-flexbox/align-content-vert-001b.html @web-platform-tests/interop +css/css-flexbox/align-content-vert-002.html @web-platform-tests/interop +css/css-flexbox/align-content-wmvert-001.html @web-platform-tests/interop +css/css-flexbox/align-content-wrap-001.html @web-platform-tests/interop +css/css-flexbox/align-content-wrap-002.html @web-platform-tests/interop +css/css-flexbox/align-content-wrap-003.html @web-platform-tests/interop +css/css-flexbox/align-content-wrap-005.html @web-platform-tests/interop +css/css-flexbox/align-self-014.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-001.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-002.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-003.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-004.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-005.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-006.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-007.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-fieldset-001.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-fieldset-002.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-fieldset-003.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-flex-001.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-flex-002.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-flex-003.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-flex-004.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-grid-001.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-grid-002.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-grid-003.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-multicol-001.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-multicol-002.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-multicol-003.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-overflow-001.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-overflow-002.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-overflow-003.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-table-001.html @web-platform-tests/interop +css/css-flexbox/alignment/flex-align-baseline-table-003.html @web-platform-tests/interop +css/css-flexbox/animation/flex-basis-composition.html @web-platform-tests/interop +css/css-flexbox/animation/flex-basis-interpolation.html @web-platform-tests/interop +css/css-flexbox/animation/flex-grow-interpolation.html @web-platform-tests/interop +css/css-flexbox/animation/flex-shrink-interpolation.html @web-platform-tests/interop +css/css-flexbox/animation/order-interpolation.html @web-platform-tests/interop +css/css-flexbox/box-sizing-001.html @web-platform-tests/interop +css/css-flexbox/box-sizing-min-max-sizes-001.html @web-platform-tests/interop +css/css-flexbox/canvas-dynamic-change-001.html @web-platform-tests/interop +css/css-flexbox/change-column-flex-width.html @web-platform-tests/interop +css/css-flexbox/column-flex-child-with-overflow-scroll.html @web-platform-tests/interop +css/css-flexbox/column-reverse-gap.html @web-platform-tests/interop +css/css-flexbox/columns-height-set-via-top-bottom.html @web-platform-tests/interop +css/css-flexbox/dynamic-grid-flex-abspos.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-column-011.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-column-017.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-row-005.html @web-platform-tests/interop +css/css-flexbox/flex-aspect-ratio-img-row-013.html @web-platform-tests/interop +css/css-flexbox/flex-basis-009.html @web-platform-tests/interop +css/css-flexbox/flex-basis-intrinsics-001.html @web-platform-tests/interop +css/css-flexbox/flex-column-relayout-assert.html @web-platform-tests/interop +css/css-flexbox/flex-direction-column-overlap-001.html @web-platform-tests/interop +css/css-flexbox/flex-factor-less-than-one.html @web-platform-tests/interop +css/css-flexbox/flex-flow-013.html @web-platform-tests/interop +css/css-flexbox/flex-item-compressible-001.html @web-platform-tests/interop +css/css-flexbox/flex-item-compressible-002.html @web-platform-tests/interop +css/css-flexbox/flex-item-contains-strict.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-009.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-010.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-012.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-025.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-height-flex-items-031.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-size-001.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-size-002.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-size-003.html @web-platform-tests/interop +css/css-flexbox/flex-minimum-width-flex-items-014.html @web-platform-tests/interop +css/css-flexbox/flex-one-sets-flex-basis-to-zero-px.html @web-platform-tests/interop +css/css-flexbox/flex-outer-flexbox-column-recalculate-height-on-resize-001.html @web-platform-tests/interop +css/css-flexbox/flex-shorthand-flex-basis-middle.html @web-platform-tests/interop +css/css-flexbox/flexbox-justify-content-wmvert-002.html @web-platform-tests/interop +css/css-flexbox/flexbox-justify-content-wmvert-003.html @web-platform-tests/interop +css/css-flexbox/flexbox-lines-must-be-stretched-by-default.html @web-platform-tests/interop +css/css-flexbox/flexbox_first-letter.html @web-platform-tests/interop +css/css-flexbox/flexbox_justifycontent-center-overflow.html @web-platform-tests/interop +css/css-flexbox/flexbox_justifycontent-rtl-001.html @web-platform-tests/interop +css/css-flexbox/flexbox_justifycontent-rtl-002.html @web-platform-tests/interop +css/css-flexbox/flexbox_width-change-and-relayout-children.html @web-platform-tests/interop +css/css-flexbox/flexbox_width-wrapping-column.html @web-platform-tests/interop +css/css-flexbox/flexitem-no-margin-collapsing.html @web-platform-tests/interop +css/css-flexbox/flexitem-stretch-image.html @web-platform-tests/interop +css/css-flexbox/gap-017.html @web-platform-tests/interop +css/css-flexbox/gap-018.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-content-center.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-content-flex-end.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-content-flex-start.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-content-space-around.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-content-space-between.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-items-baseline.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-items-center.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-items-flex-end.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-items-flex-start.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-items-invalid.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-items-stretch.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-self-baseline.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-self-center.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-self-flex-end.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-self-flex-start.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-self-invalid.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-self-stretch.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_display-inline.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_display.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-basis-0.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-basis-0percent.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-basis-auto.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-basis-percent.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-direction-column-reverse.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-direction-column.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-direction-invalid.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-direction-row-reverse.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-direction-row.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-flow-column-nowrap.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-flow-column-reverse-nowrap.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-flow-column-reverse-wrap.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-flow-column-reverse.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-flow-column-wrap-reverse.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-flow-column-wrap.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-flow-column.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-flow-nowrap.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-flow-row-nowrap.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-flow-row-reverse-nowrap.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-flow-row-reverse-wrap-reverse.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-flow-row-reverse-wrap.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-flow-row-reverse.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-flow-row-wrap-reverse.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-flow-row-wrap.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-flow-row.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-flow-wrap.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-grow-0.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-grow-invalid.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-grow-number.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-shorthand-0-auto.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-shorthand-auto.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-shorthand-initial.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-shorthand-invalid.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-shorthand-none.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-shorthand-number.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-shorthand.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-shrink-0.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-shrink-invalid.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-shrink-number.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-wrap-invalid.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-wrap-nowrap.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-wrap-wrap-reverse.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-wrap-wrap.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_justify-content-center.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_justify-content-flex-end.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_justify-content-flex-start.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_justify-content-space-around.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_justify-content-space-between.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_min-auto-size.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_min-height-auto.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_min-width-auto.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_order-inherit.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_order-integer.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_order-invalid.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_order-negative.html @web-platform-tests/interop +css/css-flexbox/getcomputedstyle/flexbox_computedstyle_order.html @web-platform-tests/interop +css/css-flexbox/height-percentage-with-dynamic-container-size.html @web-platform-tests/interop +css/css-flexbox/hittest-anonymous-box.html @web-platform-tests/interop +css/css-flexbox/hittest-before-pseudo.html @web-platform-tests/interop +css/css-flexbox/hittest-overlapping-margin.html @web-platform-tests/interop +css/css-flexbox/hittest-overlapping-order.html @web-platform-tests/interop +css/css-flexbox/hittest-overlapping-relative.html @web-platform-tests/interop +css/css-flexbox/image-as-flexitem-size-001.html @web-platform-tests/interop +css/css-flexbox/image-as-flexitem-size-001v.html @web-platform-tests/interop +css/css-flexbox/image-as-flexitem-size-002.html @web-platform-tests/interop +css/css-flexbox/image-as-flexitem-size-002v.html @web-platform-tests/interop +css/css-flexbox/image-as-flexitem-size-003.html @web-platform-tests/interop +css/css-flexbox/image-as-flexitem-size-003v.html @web-platform-tests/interop +css/css-flexbox/image-as-flexitem-size-004.html @web-platform-tests/interop +css/css-flexbox/image-as-flexitem-size-004v.html @web-platform-tests/interop +css/css-flexbox/image-as-flexitem-size-005.html @web-platform-tests/interop +css/css-flexbox/image-as-flexitem-size-005v.html @web-platform-tests/interop +css/css-flexbox/image-as-flexitem-size-006.html @web-platform-tests/interop +css/css-flexbox/image-as-flexitem-size-006v.html @web-platform-tests/interop +css/css-flexbox/image-as-flexitem-size-007.html @web-platform-tests/interop +css/css-flexbox/image-as-flexitem-size-007v.html @web-platform-tests/interop +css/css-flexbox/inheritance.html @web-platform-tests/interop +css/css-flexbox/inline-flex.html @web-platform-tests/interop +css/css-flexbox/intrinsic-width-orthogonal-writing-mode.html @web-platform-tests/interop +css/css-flexbox/justify-content-006.html @web-platform-tests/interop +css/css-flexbox/justify-content_space-between-002.html @web-platform-tests/interop +css/css-flexbox/layout-with-inline-svg-001.html @web-platform-tests/interop +css/css-flexbox/max-width-violation.html @web-platform-tests/interop +css/css-flexbox/multiline-min-max.html @web-platform-tests/interop +css/css-flexbox/multiline-min-preferred-width.html @web-platform-tests/interop +css/css-flexbox/negative-overflow-002.html @web-platform-tests/interop +css/css-flexbox/negative-overflow-003.html @web-platform-tests/interop +css/css-flexbox/negative-overflow.html @web-platform-tests/interop +css/css-flexbox/order_value.html @web-platform-tests/interop +css/css-flexbox/orthogonal-writing-modes-and-intrinsic-sizing.html @web-platform-tests/interop +css/css-flexbox/overflow-auto-002.html @web-platform-tests/interop +css/css-flexbox/overflow-auto-003.html @web-platform-tests/interop +css/css-flexbox/overflow-auto-004.html @web-platform-tests/interop +css/css-flexbox/overflow-auto-006.html @web-platform-tests/interop +css/css-flexbox/overflow-auto-008.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-basis-computed.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-basis-invalid.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-basis-valid.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-computed.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-direction-computed.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-direction-invalid.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-direction-valid.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-flow-computed.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-flow-invalid.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-flow-shorthand.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-flow-valid.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-grow-computed.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-grow-invalid.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-grow-valid.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-invalid.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-shorthand.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-shrink-computed.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-shrink-invalid.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-shrink-valid.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-valid.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-wrap-computed.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-wrap-invalid.html @web-platform-tests/interop +css/css-flexbox/parsing/flex-wrap-valid.html @web-platform-tests/interop +css/css-flexbox/parsing/order-computed.html @web-platform-tests/interop +css/css-flexbox/parsing/order-invalid.html @web-platform-tests/interop +css/css-flexbox/parsing/order-valid.html @web-platform-tests/interop +css/css-flexbox/percentage-heights-000.html @web-platform-tests/interop +css/css-flexbox/percentage-heights-001.html @web-platform-tests/interop +css/css-flexbox/percentage-heights-003.html @web-platform-tests/interop +css/css-flexbox/percentage-heights-011.html @web-platform-tests/interop +css/css-flexbox/percentage-heights-012.html @web-platform-tests/interop +css/css-flexbox/percentage-heights-013.html @web-platform-tests/interop +css/css-flexbox/percentage-margins-001.html @web-platform-tests/interop +css/css-flexbox/percentage-max-width-cross-axis.html @web-platform-tests/interop +css/css-flexbox/percentage-padding-001.html @web-platform-tests/interop +css/css-flexbox/percentage-size-quirks-002.html @web-platform-tests/interop +css/css-flexbox/percentage-size-quirks.html @web-platform-tests/interop +css/css-flexbox/percentage-size.html @web-platform-tests/interop +css/css-flexbox/position-relative-percentage-top-001.html @web-platform-tests/interop +css/css-flexbox/quirks-auto-block-size-with-percentage-item.html @web-platform-tests/interop +css/css-flexbox/radiobutton-min-size.html @web-platform-tests/interop +css/css-flexbox/relayout-align-items.html @web-platform-tests/interop +css/css-flexbox/relayout-image-load.html @web-platform-tests/interop +css/css-flexbox/relayout-input.html @web-platform-tests/interop +css/css-flexbox/scrollbars-auto-min-content-sizing.html @web-platform-tests/interop +css/css-flexbox/shrinking-column-flexbox.html @web-platform-tests/interop +css/css-flexbox/stretch-after-sibling-size-change.html @web-platform-tests/interop +css/css-flexbox/stretched-child-shrink-on-relayout.html @web-platform-tests/interop +css/css-flexbox/svg-root-as-flex-item-006.html @web-platform-tests/interop +css/css-flexbox/table-as-item-cross-size.html @web-platform-tests/interop +css/css-flexbox/table-with-percent-intrinsic-width.html @web-platform-tests/interop +css/css-flexbox/text-as-flexitem-size-001.html @web-platform-tests/interop +css/css-grid/abspos/absolute-positioning-definite-sizes-001.html @web-platform-tests/interop +css/css-grid/abspos/absolute-positioning-grid-container-containing-block-001.html @web-platform-tests/interop +css/css-grid/abspos/absolute-positioning-grid-container-parent-001.html @web-platform-tests/interop +css/css-grid/abspos/empty-grid-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-002.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-003.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-004.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-005.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-006.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-007.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-items-content-alignment-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-items-content-alignment-rtl-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-items-gaps-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-items-gaps-002-rtl.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-items-gaps-002.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-items-gaps-rtl-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-items-implicit-grid-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-items-implicit-grid-line-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-items-padding-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-items-unknown-named-grid-line-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-positioned-items-within-grid-implicit-track-001.html @web-platform-tests/interop +css/css-grid/abspos/grid-sizing-positioned-items-001.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-descendants-001.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-descendants-002.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-descendants-003.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-descendants-004.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-descendants-005.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-descendants-006.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-descendants-007.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-descendants-008.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-descendants-009.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-descendants-010.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-descendants-011.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-descendants-012.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-descendants-013.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-descendants-014.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-descendants-015.html @web-platform-tests/interop +css/css-grid/abspos/orthogonal-positioned-grid-descendants-016.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-descendants-001.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-descendants-002.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-descendants-003.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-descendants-004.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-descendants-005.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-descendants-006.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-descendants-007.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-descendants-008.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-descendants-009.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-descendants-010.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-descendants-011.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-descendants-012.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-descendants-013.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-descendants-014.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-descendants-015.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-descendants-016.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-should-not-create-implicit-tracks-001.html @web-platform-tests/interop +css/css-grid/abspos/positioned-grid-items-should-not-take-up-space-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-004.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-fieldset-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-fieldset-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-fieldset-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-flex-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-flex-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-flex-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-flex-004.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-grid-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-grid-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-grid-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-multicol-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-multicol-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-multicol-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-overflow-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-overflow-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-overflow-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-table-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-table-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline-vertical.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-baseline.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-content-distribution.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-content-vertical-lr.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-content-vertical-rl.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-content.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-justify-margin-border-padding-vertical-lr.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-justify-margin-border-padding-vertical-rl.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-justify-margin-border-padding.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-justify-overflow.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-justify-stretch-with-orthogonal-flows.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-justify-stretch.html @web-platform-tests/interop +css/css-grid/alignment/grid-align-stretching-replaced-items.html @web-platform-tests/interop +css/css-grid/alignment/grid-align.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-004.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-005.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-006.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-007.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-008.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-009.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-010.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-011.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-012.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-013.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-014.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-015.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-016.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-017.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-018.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-019.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-020.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-021.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-022.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-023.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-024.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-025.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-026.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-027.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-028.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-029.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-030.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-031.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-032.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-033.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-034.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-035.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-implies-size-change-036.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-style-changes-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-style-changes-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-style-changes-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-style-changes-004.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-style-changes-005.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-style-changes-006.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-style-changes-007.html @web-platform-tests/interop +css/css-grid/alignment/grid-alignment-style-changes-008.html @web-platform-tests/interop +css/css-grid/alignment/grid-baseline-004.html @web-platform-tests/interop +css/css-grid/alignment/grid-block-axis-alignment-auto-margins-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-block-axis-alignment-auto-margins-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-block-axis-alignment-auto-margins-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-block-axis-alignment-auto-margins-004.html @web-platform-tests/interop +css/css-grid/alignment/grid-block-axis-alignment-auto-margins-005.html @web-platform-tests/interop +css/css-grid/alignment/grid-block-axis-alignment-auto-margins-006.html @web-platform-tests/interop +css/css-grid/alignment/grid-block-axis-alignment-auto-margins-007.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-alignment-positioned-items-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-alignment-positioned-items-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-alignment-positioned-items-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-alignment-positioned-items-004.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-alignment-positioned-items-005.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-alignment-positioned-items-006.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-alignment-positioned-items-007.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-alignment-positioned-items-008.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-alignment-positioned-items-009.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-alignment-positioned-items-010.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-alignment-positioned-items-011.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-alignment-positioned-items-012.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-alignment-positioned-items-013.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-alignment-positioned-items-014.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-alignment-positioned-items-015.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-alignment-positioned-items-016.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-alignment-positioned-items-017.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-alignment-sticky-positioned-items-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-alignment-sticky-positioned-items-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-004.html @web-platform-tests/interop +css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-005.html @web-platform-tests/interop +css/css-grid/alignment/grid-container-baseline-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-alignment-and-self-alignment-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-alignment-and-self-alignment-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-alignment-auto-sized-tracks-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-alignment-overflow-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-alignment-overflow-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-alignment-second-pass-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-alignment-second-pass-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-alignment-with-abspos-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-alignment-with-span-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-alignment-with-span-vertical-lr-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-content-alignment-with-span-vertical-rl-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-fit-content-tracks-dont-stretch-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-gutters-and-alignment.html @web-platform-tests/interop +css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-004.html @web-platform-tests/interop +css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-005.html @web-platform-tests/interop +css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-006.html @web-platform-tests/interop +css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-007.html @web-platform-tests/interop +css/css-grid/alignment/grid-item-alignment-with-orthogonal-flows-vertical-lr.html @web-platform-tests/interop +css/css-grid/alignment/grid-item-alignment-with-orthogonal-flows-vertical-rl.html @web-platform-tests/interop +css/css-grid/alignment/grid-item-alignment-with-orthogonal-flows.html @web-platform-tests/interop +css/css-grid/alignment/grid-item-auto-margins-alignment-vertical-lr.html @web-platform-tests/interop +css/css-grid/alignment/grid-item-auto-margins-alignment-vertical-rl.html @web-platform-tests/interop +css/css-grid/alignment/grid-item-auto-margins-alignment.html @web-platform-tests/interop +css/css-grid/alignment/grid-justify-baseline-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-justify-baseline-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-justify-baseline-004.html @web-platform-tests/interop +css/css-grid/alignment/grid-justify-baseline-005.html @web-platform-tests/interop +css/css-grid/alignment/grid-place-content-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-alignment-positioned-items-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-alignment-positioned-items-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-alignment-positioned-items-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-alignment-positioned-items-004.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-alignment-positioned-items-005.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-alignment-positioned-items-006.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-alignment-positioned-items-007.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-alignment-positioned-items-008.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-alignment-positioned-items-009.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-alignment-positioned-items-010.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-alignment-positioned-items-011.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-alignment-positioned-items-012.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-alignment-positioned-items-013.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-alignment-positioned-items-014.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-alignment-positioned-items-015.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-alignment-positioned-items-016.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-alignment-positioned-items-017.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-alignment-sticky-positioned-items-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-alignment-sticky-positioned-items-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-004.html @web-platform-tests/interop +css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-005.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-004.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-005.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-006.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-007.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-008.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-009.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-010.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-012.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-004.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-005.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-006.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-007.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-008.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-009.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-010.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-011.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-012.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-013.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-014.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-015.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-016.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-004.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-005.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-006.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-007.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-008.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-009.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-010.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-011.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-012.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-013.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-014.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-015.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-016.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-004.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-005.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-006.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-007.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-008.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-009.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-010.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-011.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-012.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-013.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-014.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-015.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-016.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-003.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-004.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-005.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-006.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-007.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-008.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-009.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-010.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-011.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-012.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-013.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-014.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-015.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-016.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-alignment.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-001.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-002.html @web-platform-tests/interop +css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-003.html @web-platform-tests/interop +css/css-grid/animation/grid-template-columns-composition.html @web-platform-tests/interop +css/css-grid/animation/grid-template-columns-interpolation.html @web-platform-tests/interop +css/css-grid/animation/grid-template-columns-neutral-keyframe-001.html @web-platform-tests/interop +css/css-grid/animation/grid-template-columns-neutral-keyframe-002.html @web-platform-tests/interop +css/css-grid/animation/grid-template-columns-neutral-keyframe-003.html @web-platform-tests/interop +css/css-grid/animation/grid-template-columns-neutral-keyframe-004.html @web-platform-tests/interop +css/css-grid/animation/grid-template-rows-composition.html @web-platform-tests/interop +css/css-grid/animation/grid-template-rows-interpolation.html @web-platform-tests/interop +css/css-grid/animation/grid-template-rows-neutral-keyframe-001.html @web-platform-tests/interop +css/css-grid/animation/grid-template-rows-neutral-keyframe-002.html @web-platform-tests/interop +css/css-grid/animation/grid-template-rows-neutral-keyframe-003.html @web-platform-tests/interop +css/css-grid/animation/grid-template-rows-neutral-keyframe-004.html @web-platform-tests/interop +css/css-grid/chrome-crash-001.html @web-platform-tests/interop +css/css-grid/grid-definition/explicit-grid-size-001.html @web-platform-tests/interop +css/css-grid/grid-definition/flex-content-distribution-001.html @web-platform-tests/interop +css/css-grid/grid-definition/flex-content-resolution-columns-001.html @web-platform-tests/interop +css/css-grid/grid-definition/flex-content-resolution-columns-002.html @web-platform-tests/interop +css/css-grid/grid-definition/flex-content-resolution-rows-001.html @web-platform-tests/interop +css/css-grid/grid-definition/flex-content-resolution-rows-002.html @web-platform-tests/interop +css/css-grid/grid-definition/flex-factor-sum-less-than-1-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-explicit-rows-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-fill-columns-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-fill-rows-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-fit-columns-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-fit-rows-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-repeat-intrinsic-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-repeat-max-size-001.tentative.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-repeat-max-size-002.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-repeat-min-max-size-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-repeat-min-size-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-repeat-min-size-002.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-repeat-min-size-003.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-auto-repeat-min-size-004.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-change-auto-repeat-tracks.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-change-fit-content-argument-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-change-intrinsic-size-with-auto-repeat-tracks-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-inline-auto-repeat-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-inline-support-flexible-lengths-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-inline-support-grid-template-areas-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-inline-support-grid-template-columns-rows-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-inline-support-named-grid-lines-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-inline-support-repeat-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-inline-template-columns-rows-resolved-values-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-limits-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-minimum-contribution-with-percentages.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-002.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-shorthand-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-support-flexible-lengths-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-support-grid-template-areas-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-support-grid-template-columns-rows-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-support-named-grid-lines-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-support-repeat-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-support-repeat-002.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-template-columns-rows-changes-001.html @web-platform-tests/interop +css/css-grid/grid-definition/grid-template-columns-rows-resolved-values-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-automatic-minimum-intrinsic-aspect-ratio-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-item-dynamic-min-contribution-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-item-flex-container-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-item-min-auto-size-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-minimum-height-orthogonal-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-minimum-width-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-minimum-width-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-minimum-width-orthogonal-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-minimum-width-orthogonal-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-minimum-width-vertical-lr-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-minimum-width-vertical-lr-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-minimum-width-vertical-rl-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-minimum-width-vertical-rl-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-margins-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-margins-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-margins-vertical-lr-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-margins-vertical-lr-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-margins-vertical-rl-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-margins-vertical-rl-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-paddings-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-paddings-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-paddings-015.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-paddings-vertical-lr-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-paddings-vertical-lr-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-paddings-vertical-rl-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-percentage-paddings-vertical-rl-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-relative-offsets-001.html @web-platform-tests/interop +css/css-grid/grid-items/grid-items-relative-offsets-002.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-021.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-022.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-023.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-024.html @web-platform-tests/interop +css/css-grid/grid-items/grid-minimum-size-grid-items-025.html @web-platform-tests/interop +css/css-grid/grid-layout-properties.html @web-platform-tests/interop +css/css-grid/grid-model/compute-intrinsic-widths-scrollbar-001.html @web-platform-tests/interop +css/css-grid/grid-model/fixed-width-intrinsic-width-should-exclude-scrollbar-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-box-sizing-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-button-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-computed-value-display-floated-items-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-container-ignores-first-letter-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-container-ignores-first-line-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-container-margin-border-padding-scrollbar-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-container-sizing-constraints-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-float-002.html @web-platform-tests/interop +css/css-grid/grid-model/grid-gutters-and-flex-content-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-gutters-and-tracks-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-gutters-as-percentage-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-item-accepts-first-letter-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-item-accepts-first-line-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-item-hit-test.html @web-platform-tests/interop +css/css-grid/grid-model/grid-min-max-height-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-size-shrink-to-fit-001.html @web-platform-tests/interop +css/css-grid/grid-model/grid-support-display-001.html @web-platform-tests/interop +css/css-grid/grid-tracks-stretched-with-different-flex-factors-sum.html @web-platform-tests/interop +css/css-grid/inheritance.html @web-platform-tests/interop +css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-001.html @web-platform-tests/interop +css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-002.html @web-platform-tests/interop +css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-003.html @web-platform-tests/interop +css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-004.html @web-platform-tests/interop +css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-005.html @web-platform-tests/interop +css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-006.html @web-platform-tests/interop +css/css-grid/layout-algorithm/flex-and-intrinsic-sizes-001.html @web-platform-tests/interop +css/css-grid/layout-algorithm/flex-sizing-columns-min-max-width-001.html @web-platform-tests/interop +css/css-grid/layout-algorithm/flex-sizing-rows-min-max-height-001.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-automatic-minimum-for-auto-columns-001.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-container-percentage-001.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-container-percentage-002.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-001.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-002.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-003.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-004.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-find-fr-size-gutters-001.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-find-fr-size-gutters-002.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-fit-content-percentage.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-001.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-002.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-003.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-intrinsic-size-with-orthogonal-items.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-intrinsic-track-sizes-001.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-item-margin-auto-columns-rows-001.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-item-margin-auto-columns-rows-vertical-lr-001.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-item-margin-auto-columns-rows-vertical-rl-001.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-lr.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-rl.html @web-platform-tests/interop +css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim.html @web-platform-tests/interop +css/css-grid/parsing/grid-area-computed.html @web-platform-tests/interop +css/css-grid/parsing/grid-area-invalid.html @web-platform-tests/interop +css/css-grid/parsing/grid-area-shorthand.html @web-platform-tests/interop +css/css-grid/parsing/grid-area-valid.html @web-platform-tests/interop +css/css-grid/parsing/grid-auto-columns-computed.html @web-platform-tests/interop +css/css-grid/parsing/grid-auto-columns-invalid.html @web-platform-tests/interop +css/css-grid/parsing/grid-auto-columns-valid.html @web-platform-tests/interop +css/css-grid/parsing/grid-auto-flow-computed.html @web-platform-tests/interop +css/css-grid/parsing/grid-auto-flow-invalid.html @web-platform-tests/interop +css/css-grid/parsing/grid-auto-flow-valid.html @web-platform-tests/interop +css/css-grid/parsing/grid-auto-rows-computed.html @web-platform-tests/interop +css/css-grid/parsing/grid-auto-rows-invalid.html @web-platform-tests/interop +css/css-grid/parsing/grid-auto-rows-valid.html @web-platform-tests/interop +css/css-grid/parsing/grid-columns-rows-get-set-multiple.html @web-platform-tests/interop +css/css-grid/parsing/grid-content-sized-columns-resolution.html @web-platform-tests/interop +css/css-grid/parsing/grid-shorthand-invalid.html @web-platform-tests/interop +css/css-grid/parsing/grid-shorthand-serialization.html @web-platform-tests/interop +css/css-grid/parsing/grid-shorthand-valid.html @web-platform-tests/interop +css/css-grid/parsing/grid-shorthand.html @web-platform-tests/interop +css/css-grid/parsing/grid-template-areas-computed.html @web-platform-tests/interop +css/css-grid/parsing/grid-template-areas-invalid.html @web-platform-tests/interop +css/css-grid/parsing/grid-template-areas-one-cell.html @web-platform-tests/interop +css/css-grid/parsing/grid-template-areas-valid.html @web-platform-tests/interop +css/css-grid/parsing/grid-template-columns-computed-implicit-track.html @web-platform-tests/interop +css/css-grid/parsing/grid-template-columns-computed-nogrid.html @web-platform-tests/interop +css/css-grid/parsing/grid-template-columns-computed-withcontent.html @web-platform-tests/interop +css/css-grid/parsing/grid-template-columns-computed.html @web-platform-tests/interop +css/css-grid/parsing/grid-template-columns-invalid.html @web-platform-tests/interop +css/css-grid/parsing/grid-template-columns-valid.html @web-platform-tests/interop +css/css-grid/parsing/grid-template-repeat-auto-computed-withcontent-001.html @web-platform-tests/interop +css/css-grid/parsing/grid-template-repeat-auto-computed-withcontent-002.html @web-platform-tests/interop +css/css-grid/parsing/grid-template-rows-computed-implicit-track.html @web-platform-tests/interop +css/css-grid/parsing/grid-template-rows-computed-nogrid.html @web-platform-tests/interop +css/css-grid/parsing/grid-template-rows-computed-withcontent.html @web-platform-tests/interop +css/css-grid/parsing/grid-template-rows-computed.html @web-platform-tests/interop +css/css-grid/parsing/grid-template-rows-invalid.html @web-platform-tests/interop +css/css-grid/parsing/grid-template-rows-valid.html @web-platform-tests/interop +css/css-grid/parsing/grid-template-shorthand-areas-valid.html @web-platform-tests/interop +css/css-grid/parsing/grid-template-shorthand-invalid.html @web-platform-tests/interop +css/css-grid/parsing/grid-template-shorthand-valid.html @web-platform-tests/interop +css/css-grid/parsing/grid-template-shorthand.html @web-platform-tests/interop +css/css-grid/placement/grid-auto-flow-sparse-001.html @web-platform-tests/interop +css/css-grid/placement/grid-auto-placement-implicit-tracks-001.html @web-platform-tests/interop +css/css-grid/placement/grid-container-change-grid-tracks-recompute-child-positions-001.html @web-platform-tests/interop +css/css-grid/placement/grid-container-change-named-grid-recompute-child-positions-001.html @web-platform-tests/interop +css/css-grid/subgrid/grid-template-computed-nogrid.html @web-platform-tests/interop +css/css-grid/subgrid/grid-template-invalid.html @web-platform-tests/interop +css/css-grid/subgrid/grid-template-valid.html @web-platform-tests/interop +css/css-grid/subgrid/subgrid-baseline-005.html @web-platform-tests/interop +css/css-grid/subgrid/subgrid-baseline-006.html @web-platform-tests/interop +css/css-grid/subgrid/subgrid-baseline-007.html @web-platform-tests/interop +css/css-grid/subgrid/subgrid-baseline-008.html @web-platform-tests/interop +css/css-grid/subgrid/subgrid-baseline-009.html @web-platform-tests/interop +css/css-grid/table-grid-item-005.html @web-platform-tests/interop +css/css-logical/logical-box-border-color.html @web-platform-tests/interop +css/css-logical/logical-box-border-radius.html @web-platform-tests/interop +css/css-logical/logical-box-border-shorthands.html @web-platform-tests/interop +css/css-logical/logical-box-border-style.html @web-platform-tests/interop +css/css-logical/logical-box-border-width.html @web-platform-tests/interop +css/css-logical/logical-box-inset.html @web-platform-tests/interop +css/css-logical/logical-box-margin.html @web-platform-tests/interop +css/css-logical/logical-box-padding.html @web-platform-tests/interop +css/css-logical/logical-box-size.html @web-platform-tests/interop +css/css-multicol/getclientrects-001.html @web-platform-tests/interop +css/css-overflow/logical-overflow-001.html @web-platform-tests/interop +css/css-overflow/overflow-shorthand-002.html @web-platform-tests/interop +css/css-overflow/parsing/overflow-computed.html @web-platform-tests/interop +css/css-overflow/parsing/overflow-invalid.html @web-platform-tests/interop +css/css-overflow/parsing/overflow-valid.html @web-platform-tests/interop +css/css-overscroll-behavior/overscroll-behavior-root.html @web-platform-tests/interop +css/css-text-decor/parsing/text-decoration-color-computed.html @web-platform-tests/interop +css/css-text-decor/parsing/text-decoration-color-invalid.html @web-platform-tests/interop +css/css-text-decor/parsing/text-decoration-color-valid.html @web-platform-tests/interop +css/css-text-decor/parsing/text-decoration-computed.html @web-platform-tests/interop +css/css-text-decor/parsing/text-decoration-invalid.html @web-platform-tests/interop +css/css-text-decor/parsing/text-decoration-line-computed.html @web-platform-tests/interop +css/css-text-decor/parsing/text-decoration-line-invalid.html @web-platform-tests/interop +css/css-text-decor/parsing/text-decoration-line-valid.html @web-platform-tests/interop +css/css-text-decor/parsing/text-decoration-shorthand.html @web-platform-tests/interop +css/css-text-decor/parsing/text-decoration-skip-ink-computed.html @web-platform-tests/interop +css/css-text-decor/parsing/text-decoration-skip-ink-invalid.html @web-platform-tests/interop +css/css-text-decor/parsing/text-decoration-skip-ink-valid.html @web-platform-tests/interop +css/css-text-decor/parsing/text-decoration-style-computed.html @web-platform-tests/interop +css/css-text-decor/parsing/text-decoration-style-invalid.html @web-platform-tests/interop +css/css-text-decor/parsing/text-decoration-style-valid.html @web-platform-tests/interop +css/css-text-decor/parsing/text-decoration-valid.html @web-platform-tests/interop +css/css-view-transitions/auto-name-get-animations.html @web-platform-tests/interop +css/css-view-transitions/duplicate-tag-rejects-capture.html @web-platform-tests/interop +css/css-view-transitions/duplicate-tag-rejects-start.html @web-platform-tests/interop +css/css-view-transitions/dynamic-stylesheet-animations.html @web-platform-tests/interop +css/css-view-transitions/event-pseudo-name.html @web-platform-tests/interop +css/css-view-transitions/group-animation-for-root-transition.html @web-platform-tests/interop +css/css-view-transitions/hit-test-pseudo-element-element-from-point.html @web-platform-tests/interop +css/css-view-transitions/hit-test-unpainted-element-from-point.html @web-platform-tests/interop +css/css-view-transitions/input-targets-root-while-render-blocked.html @web-platform-tests/interop +css/css-view-transitions/mix-blend-mode-only-on-transition.html @web-platform-tests/interop +css/css-view-transitions/no-crash-set-exception.html @web-platform-tests/interop +css/css-view-transitions/no-crash-view-transition-in-massive-iframe.html @web-platform-tests/interop +css/css-view-transitions/no-css-animation-while-render-blocked.html @web-platform-tests/interop +css/css-view-transitions/no-raf-while-render-blocked.html @web-platform-tests/interop +css/css-view-transitions/only-child-group.html @web-platform-tests/interop +css/css-view-transitions/only-child-image-pair.html @web-platform-tests/interop +css/css-view-transitions/only-child-new.html @web-platform-tests/interop +css/css-view-transitions/only-child-no-transition.html @web-platform-tests/interop +css/css-view-transitions/only-child-old.html @web-platform-tests/interop +css/css-view-transitions/only-child-on-root-element-with-view-transition.html @web-platform-tests/interop +css/css-view-transitions/only-child-view-transition.html @web-platform-tests/interop +css/css-view-transitions/parsing/pseudo-elements-invalid-with-classes.html @web-platform-tests/interop +css/css-view-transitions/parsing/pseudo-elements-invalid.html @web-platform-tests/interop +css/css-view-transitions/parsing/pseudo-elements-valid-with-classes.html @web-platform-tests/interop +css/css-view-transitions/parsing/pseudo-elements-valid.html @web-platform-tests/interop +css/css-view-transitions/parsing/view-transition-class-computed.html @web-platform-tests/interop +css/css-view-transitions/parsing/view-transition-class-invalid.html @web-platform-tests/interop +css/css-view-transitions/parsing/view-transition-class-valid.html @web-platform-tests/interop +css/css-view-transitions/parsing/view-transition-name-computed.html @web-platform-tests/interop +css/css-view-transitions/parsing/view-transition-name-invalid.html @web-platform-tests/interop +css/css-view-transitions/parsing/view-transition-name-valid.html @web-platform-tests/interop +css/css-view-transitions/paused-animation-at-end.html @web-platform-tests/interop +css/css-view-transitions/pseudo-computed-style-stays-in-sync-with-new-element.html @web-platform-tests/interop +css/css-view-transitions/pseudo-element-animations-rerun.html @web-platform-tests/interop +css/css-view-transitions/pseudo-element-animations.html @web-platform-tests/interop +css/css-view-transitions/pseudo-get-computed-style.html @web-platform-tests/interop +css/css-view-transitions/ready_resolves_after_dom_before_raf.html @web-platform-tests/interop +css/css-view-transitions/style-inheritance.html @web-platform-tests/interop +css/css-view-transitions/synchronous-callback-skipped-before-run.html @web-platform-tests/interop +css/css-view-transitions/transition-in-hidden-page.html @web-platform-tests/interop +css/css-view-transitions/transition-skipped-after-animation-started.html @web-platform-tests/interop +css/css-view-transitions/transition-skipped-from-invalid-callback.html @web-platform-tests/interop +css/css-view-transitions/unset-and-initial-view-transition-name.html @web-platform-tests/interop +css/css-view-transitions/update-callback-timeout.html @web-platform-tests/interop +css/css-view-transitions/view-transition-name-on-removed-element.html @web-platform-tests/interop +css/css-view-transitions/web-animation-pseudo-incorrect-name.html @web-platform-tests/interop +css/css-view-transitions/window-resize-aborts-transition-before-ready.html @web-platform-tests/interop +css/css-view-transitions/window-resize-aborts-transition.html @web-platform-tests/interop +css/css-viewport/zoom/parsing/zoom-computed.html @web-platform-tests/interop +css/css-viewport/zoom/parsing/zoom-valid.html @web-platform-tests/interop +css/css-viewport/zoom/relative-units.html @web-platform-tests/interop +css/css-viewport/zoom/scroll-top-test-with-zoom.html @web-platform-tests/interop +css/css-viewport/zoom/widget.html @web-platform-tests/interop +css/css-writing-modes/forms/select-multiple-keyboard-selection.optional.html @web-platform-tests/interop +css/css-writing-modes/forms/select-multiple-options-visual-order.html @web-platform-tests/interop +css/css-writing-modes/forms/select-multiple-scrolling.optional.html @web-platform-tests/interop +css/css-writing-modes/forms/select-size-scrolling-and-sizing.optional.html @web-platform-tests/interop +css/css-writing-modes/forms/text-input-block-size.optional.html @web-platform-tests/interop +css/css-writing-modes/forms/text-input-vertical-overflow-no-scroll.html @web-platform-tests/interop +css/css-writing-modes/forms/textarea-rows-cols-sizing.html @web-platform-tests/interop +css/css-writing-modes/writing-mode-parsing-sideways-lr-001.html @web-platform-tests/interop +css/css-writing-modes/writing-mode-parsing-sideways-rl-001.html @web-platform-tests/interop +css/cssom/caretPositionFromPoint-with-transformation.html @web-platform-tests/interop +css/cssom/caretPositionFromPoint.html @web-platform-tests/interop +css/cssom-view/scrollIntoView-sideways-lr-writing-mode-and-rtl-direction.html @web-platform-tests/interop +css/cssom-view/scrollIntoView-sideways-lr-writing-mode.html @web-platform-tests/interop +css/cssom-view/scrollIntoView-sideways-rl-writing-mode-and-rtl-direction.html @web-platform-tests/interop +css/cssom-view/scrollIntoView-sideways-rl-writing-mode.html @web-platform-tests/interop +css/filter-effects/animation/backdrop-filter-interpolation-001.html @web-platform-tests/interop +css/filter-effects/animation/backdrop-filter-interpolation-002.html @web-platform-tests/interop +css/filter-effects/animation/backdrop-filter-interpolation-003.html @web-platform-tests/interop +css/filter-effects/animation/backdrop-filter-interpolation-004.html @web-platform-tests/interop +css/filter-effects/backdrop-filter-important.html @web-platform-tests/interop +css/filter-effects/parsing/backdrop-filter-computed.html @web-platform-tests/interop +css/filter-effects/parsing/backdrop-filter-parsing-invalid.html @web-platform-tests/interop +css/filter-effects/parsing/backdrop-filter-parsing-valid.html @web-platform-tests/interop +dom/events/scrolling/scrollend-event-fired-for-mandatory-snap-point-after-load.html @web-platform-tests/interop +dom/events/scrolling/scrollend-event-fired-for-programmatic-scroll.html @web-platform-tests/interop +dom/events/scrolling/scrollend-event-fired-for-scroll-attr-change.html @web-platform-tests/interop +dom/events/scrolling/scrollend-event-fired-for-scrollIntoView.html @web-platform-tests/interop +dom/events/scrolling/scrollend-event-fired-to-document.html @web-platform-tests/interop +dom/events/scrolling/scrollend-event-fired-to-window.html @web-platform-tests/interop +dom/events/scrolling/scrollend-event-handler-content-attributes.html @web-platform-tests/interop +dom/events/scrolling/scrollend-event-not-fired-on-no-scroll.html @web-platform-tests/interop +dom/events/scrolling/scrollend-fires-to-text-input.html @web-platform-tests/interop +dom/events/scrolling/scrollend-with-snap-on-fractional-offset.html @web-platform-tests/interop +dom/historical-mutation-events.html @web-platform-tests/interop +event-timing/auxclick.html @web-platform-tests/interop +event-timing/buffered-and-duration-threshold.html @web-platform-tests/interop +event-timing/buffered-flag.html @web-platform-tests/interop +event-timing/click-timing.html @web-platform-tests/interop +event-timing/click.html @web-platform-tests/interop +event-timing/contextmenu.html @web-platform-tests/interop +event-timing/crossiframe.html @web-platform-tests/interop +event-timing/dblclick.html @web-platform-tests/interop +event-timing/disconnect-target.html @web-platform-tests/interop +event-timing/duration-with-target-low.html @web-platform-tests/interop +event-timing/event-click-counts.html @web-platform-tests/interop +event-timing/event-click-visibilitychange.html @web-platform-tests/interop +event-timing/event-counts-zero.html @web-platform-tests/interop +event-timing/event-retarget.html @web-platform-tests/interop +event-timing/first-input-interactionid-click.html @web-platform-tests/interop +event-timing/first-input-interactionid-key.html @web-platform-tests/interop +event-timing/first-input-interactionid-tap.html @web-platform-tests/interop +event-timing/first-input-shadow-dom.html @web-platform-tests/interop +event-timing/idlharness.any.js @web-platform-tests/interop +event-timing/interaction-count-click.html @web-platform-tests/interop +event-timing/interaction-count-press-key.html @web-platform-tests/interop +event-timing/interaction-count-tap.html @web-platform-tests/interop +event-timing/interactionid-aux-pointerdown-and-pointerdown.html @web-platform-tests/interop +event-timing/interactionid-aux-pointerdown.html @web-platform-tests/interop +event-timing/interactionid-auxclick.html @web-platform-tests/interop +event-timing/interactionid-click.html @web-platform-tests/interop +event-timing/interactionid-keyboard-event-simulated-click-button-space.html @web-platform-tests/interop +event-timing/interactionid-keyboard-event-simulated-click-checkbox-space.html @web-platform-tests/interop +event-timing/interactionid-keyboard-event-simulated-click-link-enter.html @web-platform-tests/interop +event-timing/interactionid-keypress.html @web-platform-tests/interop +event-timing/interactionid-orphan-pointerup.html @web-platform-tests/interop +event-timing/interactionid-press-key-as-input.html @web-platform-tests/interop +event-timing/interactionid-press-key-no-effect.html @web-platform-tests/interop +event-timing/interactionid-tap.html @web-platform-tests/interop +event-timing/keydown.html @web-platform-tests/interop +event-timing/keyup.html @web-platform-tests/interop +event-timing/large-duration-threshold.html @web-platform-tests/interop +event-timing/medium-duration-threshold.html @web-platform-tests/interop +event-timing/min-duration-threshold.html @web-platform-tests/interop +event-timing/modal-dialog-interrupt-paint.html @web-platform-tests/interop +event-timing/mousedown.html @web-platform-tests/interop +event-timing/mouseenter.html @web-platform-tests/interop +event-timing/mouseleave.html @web-platform-tests/interop +event-timing/mouseout.html @web-platform-tests/interop +event-timing/mouseover.html @web-platform-tests/interop +event-timing/mouseup.html @web-platform-tests/interop +event-timing/only-observe-firstInput.html @web-platform-tests/interop +event-timing/pointerdown.html @web-platform-tests/interop +event-timing/pointerenter.html @web-platform-tests/interop +event-timing/pointerleave.html @web-platform-tests/interop +event-timing/pointerout.html @web-platform-tests/interop +event-timing/pointerover.html @web-platform-tests/interop +event-timing/pointerup.html @web-platform-tests/interop +event-timing/programmatic-click-not-observed.html @web-platform-tests/interop +event-timing/retrievability.html @web-platform-tests/interop +event-timing/retrieve-firstInput.html @web-platform-tests/interop +event-timing/selection-autoscroll.html @web-platform-tests/interop +event-timing/shadow-dom-null-target.html @web-platform-tests/interop +event-timing/supported-types-consistent-with-self.html @web-platform-tests/interop +event-timing/supported-types.window.js @web-platform-tests/interop +event-timing/timingconditions.html @web-platform-tests/interop +event-timing/toJSON.html @web-platform-tests/interop +html/editing/the-hidden-attribute/beforematch-element-fragment-navigation.html @web-platform-tests/interop +html/editing/the-hidden-attribute/beforematch-scroll-to-text-fragment.html @web-platform-tests/interop +html/editing/the-hidden-attribute/hidden-idl.html @web-platform-tests/interop +html/editing/the-hidden-attribute/hidden-ua-stylesheet.html @web-platform-tests/interop +html/editing/the-hidden-attribute/hidden-until-found-002.html @web-platform-tests/interop +html/editing/the-hidden-attribute/hidden-until-found-text-fragment.html @web-platform-tests/interop +html/rendering/the-details-element/auto-expand-details-text-fragment.html @web-platform-tests/interop +html/rendering/the-details-element/details-blockification.html @web-platform-tests/interop +html/rendering/the-details-element/details-display.html @web-platform-tests/interop +html/rendering/the-details-element/details-pseudo-elements-006.html @web-platform-tests/interop +html/semantics/disabled-elements/disabled-event-dispatch.tentative.html @web-platform-tests/interop +html/semantics/disabled-elements/event-propagate-disabled.tentative.html @web-platform-tests/interop +html/semantics/scripting-1/the-script-element/import-attributes/dynamic-import-with-attributes-argument.any.js @web-platform-tests/interop +html/semantics/scripting-1/the-script-element/import-attributes/empty-attributes-clause.html @web-platform-tests/interop +html/semantics/scripting-1/the-script-element/import-attributes/invalid-import-errors-order.html @web-platform-tests/interop +html/semantics/scripting-1/the-script-element/import-attributes/invalid-type-attribute-error.html @web-platform-tests/interop +html/semantics/scripting-1/the-script-element/import-attributes/unsupported-attribute.html @web-platform-tests/interop +html/semantics/scripting-1/the-script-element/json-module/charset-2.html @web-platform-tests/interop +html/semantics/scripting-1/the-script-element/json-module/charset-bom.any.js @web-platform-tests/interop +html/semantics/scripting-1/the-script-element/json-module/charset.html @web-platform-tests/interop +html/semantics/scripting-1/the-script-element/json-module/cors-crossorigin-requests.html @web-platform-tests/interop +html/semantics/scripting-1/the-script-element/json-module/credentials.sub.html @web-platform-tests/interop +html/semantics/scripting-1/the-script-element/json-module/integrity.html @web-platform-tests/interop +html/semantics/scripting-1/the-script-element/json-module/invalid-content-type.any.js @web-platform-tests/interop +html/semantics/scripting-1/the-script-element/json-module/json-module-service-worker-test.https.html @web-platform-tests/interop +html/semantics/scripting-1/the-script-element/json-module/load-error-events.html @web-platform-tests/interop +html/semantics/scripting-1/the-script-element/json-module/module.html @web-platform-tests/interop +html/semantics/scripting-1/the-script-element/json-module/non-object.any.js @web-platform-tests/interop +html/semantics/scripting-1/the-script-element/json-module/parse-error.html @web-platform-tests/interop +html/semantics/scripting-1/the-script-element/json-module/referrer-policies.sub.html @web-platform-tests/interop +html/semantics/scripting-1/the-script-element/json-module/repeated-imports.any.js @web-platform-tests/interop +html/semantics/scripting-1/the-script-element/json-module/script-element-json-src.html @web-platform-tests/interop +html/semantics/scripting-1/the-script-element/json-module/valid-content-type.html @web-platform-tests/interop +html/user-activation/activation-trigger-pointerevent.html @web-platform-tests/interop +largest-contentful-paint/background-image-set-image.html @web-platform-tests/interop +largest-contentful-paint/broken-image-icon.html @web-platform-tests/interop +largest-contentful-paint/contracted-image.html @web-platform-tests/interop +largest-contentful-paint/cross-origin-image.sub.html @web-platform-tests/interop +largest-contentful-paint/element-only-when-fully-active.html @web-platform-tests/interop +largest-contentful-paint/expanded-image.html @web-platform-tests/interop +largest-contentful-paint/first-letter-background.html @web-platform-tests/interop +largest-contentful-paint/first-paint-equals-lcp-text.html @web-platform-tests/interop +largest-contentful-paint/idlharness.html @web-platform-tests/interop +largest-contentful-paint/iframe-content-not-observed.html @web-platform-tests/interop +largest-contentful-paint/image-TAO.sub.html @web-platform-tests/interop +largest-contentful-paint/image-full-viewport.html @web-platform-tests/interop +largest-contentful-paint/image-inside-svg.html @web-platform-tests/interop +largest-contentful-paint/image-not-fully-visible.html @web-platform-tests/interop +largest-contentful-paint/image-removed-before-load.html @web-platform-tests/interop +largest-contentful-paint/image-src-change.html @web-platform-tests/interop +largest-contentful-paint/image-sw-same-origin.https.html @web-platform-tests/interop +largest-contentful-paint/image-upscaling.html @web-platform-tests/interop +largest-contentful-paint/initially-invisible-images.html @web-platform-tests/interop +largest-contentful-paint/invisible-images-composited-1.html @web-platform-tests/interop +largest-contentful-paint/invisible-images-composited-2.html @web-platform-tests/interop +largest-contentful-paint/invisible-images.html @web-platform-tests/interop +largest-contentful-paint/larger-image.html @web-platform-tests/interop +largest-contentful-paint/larger-text.html @web-platform-tests/interop +largest-contentful-paint/loadTime-after-appendChild.html @web-platform-tests/interop +largest-contentful-paint/multiple-image-same-src.html @web-platform-tests/interop +largest-contentful-paint/multiple-redirects-TAO.html @web-platform-tests/interop +largest-contentful-paint/observe-after-untrusted-scroll.html @web-platform-tests/interop +largest-contentful-paint/observe-css-generated-image.html @web-platform-tests/interop +largest-contentful-paint/observe-css-generated-text.html @web-platform-tests/interop +largest-contentful-paint/observe-image.html @web-platform-tests/interop +largest-contentful-paint/observe-mathml.html @web-platform-tests/interop +largest-contentful-paint/observe-random-namespace.html @web-platform-tests/interop +largest-contentful-paint/observe-svg-background-image.html @web-platform-tests/interop +largest-contentful-paint/observe-svg-data-uri-background-image.html @web-platform-tests/interop +largest-contentful-paint/observe-svg-data-uri-image.html @web-platform-tests/interop +largest-contentful-paint/observe-svg-image.html @web-platform-tests/interop +largest-contentful-paint/observe-text.html @web-platform-tests/interop +largest-contentful-paint/placeholder-image.html @web-platform-tests/interop +largest-contentful-paint/progressively-loaded-image.html @web-platform-tests/interop +largest-contentful-paint/redirects-tao-star.html @web-platform-tests/interop +largest-contentful-paint/repeated-image.html @web-platform-tests/interop +largest-contentful-paint/resized-image-not-reconsidered.html @web-platform-tests/interop +largest-contentful-paint/same-origin-redirects.html @web-platform-tests/interop +largest-contentful-paint/supported-lcp-type.html @web-platform-tests/interop +largest-contentful-paint/text-with-display-style.html @web-platform-tests/interop +largest-contentful-paint/toJSON.html @web-platform-tests/interop +largest-contentful-paint/transparent-text-with-shadow.html @web-platform-tests/interop +largest-contentful-paint/transparent-text-with-text-stroke.html @web-platform-tests/interop +largest-contentful-paint/transparent-text.html @web-platform-tests/interop +largest-contentful-paint/update-on-style-change.html @web-platform-tests/interop +largest-contentful-paint/video-data-uri.html @web-platform-tests/interop +largest-contentful-paint/video-play-after-poster.html @web-platform-tests/interop +largest-contentful-paint/video-poster.html @web-platform-tests/interop +largest-contentful-paint/web-font-styled-text-resize-block.html @web-platform-tests/interop +largest-contentful-paint/web-font-styled-text-resize-swap-after-interaction.html @web-platform-tests/interop +navigation-api/currententrychange-event/anchor-click.html @web-platform-tests/interop +navigation-api/currententrychange-event/constructor.html @web-platform-tests/interop +navigation-api/currententrychange-event/history-back-same-doc.html @web-platform-tests/interop +navigation-api/currententrychange-event/history-pushState.html @web-platform-tests/interop +navigation-api/currententrychange-event/history-replaceState.html @web-platform-tests/interop +navigation-api/currententrychange-event/location-api.html @web-platform-tests/interop +navigation-api/currententrychange-event/navigate-from-initial-about-blank-same-doc-popup.html @web-platform-tests/interop +navigation-api/currententrychange-event/navigate-from-initial-about-blank-same-doc.html @web-platform-tests/interop +navigation-api/currententrychange-event/navigate-from-initial-about-blank.html @web-platform-tests/interop +navigation-api/currententrychange-event/navigation-back-forward-cross-doc.html @web-platform-tests/interop +navigation-api/currententrychange-event/navigation-back-forward-same-doc.html @web-platform-tests/interop +navigation-api/currententrychange-event/navigation-navigate-cross-doc.html @web-platform-tests/interop +navigation-api/currententrychange-event/navigation-navigate-intercept.html @web-platform-tests/interop +navigation-api/currententrychange-event/navigation-navigate-preventDefault.html @web-platform-tests/interop +navigation-api/currententrychange-event/navigation-navigate-replace-cross-doc.html @web-platform-tests/interop +navigation-api/currententrychange-event/navigation-navigate-replace-intercept.html @web-platform-tests/interop +navigation-api/currententrychange-event/navigation-navigate-replace-same-doc.html @web-platform-tests/interop +navigation-api/currententrychange-event/navigation-navigate-same-doc.html @web-platform-tests/interop +navigation-api/currententrychange-event/navigation-reload-cross-doc.html @web-platform-tests/interop +navigation-api/currententrychange-event/navigation-reload-intercept.html @web-platform-tests/interop +navigation-api/currententrychange-event/navigation-updateCurrentEntry.html @web-platform-tests/interop +navigation-api/currententrychange-event/not-on-load.html @web-platform-tests/interop +navigation-api/currententrychange-event/properties.html @web-platform-tests/interop +navigation-api/focus-reset/autofocus.html @web-platform-tests/interop +navigation-api/focus-reset/basic.html @web-platform-tests/interop +navigation-api/focus-reset/change-focus-again-in-blur-during-intercept.html @web-platform-tests/interop +navigation-api/focus-reset/change-focus-back-to-origial-during-intercept.html @web-platform-tests/interop +navigation-api/focus-reset/change-focus-during-intercept.html @web-platform-tests/interop +navigation-api/focus-reset/change-focus-then-remove-during-intercept.html @web-platform-tests/interop +navigation-api/focus-reset/focus-reset-timing.html @web-platform-tests/interop +navigation-api/focus-reset/multiple-intercept.html @web-platform-tests/interop +navigation-api/navigate-event/cross-origin-traversal-does-not-fire-navigate.html @web-platform-tests/interop +navigation-api/navigate-event/cross-origin-traversal-redirect.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/click-crossdocument-crossorigin-sameorigindomain.sub.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/click-crossdocument-crossorigin.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/click-crossdocument-sameorigin.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/click-samedocument-crossorigin-sameorigindomain.sub.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/click-samedocument-crossorigin.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/click-samedocument-sameorigin.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/location-crossdocument-crossorigin-sameorigindomain.sub.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/location-crossdocument-crossorigin.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/location-crossdocument-sameorigin.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/location-samedocument-crossorigin-sameorigindomain.sub.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/location-samedocument-crossorigin.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/location-samedocument-sameorigin.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/open-crossdocument-crossorigin-sameorigindomain.sub.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/open-crossdocument-crossorigin.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/open-crossdocument-sameorigin.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/open-samedocument-crossorigin-sameorigindomain.sub.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/open-samedocument-crossorigin.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/open-samedocument-sameorigin.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/submit-crossdocument-crossorigin-sameorigindomain.sub.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/submit-crossdocument-crossorigin.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/submit-crossdocument-sameorigin.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/submit-samedocument-crossorigin-sameorigindomain.sub.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/submit-samedocument-crossorigin.html @web-platform-tests/interop +navigation-api/navigate-event/cross-window/submit-samedocument-sameorigin.html @web-platform-tests/interop +navigation-api/navigate-event/defaultPrevented-navigation-preempted.html @web-platform-tests/interop +navigation-api/navigate-event/defaultPrevented-window-stop-after-dispatch.html @web-platform-tests/interop +navigation-api/navigate-event/event-constructor.html @web-platform-tests/interop +navigation-api/navigate-event/intercept-after-dispatch.html @web-platform-tests/interop +navigation-api/navigate-event/intercept-and-navigate.html @web-platform-tests/interop +navigation-api/navigate-event/intercept-canceled-event.html @web-platform-tests/interop +navigation-api/navigate-event/intercept-cross-document-same-origin.html @web-platform-tests/interop +navigation-api/navigate-event/intercept-cross-origin.html @web-platform-tests/interop +navigation-api/navigate-event/intercept-detach-multiple.html @web-platform-tests/interop +navigation-api/navigate-event/intercept-detach.html @web-platform-tests/interop +navigation-api/navigate-event/intercept-handler-null-or-undefined.html @web-platform-tests/interop +navigation-api/navigate-event/intercept-handler-returns-non-promise.html @web-platform-tests/interop +navigation-api/navigate-event/intercept-handler-throws.html @web-platform-tests/interop +navigation-api/navigate-event/intercept-history-pushState.html @web-platform-tests/interop +navigation-api/navigate-event/intercept-history-replaceState.html @web-platform-tests/interop +navigation-api/navigate-event/intercept-multiple-times-reject.html @web-platform-tests/interop +navigation-api/navigate-event/intercept-multiple-times.html @web-platform-tests/interop +navigation-api/navigate-event/intercept-navigation-back.html @web-platform-tests/interop +navigation-api/navigate-event/intercept-on-synthetic-event.html @web-platform-tests/interop +navigation-api/navigate-event/intercept-popstate.html @web-platform-tests/interop +navigation-api/navigate-event/intercept-reject.html @web-platform-tests/interop +navigation-api/navigate-event/intercept-resolve.html @web-platform-tests/interop +navigation-api/navigate-event/intercept-same-document-history-back.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-anchor-cross-origin.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-anchor-download-userInitiated.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-anchor-download.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-anchor-fragment.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-anchor-same-origin-cross-document.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-anchor-userInitiated.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-anchor-with-target.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-destination-after-detach.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-destination-dynamic-index.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-destination-getState-back-forward.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-destination-getState-navigate.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-destination-getState-reload.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-form-get.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-form-reload.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-form-requestSubmit.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-form-traverse.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-form-userInitiated.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-form-with-target.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-form.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-history-back-after-fragment.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-history-back-after-pushState.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-history-back-bfcache.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-history-back-cross-document.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-history-back-noop.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-history-go-0.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-history-pushState.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-history-replaceState.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-iframe-location.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-location.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-meta-refresh.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-navigation-back-cross-document.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-navigation-back-same-document-in-iframe.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-navigation-back-same-document.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-navigation-navigate.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-svg-anchor-fragment.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-to-javascript.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-to-srcdoc.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-window-open-self.html @web-platform-tests/interop +navigation-api/navigate-event/navigate-window-open.html @web-platform-tests/interop +navigation-api/navigate-event/navigatesuccess-cross-document.html @web-platform-tests/interop +navigation-api/navigate-event/navigatesuccess-same-document.html @web-platform-tests/interop +navigation-api/navigate-event/navigation-back-cross-document-preventDefault.html @web-platform-tests/interop +navigation-api/navigate-event/navigation-back-same-document-preventDefault.html @web-platform-tests/interop +navigation-api/navigate-event/navigation-traverseTo-in-iframe-same-document-preventDefault.html @web-platform-tests/interop +navigation-api/navigate-event/navigation-traverseTo-navigates-top-and-same-doc-child-and-cross-doc-child.html @web-platform-tests/interop +navigation-api/navigate-event/navigation-traverseTo-same-document-preventDefault-multiple-windows.html @web-platform-tests/interop +navigation-api/navigate-event/navigation-traverseTo-top-cancels-cross-document-child.html @web-platform-tests/interop +navigation-api/navigate-event/replaceState-inside-back-handler.html @web-platform-tests/interop +navigation-api/navigate-event/same-url-replace-cross-document.html @web-platform-tests/interop +navigation-api/navigate-event/same-url-replace-same-document.html @web-platform-tests/interop +navigation-api/navigate-event/signal-abort-detach-in-onnavigate.html @web-platform-tests/interop +navigation-api/navigate-event/signal-abort-intercept.html @web-platform-tests/interop +navigation-api/navigate-event/signal-abort-preventDefault.html @web-platform-tests/interop +navigation-api/navigate-event/signal-abort-window-stop-after-intercept.html @web-platform-tests/interop +navigation-api/navigate-event/signal-abort-window-stop-in-onnavigate.html @web-platform-tests/interop +navigation-api/navigate-event/signal-abort-window-stop.html @web-platform-tests/interop +navigation-api/navigation-activation/activation-after-bfcache-cross-origin.html @web-platform-tests/interop +navigation-api/navigation-activation/activation-after-bfcache.html @web-platform-tests/interop +navigation-api/navigation-activation/activation-history-pushState.html @web-platform-tests/interop +navigation-api/navigation-activation/activation-history-replaceState.html @web-platform-tests/interop +navigation-api/navigation-activation/activation-initial-about-blank.html @web-platform-tests/interop +navigation-api/navigation-activation/activation-push-cross-origin.html @web-platform-tests/interop +navigation-api/navigation-activation/activation-push.html @web-platform-tests/interop +navigation-api/navigation-activation/activation-reload.html @web-platform-tests/interop +navigation-api/navigation-activation/activation-replace-cross-origin.html @web-platform-tests/interop +navigation-api/navigation-activation/activation-replace.html @web-platform-tests/interop +navigation-api/navigation-activation/activation-same-document-then-cross-document.html @web-platform-tests/interop +navigation-api/navigation-activation/activation-traverse-not-in-entries.html @web-platform-tests/interop +navigation-api/navigation-activation/activation-traverse-then-clobber.html @web-platform-tests/interop +navigation-api/navigation-activation/activation-traverse.html @web-platform-tests/interop +navigation-api/navigation-history-entry/after-detach.html @web-platform-tests/interop +navigation-api/navigation-history-entry/current-basic.html @web-platform-tests/interop +navigation-api/navigation-history-entry/entries-across-origins.html @web-platform-tests/interop +navigation-api/navigation-history-entry/entries-after-bfcache-in-iframe.html @web-platform-tests/interop +navigation-api/navigation-history-entry/entries-after-bfcache.html @web-platform-tests/interop +navigation-api/navigation-history-entry/entries-after-blank-navigation-from-cross-origin.html @web-platform-tests/interop +navigation-api/navigation-history-entry/entries-after-blank-navigation.html @web-platform-tests/interop +navigation-api/navigation-history-entry/entries-after-blob-navigation.html @web-platform-tests/interop +navigation-api/navigation-history-entry/entries-after-cross-document-forward-pruning.html @web-platform-tests/interop +navigation-api/navigation-history-entry/entries-after-javascript-url-navigation.html @web-platform-tests/interop +navigation-api/navigation-history-entry/entries-after-navigations-in-multiple-windows.html @web-platform-tests/interop +navigation-api/navigation-history-entry/entries-after-srcdoc-navigation.html @web-platform-tests/interop +navigation-api/navigation-history-entry/entries-array-equality.html @web-platform-tests/interop +navigation-api/navigation-history-entry/entries-in-new-javascript-url-iframe.html @web-platform-tests/interop +navigation-api/navigation-history-entry/entries-in-new-srcdoc-iframe.html @web-platform-tests/interop +navigation-api/navigation-history-entry/entries-when-inactive.html @web-platform-tests/interop +navigation-api/navigation-history-entry/entry-after-detach.html @web-platform-tests/interop +navigation-api/navigation-history-entry/index-not-in-entries.html @web-platform-tests/interop +navigation-api/navigation-history-entry/key-id-back-cross-document.html @web-platform-tests/interop +navigation-api/navigation-history-entry/key-id-back-same-document.html @web-platform-tests/interop +navigation-api/navigation-history-entry/key-id-location-reload-intercept.html @web-platform-tests/interop +navigation-api/navigation-history-entry/key-id-location-reload.html @web-platform-tests/interop +navigation-api/navigation-history-entry/key-id-location-replace-cross-origin.html @web-platform-tests/interop +navigation-api/navigation-history-entry/key-id-location-replace.html @web-platform-tests/interop +navigation-api/navigation-history-entry/no-referrer-dynamic-url-censored.html @web-platform-tests/interop +navigation-api/navigation-history-entry/no-referrer-from-meta-url-censored.html @web-platform-tests/interop +navigation-api/navigation-history-entry/no-referrer-url-censored.html @web-platform-tests/interop +navigation-api/navigation-history-entry/opaque-origin-data-url.html @web-platform-tests/interop +navigation-api/navigation-history-entry/opaque-origin.html @web-platform-tests/interop +navigation-api/navigation-history-entry/sameDocument-after-fragment-navigate.html @web-platform-tests/interop +navigation-api/navigation-history-entry/sameDocument-after-navigate-restore.html @web-platform-tests/interop +navigation-api/navigation-history-entry/sameDocument-after-navigate.html @web-platform-tests/interop +navigation-api/navigation-history-entry/state-after-navigate-restore.html @web-platform-tests/interop +navigation-api/navigation-methods/back-forward-multiple-frames.html @web-platform-tests/interop +navigation-api/navigation-methods/disambigaute-back.html @web-platform-tests/interop +navigation-api/navigation-methods/disambigaute-forward.html @web-platform-tests/interop +navigation-api/navigation-methods/disambigaute-traverseTo-back-multiple.html @web-platform-tests/interop +navigation-api/navigation-methods/disambigaute-traverseTo-forward-multiple.html @web-platform-tests/interop +navigation-api/navigation-methods/forward-to-pruned-entry.html @web-platform-tests/interop +navigation-api/navigation-methods/navigate-base-url.html @web-platform-tests/interop +navigation-api/navigation-methods/navigate-from-initial-about-blank-gc.html @web-platform-tests/interop +navigation-api/navigation-methods/navigate-from-initial-about-blank-src.html @web-platform-tests/interop +navigation-api/navigation-methods/navigate-from-initial-about-blank.html @web-platform-tests/interop +navigation-api/navigation-methods/navigate-history-push-not-loaded.html @web-platform-tests/interop +navigation-api/navigation-methods/navigate-history-push-same-url-cross-document.html @web-platform-tests/interop +navigation-api/navigation-methods/navigate-history-push-same-url.html @web-platform-tests/interop +navigation-api/navigation-methods/navigate-history-state-replace.html @web-platform-tests/interop +navigation-api/navigation-methods/navigate-history-state.html @web-platform-tests/interop +navigation-api/navigation-methods/navigate-info-and-state.html @web-platform-tests/interop +navigation-api/navigation-methods/navigate-intercept-history-state.html @web-platform-tests/interop +navigation-api/navigation-methods/navigate-relative-url-utf8.html @web-platform-tests/interop +navigation-api/navigation-methods/navigate-relative-url.html @web-platform-tests/interop +navigation-api/navigation-methods/navigate-replace-cross-document.html @web-platform-tests/interop +navigation-api/navigation-methods/navigate-replace-same-document.html @web-platform-tests/interop +navigation-api/navigation-methods/navigate-same-document.html @web-platform-tests/interop +navigation-api/navigation-methods/navigate-state-repeated-await.html @web-platform-tests/interop +navigation-api/navigation-methods/navigate-state-repeated.html @web-platform-tests/interop +navigation-api/navigation-methods/reload-base-url.html @web-platform-tests/interop +navigation-api/navigation-methods/reload-info.html @web-platform-tests/interop +navigation-api/navigation-methods/reload-navigation-timing.html @web-platform-tests/interop +navigation-api/navigation-methods/reload-no-args.html @web-platform-tests/interop +navigation-api/navigation-methods/reload-service-worker-fetch-event.html @web-platform-tests/interop +navigation-api/navigation-methods/reload-state-and-info.html @web-platform-tests/interop +navigation-api/navigation-methods/reload-state-undefined.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/back-204-205-download.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/back-already-detached.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/back-beforeunload.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/back-forward-initial-about-blank.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/back-forward-opaque-origin.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/back-forward-out-of-bounds.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/back-intercept-rejected.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/back-intercept.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/back.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/forward-already-detached.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/forward-beforeunload.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/forward-intercept-rejected.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/forward-intercept.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/forward.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-204-205-download.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-already-detached.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-beforeunload.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-cross-document.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-detach-in-onnavigate.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-detach-in-serialization.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-file-url.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-initial-about-blank-cross-document.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-initial-about-blank.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-intercept-interrupted.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-intercept-rejected.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-intercept.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-interrupted-within-onnavigate.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-interrupted.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-invalid-url.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-opaque-origin.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-pagehide.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-preventDefault.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-push-initial-about-blank.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-push-javascript-url.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-rejection-order-beforeunload-unserializablestate.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-rejection-order-detached-unserializablestate.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-rejection-order-invalidurl-beforeunload.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-rejection-order-invalidurl-detached.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-rejection-order-invalidurl-pagehide.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-rejection-order-invalidurl-unserializablestate.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-rejection-order-pagehide-unserializablestate.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate-unserializable-state.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/navigate.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/reload-already-detached.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/reload-beforeunload.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/reload-detach-in-onnavigate.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/reload-detach-in-serialization.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/reload-initial-about-blank.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/reload-intercept-rejected.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/reload-intercept.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/reload-pagehide.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/reload-preventDefault.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/reload-rejection-order-beforeunload-unserializablestate.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/reload-rejection-order-detached-unserializablestate.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/reload-rejection-order-pagehide-unserializablestate.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/reload-unserializable-state.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/reload.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/traverseTo-already-detached.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/traverseTo-beforeunload.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/traverseTo-cross-document-preventDefault.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/traverseTo-current.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/traverseTo-detach-cross-document-before-navigate-event.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/traverseTo-detach-cross-document.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/traverseTo-detach-same-document-before-navigate-event.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/traverseTo-detach-same-document.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/traverseTo-intercept-rejected.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/traverseTo-intercept.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/traverseTo-invalid-key.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/traverseTo-repeated.html @web-platform-tests/interop +navigation-api/navigation-methods/return-value/traverseTo.html @web-platform-tests/interop +navigation-api/navigation-methods/sandboxing-back-parent.html @web-platform-tests/interop +navigation-api/navigation-methods/sandboxing-back-sibling.html @web-platform-tests/interop +navigation-api/navigation-methods/sandboxing-navigate-parent.html @web-platform-tests/interop +navigation-api/navigation-methods/sandboxing-navigate-sibling.html @web-platform-tests/interop +navigation-api/navigation-methods/traverseTo-after-adding-iframe.html @web-platform-tests/interop +navigation-api/navigation-methods/traverseTo-after-data-url.html @web-platform-tests/interop +navigation-api/navigation-methods/traverseTo-cross-document.html @web-platform-tests/interop +navigation-api/navigation-methods/traverseTo-detach-between-navigate-and-navigatesuccess.html @web-platform-tests/interop +navigation-api/navigation-methods/traverseTo-multiple-steps.html @web-platform-tests/interop +navigation-api/navigation-methods/traverseTo-navigates-multiple-iframes.html @web-platform-tests/interop +navigation-api/navigation-methods/traverseTo-same-document.html @web-platform-tests/interop +navigation-api/navigation-methods/traverseTo-with-cross-origin-in-history.html @web-platform-tests/interop +navigation-api/ordering-and-transition/anchor-download-intercept-reject.html @web-platform-tests/interop +navigation-api/ordering-and-transition/anchor-download-intercept.html @web-platform-tests/interop +navigation-api/ordering-and-transition/anchor-download.html @web-platform-tests/interop +navigation-api/ordering-and-transition/back-cross-document-event-order.html @web-platform-tests/interop +navigation-api/ordering-and-transition/back-same-document-intercept-reject.html @web-platform-tests/interop +navigation-api/ordering-and-transition/back-same-document-intercept.html @web-platform-tests/interop +navigation-api/ordering-and-transition/back-same-document.html @web-platform-tests/interop +navigation-api/ordering-and-transition/currententrychange-before-popstate-intercept.html @web-platform-tests/interop +navigation-api/ordering-and-transition/currententrychange-dispose-ordering.html @web-platform-tests/interop +navigation-api/ordering-and-transition/intercept-async.html @web-platform-tests/interop +navigation-api/ordering-and-transition/location-href-canceled.html @web-platform-tests/interop +navigation-api/ordering-and-transition/location-href-double-intercept.html @web-platform-tests/interop +navigation-api/ordering-and-transition/location-href-intercept-reentrant.html @web-platform-tests/interop +navigation-api/ordering-and-transition/location-href-intercept-reject.html @web-platform-tests/interop +navigation-api/ordering-and-transition/location-href-intercept.html @web-platform-tests/interop +navigation-api/ordering-and-transition/navigate-204-205-download-then-same-document.html @web-platform-tests/interop +navigation-api/ordering-and-transition/navigate-canceled.html @web-platform-tests/interop +navigation-api/ordering-and-transition/navigate-cross-document-double.html @web-platform-tests/interop +navigation-api/ordering-and-transition/navigate-cross-document-event-order.html @web-platform-tests/interop +navigation-api/ordering-and-transition/navigate-double-intercept.html @web-platform-tests/interop +navigation-api/ordering-and-transition/navigate-in-transition-finished.html @web-platform-tests/interop +navigation-api/ordering-and-transition/navigate-intercept-stop.html @web-platform-tests/interop +navigation-api/ordering-and-transition/navigate-intercept.html @web-platform-tests/interop +navigation-api/ordering-and-transition/navigate-same-document-intercept-reentrant.html @web-platform-tests/interop +navigation-api/ordering-and-transition/navigate-same-document-intercept-reject.html @web-platform-tests/interop +navigation-api/ordering-and-transition/navigate-same-document.html @web-platform-tests/interop +navigation-api/ordering-and-transition/reload-canceled.html @web-platform-tests/interop +navigation-api/ordering-and-transition/reload-intercept-reject.html @web-platform-tests/interop +navigation-api/ordering-and-transition/reload-intercept.html @web-platform-tests/interop +navigation-api/ordering-and-transition/transition-cross-document.html @web-platform-tests/interop +navigation-api/ordering-and-transition/transition-finished-mark-as-handled.html @web-platform-tests/interop +navigation-api/ordering-and-transition/transition-realms-and-identity.html @web-platform-tests/interop +navigation-api/per-entry-events/dispose-after-bfcache.html @web-platform-tests/interop +navigation-api/per-entry-events/dispose-cross-document.html @web-platform-tests/interop +navigation-api/per-entry-events/dispose-for-navigation-in-child.html @web-platform-tests/interop +navigation-api/per-entry-events/dispose-same-document-intercept.html @web-platform-tests/interop +navigation-api/per-entry-events/dispose-same-document-navigate-during.html @web-platform-tests/interop +navigation-api/per-entry-events/dispose-same-document-reload-with-intercept.html @web-platform-tests/interop +navigation-api/per-entry-events/dispose-same-document-replace-with-intercept.html @web-platform-tests/interop +navigation-api/per-entry-events/dispose-same-document-replaceState.html @web-platform-tests/interop +navigation-api/per-entry-events/dispose-same-document.html @web-platform-tests/interop +navigation-api/per-entry-events/dispose-skip-current-on-truncate.html @web-platform-tests/interop +navigation-api/scroll-behavior/after-transition-basic.html @web-platform-tests/interop +navigation-api/scroll-behavior/after-transition-change-history-scroll-restoration-during-promise.html @web-platform-tests/interop +navigation-api/scroll-behavior/after-transition-explicit-scroll.html @web-platform-tests/interop +navigation-api/scroll-behavior/after-transition-intercept-handler-modifies.html @web-platform-tests/interop +navigation-api/scroll-behavior/after-transition-push.html @web-platform-tests/interop +navigation-api/scroll-behavior/after-transition-reject.html @web-platform-tests/interop +navigation-api/scroll-behavior/after-transition-reload.html @web-platform-tests/interop +navigation-api/scroll-behavior/after-transition-replace.html @web-platform-tests/interop +navigation-api/scroll-behavior/after-transition-timing.html @web-platform-tests/interop +navigation-api/scroll-behavior/manual-basic.html @web-platform-tests/interop +navigation-api/scroll-behavior/manual-immediate-scroll.html @web-platform-tests/interop +navigation-api/scroll-behavior/manual-scroll-after-dispatch.html @web-platform-tests/interop +navigation-api/scroll-behavior/manual-scroll-after-resolve.html @web-platform-tests/interop +navigation-api/scroll-behavior/manual-scroll-fragment-does-not-exist.html @web-platform-tests/interop +navigation-api/scroll-behavior/manual-scroll-push.html @web-platform-tests/interop +navigation-api/scroll-behavior/manual-scroll-reload.html @web-platform-tests/interop +navigation-api/scroll-behavior/manual-scroll-repeated.html @web-platform-tests/interop +navigation-api/scroll-behavior/manual-scroll-replace.html @web-platform-tests/interop +navigation-api/scroll-behavior/manual-scroll-resets-when-no-fragment.html @web-platform-tests/interop +navigation-api/scroll-behavior/scroll-after-preventDefault.html @web-platform-tests/interop +navigation-api/scroll-behavior/scroll-on-synthetic-event.html @web-platform-tests/interop +navigation-api/scroll-behavior/scroll-without-intercept.html @web-platform-tests/interop +navigation-api/state/cross-document-away-and-back.html @web-platform-tests/interop +navigation-api/state/cross-document-getState-undefined.html @web-platform-tests/interop +navigation-api/state/cross-document-getState.html @web-platform-tests/interop +navigation-api/state/cross-document-location-api.html @web-platform-tests/interop +navigation-api/state/history-pushState.html @web-platform-tests/interop +navigation-api/state/history-replaceState.html @web-platform-tests/interop +navigation-api/state/location-reload.html @web-platform-tests/interop +navigation-api/state/same-document-away-and-back-location-api.html @web-platform-tests/interop +navigation-api/state/same-document-away-and-back-navigation-api.html @web-platform-tests/interop +navigation-api/updateCurrentEntry-method/basic.html @web-platform-tests/interop +navigation-api/updateCurrentEntry-method/exception-order-initial-about-blank-unserializablestate.html @web-platform-tests/interop +navigation-api/updateCurrentEntry-method/exception-order-not-fully-active-unserializablestate.html @web-platform-tests/interop +navigation-api/updateCurrentEntry-method/initial-about-blank.html @web-platform-tests/interop +navigation-api/updateCurrentEntry-method/no-args.html @web-platform-tests/interop +navigation-api/updateCurrentEntry-method/not-fully-active.html @web-platform-tests/interop +navigation-api/updateCurrentEntry-method/opaque-origin.html @web-platform-tests/interop +navigation-api/updateCurrentEntry-method/same-document-away-and-back-location-api.html @web-platform-tests/interop +navigation-api/updateCurrentEntry-method/unserializable.html @web-platform-tests/interop +performance-timeline/buffered-flag-with-entryTypes-observer.tentative.any.js @web-platform-tests/interop +pointerevents/capturing_boundary_event_handler_at_ua_shadowdom.html @web-platform-tests/interop +pointerevents/coalesced_events_attributes.https.html @web-platform-tests/interop +pointerevents/idlharness.https.window.js @web-platform-tests/interop +pointerevents/mouse-pointer-boundary-events-for-shadowdom.html @web-platform-tests/interop +pointerevents/pointerevent_after_target_appended.html @web-platform-tests/interop +pointerevents/pointerevent_after_target_removed.html @web-platform-tests/interop +pointerevents/pointerevent_attributes.html @web-platform-tests/interop +pointerevents/pointerevent_auxclick_is_a_pointerevent.html @web-platform-tests/interop +pointerevents/pointerevent_boundary_events_at_implicit_release_hoverable_pointers.html @web-platform-tests/interop +pointerevents/pointerevent_capture_suppressing_mouse.html @web-platform-tests/interop +pointerevents/pointerevent_click_during_capture.html @web-platform-tests/interop +pointerevents/pointerevent_click_is_a_pointerevent.html @web-platform-tests/interop +pointerevents/pointerevent_click_is_a_pointerevent_multiple_clicks.html @web-platform-tests/interop +pointerevents/pointerevent_constructor.html @web-platform-tests/interop +pointerevents/pointerevent_contextmenu_is_a_pointerevent.html @web-platform-tests/interop +pointerevents/pointerevent_disabled_form_control.html @web-platform-tests/interop +pointerevents/pointerevent_fractional_coordinates.html @web-platform-tests/interop +pointerevents/pointerevent_hit_test_scroll_visible_descendant.html @web-platform-tests/interop +pointerevents/pointerevent_lostpointercapture_for_disconnected_node.html @web-platform-tests/interop +pointerevents/pointerevent_lostpointercapture_remove_setcapture_node.html @web-platform-tests/interop +pointerevents/pointerevent_mouse_capture_change_hover.html @web-platform-tests/interop +pointerevents/pointerevent_mouse_pointercapture_inactivate_pointer.html @web-platform-tests/interop +pointerevents/pointerevent_movementxy.html @web-platform-tests/interop +pointerevents/pointerevent_pointer_boundary_events_after_removing_last_over_element.html @web-platform-tests/interop +pointerevents/pointerevent_pointercapture_in_frame.html @web-platform-tests/interop +pointerevents/pointerevent_pointermove_on_chorded_mouse_button.html @web-platform-tests/interop +pointerevents/pointerevent_pointerout_no_pointer_movement.html @web-platform-tests/interop +pointerevents/pointerevent_pointerrawupdate.html @web-platform-tests/interop +pointerevents/pointerevent_releasepointercapture_events_to_original_target.html @web-platform-tests/interop +pointerevents/pointerevent_sequence_at_implicit_release_on_click.html @web-platform-tests/interop +pointerevents/pointerevent_setpointercapture_inactive_button_mouse.html @web-platform-tests/interop +pointerevents/pointerevent_touch-action-keyboard.html @web-platform-tests/interop +pointerevents/pointerup_after_pointerdown_target_removed.html @web-platform-tests/interop +pointerevents/predicted_events_attributes.html @web-platform-tests/interop +shadow-dom/Document-caretPositionFromPoint.tentative.html @web-platform-tests/interop +storage-access-api/hasStorageAccess-ABA.sub.https.window.js @web-platform-tests/interop +storage-access-api/hasStorageAccess-insecure.sub.window.js @web-platform-tests/interop +storage-access-api/hasStorageAccess.sub.https.window.js @web-platform-tests/interop +storage-access-api/idlharness.window.js @web-platform-tests/interop +storage-access-api/requestStorageAccess-ABA.sub.https.window.js @web-platform-tests/interop +storage-access-api/requestStorageAccess-cross-origin-iframe-navigation-relax.sub.https.window.js @web-platform-tests/interop +storage-access-api/requestStorageAccess-cross-origin-iframe-navigation.sub.https.window.js @web-platform-tests/interop +storage-access-api/requestStorageAccess-cross-site-iframe.sub.https.window.js @web-platform-tests/interop +storage-access-api/requestStorageAccess-cross-site-sibling-iframes.sub.https.window.js @web-platform-tests/interop +storage-access-api/requestStorageAccess-dedicated-worker.sub.https.window.js @web-platform-tests/interop +storage-access-api/requestStorageAccess-insecure.sub.window.js @web-platform-tests/interop +storage-access-api/requestStorageAccess-nested-cross-origin-iframe.sub.https.window.js @web-platform-tests/interop +storage-access-api/requestStorageAccess-nested-cross-site-iframe.sub.https.window.js @web-platform-tests/interop +storage-access-api/requestStorageAccess-nested-same-origin-iframe.sub.https.window.js @web-platform-tests/interop +storage-access-api/requestStorageAccess-non-fully-active.sub.https.window.js @web-platform-tests/interop +storage-access-api/requestStorageAccess-same-site-iframe.sub.https.window.js @web-platform-tests/interop +storage-access-api/requestStorageAccess-sandboxed-iframe-allow-storage-access.sub.https.window.js @web-platform-tests/interop +storage-access-api/requestStorageAccess-sandboxed-iframe-no-storage-access.sub.https.window.js @web-platform-tests/interop +storage-access-api/requestStorageAccess-web-socket.sub.https.window.js @web-platform-tests/interop +storage-access-api/requestStorageAccess.sub.https.window.js @web-platform-tests/interop +storage-access-api/storage-access-permission.sub.https.window.js @web-platform-tests/interop +storage-access-api/storageAccess.testdriver.sub.html @web-platform-tests/interop +uievents/mouse/attributes.html @web-platform-tests/interop +uievents/mouse/cancel-mousedown-in-subframe.html @web-platform-tests/interop +uievents/mouse/mousemove_after_mouseover_target_removed.html @web-platform-tests/interop +uievents/mouse/mousemove_prevent_default_action.html @web-platform-tests/interop +urlpattern/urlpattern-hasregexpgroups.any.js @web-platform-tests/interop +urlpattern/urlpattern.any.js @web-platform-tests/interop +urlpattern/urlpattern.https.any.js @web-platform-tests/interop +wasm/jsapi/js-string/basic.any.js @web-platform-tests/interop +wasm/jsapi/js-string/constants.any.js @web-platform-tests/interop +wasm/jsapi/js-string/imports.any.js @web-platform-tests/interop +wasm/jsapi/memory/to-fixed-length-buffer.any.js @web-platform-tests/interop +wasm/jsapi/memory/to-resizable-buffer-shared.any.js @web-platform-tests/interop +wasm/jsapi/memory/to-resizable-buffer.any.js @web-platform-tests/interop +webrtc/transfer-datachannel.html @web-platform-tests/interop +webrtc-encoded-transform/RTCRtpScriptTransform-bad-chunk.https.html @web-platform-tests/interop +webrtc-encoded-transform/RTCRtpScriptTransform-encoded-transform.https.html @web-platform-tests/interop +webrtc-encoded-transform/RTCRtpScriptTransform-sender-worker-single-frame.https.html @web-platform-tests/interop +webrtc-encoded-transform/idlharness.https.window.js @web-platform-tests/interop +webrtc-encoded-transform/script-audio-transform.https.html @web-platform-tests/interop +webrtc-encoded-transform/script-change-transform.https.html @web-platform-tests/interop +webrtc-encoded-transform/script-metadata-transform.https.html @web-platform-tests/interop +webrtc-encoded-transform/script-transform-generateKeyFrame-simulcast.https.html @web-platform-tests/interop +webrtc-encoded-transform/script-transform-generateKeyFrame.https.html @web-platform-tests/interop +webrtc-encoded-transform/script-transform-sendKeyFrameRequest.https.html @web-platform-tests/interop +webrtc-encoded-transform/script-transform.https.html @web-platform-tests/interop +webrtc-encoded-transform/script-write-twice-transform.https.html @web-platform-tests/interop +workers/constructors/SharedWorker/same-origin.html @web-platform-tests/interop +workers/constructors/Worker/same-origin.html @web-platform-tests/interop diff --git a/tests/wpt/tests/WebCryptoAPI/import_export/importKey_failures.js b/tests/wpt/tests/WebCryptoAPI/import_export/importKey_failures.js index e073c3490fc..39c70a85470 100644 --- a/tests/wpt/tests/WebCryptoAPI/import_export/importKey_failures.js +++ b/tests/wpt/tests/WebCryptoAPI/import_export/importKey_failures.js @@ -267,4 +267,23 @@ function run_test(algorithmNames) { }); }); }); + + // Use an 'alg' field with incorrect casing. + testVectors.forEach(function(vector) { + var name = vector.name; + if (name !== "Ed25519" && name !== "Ed448") + return; // The rest ignore the 'alg' field. + allAlgorithmSpecifiersFor(name).forEach(function(algorithm) { + getValidKeyData(algorithm).forEach(function(test) { + if (test.format === "jwk") { + var data = {crv: test.data.crv, kty: test.data.kty, d: test.data.d, x: test.data.x, y: test.data.y}; + var usages = validUsages(vector, 'jwk', test.data); + [name.toLowerCase(), name.toUpperCase()].forEach(function(algName) { + data.alg = algName; + testError('jwk', algorithm, data, name, usages, true, "DataError", "Invalid 'alg' field '" + data.alg + "'"); + }); + } + }); + }); + }); } diff --git a/tests/wpt/tests/ai/language_detection/availability-detached-crash.tentative.https.html b/tests/wpt/tests/ai/language_detection/availability-detached-crash.https.html index 5f76d59eb35..5f76d59eb35 100644 --- a/tests/wpt/tests/ai/language_detection/availability-detached-crash.tentative.https.html +++ b/tests/wpt/tests/ai/language_detection/availability-detached-crash.https.html diff --git a/tests/wpt/tests/ai/language_detection/detector-iframe.tentative.https.html b/tests/wpt/tests/ai/language_detection/detector-iframe.https.html index 3e90d36b5aa..3e90d36b5aa 100644 --- a/tests/wpt/tests/ai/language_detection/detector-iframe.tentative.https.html +++ b/tests/wpt/tests/ai/language_detection/detector-iframe.https.html diff --git a/tests/wpt/tests/ai/language_detection/detector-locale.https.tentative.any.js b/tests/wpt/tests/ai/language_detection/detector-locale.https.window.js index 1991ac3ecfb..a1c67db9129 100644 --- a/tests/wpt/tests/ai/language_detection/detector-locale.https.tentative.any.js +++ b/tests/wpt/tests/ai/language_detection/detector-locale.https.window.js @@ -63,6 +63,10 @@ function uniqueCount(array) { promise_test(async t => { for (const [languageSubtag, variations] of Object.entries( valid_language_tags)) { + if (await getAvailability(languageSubtag) === 'unavailable') { + continue; + } + await assert_valid_expected_input_languages(languageSubtag) for (const variation of variations) { @@ -81,3 +85,26 @@ promise_test(async t => { } } }, 'LanguageDetector has valid expectedInputLanguages'); + +function assert_rejects_invalid_expected_input_languages( + t, method, expectedInputLanguages) { + return promise_rejects_js(t, RangeError, method({expectedInputLanguages})); +} + +promise_test(async t => { + for (const languageTag of invalid_language_tags) { + assert_rejects_invalid_expected_input_languages( + t, LanguageDetector.create, [languageTag]); + } + assert_rejects_invalid_expected_input_languages( + t, LanguageDetector.create, invalid_language_tags); +}, 'LanguageDetector.create() throws RangeError for invalid language tags'); + +promise_test(async t => { + for (const languageTag of invalid_language_tags) { + assert_rejects_invalid_expected_input_languages( + t, LanguageDetector.availability, [languageTag]); + } + assert_rejects_invalid_expected_input_languages( + t, LanguageDetector.availability, invalid_language_tags); +}, 'LanguageDetector.availability() throws RangeError for invalid language tags'); diff --git a/tests/wpt/tests/ai/language_detection/detector.https.tentative.any.js b/tests/wpt/tests/ai/language_detection/detector.https.window.js index bdff2364b0b..e85ea6d249b 100644 --- a/tests/wpt/tests/ai/language_detection/detector.https.tentative.any.js +++ b/tests/wpt/tests/ai/language_detection/detector.https.window.js @@ -1,6 +1,7 @@ // META: title=Detect english -// META: global=window,worker +// META: global=window // META: script=../resources/util.js +// META: script=../resources/locale-util.js 'use strict'; @@ -13,10 +14,10 @@ promise_test(async t => { promise_test(async t => { const detector = await LanguageDetector.create(); - const results = await detector.detect('this string is in English'); - // "en" should be highest confidence. - assert_equals(results[0].detectedLanguage, 'en'); + const results = await detector.detect('Hello world!'); + // must at least have the 'und' result. + assert_greater_than_equal(results.length, 1); // The last result should be 'und'. const undResult = results.pop(); @@ -25,24 +26,31 @@ promise_test(async t => { let total_confidence_without_und = 0; let last_confidence = 1; - for (const {confidence} of results) { + for (const {detectedLanguage, confidence} of results) { + // All results must be in canonical form. + assert_is_canonical(detectedLanguage); + assert_greater_than(confidence, 0); + assert_greater_than(confidence, undResult.confidence); total_confidence_without_und += confidence; - // Except for 'und', results should be from high to low confidence. + // Except for 'und', results must be from high to low confidence. assert_greater_than_equal(last_confidence, confidence); last_confidence = confidence; } - // Confidences, excluding both 'und' and the last non-'und' result, should be - // less than 0.99. - assert_less_than( - total_confidence_without_und - results.at(-1).confidence, 0.99); + // If we have non-und results, their confidences, excluding the last non-'und' + // result, must be less than 0.99. + if (results.length > 0) { + assert_less_than( + total_confidence_without_und - results.at(-1).confidence, 0.99); + } - // Confidences, including 'und', should add up to 1. - assert_equals(total_confidence_without_und + undResult.confidence, 1); -}, 'Simple LanguageDetector.detect() call'); + // Confidences, including 'und', should be less than or equal to one. + assert_less_than_equal( + total_confidence_without_und + undResult.confidence, 1); +}, 'LanguageDetector.detect() returns valid results'); promise_test(async t => { const error = new Error('CreateMonitorCallback threw an error'); @@ -79,7 +87,7 @@ promise_test(async t => { promise_test(async t => { const detector = await LanguageDetector.create(); - const text = 'this string is in English'; + const text = 'Hello world!'; const promises = [detector.detect(text), detector.measureInputUsage(text)]; detector.destroy(); @@ -95,7 +103,7 @@ promise_test(async t => { const controller = new AbortController(); const detector = await LanguageDetector.create({signal: controller.signal}); - const text = 'this string is in English'; + const text = 'Hello world!'; const promises = [detector.detect(text), detector.measureInputUsage(text)]; const error = new Error('The create abort signal was aborted.'); @@ -114,7 +122,7 @@ promise_test(async t => { const detector = await LanguageDetector.create(); const detectPromise = - detector.detect('this string is in English', {signal: controller.signal}); + detector.detect('Hello world!', {signal: controller.signal}); await promise_rejects_dom(t, 'AbortError', detectPromise); }, 'LanguageDetector.detect() call with an aborted signal.'); @@ -122,25 +130,26 @@ promise_test(async t => { promise_test(async t => { const detector = await LanguageDetector.create(); await testAbortPromise(t, signal => { - return detector.detect('this string is in English', {signal}); + return detector.detect('Hello world!', {signal}); }); }, 'Aborting LanguageDetector.detect().'); promise_test(async t => { const detector = await LanguageDetector.create(); - const text = 'this string is in English'; - const inputUsage = await detector.measureInputUsage(text); + const text = 'Hello world!'; + const largeText = text.repeat(10000); + const inputUsage = await detector.measureInputUsage(largeText); assert_greater_than_equal(detector.inputQuota, 0); assert_greater_than_equal(inputUsage, 0); const detectPromise = detector.detect(text); - if (inputUsage < detector.inputQuota) { - assert_equals((await detectPromise)[0].detectedLanguage, 'en'); - } else { + if (inputUsage >= detector.inputQuota) { await promise_rejects_dom(t, 'QuotaExceededError', detectPromise); + } else { + await detectPromise; } }, 'LanguageDetector.measureInputUsage() and inputQuota basic usage.'); @@ -163,8 +172,10 @@ promise_test(async t => { }, 'Aborting LanguageDetector.measureInputUsage().'); promise_test(async () => { - const expectedLanguages = ['en', 'es']; - const detector = await LanguageDetector.create( - {expectedInputLanguages: expectedLanguages}); - assert_array_equals(detector.expectedInputLanguages, expectedLanguages); -}, 'Creating LanguageDetector with expectedInputLanguages'); + const detector = await LanguageDetector.create(); + assert_equals(detector.expectedInputLanguages, null); +}, 'Creating LanguageDetector without expectedInputLanguages'); + +promise_test(async t => { + await testCreateMonitorWithAbort(t, LanguageDetector.create); +}, 'Progress events are not emitted after aborted.'); diff --git a/tests/wpt/tests/ai/language_detection/detector.optional.https.window.js b/tests/wpt/tests/ai/language_detection/detector.optional.https.window.js new file mode 100644 index 00000000000..7ffa1362dd5 --- /dev/null +++ b/tests/wpt/tests/ai/language_detection/detector.optional.https.window.js @@ -0,0 +1,51 @@ +// META: title=Detect english +// META: global=window +// META: script=../resources/util.js + +'use strict'; + +async function assert_detects_correct_language( + detector, input, expectedLanguage) { + const results = await detector.detect(input); + // The highest confidence language should be + assert_equals(results[0].detectedLanguage, expectedLanguage); +} + +promise_test(async t => { + const testInput = { + af: 'Dit is \'n voorbeeldsin.', + el: 'Αυτή είναι μια παραδειγματική πρόταση.', + 'el-Latn': 'Aete einai mia paratheiymatike protase.', + en: 'This is an example sentence.', + es: 'Esta es una oración de ejemplo.', + fr: 'Ceci est un exemple de phrase.', + hi: 'यह एक उदाहरण वाक्य है.', + 'hi-Latn': 'yh ek udaahrn vaaky hai.', + it: 'Questa è una frase di esempio.', + ja: 'これは例文です。', + 'ja-Latn': 'Kore wa reibundesu.', + ko: '이것은 예문입니다.', + mi: 'He tauira rerenga korero tenei.', + nl: 'Dit is een voorbeeldzin.', + ru: 'Это пример предложения.', + sr: 'Ово је пример реченице.', + tr: 'Bu bir örnek cümledir.', + zh: '这是一个例句。', + zu: 'Lona umusho oyisibonelo.', + } + + const expectedInputLanguages = Object.keys(testInput); + + const detector = await LanguageDetector.create({expectedInputLanguages}); + + for (const [language, input] of Object.entries(testInput)) { + await assert_detects_correct_language(detector, input, language); + } +}, 'LanguageDetector.detect() detects the correct language'); + +promise_test(async () => { + const expectedInputLanguages = ['en', 'es']; + const detector = await LanguageDetector.create({expectedInputLanguages}); + assert_array_equals(detector.expectedInputLanguages, expectedInputLanguages); + assert_true(Object.isFrozen(detector.expectedInputLanguages)); +}, 'Creating LanguageDetector with expectedInputLanguages'); diff --git a/tests/wpt/tests/ai/resources/locale-util.js b/tests/wpt/tests/ai/resources/locale-util.js index 87d32ae620b..cacb11f4f25 100644 --- a/tests/wpt/tests/ai/resources/locale-util.js +++ b/tests/wpt/tests/ai/resources/locale-util.js @@ -7,6 +7,13 @@ const valid_language_tags = { 'en-Latn-fonipa-scouse', 'en-Latn-GB-fonipa-scouse', 'en-Latn-x-this-is-a-private-use-extensio-n', + 'EN', + 'en-lATN', + 'EN-lATN-gb', + 'EN-gb', + 'EN-scouse-fonipa', + 'EN-lATN-scouse-fonipa', + 'EN-lATN-gb-scouse-fonipa', ], es: [ 'es-419', @@ -15,6 +22,16 @@ const valid_language_tags = { ], }; +const invalid_language_tags = [ + 'e', + 'Latn', + 'enLatnGBfonipa', + '11', + 'en_Latn', + 'en-Lat', + 'en-A999', +]; + function assert_is_canonical(language_tag) { const locale = new Intl.Locale(language_tag); assert_equals(locale.toString(), language_tag); diff --git a/tests/wpt/tests/ai/resources/util.js b/tests/wpt/tests/ai/resources/util.js index 0cbdc68e260..3e95a936304 100644 --- a/tests/wpt/tests/ai/resources/util.js +++ b/tests/wpt/tests/ai/resources/util.js @@ -11,41 +11,39 @@ const kTestPrompt = 'Please write a sentence in English.'; // {Shape: "Circle", Count: 1}, {Shape: "Circle", Count: 2}, // {Shape: undefined, Count: 1}, {Shape: undefined, Count: 2} ] // Omits dictionary members when the value is undefined; supports array values. -const generateOptionCombinations = - (optionsSpec) => { - // 1. Extract keys from the input specification. - const keys = optionsSpec.map(o => Object.keys(o)[0]); - // 2. Extract the arrays of possible values for each key. - const valueArrays = optionsSpec.map(o => Object.values(o)[0]); - // 3. Compute the Cartesian product of the value arrays using reduce. - const valueCombinations = - valueArrays.reduce((accumulator, currentValues) => { - // Init the empty accumulator (first iteration), with single-element - // arrays. - if (accumulator.length === 0) { - return currentValues.map(value => [value]); - } - // Otherwise, expand existing combinations with current values. - return accumulator.flatMap( - existingCombo => currentValues.map( - currentValue => [...existingCombo, currentValue])); - }, []); - - // 4. Map each value combination to a result dictionary, skipping - // undefined. - return valueCombinations.map(combination => { - const result = {}; - keys.forEach((key, index) => { - if (combination[index] !== undefined) { - result[key] = combination[index]; - } - }); - return result; - }); +function generateOptionCombinations(optionsSpec) { + // 1. Extract keys from the input specification. + const keys = optionsSpec.map(o => Object.keys(o)[0]); + // 2. Extract the arrays of possible values for each key. + const valueArrays = optionsSpec.map(o => Object.values(o)[0]); + // 3. Compute the Cartesian product of the value arrays using reduce. + const valueCombinations = valueArrays.reduce((accumulator, currentValues) => { + // Init the empty accumulator (first iteration), with single-element + // arrays. + if (accumulator.length === 0) { + return currentValues.map(value => [value]); } + // Otherwise, expand existing combinations with current values. + return accumulator.flatMap( + existingCombo => currentValues.map( + currentValue => [...existingCombo, currentValue])); + }, []); + + // 4. Map each value combination to a result dictionary, skipping + // undefined. + return valueCombinations.map(combination => { + const result = {}; + keys.forEach((key, index) => { + if (combination[index] !== undefined) { + result[key] = combination[index]; + } + }); + return result; + }); +} // The method should take the AbortSignal as an option and return a promise. -const testAbortPromise = async (t, method) => { +async function testAbortPromise(t, method) { // Test abort signal without custom error. { const controller = new AbortController(); @@ -72,9 +70,47 @@ const testAbortPromise = async (t, method) => { } }; +async function testCreateMonitorWithAbortAt( + t, loadedToAbortAt, method, options = {}) { + const {promise: eventPromise, resolve} = Promise.withResolvers(); + let hadEvent = false; + function monitor(m) { + m.addEventListener('downloadprogress', e => { + if (e.loaded != loadedToAbortAt) { + return; + } + + if (hadEvent) { + assert_unreached( + 'This should never be reached since LanguageDetector.create() was aborted.'); + return; + } + + resolve(); + hadEvent = true; + }); + } + + const controller = new AbortController(); + + const createPromise = + method({...options, monitor, signal: controller.signal}); + + await eventPromise; + + const err = new Error('test'); + controller.abort(err); + await promise_rejects_exactly(t, err, createPromise); +} + +async function testCreateMonitorWithAbort(t, method, options = {}) { + await testCreateMonitorWithAbortAt(t, 0, method, options); + await testCreateMonitorWithAbortAt(t, 1, method, options); +} + // The method should take the AbortSignal as an option and return a // ReadableStream. -const testAbortReadableStream = async (t, method) => { +async function testAbortReadableStream(t, method) { // Test abort signal without custom error. { const controller = new AbortController(); diff --git a/tests/wpt/tests/ai/summarizer/summarizer-summarize-streaming.tentative.https.any.js b/tests/wpt/tests/ai/summarizer/summarizer-summarize-streaming.tentative.https.any.js index b88ccb325e2..dbf41cdadbc 100644 --- a/tests/wpt/tests/ai/summarizer/summarizer-summarize-streaming.tentative.https.any.js +++ b/tests/wpt/tests/ai/summarizer/summarizer-summarize-streaming.tentative.https.any.js @@ -22,7 +22,7 @@ promise_test(async t => { result = value; } assert_greater_than(result.length, 0); -}, 'Summarizer.summarizeStreaming returns ReadableStream with a non-empty text.'); +}, 'Summarizer.summarizeStreaming() returns ReadableStream with a non-empty text.'); promise_test(async t => { const summarizer = await Summarizer.create(); @@ -33,4 +33,12 @@ promise_test(async t => { ); const { result, done } = await streamingResponse.getReader().read(); assert_true(done); -}, 'Summarizer.summarizeStreaming returns a ReadableStream without any chunk on an empty input.'); +}, 'Summarizer.summarizeStreaming() returns a ReadableStream without any chunk on an empty input.'); + +promise_test(async () => { + const summarizer = await Summarizer.create(); + await Promise.all([ + summarizer.summarizeStreaming(kTestPrompt), + summarizer.summarizeStreaming(kTestPrompt) + ]); +}, 'Multiple Summarizer.summarizeStreaming() calls are resolved successfully.'); diff --git a/tests/wpt/tests/ai/summarizer/summarizer-summarize.tentative.https.any.js b/tests/wpt/tests/ai/summarizer/summarizer-summarize.tentative.https.any.js index f019746fbdd..62a780a3fc7 100644 --- a/tests/wpt/tests/ai/summarizer/summarizer-summarize.tentative.https.any.js +++ b/tests/wpt/tests/ai/summarizer/summarizer-summarize.tentative.https.any.js @@ -9,4 +9,12 @@ promise_test(async () => { const result = await summarizer.summarize(kTestPrompt); assert_equals(typeof result, 'string'); assert_greater_than(result.length, 0); -}, 'Summarizer.summarize() returns non-empty result'); +}, 'Summarizer.summarize() returns non-empty result.'); + +promise_test(async () => { + const summarizer = await Summarizer.create(); + await Promise.all([ + summarizer.summarize(kTestPrompt), + summarizer.summarize(kTestPrompt) + ]); +}, 'Multiple Summarizer.summarize() calls are resolved successfully.'); diff --git a/tests/wpt/tests/ai/translator/translator_bad_input.tentative.https.any.js b/tests/wpt/tests/ai/translator/translator-bad-input.tentative.https.window.js index 2879543f29a..53a184bfd19 100644 --- a/tests/wpt/tests/ai/translator/translator_bad_input.tentative.https.any.js +++ b/tests/wpt/tests/ai/translator/translator-bad-input.tentative.https.window.js @@ -1,5 +1,5 @@ // META: title=translator.create without options do not crash -// META: global=window,worker +// META: global=window // META: timeout=long // // Setting `timeout=long` as this test may require downloading the translation diff --git a/tests/wpt/tests/ai/translator/translator_translate.tentative.https.any.js b/tests/wpt/tests/ai/translator/translator-translate.tentative.https.window.js index a8aad5e03e1..a8aad5e03e1 100644 --- a/tests/wpt/tests/ai/translator/translator_translate.tentative.https.any.js +++ b/tests/wpt/tests/ai/translator/translator-translate.tentative.https.window.js diff --git a/tests/wpt/tests/content-security-policy/tentative/require-sri-for/script-allowed-meta.https.html b/tests/wpt/tests/content-security-policy/tentative/require-sri-for/script-allowed-meta.https.html deleted file mode 100644 index 087498f0c57..00000000000 --- a/tests/wpt/tests/content-security-policy/tentative/require-sri-for/script-allowed-meta.https.html +++ /dev/null @@ -1,14 +0,0 @@ -<!doctype html> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<meta http-equiv="Content-Security-Policy" content="require-sri-for 'script'"> -<script> - window.executed_test = async_test("Script that requires integrity executes and does not generate a violation report."); - document.addEventListener('securitypolicyviolation', executed_test.unreached_func("No report should be generated.")); -</script> -<script crossorigin integrity="sha384-tqyFpeo21WFM8HDeUtLqH20GUq/q3D1R6mqTzW3RtyTZ3dAYZJhC1wUcnkgOE2ak" - src="/content-security-policy/resources/ran.js"></script> -<script> - assert_true(window.ran); - window.executed_test.done(); -</script> diff --git a/tests/wpt/tests/content-security-policy/tentative/require-sri-for/script-blocked-meta.https.html b/tests/wpt/tests/content-security-policy/tentative/require-sri-for/script-blocked-meta.https.html deleted file mode 100644 index fe69c61f5b6..00000000000 --- a/tests/wpt/tests/content-security-policy/tentative/require-sri-for/script-blocked-meta.https.html +++ /dev/null @@ -1,13 +0,0 @@ -<!doctype html> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<meta http-equiv="Content-Security-Policy" content="require-sri-for 'script'"> -<script src="/content-security-policy/resources/ran.js"></script> -<script> -promise_test(async t => { - const watcher = new EventWatcher(t, document, ['securitypolicyviolation']); - const e = await watcher.wait_for('securitypolicyviolation'); - assert_equals(e.blockedURI, `${location.origin}/content-security-policy/resources/ran.js`); - assert_true(typeof(window.ran) == "undefined", "Script did not ran"); -}, "Test that meta require-sri-for blocks scripts with no SRI"); -</script> diff --git a/tests/wpt/tests/content-security-policy/tentative/require-sri-for/script.https.html b/tests/wpt/tests/content-security-policy/tentative/require-sri-for/script.https.html deleted file mode 100644 index 65553e523cc..00000000000 --- a/tests/wpt/tests/content-security-policy/tentative/require-sri-for/script.https.html +++ /dev/null @@ -1,164 +0,0 @@ -<!doctype html> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/common/dispatcher/dispatcher.js"></script> -<script src="/common/utils.js"></script> -<script src="/common/get-host-info.sub.js"></script> - -<body> -<script> - const {ORIGIN} = get_host_info(); - - const run_test = async (test_case) => { - promise_test(async () => { - const REMOTE_EXECUTOR = - `/common/dispatcher/remote-executor.html?pipe=`; - const iframe_uuid = token(); - - const csp_header = test_case.report_only ? - "header(Content-Security-Policy-Report-Only,require-sri-for 'script')" : - "header(Content-Security-Policy,require-sri-for 'script')"; - const iframe_url = REMOTE_EXECUTOR + encodeURIComponent(csp_header); - - const iframe = document.createElement('iframe'); - iframe.src = iframe_url + `&uuid=${iframe_uuid}`; - document.body.appendChild(iframe); - - // Execute code directly from the iframe. - const ctx = new RemoteContext(iframe_uuid); - const result = await ctx.execute_script(async (test_case) => { - let blockedURI; - if (test_case.should_block) { - window.addEventListener("securitypolicyviolation", e => { - blockedURI = e.blockedURI; - }); - } - - // Load the script - await new Promise(resolve => { - const script = document.createElement('script'); - if (test_case.cross_origin) { - script.crossOrigin="anonymous"; - } - if (test_case.integrity) { - script.integrity = test_case.integrity; - } - script.onload = resolve; - script.onerror = resolve; - script.src = test_case.url; - document.body.appendChild(script); - }); - - return { blocked: blockedURI, ran: window.ran }; - }, [test_case]); - for (const [key, value] of Object.entries(result)) { - assert_equals(result[key], test_case.expected[key]); - } - }, test_case.description); - }; - - const blob = new Blob([`window.ran=true;`], - { type: 'application/javascript' }); - - const blob_url = URL.createObjectURL(blob); - - // Generated using https://sha2.it/ed25519.html (In Chrome Canary, with Experimental Web Platform Features enabled) - const signature = encodeURIComponent( - 'header(Unencoded-Digest, sha-384=:tqyFpeo21WFM8HDeUtLqH20GUq\/q3D1R6mqTzW3RtyTZ3dAYZJhC1wUcnkgOE2ak:)' + - '|header(Signature-Input, signature=\\("unencoded-digest";sf\\); keyid="JrQLj5P\/89iXES9+vFgrIy29clF9CC\/oPPsw3c5D0bs="; tag="sri")' + - '|header(Signature, signature=:qM19uLskHm2TQG5LJcH/hY0n0BWWzYOJztVWYlwk0cZb3u0JdgUMre1J4Jn8Tma0x2u5/kPBfbXRMbB+X+vTBw==:)'); - - const test_cases = [ - { - description: "Ensure that a script without integrity did not run", - url: "/content-security-policy/resources/ran.js", - cross_origin: true, - integrity: "", - should_block: true, - report_only: false, - expected: {blocked: ORIGIN + "/content-security-policy/resources/ran.js", ran: false }, - }, - { - description: "Ensure that a script with unknown integrity algorithm did not run", - url: "/content-security-policy/resources/ran.js", - cross_origin: true, - integrity: "foobar-AAAAAAAAAAAAAAAAAAAa", - should_block: true, - report_only: false, - expected: {blocked: ORIGIN + "/content-security-policy/resources/ran.js", ran: false }, - }, - { - description: "Ensure that a script without integrity algorithm runs and gets reported in report-only mode", - url: "/content-security-policy/resources/ran.js", - cross_origin: true, - integrity: "", - should_block: true, - report_only: true, - expected: {blocked: ORIGIN + "/content-security-policy/resources/ran.js", ran: true }, - }, - { - description: "Ensure that a no-cors script gets blocked", - url: "/content-security-policy/resources/ran.js", - cross_origin: false, - integrity: "sha384-tqyFpeo21WFM8HDeUtLqH20GUq/q3D1R6mqTzW3RtyTZ3dAYZJhC1wUcnkgOE2ak", - should_block: true, - report_only: false, - expected: {blocked: ORIGIN + "/content-security-policy/resources/ran.js", ran: false }, - }, - { - description: "Ensure that a script with integrity runs", - url: "/content-security-policy/resources/ran.js", - cross_origin: true, - integrity: "sha384-tqyFpeo21WFM8HDeUtLqH20GUq/q3D1R6mqTzW3RtyTZ3dAYZJhC1wUcnkgOE2ak", - should_block: false, - report_only: false, - expected: {blocked: "", ran: true }, - }, - { - description: "Ensure that a script with signature integrity runs", - url: "/content-security-policy/resources/ran.js?pipe=" + signature, - cross_origin: true, - integrity: "ed25519-JrQLj5P/89iXES9+vFgrIy29clF9CC/oPPsw3c5D0bs=", - should_block: false, - report_only: false, - expected: {blocked: "", ran: true }, - }, - { - description: "Ensure that a data URI script with no integrity runs", - url: "data:application/javascript,window.ran=true", - cross_origin: true, - integrity: "", - should_block: false, - report_only: false, - expected: {blocked: "", ran: true }, - }, - { - description: "Ensure that a no-CORS data URI script with no integrity runs", - url: "data:application/javascript,window.ran=true", - cross_origin: false, - integrity: "", - should_block: false, - report_only: false, - expected: {blocked: "", ran: true }, - }, - { - description: "Ensure that a blob URL script with no integrity runs", - url: blob_url, - cross_origin: true, - integrity: "", - should_block: false, - report_only: false, - expected: {blocked: "", ran: true }, - }, - { - description: "Ensure that a no-CORS blob URL script with no integrity runs", - url: blob_url, - cross_origin: false, - integrity: "", - should_block: false, - report_only: false, - expected: {blocked: "", ran: true }, - } - ]; - test_cases.map(run_test); -</script> diff --git a/tests/wpt/tests/css/css-align/abspos/align-items-static-position-ref.html b/tests/wpt/tests/css/css-align/abspos/align-items-static-position-ref.html index 1b36d26bbe1..fd7093f9874 100644 --- a/tests/wpt/tests/css/css-align/abspos/align-items-static-position-ref.html +++ b/tests/wpt/tests/css/css-align/abspos/align-items-static-position-ref.html @@ -53,21 +53,21 @@ </style> <div class="container"><div class="flex"> <div class="abs left center-block"></div> -</div></div -><div class="container"><div class="flex"> +</div></div> +<div class="container"><div class="flex"> <div class="abs left top"></div> -</div></div -><br> +</div></div> +<br> <div class="container"><div class="grid"> <div class="abs center-inline center-block"></div> -</div></div -><div class="container"><div class="grid"> +</div></div> +<div class="container"><div class="grid"> <div class="abs center-inline top"></div> -</div></div -><div class="container"><div class="grid"> +</div></div> +<div class="container"><div class="grid"> <div class="abs left center-block"></div> -</div></div -><div class="container"><div class="grid"> +</div></div> +<div class="container"><div class="grid"> <div class="abs left top"></div> -</div></div -><br> +</div></div> +<br> diff --git a/tests/wpt/tests/css/css-align/abspos/align-items-static-position.html b/tests/wpt/tests/css/css-align/abspos/align-items-static-position.html index 8f3dbb7ae41..0b653ca5d6c 100644 --- a/tests/wpt/tests/css/css-align/abspos/align-items-static-position.html +++ b/tests/wpt/tests/css/css-align/abspos/align-items-static-position.html @@ -59,21 +59,21 @@ </style> <div class="container"><div class="flex"> <div class="abs static-positioned-inline static-positioned-block"></div> -</div></div -><div class="container"><div class="flex"> +</div></div> +<div class="container"><div class="flex"> <div class="abs static-positioned-inline positioned-block"></div> -</div></div -><br> +</div></div> +<br> <div class="container"><div class="grid"> <div class="abs static-positioned-inline static-positioned-block"></div> -</div></div -><div class="container"><div class="grid"> +</div></div> +<div class="container"><div class="grid"> <div class="abs static-positioned-inline positioned-block"></div> -</div></div -><div class="container"><div class="grid"> +</div></div> +<div class="container"><div class="grid"> <div class="abs positioned-inline static-positioned-block"></div> -</div></div -><div class="container"><div class="grid"> +</div></div> +<div class="container"><div class="grid"> <div class="abs positioned-inline positioned-block"></div> -</div></div -><br> +</div></div> +<br> diff --git a/tests/wpt/tests/css/css-align/abspos/align-self-static-position-001-ref.html b/tests/wpt/tests/css/css-align/abspos/align-self-static-position-001-ref.html new file mode 100644 index 00000000000..94d0b43b212 --- /dev/null +++ b/tests/wpt/tests/css/css-align/abspos/align-self-static-position-001-ref.html @@ -0,0 +1,59 @@ +<!DOCTYPE html> +<style> +.block { + width: 75px; + height: 50px; + z-index: -1; + border: 5px dotted blue; +} + +.container { + border: 1px solid; + position: relative; + width: 100px; + height: 100px; + display: inline-block; + margin-left: 50px; + margin-bottom: 50px; +} + +.abs { + width: 50px; + height: 50px; + position: absolute; + background: purple; +} +</style> +<!-- start aligned --> +<div class="container"><div class="block"> + <div class="abs"></div> +</div></div> +<div class="container"><div class="block"> + <div class="abs" style="top: 0px;"></div> +</div></div> +<div class="container"><div class="block"> + <div class="abs" style="left: 0px;"></div> +</div></div> +<br> +<!-- end aligned --> +<div class="container"><div class="block"> + <div class="abs" style="top: -45px; left: 30px;"></div> +</div></div> +<div class="container"><div class="block"> + <div class="abs" style="top: 50px; left: 30px;"></div> +</div></div> +<div class="container"><div class="block"> + <div class="abs" style="top: -45px; left: 50px;"></div> +</div></div> +<br> +<!-- center aligned --> +<div class="container"><div class="block"> + <div class="abs" style="top: -20px; left: 17.5px;"></div> +</div></div> +<div class="container"><div class="block"> + <div class="abs" style="top: 25px; left: 17.5px;"></div> +</div></div> +<div class="container"><div class="block"> + <div class="abs" style="top: -20px; left: 25px;"></div> +</div></div> +<br> diff --git a/tests/wpt/tests/css/css-align/abspos/align-self-static-position-001.html b/tests/wpt/tests/css/css-align/abspos/align-self-static-position-001.html new file mode 100644 index 00000000000..1ff73ef116d --- /dev/null +++ b/tests/wpt/tests/css/css-align/abspos/align-self-static-position-001.html @@ -0,0 +1,101 @@ +<!DOCTYPE html> +<title>Align-self applies to OOF elements of block elements when statically positioned.</title> +<link rel="author" title="Alison Maher" href="mailto:almaher@microsoft.com"> +<link rel="help" href="https://drafts.csswg.org/css-align-3/#valdef-align-self-auto"> +<link rel="help" href="https://drafts.csswg.org/css-align-3/#valdef-justify-self-auto"> +<link rel="help" href="https://drafts.csswg.org/css-position-3/#abspos-alignment"> +<link rel="help" href="https://issues.chromium.org/issues/409806799"> +<link rel="match" href="align-self-static-position-001-ref.html"> +<style> +.block { + display: block; + width: 75%; + height: 50%; + border: 5px dotted blue; +} + +.container { + border: 1px solid; + position: relative; + width: 100px; + height: 100px; + display: inline-block; + margin-left: 50px; + margin-bottom: 50px; +} + +.abs { + width: 50px; + height: 50px; + position: absolute; + background: purple; +} + +.static-positioned-inline { + left: auto; + right: auto; +} + +.static-positioned-block { + top: auto; + bottom: auto; +} + +.positioned-inline { + left: 0; + right: 0; +} + +.positioned-block { + top: 0; + bottom: 0; +} + +.center { + justify-self: center; + align-self: center; +} + +.end { + justify-self: end; + align-self: end; +} + +.start { + justify-self: start; + align-self: start; +} +</style> +<!-- start aligned --> +<div class="container"><div class="block"> + <div class="abs static-positioned-inline static-positioned-block start"></div> +</div></div> +<div class="container"><div class="block"> + <div class="abs static-positioned-inline positioned-block start"></div> +</div></div> +<div class="container"><div class="block"> + <div class="abs positioned-inline static-positioned-block start"></div> +</div></div> +<br> +<!-- end aligned --> +<div class="container"><div class="block"> + <div class="abs static-positioned-inline static-positioned-block end"></div> +</div></div> +<div class="container"><div class="block"> + <div class="abs static-positioned-inline positioned-block end"></div> +</div></div> +<div class="container"><div class="block"> + <div class="abs positioned-inline static-positioned-block end"></div> +</div></div> +<br> +<!-- center aligned --> +<div class="container"><div class="block"> + <div class="abs static-positioned-inline static-positioned-block center"></div> +</div></div> +<div class="container"><div class="block"> + <div class="abs static-positioned-inline positioned-block center"></div> +</div></div> +<div class="container"><div class="block"> + <div class="abs positioned-inline static-positioned-block center"></div> +</div></div> +<br> diff --git a/tests/wpt/tests/css/css-align/abspos/align-self-static-position-002-ref.html b/tests/wpt/tests/css/css-align/abspos/align-self-static-position-002-ref.html new file mode 100644 index 00000000000..d8bef63aa29 --- /dev/null +++ b/tests/wpt/tests/css/css-align/abspos/align-self-static-position-002-ref.html @@ -0,0 +1,59 @@ +<!DOCTYPE html> +<style> +.block { + width: 75px; + height: 50px; + z-index: -1; + border: 5px dotted blue; +} + +.container { + border: 1px solid; + position: relative; + width: 100px; + height: 100px; + display: inline-block; + margin-left: 50px; + margin-bottom: 50px; +} + +.abs { + width: 50px; + height: 50px; + position: absolute; + background: purple; +} +</style> +<!-- start aligned --> +<div class="container"><div class="block" style="margin-left: 15px;"> + <div class="abs" style="left: 45px;"></div> +</div></div> +<div class="container"><div class="block"> + <div class="abs" style="top: 0px;"></div> +</div></div> +<div class="container"><div class="block" style="margin-left: 15px;"> + <div class="abs" style="right: 0px;"></div> +</div></div> +<br> +<!-- end aligned --> +<div class="container"><div class="block"> + <div class="abs" style="left: -45px;"></div> +</div></div> +<div class="container"><div class="block" style="margin-left: 15px;"> + <div class="abs" style="top: 50px; right: -45px;"></div> +</div></div> +<div class="container"><div class="block"> + <div class="abs" style="left: 50px;"></div> +</div></div> +<br> +<!-- center aligned --> +<div class="container"><div class="block" style="margin-left: 15px;"> + <div class="abs" style="right: -20px;"></div> +</div></div> +<div class="container"><div class="block"> + <div class="abs" style="top: 25px; left: -20px;"></div> +</div></div> +<div class="container"><div class="block" style="margin-left: 15px;"> + <div class="abs" style="left: 25px;"></div> +</div></div> +<br> diff --git a/tests/wpt/tests/css/css-align/abspos/align-self-static-position-002.html b/tests/wpt/tests/css/css-align/abspos/align-self-static-position-002.html new file mode 100644 index 00000000000..4c794bac287 --- /dev/null +++ b/tests/wpt/tests/css/css-align/abspos/align-self-static-position-002.html @@ -0,0 +1,109 @@ +<!DOCTYPE html> +<title>Align-self applies to OOF elements of block elements when statically positioned with different writing modes.</title> +<link rel="author" title="Alison Maher" href="mailto:almaher@microsoft.com"> +<link rel="help" href="https://drafts.csswg.org/css-align-3/#valdef-align-self-auto"> +<link rel="help" href="https://drafts.csswg.org/css-align-3/#valdef-justify-self-auto"> +<link rel="help" href="https://drafts.csswg.org/css-position-3/#abspos-alignment"> +<link rel="help" href="https://issues.chromium.org/issues/409806799"> +<link rel="match" href="align-self-static-position-002-ref.html"> +<style> +.block { + display: block; + width: 75%; + height: 50%; + border: 5px dotted blue; +} + +.container { + border: 1px solid; + position: relative; + width: 100px; + height: 100px; + display: inline-block; + margin-left: 50px; + margin-bottom: 50px; +} + +.abs { + width: 50px; + height: 50px; + position: absolute; + background: purple; +} + +.static-positioned-inline { + left: auto; + right: auto; +} + +.static-positioned-block { + top: auto; + bottom: auto; +} + +.positioned-inline { + left: 0; + right: 0; +} + +.positioned-block { + top: 0; + bottom: 0; +} + +.center { + justify-self: center; + align-self: center; +} + +.end { + justify-self: end; + align-self: end; +} + +.start { + justify-self: start; + align-self: start; +} + +.vertRL { + writing-mode: vertical-rl; +} + +.vertLR { + writing-mode: vertical-lr; +} +</style> +<!-- start aligned --> +<div class="container vertRL"><div class="block"> + <div class="abs static-positioned-inline static-positioned-block start"></div> +</div></div> +<div class="container vertLR"><div class="block"> + <div class="abs static-positioned-inline positioned-block start"></div> +</div></div> +<div class="container vertRL"><div class="block"> + <div class="abs positioned-inline static-positioned-block start"></div> +</div></div> +<br> +<!-- end aligned --> +<div class="container vertLR"><div class="block"> + <div class="abs static-positioned-inline static-positioned-block end"></div> +</div></div> +<div class="container vertRL"><div class="block"> + <div class="abs static-positioned-inline positioned-block end"></div> +</div></div> +<div class="container vertLR"><div class="block"> + <div class="abs positioned-inline static-positioned-block end"></div> +</div></div> +<br> +<!-- center aligned --> +<div class="container vertRL"><div class="block"> + <div class="abs static-positioned-inline static-positioned-block center"></div> +</div></div> +<div class="container vertLR"><div class="block"> + <div class="abs static-positioned-inline positioned-block center"></div> +</div></div> +<div class="container vertRL"><div class="block"> + <div class="abs positioned-inline static-positioned-block center"></div> +</div></div> +<br> diff --git a/tests/wpt/tests/css/css-anchor-position/position-area-align-justify-wm-dir.html b/tests/wpt/tests/css/css-anchor-position/position-area-align-justify-wm-dir.html index 25b53d44f78..82a11a8868a 100644 --- a/tests/wpt/tests/css/css-anchor-position/position-area-align-justify-wm-dir.html +++ b/tests/wpt/tests/css/css-anchor-position/position-area-align-justify-wm-dir.html @@ -22,7 +22,7 @@ position: absolute; width: 10px; height: 10px; - inset: 10px; + inset: 10px 15px 20px 25px; position-anchor: --anchor; } </style> @@ -41,10 +41,10 @@ }, "Offsets for: " + position_area + " with writing-mode / direction: " + writing_direction); } - const top_left = {left:80, top:80, width:10, height:10}; - const top_right = {left:210, top:80, width:10, height:10}; - const bottom_left = {left:80, top:210, width:10, height:10}; - const bottom_right = {left:210, top:210, width:10, height:10}; + const top_left = {left:75, top:70, width:10, height:10}; + const top_right = {left:225, top:70, width:10, height:10}; + const bottom_left = {left:75, top:210, width:10, height:10}; + const bottom_right = {left:225, top:210, width:10, height:10}; anchored.style.writingMode = "horizontal-tb"; anchored.style.direction = "ltr"; diff --git a/tests/wpt/tests/css/css-anchor-position/position-area-align-justify.html b/tests/wpt/tests/css/css-anchor-position/position-area-align-justify.html index e0bce2c8268..483a9d6ec0a 100644 --- a/tests/wpt/tests/css/css-anchor-position/position-area-align-justify.html +++ b/tests/wpt/tests/css/css-anchor-position/position-area-align-justify.html @@ -22,7 +22,7 @@ position: absolute; width: 10px; height: 10px; - inset: 10px; + inset: 10px 15px 20px 25px; position-anchor: --anchor; } </style> @@ -46,20 +46,20 @@ test_position_area("span-all", {left:145, top:145, width:10, height:10}); // Single region spans - test_position_area("top left", {left:80, top:80, width:10, height:10}); - test_position_area("top center", {left:145, top:80, width:10, height:10}); - test_position_area("top right", {left:210, top:80, width:10, height:10}); - test_position_area("center left", {left:80, top:145, width:10, height:10}); - test_position_area("center center", {left:145, top:145, width:10, height:10}); - test_position_area("center right", {left:210, top:145, width:10, height:10}); - test_position_area("bottom left", {left:80, top:210, width:10, height:10}); - test_position_area("bottom center", {left:145, top:210, width:10, height:10}); - test_position_area("bottom right", {left:210, top:210, width:10, height:10}); + test_position_area("top left", {left:75, top:70, width:10, height:10}); + test_position_area("top center", {left:150, top:70, width:10, height:10}); + test_position_area("top right", {left:225, top:70, width:10, height:10}); + test_position_area("center left", {left:75, top:140, width:10, height:10}); + test_position_area("center center", {left:150, top:140, width:10, height:10}); + test_position_area("center right", {left:225, top:140, width:10, height:10}); + test_position_area("bottom left", {left:75, top:210, width:10, height:10}); + test_position_area("bottom center", {left:150, top:210, width:10, height:10}); + test_position_area("bottom right", {left:225, top:210, width:10, height:10}); // Multi-region spans - test_position_area("top span-left", {left:180, top:80, width:10, height:10}); - test_position_area("top span-right", {left:110, top:80, width:10, height:10}); - test_position_area("span-top left", {left:80, top:180, width:10, height:10}); - test_position_area("span-bottom left", {left:80, top:110, width:10, height:10}); + test_position_area("top span-left", {left:175, top:70, width:10, height:10}); + test_position_area("top span-right", {left:125, top:70, width:10, height:10}); + test_position_area("span-top left", {left:75, top:170, width:10, height:10}); + test_position_area("span-bottom left", {left:75, top:110, width:10, height:10}); </script> diff --git a/tests/wpt/tests/css/css-anchor-position/position-area-in-grid.html b/tests/wpt/tests/css/css-anchor-position/position-area-in-grid.html index b258f57bc8a..3407fcbc351 100644 --- a/tests/wpt/tests/css/css-anchor-position/position-area-in-grid.html +++ b/tests/wpt/tests/css/css-anchor-position/position-area-in-grid.html @@ -56,6 +56,7 @@ position: relative; width: 400px; height: 400px; + outline: 1px solid; } #anchor { @@ -65,6 +66,7 @@ width: 150px; height: 75px; anchor-name: --anchor; + background: blue; } #anchored { @@ -76,6 +78,7 @@ align-self: stretch; justify-self: stretch; position-anchor: --anchor; + border: solid orange; } </style> diff --git a/tests/wpt/tests/css/css-anchor-position/remove-position-try-rules-001.html b/tests/wpt/tests/css/css-anchor-position/remove-position-try-rules-001.html new file mode 100644 index 00000000000..56ad5cf7b32 --- /dev/null +++ b/tests/wpt/tests/css/css-anchor-position/remove-position-try-rules-001.html @@ -0,0 +1,59 @@ +<!DOCTYPE html> +<title>Remove current fallback @position-try rules</title> +<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> +<link rel="help" href="https://issues.chromium.org/issues/411170230"> +<style id="removeme"> + @position-try --pf1 { + left: auto; + right: anchor(left); + top: 200px; + } +</style> +<style id="removemetoo"> + @position-try --pf2 { + left: auto; + right: anchor(left); + top: 300px; + } +</style> +<style> + #anchor { + anchor-name: --a; + margin-left: 100px; + height: 100px; + background: hotpink; + } + #box { + position: absolute; + position-anchor: --a; + top: 100px; + left: anchor(right); + position-try-fallbacks: --pf1,--pf2; + width: 50px; + height: 50px; + background: cyan; + } +</style> +<div id="anchor"></div> +<div id="box"></div> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="support/test-common.js"></script> +<script> +promise_test(async () => { + // The base style option doesn't fit. The two others do fit. + // Remove them one by one. + await waitUntilNextAnimationFrame(); + await waitUntilNextAnimationFrame(); + assert_equals(box.offsetTop, 200); + removeme.remove(); + await waitUntilNextAnimationFrame(); + await waitUntilNextAnimationFrame(); + assert_equals(box.offsetTop, 300); + removemetoo.remove(); + await waitUntilNextAnimationFrame(); + await waitUntilNextAnimationFrame(); + assert_equals(box.offsetTop, 100); +}, "Remove fallback rules"); +</script> diff --git a/tests/wpt/tests/css/css-animations/parsing/keyframe-selectors.html b/tests/wpt/tests/css/css-animations/parsing/keyframe-selectors.html new file mode 100644 index 00000000000..900cba5a05a --- /dev/null +++ b/tests/wpt/tests/css/css-animations/parsing/keyframe-selectors.html @@ -0,0 +1,45 @@ +<!DOCTYPE html> +<title>CSS Animations Test: Parse tests for keyframe selectors</title> +<link rel="help" href="https://drafts.csswg.org/css-animations-1/#keyframes"> +<link rel="help" href="https://drafts.csswg.org/scroll-animations-1/#typedef-timeline-range-name"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style id="test_sheet"> +</style> +<script> + function isValidKeyFrameSelector(selector_text) { + let sheet = test_sheet.sheet; + sheet.insertRule(`@keyframes --foo { ${selector_text} {} }`); + let keyframe_rule = sheet.cssRules[0].cssRules[0]; + sheet.deleteRule(0); + return keyframe_rule != undefined; + } + + function test_valid_keyframe_selector(selector_text) { + test(() => { + assert_true(isValidKeyFrameSelector(selector_text)); + }, `'${selector_text}' should be a valid keyframe selector`); + } + + function test_invalid_keyframe_selector(selector_text) { + test(() => { + assert_false(isValidKeyFrameSelector(selector_text)); + }, `'${selector_text}' should not be a valid keyframe selector`); + } + + test_valid_keyframe_selector("0%"); + test_valid_keyframe_selector("10%"); + test_valid_keyframe_selector("100%"); + test_valid_keyframe_selector("from"); + test_valid_keyframe_selector("to"); + test_valid_keyframe_selector("entry 10%"); + test_valid_keyframe_selector("exit 60%"); + + test_invalid_keyframe_selector("-10%"); + test_invalid_keyframe_selector("120%"); + test_invalid_keyframe_selector("calc(10%)"); + test_invalid_keyframe_selector("calc(10% * sibling-index())"); + test_invalid_keyframe_selector("calc(10% * sign(1em - 1px))"); + test_invalid_keyframe_selector("entry calc(10%)"); + test_invalid_keyframe_selector("exit calc(60%)"); +</script> diff --git a/tests/wpt/tests/css/css-color/parsing/color-valid-relative-color.html b/tests/wpt/tests/css/css-color/parsing/color-valid-relative-color.html index f1f31b93d41..142f96bcf9b 100644 --- a/tests/wpt/tests/css/css-color/parsing/color-valid-relative-color.html +++ b/tests/wpt/tests/css/css-color/parsing/color-valid-relative-color.html @@ -560,7 +560,7 @@ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.2 300) calc(l - 0.2) c h)`, `oklch(from oklch(0.7 0.2 300) calc(-0.2 + l) c h)`); fuzzy_test_valid_color(`oklch(from oklch(0.7 0.2 300) l calc(c / 2) h)`, `oklch(from oklch(0.7 0.2 300) l calc(0.5 * c) h)`); fuzzy_test_valid_color(`oklch(from oklch(0.7 0.2 300) l c calc(h * 2.5))`, `oklch(from oklch(0.7 0.2 300) l c calc(2.5 * h))`); - fuzzy_test_valid_color(`oklch(from red calc(1 / l) c h)`, `oklch(from red calc((1 / l)) c h)`); + fuzzy_test_valid_color(`oklch(from red calc(1 / l) c h)`); // Testing with 'none'. fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) none none none)`); diff --git a/tests/wpt/tests/css/css-conditional/container-queries/position-sticky-crash.html b/tests/wpt/tests/css/css-conditional/container-queries/position-sticky-crash.html new file mode 100644 index 00000000000..aebebbdc7ac --- /dev/null +++ b/tests/wpt/tests/css/css-conditional/container-queries/position-sticky-crash.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<link rel="help" href="https://issues.chromium.org/issues/399689229"> +<style> +.container { + min-width: 30px; + container-type: inline-size; +} + +.scroller { + overflow: scroll; + width: 100px; + height: 100px; +} + +@container (width = 100px) { + .scroller { display: none; } +} + +.float { + background: cyan; + float: left; +} +</style> +<div style="display: flow-root; width: 100px;"> + <!-- The floats create a situation where it needs to perform layout twice, first with 50px, then 100px. --> + <div class="float" style="width: 50px; height: 50px;"></div> + <div class="float" style="width: 100px; height: 50px;"></div> + + <div class="container"> + <div class="scroller"> + <div style="position: sticky; top: 0;"></div> + </div> + </div> +</div> diff --git a/tests/wpt/tests/css/css-display/display-contents-pseudo-click-target.html b/tests/wpt/tests/css/css-display/display-contents-pseudo-click-target.html new file mode 100644 index 00000000000..2620c97312f --- /dev/null +++ b/tests/wpt/tests/css/css-display/display-contents-pseudo-click-target.html @@ -0,0 +1,43 @@ +<!doctype html> +<title>Clicking a display: contents pseudo-element targets that element</title> +<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez"> +<link rel="author" href="https://mozilla.org" title="Mozilla"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1959364"> +<link rel="help" href="https://drafts.csswg.org/css-display-4/#valdef-display-contents"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/resources/testdriver-actions.js"></script> +<style> + div { + width: 100px; + height: 100px; + background-color: green; + position: relative; + } + a { + display: contents; + + &::after { + content: ""; + position: absolute; + inset: 0; + } + } +</style> +<div> + <a href="#"></a> +</div> +<script> +promise_test(async function() { + let target = document.querySelector("a"); + let hitLink = false; + target.addEventListener("click", function(e) { + hitLink = true; + e.preventDefault(); + }); + await test_driver.click(target.parentElement); + assert_true(hitLink, "Link should've been clicked"); +}); +</script> diff --git a/tests/wpt/tests/css/css-flexbox/overflow-area-001.html b/tests/wpt/tests/css/css-flexbox/overflow-area-001.html index 10685c6e84a..ac0573a7282 100644 --- a/tests/wpt/tests/css/css-flexbox/overflow-area-001.html +++ b/tests/wpt/tests/css/css-flexbox/overflow-area-001.html @@ -15,7 +15,7 @@ overflow: scroll; border: solid blue; background: aqua; - margin: 1em 0.5em; + margin: 0.5em; float: left; } div { diff --git a/tests/wpt/tests/css/css-flexbox/overflow-area-002.html b/tests/wpt/tests/css/css-flexbox/overflow-area-002.html index 1287270f1ef..24fb312397d 100644 --- a/tests/wpt/tests/css/css-flexbox/overflow-area-002.html +++ b/tests/wpt/tests/css/css-flexbox/overflow-area-002.html @@ -16,7 +16,7 @@ overflow: scroll; border: solid blue; background: aqua; - margin: 1em 0.5em; + margin: 0.5em; float: left; } div { diff --git a/tests/wpt/tests/css/css-flexbox/overflow-area-003.html b/tests/wpt/tests/css/css-flexbox/overflow-area-003.html index ff86dea30f1..382fb886339 100644 --- a/tests/wpt/tests/css/css-flexbox/overflow-area-003.html +++ b/tests/wpt/tests/css/css-flexbox/overflow-area-003.html @@ -22,7 +22,7 @@ width: 60px; height: 60px; background: teal; - margin: 1em 0.5em; + margin: 0.5em; float: left; } diff --git a/tests/wpt/tests/css/css-flexbox/reference/overflow-area-001-ref.html b/tests/wpt/tests/css/css-flexbox/reference/overflow-area-001-ref.html index 2c2a825f41e..cd13c7e0915 100644 --- a/tests/wpt/tests/css/css-flexbox/reference/overflow-area-001-ref.html +++ b/tests/wpt/tests/css/css-flexbox/reference/overflow-area-001-ref.html @@ -12,7 +12,7 @@ overflow: scroll; border: solid blue; background: aqua; - margin: 1em 0.5em; + margin: 0.5em; float: left; width: 80px; height: 80px; diff --git a/tests/wpt/tests/css/css-flexbox/reference/overflow-area-002-ref.html b/tests/wpt/tests/css/css-flexbox/reference/overflow-area-002-ref.html index f5d06c6cf3e..6422d4f7dfb 100644 --- a/tests/wpt/tests/css/css-flexbox/reference/overflow-area-002-ref.html +++ b/tests/wpt/tests/css/css-flexbox/reference/overflow-area-002-ref.html @@ -13,7 +13,7 @@ overflow: scroll; border: solid blue; background: aqua; - margin: 1em 0.5em; + margin: 0.5em; float: left; width: 80px; height: 80px; diff --git a/tests/wpt/tests/css/css-flexbox/reference/overflow-area-003-ref.html b/tests/wpt/tests/css/css-flexbox/reference/overflow-area-003-ref.html index 2d9bf19922c..40df8cb5a8b 100644 --- a/tests/wpt/tests/css/css-flexbox/reference/overflow-area-003-ref.html +++ b/tests/wpt/tests/css/css-flexbox/reference/overflow-area-003-ref.html @@ -17,7 +17,7 @@ width: 60px; height: 60px; background: teal; - margin: 1em 0.5em; + margin: 0.5em; float: left; } </style> diff --git a/tests/wpt/tests/css/css-fonts/font-shorthand-serialization-font-stretch.html b/tests/wpt/tests/css/css-fonts/font-shorthand-serialization-font-stretch.html index 3079cc06e7e..7bc591ec73d 100644 --- a/tests/wpt/tests/css/css-fonts/font-shorthand-serialization-font-stretch.html +++ b/tests/wpt/tests/css/css-fonts/font-shorthand-serialization-font-stretch.html @@ -94,7 +94,7 @@ test(function() { assert_equals(div.style.font, "ultra-condensed medium serif"); div.style.fontStretch = "calc(50% + 25% * sign(100em - 1px))"; - assert_equals(div.style.fontStretch, "calc(50% + 25% * sign(100em - 1px))"); + assert_equals(div.style.fontStretch, "calc(50% + (25% * sign(100em - 1px)))"); assert_equals(div.style.font, ""); }, "calc() transformation into keywords"); diff --git a/tests/wpt/tests/css/css-gaps/tentative/agnostic/gap-decorations-001-ref.html b/tests/wpt/tests/css/css-gaps/agnostic/gap-decorations-001-ref.html index a7314fc7dca..a7314fc7dca 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/agnostic/gap-decorations-001-ref.html +++ b/tests/wpt/tests/css/css-gaps/agnostic/gap-decorations-001-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-001.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-001.html index 0667693f38c..b32e2f13d8c 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-001.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-001.html @@ -3,7 +3,7 @@ CSS Gap Decorations: column and row gaps are painted. </title> <link rel="help" href="https://drafts.csswg.org/css-gaps-1/"> -<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht"> +<link rel="match" href="../../reference/ref-filled-green-100px-square.xht"> <link rel="author" title="Javier Contreras" href="mailto:javiercon@microsoft.com"> <style> .flex-container { diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-002.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-002.html index 58740200d4a..58740200d4a 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-002.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-002.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-003-ref.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-003-ref.html index 137a63474b8..137a63474b8 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-003-ref.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-003-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-003.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-003.html index effab7fee24..effab7fee24 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-003.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-003.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-004-ref.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-004-ref.html index f77dd318db7..f77dd318db7 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-004-ref.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-004-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-004.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-004.html index a5c0698e7fa..a5c0698e7fa 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-004.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-004.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-005-ref.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-005-ref.html index 04b3e8d1af4..04b3e8d1af4 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-005-ref.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-005-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-005.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-005.html index 1688d447d50..1688d447d50 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-005.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-005.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-006-ref.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-006-ref.html index 46c4fd49e39..46c4fd49e39 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-006-ref.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-006-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-006.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-006.html index 3d7dbfd9fed..3d7dbfd9fed 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-006.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-006.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-007-ref.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-007-ref.html index 8511c66acf4..8511c66acf4 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-007-ref.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-007-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-007.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-007.html index 34853bb3206..34853bb3206 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-007.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-007.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-008-ref.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-008-ref.html index 8ca5749417f..8ca5749417f 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-008-ref.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-008-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-008.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-008.html index bd4e73c158c..bd4e73c158c 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-008.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-008.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-009-ref.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-009-ref.html index 0adb9af6994..0adb9af6994 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-009-ref.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-009-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-009.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-009.html index 6bb406c5b01..6bb406c5b01 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-009.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-009.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-010-ref.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-010-ref.html index 8756c5d038c..8756c5d038c 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-010-ref.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-010-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-010.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-010.html index 49f6ec962ad..49f6ec962ad 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-010.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-010.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-011-ref.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-011-ref.html index 082be2875a4..082be2875a4 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-011-ref.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-011-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-011.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-011.html index 7b142e54ec7..7b142e54ec7 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-011.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-011.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-012-ref.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-012-ref.html index 33be4b76212..33be4b76212 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-012-ref.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-012-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-012.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-012.html index 2f1f95c00c8..2f1f95c00c8 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-012.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-012.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-013-ref.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-013-ref.html index 3d999788023..3d999788023 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-013-ref.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-013-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-013.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-013.html index 1cdf1c27496..1cdf1c27496 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-013.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-013.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-014-ref.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-014-ref.html index 59ce37deaec..59ce37deaec 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-014-ref.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-014-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-014.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-014.html index b7d19549e03..b7d19549e03 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-014.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-014.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-015-ref.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-015-ref.html index 48745eff931..48745eff931 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-015-ref.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-015-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-015.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-015.html index 8d100978205..8d100978205 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-015.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-015.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-016-ref.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-016-ref.html index 155e0bfac7b..155e0bfac7b 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-016-ref.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-016-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-016.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-016.html index 9f956369d48..9f956369d48 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-016.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-016.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-017-ref.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-017-ref.html index 031be2abaf1..031be2abaf1 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-017-ref.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-017-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-017.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-017.html index 21fb643a241..21fb643a241 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-017.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-017.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-018-ref.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-018-ref.html index 644a409bd97..644a409bd97 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-018-ref.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-018-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-018.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-018.html index 073fa1b9af7..073fa1b9af7 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-018.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-018.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-019.html b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-019.html index 93618f71e8f..5bad5f00d49 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/flex/flex-gap-decorations-019.html +++ b/tests/wpt/tests/css/css-gaps/flex/flex-gap-decorations-019.html @@ -3,7 +3,7 @@ CSS Gap Decorations: Painting flex gaps with bi-directional `rule-color` shorthand. </title> <link rel="help" href="https://drafts.csswg.org/css-gaps-1/"> -<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht"> +<link rel="match" href="../../reference/ref-filled-green-100px-square.xht"> <link rel="author" title="Javier Contreras" href="mailto:javiercon@microsoft.com"> <style> .flex-container { @@ -14,8 +14,7 @@ background: red; rule-color: green; rule-width: 10px; - column-rule-style: solid; - row-rule-style: solid; + rule-style: solid; flex-wrap: wrap; } diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-001.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-001.html index 5fe13a11bbf..648f3f26e56 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-001.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-001.html @@ -3,7 +3,7 @@ CSS Gap Decorations: column and row gaps are painted. </title> <link rel="help" href="https://drafts.csswg.org/css-gaps-1/"> -<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht"> +<link rel="match" href="../../reference/ref-filled-green-100px-square.xht"> <link rel="author" title="Sam Davis Omekara Jr." href="mailto:samomekarajr@microsoft.com"> <style> .grid-container { diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-002.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-002.html index 7e7e0e4d325..7e7e0e4d325 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-002.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-002.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-003-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-003-ref.html index 15fc305633d..15fc305633d 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-003-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-003-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-003.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-003.html index f9d07a183ec..f9d07a183ec 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-003.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-003.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-004-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-004-ref.html index e4e6b8b458f..e4e6b8b458f 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-004-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-004-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-004.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-004.html index e28988151a5..e28988151a5 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-004.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-004.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-005-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-005-ref.html index aebfba5a20e..aebfba5a20e 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-005-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-005-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-005.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-005.html index 741977d2eb4..741977d2eb4 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-005.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-005.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-006-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-006-ref.html index 94d455c1d86..94d455c1d86 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-006-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-006-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-006.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-006.html index 7b1187c4e44..7b1187c4e44 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-006.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-006.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-007-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-007-ref.html index 5d89f414ed5..5d89f414ed5 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-007-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-007-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-007.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-007.html index adc98e4bc03..adc98e4bc03 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-007.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-007.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-008-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-008-ref.html index 3e2562cfccb..3e2562cfccb 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-008-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-008-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-008.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-008.html index f8dc0df36e2..f8dc0df36e2 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-008.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-008.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-009-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-009-ref.html index 964f2111eb8..964f2111eb8 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-009-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-009-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-009.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-009.html index 0756b9294be..0756b9294be 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-009.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-009.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-010-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-010-ref.html index 0c07124b086..0c07124b086 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-010-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-010-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-010.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-010.html index d9201b51cea..d9201b51cea 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-010.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-010.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-011-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-011-ref.html index c8824a5296e..c8824a5296e 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-011-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-011-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-011.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-011.html index c0540398d05..c0540398d05 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-011.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-011.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-012-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-012-ref.html index 51ca67dd6a2..51ca67dd6a2 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-012-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-012-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-012.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-012.html index 26ba45a14ff..26ba45a14ff 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-012.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-012.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-013-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-013-ref.html index 7ebf7c00b18..7ebf7c00b18 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-013-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-013-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-013.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-013.html index 4a056134089..4a056134089 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-013.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-013.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-014-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-014-ref.html index 7631d5287a8..7631d5287a8 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-014-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-014-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-014.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-014.html index 97ad626e1f2..97ad626e1f2 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-014.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-014.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-015-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-015-ref.html index f95324d3320..f95324d3320 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-015-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-015-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-015.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-015.html index e575c134353..e575c134353 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-015.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-015.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-016-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-016-ref.html index c11380a68aa..c11380a68aa 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-016-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-016-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-016.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-016.html index a0618e44b56..a0618e44b56 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-016.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-016.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-017-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-017-ref.html index ac0bbd1f1e1..ac0bbd1f1e1 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-017-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-017-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-017.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-017.html index be0f7fc2751..be0f7fc2751 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-017.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-017.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-018-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-018-ref.html index 072dc508ea3..072dc508ea3 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-018-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-018-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-018.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-018.html index dc5e2e38e0b..dc5e2e38e0b 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-018.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-018.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-019-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-019-ref.html index e9f8a87979d..e9f8a87979d 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-019-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-019-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-019.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-019.html index 637e0467a80..637e0467a80 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-019.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-019.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-020-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-020-ref.html index 6f31b5a09fc..6f31b5a09fc 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-020-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-020-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-020.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-020.html index eb91644053f..eb91644053f 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-020.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-020.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-021-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-021-ref.html index de36d206606..de36d206606 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-021-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-021-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-021.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-021.html index 63db3b4e048..63db3b4e048 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-021.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-021.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-022.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-022.html index 730114aa763..ad73239bade 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-022.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-022.html @@ -3,7 +3,7 @@ CSS Gap Decorations: Painting grid gaps with bi-directional `rule-color` shorthand. </title> <link rel="help" href="https://drafts.csswg.org/css-gaps-1/#propdef-rule-color"> -<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht"> +<link rel="match" href="../../reference/ref-filled-green-100px-square.xht"> <link rel="author" title="Sam Davis Omekara Jr." href="mailto:samomekarajr@microsoft.com"> <style> .grid-container { @@ -15,8 +15,7 @@ background: red; rule-color: green; rule-width: 10px; - column-rule-style: solid; - row-rule-style: solid; + rule-style: solid; } .grid-item { diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-023-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-023-ref.html index e630694c6a5..e630694c6a5 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-023-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-023-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-023.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-023.html index 706f66ebcfa..706f66ebcfa 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-023.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-023.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-024-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-024-ref.html index 94b1eccd747..94b1eccd747 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-024-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-024-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-024.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-024.html index 104df87c7e2..104df87c7e2 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-024.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-024.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-025-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-025-ref.html index 3834da46a5d..3834da46a5d 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-025-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-025-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-025.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-025.html index fc48f15f5c2..fc48f15f5c2 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-025.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-025.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-026-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-026-ref.html index d57c622810d..d57c622810d 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-026-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-026-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-026.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-026.html index 17e0a99dd84..17e0a99dd84 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-026.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-026.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-027-ref.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-027-ref.html index 7e0d9cbcd6f..7e0d9cbcd6f 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-027-ref.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-027-ref.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-027.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-027.html index e39305f74b8..e39305f74b8 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-027.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-027.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-028.html b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-028.html index 125a34ca966..125a34ca966 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/grid/grid-gap-decorations-028.html +++ b/tests/wpt/tests/css/css-gaps/grid/grid-gap-decorations-028.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-bidirectional-shorthands.html b/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-bidirectional-shorthands.html index 95b5bf6aea8..9ff3815c21f 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-bidirectional-shorthands.html +++ b/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-bidirectional-shorthands.html @@ -19,9 +19,8 @@ column-rule-width: 10px; row-rule-width: 10px; - /* Adding `column-rule-style` property because - `column-rule-width` defaults to 0px without it */ column-rule-style: solid; + row-rule-style: solid; } #target2 { @@ -30,25 +29,31 @@ column-rule-width: 15px; row-rule-width: 20px; + + column-rule-style: double; + row-rule-style: dotted; } </style> <script> test(function() { assert_equals(window.getComputedStyle(document.getElementById('target1')).getPropertyValue('rule-color'), 'rgb(0, 255, 0)'); - }, "rule-color shorthand computed from longhand values"); test(function() { assert_equals(window.getComputedStyle(document.getElementById('target1')).getPropertyValue('rule-width'), '10px'); - }, "rule-width shorthand computed from longhand values"); + test(function() { + assert_equals(window.getComputedStyle(document.getElementById('target1')).getPropertyValue('rule-style'), 'solid'); + }, "rule-style shorthand computed from longhand values"); test(function() { assert_equals(window.getComputedStyle(document.getElementById('target2')).getPropertyValue('rule-color'), ''); }, "rule-color shorthand cannot be computed from longhand values so expect an empty string"); - test(function() { assert_equals(window.getComputedStyle(document.getElementById('target2')).getPropertyValue('rule-width'), ''); }, "rule-width shorthand cannot be computed from longhand values so expect an empty string"); + test(function() { + assert_equals(window.getComputedStyle(document.getElementById('target2')).getPropertyValue('rule-style'), ''); + }, "rule-style shorthand cannot be computed from longhand values so expect an empty string"); </script> </body> </html> diff --git a/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-color-computed.html b/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-color-computed.html index fbc3c3f4c97..fbc3c3f4c97 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-color-computed.html +++ b/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-color-computed.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-color-invalid.html b/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-color-invalid.html index 5a0128e2303..5a0128e2303 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-color-invalid.html +++ b/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-color-invalid.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-color-valid.html b/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-color-valid.html index f4cc0156e3f..f4cc0156e3f 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-color-valid.html +++ b/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-color-valid.html diff --git a/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-style-computed.html b/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-style-computed.html new file mode 100644 index 00000000000..8c78bf618e3 --- /dev/null +++ b/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-style-computed.html @@ -0,0 +1,43 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Gap Decoration: column-rule-style getComputedStyle()</title> +<link rel="help" href="https://drafts.csswg.org/css-gaps-1/#column-row-rule-style"> +<link rel="author" title="Sam Davis Omekara Jr." href="mailto:samomekarajr@microsoft.com"> +<meta name="assert" content="*-rule-style computed value is as specified."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/computed-testcommon.js"></script> +</head> +<body> +<div id="target"></div> +<script> +const properties = ["column-rule-style", "row-rule-style", "rule-style"]; +for (let property of properties) { + test_computed_value(property, "none"); + test_computed_value(property, "hidden"); + test_computed_value(property, "dotted"); + test_computed_value(property, "dashed"); + test_computed_value(property, "solid"); + test_computed_value(property, "double"); + test_computed_value(property, "groove"); + test_computed_value(property, "ridge"); + test_computed_value(property, "inset"); + + test_computed_value(property, "dotted dashed solid"); + test_computed_value(property, "repeat(10, double)"); + test_computed_value(property, "repeat(3, groove) repeat(4, ridge)"); + test_computed_value(property, "repeat(auto, solid)"); + test_computed_value(property, "repeat(auto, dotted solid inset)"); + test_computed_value(property, "repeat(4, none ridge solid) repeat(auto, hidden)"); + test_computed_value(property, "inset repeat(auto, solid ridge) repeat(4, none groove hidden)"); + test_computed_value(property, "repeat(calc(5 + 3), ridge)", "repeat(8, ridge)"); + test_computed_value(property, "repeat(4, dotted double dashed) repeat(auto, solid) ridge"); + test_computed_value(property, "repeat(4, dotted double dashed) repeat(auto, solid) repeat(4, none groove hidden)"); + test_computed_value(property, "ridge repeat(auto, solid)"); + test_computed_value(property, "ridge repeat(auto, solid) ridge"); +} +</script> +</body> +</html> diff --git a/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-style-invalid.html b/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-style-invalid.html new file mode 100644 index 00000000000..48ac0680338 --- /dev/null +++ b/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-style-invalid.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Gap Decorations: column-rule-style parsing</title> +<link rel="help" href="https://drafts.csswg.org/css-gaps-1/#column-row-rule-style"> +<link rel="author" title="Sam Davis Omekara Jr." href="mailto:samomekarajr@microsoft.com"> +<meta name="assert" content="*-rule-style supports only the grammar '[ <line-style-list> | <auto-line-style-list> ]'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/parsing-testcommon.js"></script> +</head> +<body> +<script> +const properties = ["column-rule-style", "row-rule-style", "rule-style"]; +for (let property of properties) { + test_invalid_value(property, "auto"); + test_invalid_value(property, "dashed, dotted, solid"); + test_invalid_value(property, "repeat(auto, groove, dotted, ridge)"); + test_invalid_value(property, "repeat(0, dotted, solid, double)"); + test_invalid_value(property, "repeat(-1, dotted, dashed, double)"); + test_invalid_value(property, "repeat(auto, dotted) red repeat(auto, ridge)"); +} +</script> +</body> +</html> diff --git a/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-style-valid.html b/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-style-valid.html new file mode 100644 index 00000000000..1eb259a82bc --- /dev/null +++ b/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-style-valid.html @@ -0,0 +1,47 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Gap Decorations: parsing column-rule-style with valid values</title> +<link rel="help" href="https://drafts.csswg.org/css-gaps-1/#column-row-rule-style"> +<link rel="author" title="Sam Davis Omekara Jr." href="mailto:samomekarajr@microsoft.com"> +<meta name="assert" content="*-rule-style supports the full grammar '[ <line-style-list> | <auto-line-style-list> ]'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/css/support/parsing-testcommon.js"></script> +</head> +<body> +<script> + +const properties = ["column-rule-style", "row-rule-style", "rule-style"]; +for (let property of properties) { + // <repeat-line-style> = repeat( [ <integer [1,∞]> ] , [ <style> ]+ ) + test_valid_value(property, "repeat(4, dotted)"); + test_valid_value(property, "repeat(3, dashed double dotted)"); + test_valid_value(property, "repeat(1, dashed double dotted solid)"); + + // <line-style-or-repeat> = [ <style> | <repeat-line-style> ] + test_valid_value(property, "dashed"); + test_valid_value(property, "repeat(4, double)"); + + // <line-style-list> = [ <line-style-or-repeat> ]+ + test_valid_value(property, "dotted ridge"); + test_valid_value(property, "dotted dashed solid groove ridge"); + test_valid_value(property, "repeat(3, groove) repeat(4, ridge)"); + test_valid_value(property, "inset repeat(3, ridge) none repeat(4, groove hidden dashed)"); + test_valid_value(property, "repeat(4, none ridge solid) repeat(5, hidden) double"); + + // <auto-repeat-line-style> = repeat( auto , [ <style> ]+ ) + test_valid_value(property, "repeat(auto, solid)"); + test_valid_value(property, "repeat(auto, dotted solid inset)"); + + // <auto-line-style-list> = [ <line-style-or-repeat> ]* + // <auto-repeat-line-style> + // [ <line-style-or-repeat> ]* + test_valid_value(property, "repeat(auto, dashed groove) ridge"); + test_valid_value(property, "repeat(4, dotted double dashed) repeat(auto, solid)"); + test_valid_value(property, "inset repeat(auto, solid ridge) repeat(4, none groove hidden)"); +} +</script> +</body> +</html> diff --git a/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-width-computed.html b/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-width-computed.html index 299cbe0f3bb..299cbe0f3bb 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-width-computed.html +++ b/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-width-computed.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-width-invalid.html b/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-width-invalid.html index 025d5263626..025d5263626 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-width-invalid.html +++ b/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-width-invalid.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-width-valid.html b/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-width-valid.html index bd42d835623..bd42d835623 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-width-valid.html +++ b/tests/wpt/tests/css/css-gaps/parsing/gap-decorations-width-valid.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/parsing/rule-break-computed.html b/tests/wpt/tests/css/css-gaps/parsing/rule-break-computed.html index 0490428f3e7..0490428f3e7 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/parsing/rule-break-computed.html +++ b/tests/wpt/tests/css/css-gaps/parsing/rule-break-computed.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/parsing/rule-break-invalid.html b/tests/wpt/tests/css/css-gaps/parsing/rule-break-invalid.html index a6eb68a1644..a6eb68a1644 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/parsing/rule-break-invalid.html +++ b/tests/wpt/tests/css/css-gaps/parsing/rule-break-invalid.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/parsing/rule-break-valid.html b/tests/wpt/tests/css/css-gaps/parsing/rule-break-valid.html index 02f33880619..02f33880619 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/parsing/rule-break-valid.html +++ b/tests/wpt/tests/css/css-gaps/parsing/rule-break-valid.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/parsing/rule-outset-computed.html b/tests/wpt/tests/css/css-gaps/parsing/rule-outset-computed.html index dd59018ccf5..dd59018ccf5 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/parsing/rule-outset-computed.html +++ b/tests/wpt/tests/css/css-gaps/parsing/rule-outset-computed.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/parsing/rule-outset-invalid.html b/tests/wpt/tests/css/css-gaps/parsing/rule-outset-invalid.html index f39139ade83..f39139ade83 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/parsing/rule-outset-invalid.html +++ b/tests/wpt/tests/css/css-gaps/parsing/rule-outset-invalid.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/parsing/rule-outset-valid.html b/tests/wpt/tests/css/css-gaps/parsing/rule-outset-valid.html index 6ad45bbc7ac..6ad45bbc7ac 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/parsing/rule-outset-valid.html +++ b/tests/wpt/tests/css/css-gaps/parsing/rule-outset-valid.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/parsing/rule-paint-order-computed.html b/tests/wpt/tests/css/css-gaps/parsing/rule-paint-order-computed.html index 441be8670d7..441be8670d7 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/parsing/rule-paint-order-computed.html +++ b/tests/wpt/tests/css/css-gaps/parsing/rule-paint-order-computed.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/parsing/rule-paint-order-invalid.html b/tests/wpt/tests/css/css-gaps/parsing/rule-paint-order-invalid.html index b18349a1aed..b18349a1aed 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/parsing/rule-paint-order-invalid.html +++ b/tests/wpt/tests/css/css-gaps/parsing/rule-paint-order-invalid.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/parsing/rule-paint-order-valid.html b/tests/wpt/tests/css/css-gaps/parsing/rule-paint-order-valid.html index 6a4294f7f4b..6a4294f7f4b 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/parsing/rule-paint-order-valid.html +++ b/tests/wpt/tests/css/css-gaps/parsing/rule-paint-order-valid.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/serialization/gap-decorations-properties.html b/tests/wpt/tests/css/css-gaps/serialization/gap-decorations-properties.html index 4985b5550f2..4985b5550f2 100644 --- a/tests/wpt/tests/css/css-gaps/tentative/serialization/gap-decorations-properties.html +++ b/tests/wpt/tests/css/css-gaps/serialization/gap-decorations-properties.html diff --git a/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-style-computed.html b/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-style-computed.html deleted file mode 100644 index 4de870c0984..00000000000 --- a/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-style-computed.html +++ /dev/null @@ -1,62 +0,0 @@ -<!DOCTYPE html> -<html> -<head> -<meta charset="utf-8"> -<title>CSS Gap Decoration: column-rule-style getComputedStyle()</title> -<link rel="help" href="https://drafts.csswg.org/css-gaps-1/#column-row-rule-style"> -<link rel="author" title="Sam Davis Omekara Jr." href="mailto:samomekarajr@microsoft.com"> -<meta name="assert" content="*-rule-style computed value is as specified."> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/css/support/computed-testcommon.js"></script> -</head> -<body> -<div id="target"></div> -<script> -test_computed_value("column-rule-style", "none"); -test_computed_value("column-rule-style", "hidden"); -test_computed_value("column-rule-style", "dotted"); -test_computed_value("column-rule-style", "dashed"); -test_computed_value("column-rule-style", "solid"); -test_computed_value("column-rule-style", "double"); -test_computed_value("column-rule-style", "groove"); -test_computed_value("column-rule-style", "ridge"); -test_computed_value("column-rule-style", "inset"); -test_computed_value("row-rule-style", "none"); -test_computed_value("row-rule-style", "hidden"); -test_computed_value("row-rule-style", "dotted"); -test_computed_value("row-rule-style", "dashed"); -test_computed_value("row-rule-style", "solid"); -test_computed_value("row-rule-style", "double"); -test_computed_value("row-rule-style", "groove"); -test_computed_value("row-rule-style", "ridge"); -test_computed_value("row-rule-style", "inset"); - -test_computed_value("column-rule-style", "dotted dashed solid"); -test_computed_value("column-rule-style", "repeat(10, double)"); -test_computed_value("column-rule-style", "repeat(3, groove) repeat(4, ridge)"); -test_computed_value("column-rule-style", "repeat(auto, solid)"); -test_computed_value("column-rule-style", "repeat(auto, dotted solid inset)"); -test_computed_value("column-rule-style", "repeat(4, none ridge solid) repeat(auto, hidden)"); -test_computed_value("column-rule-style", "inset repeat(auto, solid ridge) repeat(4, none groove hidden)"); -test_computed_value("column-rule-style", "repeat(calc(5 + 3), ridge)", "repeat(8, ridge)"); -test_computed_value("column-rule-style", "repeat(4, dotted double dashed) repeat(auto, solid) ridge"); -test_computed_value("column-rule-style", "repeat(4, dotted double dashed) repeat(auto, solid) repeat(4, none groove hidden)"); -test_computed_value("column-rule-style", "ridge repeat(auto, solid)"); -test_computed_value("column-rule-style", "ridge repeat(auto, solid) ridge"); -test_computed_value("row-rule-style", "dotted dashed solid"); -test_computed_value("row-rule-style", "repeat(10, double)"); -test_computed_value("row-rule-style", "repeat(3, groove) repeat(4, ridge)"); -test_computed_value("row-rule-style", "repeat(auto, solid)"); -test_computed_value("row-rule-style", "repeat(auto, dotted solid inset)"); -test_computed_value("row-rule-style", "repeat(4, none ridge solid) repeat(auto, hidden)"); -test_computed_value("row-rule-style", "inset repeat(auto, solid ridge) repeat(4, none groove hidden)"); -test_computed_value("row-rule-style", "repeat(calc(5 + 3), ridge)", "repeat(8, ridge)"); -test_computed_value("row-rule-style", "repeat(4, dotted double dashed) repeat(auto, solid) ridge"); -test_computed_value("row-rule-style", "repeat(4, dotted double dashed) repeat(auto, solid) repeat(4, none groove hidden)"); -test_computed_value("row-rule-style", "ridge repeat(auto, solid)"); -test_computed_value("row-rule-style", "ridge repeat(auto, solid) ridge"); - -</script> -</body> -</html> diff --git a/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-style-invalid.html b/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-style-invalid.html deleted file mode 100644 index af1d5ccae57..00000000000 --- a/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-style-invalid.html +++ /dev/null @@ -1,30 +0,0 @@ -<!DOCTYPE html> -<html> -<head> -<meta charset="utf-8"> -<title>CSS Gap Decorations: column-rule-style parsing</title> -<link rel="help" href="https://drafts.csswg.org/css-gaps-1/#column-row-rule-style"> -<link rel="author" title="Sam Davis Omekara Jr." href="mailto:samomekarajr@microsoft.com"> -<meta name="assert" content="*-rule-style supports only the grammar '[ <line-style-list> | <auto-line-style-list> ]'."> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/css/support/parsing-testcommon.js"></script> -</head> -<body> -<script> -test_invalid_value("column-rule-style", "auto"); -test_invalid_value("row-rule-style", "auto"); - -test_invalid_value("column-rule-style", "dashed, dotted, solid"); -test_invalid_value("row-rule-style", "dotted, dashed"); -test_invalid_value("column-rule-style", "repeat(auto, groove, dotted, ridge)"); -test_invalid_value("row-rule-style", "repeat(auto, solid, dashed, double)"); -test_invalid_value("column-rule-style", "repeat(0, dotted, solid, double)"); -test_invalid_value("row-rule-style", "repeat(0, dotted)"); -test_invalid_value("column-rule-style", "repeat(-1, dotted, dashed, double)"); -test_invalid_value("row-rule-style", "repeat(-1 dotted)"); -test_invalid_value("column-rule-style", "repeat(auto, dotted) red repeat(auto, ridge)"); -test_invalid_value("row-rule-style", "dotted repeat(auto, solid) blue repeat(auto, ridge)"); -</script> -</body> -</html> diff --git a/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-style-valid.html b/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-style-valid.html deleted file mode 100644 index 1f41238345c..00000000000 --- a/tests/wpt/tests/css/css-gaps/tentative/parsing/gap-decorations-style-valid.html +++ /dev/null @@ -1,58 +0,0 @@ -<!DOCTYPE html> -<html> -<head> -<meta charset="utf-8"> -<title>CSS Gap Decorations: parsing column-rule-style with valid values</title> -<link rel="help" href="https://drafts.csswg.org/css-gaps-1/#column-row-rule-style"> -<link rel="author" title="Sam Davis Omekara Jr." href="mailto:samomekarajr@microsoft.com"> -<meta name="assert" content="*-rule-style supports the full grammar '[ <line-style-list> | <auto-line-style-list> ]'."> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/css/support/parsing-testcommon.js"></script> -</head> -<body> -<script> -// <repeat-line-style> = repeat( [ <integer [1,∞]> ] , [ <style> ]+ ) -test_valid_value("column-rule-style", "repeat(4, dotted)"); -test_valid_value("column-rule-style", "repeat(3, dashed double dotted)"); -test_valid_value("column-rule-style", "repeat(1, dashed double dotted solid)"); -test_valid_value("row-rule-style", "repeat(5, dashed)"); -test_valid_value("row-rule-style", "repeat(4, dashed dotted)"); -test_valid_value("row-rule-style", "repeat(1, dashed double dotted solid)"); - -// <line-style-or-repeat> = [ <style> | <repeat-line-style> ] -test_valid_value("column-rule-style", "dashed"); -test_valid_value("column-rule-style", "repeat(4, double)"); -test_valid_value("row-rule-style", "ridge"); -test_valid_value("row-rule-style", "repeat(5, solid)"); - -// <line-style-list> = [ <line-style-or-repeat> ]+ -test_valid_value("column-rule-style", "dotted ridge"); -test_valid_value("column-rule-style", "dotted dashed solid groove ridge"); -test_valid_value("column-rule-style", "repeat(3, groove) repeat(4, ridge)"); -test_valid_value("column-rule-style", "inset repeat(3, ridge) none repeat(4, groove hidden dashed)"); -test_valid_value("column-rule-style", "repeat(4, none ridge solid) repeat(5, hidden) double"); -test_valid_value("row-rule-style", "dotted"); -test_valid_value("row-rule-style", "dotted dashed ridge"); -test_valid_value("row-rule-style", "repeat(4, solid) repeat(5, double) repeat(6, dotted)"); -test_valid_value("row-rule-style", "ridge repeat(4, solid) double repeat(6, dotted)"); -test_valid_value("row-rule-style", "repeat(4, none ridge solid) solid repeat(5, hidden) double"); - -// <auto-repeat-line-style> = repeat( auto , [ <style> ]+ ) -test_valid_value("column-rule-style", "repeat(auto, solid)"); -test_valid_value("column-rule-style", "repeat(auto, dotted solid inset)"); -test_valid_value("row-rule-style", "repeat(auto, dotted)"); -test_valid_value("row-rule-style", "repeat(auto, dashed solid inset double)"); - -// <auto-line-style-list> = [ <line-style-or-repeat> ]* -// <auto-repeat-line-style> -// [ <line-style-or-repeat> ]* -test_valid_value("column-rule-style", "repeat(auto, dashed groove) ridge"); -test_valid_value("column-rule-style", "repeat(4, dotted double dashed) repeat(auto, solid)"); -test_valid_value("column-rule-style", "inset repeat(auto, solid ridge) repeat(4, none groove hidden)"); -test_valid_value("row-rule-style", "repeat(auto, dashed groove) repeat(4, solid) double"); -test_valid_value("row-rule-style", "repeat(4, dotted double dashed) repeat(auto, solid) repeat(4, none groove hidden)"); -test_valid_value("row-rule-style", "dotted repeat(auto, solid ridge) solid"); -</script> -</body> -</html> diff --git a/tests/wpt/tests/css/css-grid/subgrid/line-names-014.html b/tests/wpt/tests/css/css-grid/subgrid/line-names-014.html new file mode 100644 index 00000000000..fe1d5d46633 --- /dev/null +++ b/tests/wpt/tests/css/css-grid/subgrid/line-names-014.html @@ -0,0 +1,36 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Grid Test: Clamping a nested subgrid's grid-template-areas</title> +<link rel="author" title="Kurt Catti-Schmidt" href="mailto:kschmi@microsoft.com"> +<link rel="help" href="https://drafts.csswg.org/css-grid-2/#grid-template-areas-property"> +<link rel="match" href="../../reference/ref-filled-green-100px-square.xht"> +<style> +.grid { + background: red; + display: grid; + height: 100px; + width: 100px; + grid-template: 50px 50px / 50px 50px; +} +.subgrid { + display: grid; + grid-template-columns: subgrid; + grid-template-rows: 50px 50px; + grid-column: span 2; + grid-row: span 2; + grid-template-areas: "item item" + "item item"; +} +.item { + background: green; + grid-area: item; +} +</style> +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<div class="grid"> + <div class="subgrid"> + <div class="subgrid "> + <div class="item"></div> + </div> + </div> +</div> diff --git a/tests/wpt/tests/css/css-multicol/resize-multicol-with-fixed-size-children-002.html b/tests/wpt/tests/css/css-multicol/resize-multicol-with-fixed-size-children-002.html new file mode 100644 index 00000000000..9a582bf5177 --- /dev/null +++ b/tests/wpt/tests/css/css-multicol/resize-multicol-with-fixed-size-children-002.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html class="reftest-wait"> + <link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> + <link rel="help" href="https://www.w3.org/TR/css-multicol-1/#columns"> + <link rel="match" href="../reference/ref-filled-green-100px-square.xht"> + <p>Test passes if there is a filled green square and <strong>no red</strong>.</p> + <div style="width:100px; height:100px; background:red;"> + <div id="multicol" style="columns:2; gap:0; column-fill:auto; width:60px; height:100px;"> + <div style="width:50px;"> + <div> + <div> + <div style="height:200px; background:green;"></div> + </div> + </div> + </div> + </div> + </div> + + <script> + requestAnimationFrame(()=> { + requestAnimationFrame(()=> { + multicol.style.width = "100px"; + document.documentElement.classList.remove("reftest-wait"); + }); + }); + </script> +</html> diff --git a/tests/wpt/tests/css/css-multicol/resize-multicol-with-fixed-size-children-003.html b/tests/wpt/tests/css/css-multicol/resize-multicol-with-fixed-size-children-003.html new file mode 100644 index 00000000000..7e73c8373ed --- /dev/null +++ b/tests/wpt/tests/css/css-multicol/resize-multicol-with-fixed-size-children-003.html @@ -0,0 +1,30 @@ +<!DOCTYPE html> +<title>Resize multicol with fixed-width child</title> +<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> +<link rel="help" href="https://www.w3.org/TR/css-multicol-1/#columns"> +<div id="multicol" style="position:relative; columns:2; column-fill:auto; gap:20px; width:220px; height:100px;"> + <div style="width:50px;"> + <div> + <div> + <div style="height:150px;"></div> + <div id="target"></div> + </div> + </div> + </div> +</div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> + test(() => { + document.body.offsetTop; + + // Increasing multicol width won't affect the layout of anything inside (the + // child has a fixed width), except for the columns themselves, which will + // become wider. + multicol.style.width = "320px"; + + // Check something in the second column. + assert_equals(target.offsetLeft, 170); + assert_equals(target.offsetTop, 50); + }, "Resize multicol with fixed-width child"); +</script> diff --git a/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-013.html b/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-013.html index c9fe0aba59f..576ec3aec54 100644 --- a/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-013.html +++ b/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-013.html @@ -15,4 +15,6 @@ } </style> <div class="clamp">This time, Mark, who had always been the center of attention in -any social gathering, walked into the room uncharacteristically quietly, barely speaking as he settled into a chair.</div> +any social gathering, walked into the room uncharacteristically quietly, barely speaking as he settled into a chair. + +When asked, he said that he was fine, when he wasn't really fine.</div> diff --git a/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-014.html b/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-014.html index 4961cf3a7a2..3fa55ddde4d 100644 --- a/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-014.html +++ b/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-014.html @@ -15,4 +15,6 @@ } </style> <div class="clamp">This time, Mark, who had always been the center of attention in -any social gathering, walked into the room uncharacteristi­cally quietly, barely speaking as he settled into a chair.</div> +any social gathering, walked into the room uncharacteristi­cally quietly, barely speaking as he settled into a chair. + +When asked, he said that he was fine, when he wasn't really fine.</div> diff --git a/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-015.html b/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-015.html index 0a0046711c0..22b125f0f50 100644 --- a/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-015.html +++ b/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-015.html @@ -15,4 +15,6 @@ } </style> <div class="clamp">This time, Mark, who had always been the center of attention in -any social gathering, walked into the room uncharacteristi<wbr>cally quietly, barely speaking as he settled into a chair.</div> +any social gathering, walked into the room uncharacteristi<wbr>cally quietly, barely speaking as he settled into a chair. + +When asked, he said that he was fine, when he wasn't really fine.</div> diff --git a/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-016.html b/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-016.html index 00e4c601e36..7c7256a953a 100644 --- a/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-016.html +++ b/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-016.html @@ -16,4 +16,6 @@ } </style> <div class="clamp">This time, Mark, who had always been the center of attention in -any social gathering, walked into the room uncharacteristically quietly, barely speaking as he settled into a chair.</div> +any social gathering, walked into the room uncharacteristically quietly, barely speaking as he settled into a chair. + +When asked, he said that he was fine, when he wasn't really fine.</div> diff --git a/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-017.html b/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-017.html index 05f7896f565..9c84673e9e8 100644 --- a/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-017.html +++ b/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-017.html @@ -16,4 +16,6 @@ } </style> <div class="clamp">This time, Mark, who had always been the center of attention in -any social gathering, walked into the room uncharacteristically quietly, barely speaking as he settled into a chair.</div> +any social gathering, walked into the room uncharacteristically quietly, barely speaking as he settled into a chair. + +When asked, he said that he was fine, when he wasn't really fine.</div> diff --git a/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-022.html b/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-022.html new file mode 100644 index 00000000000..caa3489e6c5 --- /dev/null +++ b/tests/wpt/tests/css/css-overflow/line-clamp/block-ellipsis-022.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Overflow: line-clamp ellipsis</title> +<link rel="author" title="Andreu Botella" href="mailto:abotella@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-overflow-4/#block-ellipsis"> +<link rel="match" href="reference/block-ellipsis-022-ref.html"> +<style> +.clamp { + line-clamp: 2; + width: 29.1ch; + border: 1px solid black; + font-family: monospace; +} +.atomic { + display: inline-block; +} +</style> +<div class="clamp"> + There should be an ellipsis + at the end of this text line + <span class="atomic">hidden</span> +</div> diff --git a/tests/wpt/tests/css/css-overflow/line-clamp/line-clamp-auto-009.tentative.html b/tests/wpt/tests/css/css-overflow/line-clamp/line-clamp-auto-009.tentative.html index 44d111056c6..33d4a9abbae 100644 --- a/tests/wpt/tests/css/css-overflow/line-clamp/line-clamp-auto-009.tentative.html +++ b/tests/wpt/tests/css/css-overflow/line-clamp/line-clamp-auto-009.tentative.html @@ -4,10 +4,10 @@ <link rel="author" title="Andreu Botella" href="mailto:abotella@igalia.com"> <link rel="help" href="https://drafts.csswg.org/css-overflow-4/#line-clamp"> <link rel="match" href="reference/webkit-line-clamp-036-ref.html"> -<meta name="assert" content="text-overflow: ellipsis doesn't apply in a line-clamp: auto context"> +<meta name="assert" content="text-overflow: ellipsis does apply in a line-clamp: auto context"> <style> .clamp { - width: 10ch; + width: 10.1ch; max-height: 80px; font: 16px / 32px monospace; background-color: yellow; diff --git a/tests/wpt/tests/css/css-overflow/line-clamp/line-clamp-auto-010.tentative.html b/tests/wpt/tests/css/css-overflow/line-clamp/line-clamp-auto-010.tentative.html index cb706bba08e..6b69dc0030a 100644 --- a/tests/wpt/tests/css/css-overflow/line-clamp/line-clamp-auto-010.tentative.html +++ b/tests/wpt/tests/css/css-overflow/line-clamp/line-clamp-auto-010.tentative.html @@ -4,10 +4,10 @@ <link rel="author" title="Andreu Botella" href="mailto:abotella@igalia.com"> <link rel="help" href="https://drafts.csswg.org/css-overflow-4/#line-clamp"> <link rel="match" href="reference/webkit-line-clamp-037-ref.html"> -<meta name="assert" content="text-overflow: ellipsis doesn't apply in a line-clamp: auto context, even if it doesn't have a max-height"> +<meta name="assert" content="text-overflow: ellipsis does apply in a line-clamp: auto context, even if it doesn't have a max-height"> <style> .clamp { - width: 150px; + width: 15.1ch; font: 16px / 32px monospace; background-color: yellow; padding: 4px; diff --git a/tests/wpt/tests/css/css-overflow/line-clamp/reference/block-ellipsis-022-ref.html b/tests/wpt/tests/css/css-overflow/line-clamp/reference/block-ellipsis-022-ref.html new file mode 100644 index 00000000000..1e89789852b --- /dev/null +++ b/tests/wpt/tests/css/css-overflow/line-clamp/reference/block-ellipsis-022-ref.html @@ -0,0 +1,13 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Reference</title> +<style> +.clamp { + width: 29.1ch; + border: 1px solid black; + font-family: monospace; + white-space: pre +} +</style> +<div class="clamp">There should be an ellipsis +at the end of this text line…</div> diff --git a/tests/wpt/tests/css/css-overflow/line-clamp/reference/webkit-line-clamp-036-ref.html b/tests/wpt/tests/css/css-overflow/line-clamp/reference/webkit-line-clamp-036-ref.html index 0de35e98ab3..321cce96bb3 100644 --- a/tests/wpt/tests/css/css-overflow/line-clamp/reference/webkit-line-clamp-036-ref.html +++ b/tests/wpt/tests/css/css-overflow/line-clamp/reference/webkit-line-clamp-036-ref.html @@ -4,7 +4,7 @@ .clamp { display: -webkit-box; -webkit-box-orient: vertical; - width: 10ch; + width: 10.1ch; font: 16px / 32px monospace; background-color: yellow; padding: 4px; @@ -12,6 +12,6 @@ } </style> <div class="clamp"> - supercalifragilisticexpialidocious supercali… + … </div> diff --git a/tests/wpt/tests/css/css-overflow/line-clamp/reference/webkit-line-clamp-037-ref.html b/tests/wpt/tests/css/css-overflow/line-clamp/reference/webkit-line-clamp-037-ref.html index 2927716d76d..c5050d5d414 100644 --- a/tests/wpt/tests/css/css-overflow/line-clamp/reference/webkit-line-clamp-037-ref.html +++ b/tests/wpt/tests/css/css-overflow/line-clamp/reference/webkit-line-clamp-037-ref.html @@ -4,7 +4,7 @@ .clamp { display: -webkit-box; -webkit-box-orient: vertical; - width: 150px; + width: 15.1ch; font: 16px / 32px monospace; background-color: yellow; padding: 4px; @@ -12,6 +12,6 @@ } </style> <div class="clamp"> - supercalifragilisticexpialidocious - supercalifragilisticexpialidocious + supercalifragi… + supercalifragi… </div> diff --git a/tests/wpt/tests/css/css-overflow/line-clamp/webkit-line-clamp-036.html b/tests/wpt/tests/css/css-overflow/line-clamp/webkit-line-clamp-036.html index b8d7b194f05..437a93a711d 100644 --- a/tests/wpt/tests/css/css-overflow/line-clamp/webkit-line-clamp-036.html +++ b/tests/wpt/tests/css/css-overflow/line-clamp/webkit-line-clamp-036.html @@ -2,13 +2,13 @@ <meta charset="utf-8"> <link rel="help" href="https://drafts.csswg.org/css-overflow-3/#webkit-line-clamp"> <link rel="match" href="reference/webkit-line-clamp-036-ref.html"> -<meta name="assert" content="text-overflow: ellipsis shouldn't apply within a -webkit-line-clamp context."> +<meta name="assert" content="text-overflow: ellipsis does apply within a -webkit-line-clamp context."> <style> .clamp { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; - width: 10ch; + width: 10.1ch; font: 16px / 32px monospace; background-color: yellow; padding: 4px; diff --git a/tests/wpt/tests/css/css-overflow/line-clamp/webkit-line-clamp-037.html b/tests/wpt/tests/css/css-overflow/line-clamp/webkit-line-clamp-037.html index 86015228f88..70c33f75d11 100644 --- a/tests/wpt/tests/css/css-overflow/line-clamp/webkit-line-clamp-037.html +++ b/tests/wpt/tests/css/css-overflow/line-clamp/webkit-line-clamp-037.html @@ -2,13 +2,13 @@ <meta charset="utf-8"> <link rel="help" href="https://drafts.csswg.org/css-overflow-3/#webkit-line-clamp"> <link rel="match" href="reference/webkit-line-clamp-037-ref.html"> -<meta name="assert" content="text-overflow: ellipsis shouldn't apply within a -webkit-line-clamp context."> +<meta name="assert" content="text-overflow: ellipsis should apply within a -webkit-line-clamp context."> <style> .clamp { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; - width: 150px; + width: 15.1ch; font: 16px / 32px monospace; background-color: yellow; padding: 4px; diff --git a/tests/wpt/tests/css/css-text-decor/crashtests/text-decoration-animation-crash.html b/tests/wpt/tests/css/css-text-decor/crashtests/text-decoration-animation-crash.html new file mode 100644 index 00000000000..a20f166c427 --- /dev/null +++ b/tests/wpt/tests/css/css-text-decor/crashtests/text-decoration-animation-crash.html @@ -0,0 +1,47 @@ +<!DOCTYPE html> +<style> +* { + text-decoration-line: underline blink; + -webkit-appearance: progress-bar; + columns: 11px; +} + +#x4 { + -webkit-user-modify: read-write; + animation: keyframes4 2s; +} +</style> +<style> +@keyframes keyframes0 { + 20% { + scroll-padding-left: 1em + } +} + +@keyframes keyframes3 { + 20% { + scroll-padding-block-end: auto + } +} + +@keyframes keyframes4 { + 60% { + background-position: 65% + } +} +</style> + +<script> +function main() { + const sheet1 = document.styleSheets[1]; + sheet1.deleteRule(2); + x4.hspace; + sheet1.deleteRule(1); + x4.checkValidity(); + sheet1.deleteRule(0); +} +</script> + +<body onload="main()"> + <object id="x4"> A </object> +</body> diff --git a/tests/wpt/tests/css/css-text-decor/text-shadow/decorations-multiple-zorder.html b/tests/wpt/tests/css/css-text-decor/text-shadow/decorations-multiple-zorder.html index 22406534b68..b221092252b 100644 --- a/tests/wpt/tests/css/css-text-decor/text-shadow/decorations-multiple-zorder.html +++ b/tests/wpt/tests/css/css-text-decor/text-shadow/decorations-multiple-zorder.html @@ -1,6 +1,7 @@ <!DOCTYPE HTML> <link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#text-shadow-property"> <link rel="match" href="decorations-multiple-zorder-ref.html"> +<meta name="fuzzy" content="0-45;0-5"> <style> div { text-decoration-skip-ink: none; diff --git a/tests/wpt/tests/css/css-text-decor/text-shadow/standards-decor-noblur-2.html b/tests/wpt/tests/css/css-text-decor/text-shadow/standards-decor-noblur-2.html index 75d95b578dc..3d1a834ab34 100644 --- a/tests/wpt/tests/css/css-text-decor/text-shadow/standards-decor-noblur-2.html +++ b/tests/wpt/tests/css/css-text-decor/text-shadow/standards-decor-noblur-2.html @@ -1,7 +1,7 @@ <!DOCTYPE HTML> <link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#text-shadow-property"> <link rel="match" href="standards-decor-noblur-2-ref.html"> -<meta name="fuzzy" content="0-40;0-14"> +<meta name="fuzzy" content="0-1;0-8"> <!-- Shadows are painted below text AND its decorations --> <style> #target { diff --git a/tests/wpt/tests/css/css-typed-om/stylevalue-objects/parseAll-invalid.html b/tests/wpt/tests/css/css-typed-om/stylevalue-objects/parseAll-invalid.html index 45fad409bbf..1f66f448425 100644 --- a/tests/wpt/tests/css/css-typed-om/stylevalue-objects/parseAll-invalid.html +++ b/tests/wpt/tests/css/css-typed-om/stylevalue-objects/parseAll-invalid.html @@ -30,4 +30,8 @@ test(() => { assert_throws_js(TypeError, () => CSSStyleValue.parseAll('--foo', '')); }, 'CSSStyleValue.parseAll() with invalid value for custom property throws TypeError'); +test(() => { + assert_throws_js(TypeError, () => CSSStyleValue.parseAll('width', '')); +}, 'CSSStyleValue.parseAll() with invalid value for property throws TypeError'); + </script> diff --git a/tests/wpt/tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html b/tests/wpt/tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html index 7f9edda3939..db877b52642 100644 --- a/tests/wpt/tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html +++ b/tests/wpt/tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html @@ -117,7 +117,7 @@ const gTestCases = [ new CSSUnitValue(0, 'number')), 0, 0, CSS.deg(0)) ]), - cssText:'rotate3d(calc((1 / 0)), 0, 0, 0deg)', + cssText:'rotate3d(calc(1 / 0), 0, 0, 0deg)', desc: 'CSSMathInvert with 0 parameter' }, { diff --git a/tests/wpt/tests/css/css-ui/interactivity-inert-animated.html b/tests/wpt/tests/css/css-ui/interactivity-inert-animated.html new file mode 100644 index 00000000000..8fc86dabbfd --- /dev/null +++ b/tests/wpt/tests/css/css-ui/interactivity-inert-animated.html @@ -0,0 +1,30 @@ +<!DOCTYPE html> +<title>CSS Basic User Interface Test: animated interactivity:auto should not block click events</title> +<link rel="help" href="https://drafts.csswg.org/css-ui-4/#inertness"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<style> + @keyframes --anim { + 0% { interactivity: auto; } + } + #inert { + animation: --anim 10000s step-end; + interactivity: inert; + width: 100px; + height: 100px; + background: lime; + } +</style> +<div id="inert"></div> +<script> + let clicked = false; + inert.addEventListener('click', () => clicked = true); + + promise_test(async () => { + await test_driver.click(inert); + assert_true(clicked); + }, "Click event should work for interactivity:auto animation"); + +</script> diff --git a/tests/wpt/tests/css/css-ui/native-appearance-disabled-for-value-unset.html b/tests/wpt/tests/css/css-ui/native-appearance-disabled-for-value-unset.html new file mode 100644 index 00000000000..c720d04bf23 --- /dev/null +++ b/tests/wpt/tests/css/css-ui/native-appearance-disabled-for-value-unset.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<html> + <head> + <title>Native appearance disabled when appearance-disabling property has author-specified value unset</title> + <link rel="help" href="https://drafts.csswg.org/css-ui-4/#appearance-disabling-properties"> + <link rel="match" href="reference/native-appearance-disabled-for-value-unset-ref.html"> + <meta name="assert" content="Widgets with background and border set to `unset` should display the same as if they had background and border set to `initial`"> + <style> + body * { + display: block; + background: unset; + border: unset; + } + </style> + </head> + <body> + <h1>Test passes if the following widgets display the same with their background and border set to 'unset' as they do with background and border set to 'initial'</h1> + <button>Button</button> + <meter value='10' min='0' max='100'></meter> + <progress></progress> + <select></select> + <textarea></textarea> + <input type=button> + <input type=checkbox> + <input type=checkbox switch> + <input type=color> + <input type=date> + <input type=datetime-local> + <input type=file> + <input type=month> + <input type=number> + <input type=radio> + <input type=range> + <input type=search> + <input type=submit> + <input type=text> + <input type=time> + <input type=week> + </body> +</html> diff --git a/tests/wpt/tests/css/css-ui/reference/native-appearance-disabled-for-value-unset-ref.html b/tests/wpt/tests/css/css-ui/reference/native-appearance-disabled-for-value-unset-ref.html new file mode 100644 index 00000000000..f3f8a11ed88 --- /dev/null +++ b/tests/wpt/tests/css/css-ui/reference/native-appearance-disabled-for-value-unset-ref.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<html> + <head> + <title>Native appearance disabled when appearance-disabling property has author-specified value unset (reference)</title> + <link rel="help" href="https://drafts.csswg.org/css-ui-4/#appearance-disabling-properties"> + <meta name="assert" content="Widgets with background and border set to `unset` should display the same as if they had background and border set to `initial`"> + <style> + body * { + display: block; + background: initial; + border: initial; + } + </style> + </head> + <body> + <h1>Test passes if the following widgets display the same with their background and border set to 'unset' as they do with background and border set to 'initial'</h1> + <button>Button</button> + <meter value='10' min='0' max='100'></meter> + <progress></progress> + <select></select> + <textarea></textarea> + <input type=button> + <input type=checkbox> + <input type=checkbox switch> + <input type=color> + <input type=date> + <input type=datetime-local> + <input type=file> + <input type=month> + <input type=number> + <input type=radio> + <input type=range> + <input type=search> + <input type=submit> + <input type=text> + <input type=time> + <input type=week> + </body> +</html> diff --git a/tests/wpt/tests/css/css-values/calc-size/animation/calc-size-interpolation-expansion.html b/tests/wpt/tests/css/css-values/calc-size/animation/calc-size-interpolation-expansion.html index c3de4d7ab9e..0b2a60cde7f 100644 --- a/tests/wpt/tests/css/css-values/calc-size/animation/calc-size-interpolation-expansion.html +++ b/tests/wpt/tests/css/css-values/calc-size/animation/calc-size-interpolation-expansion.html @@ -40,7 +40,7 @@ var TESTS = [ start: "auto", end: "calc-size(any, 0px)", expected: { - 0.75: "calc-size(auto, 0px + 0.25 * size)", + 0.75: "calc-size(auto, 0px + (0.25 * size))", }, }, { @@ -48,7 +48,7 @@ var TESTS = [ start: "0px", end: "calc-size(calc-size(min-content, size + 20px), 2 * size)", expected: { - 0.75: "calc-size(calc-size(min-content, 20px + size), 0px + 0.75 * 2 * size)", + 0.75: "calc-size(calc-size(min-content, 20px + size), 0px + (1.5 * size))", }, }, { @@ -56,7 +56,7 @@ var TESTS = [ start: "calc-size(min-content, size * 4)", end: "calc-size(calc-size(min-content, size + 20px), 2 * size)", expected: { - 0.75: "calc-size(min-content, 0.25 * 4 * size + 0.75 * 2 * (20px + size))", + 0.75: "calc-size(min-content, size + (1.5 * (20px + size)))", }, }, { @@ -87,10 +87,10 @@ var TESTS = [ { property: "width", start: "calc-size(fit-content, 20px)", - end: "calc-size(calc-size(fit-content, 3 * size + 10px), min(size + 20px, 2 * size - 30px) + 2 * size + 80px)", + end: "calc-size(calc-size(fit-content, 3 * size + 10px), min(size + 20px, 2 * size - 30px) + ((2 * size) + 80px))", expected: { - 0.75: "calc-size(fit-content, 5px + min(30px + 3 * size, 30px + 2 * 0.75 * (3 * size + 10px)) + 0.75 * 2 * (10px + 3 * size))", - 0.75: "calc-size(fit-content, 5px + 0.75 * (80px + min(10px + 20px + 3 * size, -30px + 2 * (10px + 3 * size)) + 2 * (10px + 3 * size)))", + 0.75: "calc-size(fit-content, 5px + min(30px + (3 * size), 30px + (2 * 0.75 * (3 * size + 10px)) + (0.75 * 2 * (10px + (3 * size)))))", + 0.75: "calc-size(fit-content, 5px + (0.75 * (80px + min(30px + (3 * size), -30px + (2 * (10px + (3 * size)))) + (2 * (10px + (3 * size))))))", }, }, { @@ -98,7 +98,7 @@ var TESTS = [ start: "calc-size(50%, size)", end: "calc-size(calc-size(45%, (2 * size)), size + 20px)", expected: { - 0.75: "calc-size(100%, 0.25 * 0.5 * size + 0.75 * (20px + 0.45 * 2 * size))", + 0.75: "calc-size(100%, (0.125 * size) + (0.75 * (20px + (0.9 * size))))", }, }, { @@ -106,7 +106,7 @@ var TESTS = [ start: "calc-size(40%, size)", end: "calc-size(calc-size(10px, (2 * size)), size + 20px)", expected: { - 0.75: "calc-size(100%, 30px + 0.25 * 0.4 * size)", + 0.75: "calc-size(100%, 30px + (0.1 * size))", }, }, { diff --git a/tests/wpt/tests/css/css-values/calc-size/calc-size-parsing.html b/tests/wpt/tests/css/css-values/calc-size/calc-size-parsing.html index 3d63f0dbe00..a7e948497e7 100644 --- a/tests/wpt/tests/css/css-values/calc-size/calc-size-parsing.html +++ b/tests/wpt/tests/css/css-values/calc-size/calc-size-parsing.html @@ -37,8 +37,8 @@ test_valid_value("min-inline-size", "calc-size(max-content, size)"); test_valid_value("width", "calc-size(fit-content, size)"); test_valid_value("height", "calc-size(min-content, size * 2)", "calc-size(min-content, 2 * size)"); test_valid_value("max-width", "calc-size(max-content, size / 2)", "calc-size(max-content, 0.5 * size)"); -test_valid_value("max-height", "calc-size(fit-content, 30px + size / 2)", "calc-size(fit-content, 30px + 0.5 * size)"); -test_valid_value("width", "calc-size(fit-content, 50% + size / 2)", "calc-size(fit-content, 50% + 0.5 * size)"); +test_valid_value("max-height", "calc-size(fit-content, 30px + size / 2)", "calc-size(fit-content, 30px + (0.5 * size))"); +test_valid_value("width", "calc-size(fit-content, 50% + size / 2)", "calc-size(fit-content, 50% + (0.5 * size))"); test_valid_value("width", "calc-size(any, 25em)"); test_valid_value("width", "calc-size(any, 40%)"); diff --git a/tests/wpt/tests/css/css-values/calc-size/calc-size-typed-om.html b/tests/wpt/tests/css/css-values/calc-size/calc-size-typed-om.html index 37400823f9d..606de7f5060 100644 --- a/tests/wpt/tests/css/css-values/calc-size/calc-size-typed-om.html +++ b/tests/wpt/tests/css/css-values/calc-size/calc-size-typed-om.html @@ -26,9 +26,9 @@ function test_typed_om_string(property, value, expected) { test_typed_om_string("width", "calc-size(auto, size)"); test_typed_om_string("width", "calc-size(fit-content, size)"); test_typed_om_string("height", "calc-size(min-content, size * 2)", "calc-size(min-content, 2 * size)"); -test_typed_om_string("max-width", "calc-size(max-content, size / 2)", "calc-size(max-content, 0.5 * size)"); -test_typed_om_string("max-height", "calc-size(fit-content, 30px + size / 2)", "calc-size(fit-content, 30px + 0.5 * size)"); -test_typed_om_string("width", "calc-size(fit-content, 50% + size / 2)", "calc-size(fit-content, 50% + 0.5 * size)"); +test_typed_om_string("max-width", "calc-size(max-content, size / 2)", "calc-size(max-content, (0.5 * size))"); +test_typed_om_string("max-height", "calc-size(fit-content, 30px + size / 2)", "calc-size(fit-content, 30px + (0.5 * size))"); +test_typed_om_string("width", "calc-size(fit-content, 50% + size / 2)", "calc-size(fit-content, 50% + (0.5 * size))"); test_typed_om_string("width", "calc-size(any, 30px)"); test_typed_om_string("width", "calc-size(any, 25em)", "calc-size(any, 400px)"); test_typed_om_string("width", "calc-size(any, 40%)"); diff --git a/tests/wpt/tests/css/css-values/exp-log-compute.html b/tests/wpt/tests/css/css-values/exp-log-compute.html index 4bdd507fa33..9b11fe25b32 100644 --- a/tests/wpt/tests/css/css-values/exp-log-compute.html +++ b/tests/wpt/tests/css/css-values/exp-log-compute.html @@ -31,6 +31,7 @@ test_math_used('calc(exp(0) + 1)', '2', {type:'number', approx:0.1}); // Test unresolved at parse time test_math_used('calc(e - exp(sibling-index()))', '0', {type:'number', approx:0.1}); +test_math_used('calc(log(exp(2 * sibling-index())))', '2', {type:'number', approx:0.1}); // Test nesting test_math_used('calc(log(exp(1)))', '1', {type:'number', approx:0.1}); diff --git a/tests/wpt/tests/css/css-values/minmax-length-serialize.html b/tests/wpt/tests/css/css-values/minmax-length-serialize.html index bd00ee05885..1ab6f846379 100644 --- a/tests/wpt/tests/css/css-values/minmax-length-serialize.html +++ b/tests/wpt/tests/css/css-values/minmax-length-serialize.html @@ -70,6 +70,12 @@ test_serialization( 'calc(2px + max(1em + 100px, 106px))', '118px'); +// https://crbug.com/411359798 +test_serialization( + 'calc(2 * (.2 * min(1em, 1px)) + 1px)', + 'calc(1px + (0.4 * min(1em, 1px)))', + '1.4px'); + // Can't test that min()/max() are preserved in computed values with just lengths; // see minmax-length-percentage-serialize for tests of that. </script> diff --git a/tests/wpt/tests/css/css-view-transitions/empty-render-target-capture-ref.html b/tests/wpt/tests/css/css-view-transitions/empty-render-target-capture-ref.html new file mode 100644 index 00000000000..a8c2732cd85 --- /dev/null +++ b/tests/wpt/tests/css/css-view-transitions/empty-render-target-capture-ref.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<html> +<title>View transitions: empty render surface capture (ref)</title> +<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> +<link rel="author" href="mailto:vmpstr@chromium.org"> +<style> + +.container { + width: 0px; + height: 0px; +} +.child { + width: 100px; + height: 100px; + background: green; + will-change: opacity; +} + +</style> + +<div class=container> + <div class=child></div> +</div> diff --git a/tests/wpt/tests/css/css-view-transitions/empty-render-target-capture.html b/tests/wpt/tests/css/css-view-transitions/empty-render-target-capture.html new file mode 100644 index 00000000000..f0be6019a39 --- /dev/null +++ b/tests/wpt/tests/css/css-view-transitions/empty-render-target-capture.html @@ -0,0 +1,49 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<title>View transitions: empty render surface capture</title> +<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> +<link rel="author" href="mailto:vmpstr@chromium.org"> +<link rel="match" href="empty-render-target-capture-ref.html"> +<script src="/common/reftest-wait.js"></script> +<script src="/dom/events/scrolling/scroll_support.js"></script> +<style> + +:root { + view-transition-name: none; +} +.container { + view-transition-name: container; + width: 0px; + height: 0px; +} +.child { + view-transition-name: child; + width: 100px; + height: 100px; + background: green; + will-change: opacity; +} + +::view-transition-group(*), +::view-transition-image-pair(*), +::view-transition-old(*), +::view-transition-new(*) { + animation-play-state: paused; +} +</style> + +<div class=container> + <div class=child></div> +</div> + +<script> +function runTest() { + document.startViewTransition().ready.then(takeScreenshot); +} + +onload = async () => { + await waitForCompositorReady(); + runTest(); +} + +</script> diff --git a/tests/wpt/tests/css/css-view-transitions/inline-child-with-filter.html b/tests/wpt/tests/css/css-view-transitions/inline-child-with-filter.html index 2c4a8b85ec1..61f0f1f6a8c 100644 --- a/tests/wpt/tests/css/css-view-transitions/inline-child-with-filter.html +++ b/tests/wpt/tests/css/css-view-transitions/inline-child-with-filter.html @@ -4,6 +4,7 @@ <link rel="help" href="https://www.w3.org/TR/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="inline-child-with-filter-ref.html"> +<meta name=fuzzy content="maxDifference=0-2;totalPixels=0-2400"> <script src="/common/reftest-wait.js"></script> <style> diff --git a/tests/wpt/tests/css/css-view-transitions/scoped/capture.html b/tests/wpt/tests/css/css-view-transitions/scoped/capture.html new file mode 100644 index 00000000000..06f848d2de1 --- /dev/null +++ b/tests/wpt/tests/css/css-view-transitions/scoped/capture.html @@ -0,0 +1,168 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <!-- TODO update link --> + <link rel="help" href="https://www.w3.org/TR/css-view-transitions-2/"> + <title>Scope view transition capture</title> +</head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style type="text/css"> + .parent { + background-color: lightblue; + height: 200px; + width: 200px; + view-transition-name: parent; + position: relative; + } + + .child { + background-color: blue; + height: 100px; + width: 100px; + view-transition-name: child; + position: absolute; + left: 50px; + top: 50px; + } + + .sibling { + background-color: gray; + margin-top: 20px; + height: 200px; + width: 200px; + view-transition-name: sibling; + } + + /* view transition pseudos */ + ::view-transition-group(*), + ::view-transition-image-pair(*) { + animation: unset; + } + + ::view-transition-old(*) { + animation: -ua-view-transition-fade-out 1s paused; + } + + ::view-transition-new(*) { + animation: -ua-view-transition-fade-in 1s paused; + } + +</style> +<body> + <div id="container"></div> +</body> +<script> + function createDiv(test, id, className) { + const element = document.createElement('div'); + element.id = id; + element.className = className; + test.add_cleanup(() => { + element.remove(); + }); + return element; + } + + function setupCaptureTest(test) { + const container = document.getElementById('container'); + container.innerHTML = ''; + const target1 = createDiv(test, 'target1', 'parent'); + const target2 = createDiv(test, 'target2', 'child'); + const target3 = createDiv(test, 'target3', 'sibling'); + container.appendChild(target1); + target1.appendChild(target2); + container.appendChild(target3); + test.add_cleanup(() => { + document.getAnimations().forEach(a => a.cancel()); + }); + } + + function assert_animations(target, filterFn, mappingFn, expected, message) { + const values = document.getAnimations() + .filter(filterFn) + .map(mappingFn) + .sort(); + + const format = entries => entries.join(", "); + assert_equals(format(values), format(expected), message); + } + + function assert_animation_pseudos(element, expected, message) { + const filterFn = a => a.effect.target == element; + const mappingFn = a => a.effect.pseudoElement; + return assert_animations(element, filterFn, mappingFn, expected, message); + } + + function assert_animation_names(target, expected, message) { + const filterFn = a => a.effect.pseudoElement == target; + const mappingFn = a => a.animationName; + return assert_animations(target, filterFn, mappingFn, expected, message); + } + + promise_test(async t => { + setupCaptureTest(t); + const target = document.querySelector('.parent'); + assert_true(!!target.startViewTransition, + 'Missing scoped view transition support'); + + await target.startViewTransition({}).ready; + + const expected_pseudos = [ + '::view-transition-new(child)', + '::view-transition-new(parent)', + '::view-transition-old(child)', + '::view-transition-old(parent)' + ]; + assert_animation_pseudos(target, expected_pseudos, + 'animations on target element pseudos'); + assert_animation_pseudos(document.documentElement, [], + 'no animations targeting pseudos on root'); + assert_animation_pseudos(document.querySelector('.sibling'), [], + 'no animations targetting pseudos on sibling'); + assert_animation_pseudos(document.querySelector('.child'), [], + 'no animations targetting pseudos on child'); + + assert_animation_names('::view-transition-old(child)', + ['-ua-view-transition-fade-out'], + 'fade out animation on old child'); + assert_animation_names('::view-transition-old(parent)', + ['-ua-view-transition-fade-out'], + 'fade out animation on old parent'); + assert_animation_names('::view-transition-new(child)', + ['-ua-view-transition-fade-in'], + 'fade in animation on new child'); + assert_animation_names('::view-transition-new(parent)', + ['-ua-view-transition-fade-in'], + 'fade in animation on new parent'); + }, 'View-transition pseudo elements created for correct element'); + + promise_test(async t => { + setupCaptureTest(t); + const parent = document.querySelector('.parent'); + const sibling = document.querySelector('.sibling'); + assert_true(!!parent.startViewTransition, + 'Missing scoped view transition support'); + + await parent.startViewTransition({}).ready; + await sibling.startViewTransition({}).ready; + + const expected_parent_pseudos = [ + '::view-transition-new(child)', + '::view-transition-new(parent)', + '::view-transition-old(child)', + '::view-transition-old(parent)' + ]; + const expected_sibling_pseudos = [ + '::view-transition-new(sibling)', + '::view-transition-old(sibling)' + ]; + assert_animation_pseudos(parent, expected_parent_pseudos, + 'animations on parent element pseudos'); + assert_animation_pseudos(sibling, expected_sibling_pseudos, + 'animations on sibling element pseudos'); + }, 'Capture with concurrent scoped view-transitions'); + +</script> +</html> diff --git a/tests/wpt/tests/css/css-writing-modes/available-size-020.html b/tests/wpt/tests/css/css-writing-modes/available-size-020.html index bf09886f30a..f20dfe1199a 100644 --- a/tests/wpt/tests/css/css-writing-modes/available-size-020.html +++ b/tests/wpt/tests/css/css-writing-modes/available-size-020.html @@ -28,7 +28,9 @@ aside { writing-mode: vertical-rl; width: 2em; overflow: hidden; color: blue; html { overflow: hidden; /* avoid scrollbar variance */ } </style> -<p style="transform-origin: top right; transform: rotate(-90deg); height: max-content">Test passes if the first five boxes are identical, and the last four boxes are identical. +<p style="transform-origin: top right; transform: rotate(-90deg); height: max-content"> +Test passes if the first five boxes are identical, the next three boxes are identical, +and the last one is taller. <article class="fixed"> <div> @@ -60,27 +62,27 @@ html { overflow: hidden; /* avoid scrollbar variance */ } </div> </article> -<article class="large-parent"> +<article class="min-large-parent"> <div> <aside>abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde</aside> </div> </article> -<article class="min-large-parent"> +<article class="auto"> <div> <aside>abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde</aside> </div> </article> -<article class="auto"> +<article class="full"> <div> <aside>abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde</aside> </div> </article> - -<article class="full"> +<article class="large-parent"> <div> <aside>abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde</aside> </div> </article> + diff --git a/tests/wpt/tests/css/css-writing-modes/available-size-021.html b/tests/wpt/tests/css/css-writing-modes/available-size-021.html index 4547ba1934f..63c50fd07d8 100644 --- a/tests/wpt/tests/css/css-writing-modes/available-size-021.html +++ b/tests/wpt/tests/css/css-writing-modes/available-size-021.html @@ -36,7 +36,9 @@ div { } </style> -<p style="transform-origin: top right; transform: rotate(-90deg); height: max-content">Test passes if the first five boxes are identical, and the last four boxes are identical. +<p style="transform-origin: top right; transform: rotate(-90deg); height: max-content"> +Test passes if the first five boxes are identical, the next three boxes are identical, +and the last one is taller. <article class="fixed"> <div> @@ -68,26 +70,25 @@ div { </div> </article> -<article class="large-parent"> +<article class="min-large-parent"> <div> <aside>abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde</aside> </div> </article> -<article class="min-large-parent"> +<article class="auto"> <div> <aside>abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde</aside> </div> </article> -<article class="auto"> +<article class="full"> <div> <aside>abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde</aside> </div> </article> - -<article class="full"> +<article class="large-parent"> <div> <aside>abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde</aside> </div> diff --git a/tests/wpt/tests/css/css-writing-modes/reference/available-size-020-ref.html b/tests/wpt/tests/css/css-writing-modes/reference/available-size-020-ref.html index ecd3ac273a2..07eb33e3ec1 100644 --- a/tests/wpt/tests/css/css-writing-modes/reference/available-size-020-ref.html +++ b/tests/wpt/tests/css/css-writing-modes/reference/available-size-020-ref.html @@ -11,10 +11,13 @@ aside { width: 2em; overflow: hidden; color: blue; writing-mode: vertical-rl; html, body, article, div { height: 100%; } .fixed aside { height: calc(50% - 10em - 8px); } .full aside { height: calc(100% - 10em - 8px); } +.tall aside { height: calc(120vh - 10em - 8px); } html { overflow: hidden; /* avoid scrollbar variance */ } </style> -<p style="transform-origin: top right; transform: rotate(-90deg); height: max-content">Test passes if the first five boxes are identical, and the last four boxes are identical. +<p style="transform-origin: top right; transform: rotate(-90deg); height: max-content"> +Test passes if the first five boxes are identical, the next three boxes are identical, +and the last one is taller. <article class="fixed"> <div> @@ -64,8 +67,7 @@ html { overflow: hidden; /* avoid scrollbar variance */ } </div> </article> - -<article class="full"> +<article class="tall"> <div> <aside>abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde fghijk lmnop qrstu vwxyz abcde</aside> </div> diff --git a/tests/wpt/tests/css/css-writing-modes/reference/table-cell-align-001-ref.html b/tests/wpt/tests/css/css-writing-modes/reference/table-cell-align-001-ref.html new file mode 100644 index 00000000000..b324e3c3083 --- /dev/null +++ b/tests/wpt/tests/css/css-writing-modes/reference/table-cell-align-001-ref.html @@ -0,0 +1,69 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Writing Modes reference: text-align in orthogonal table cell</title> + +<meta name="flags" content="ahem" /> +<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> + +<style> +table { + font: 20px/1 Ahem; + border: 1px solid gray; +} + +td { + width: 2em; + padding: 0; + color: green; +} + +td > div { + position: relative; +} + +.left { + left: 0; +} +.center { + left: 0.5em; +} +.right { + left: 1em; +} +</style> + +<table> + <tr> + <td><div class=left>X</div></td> + </tr> + <tr> + <td><div class=center>X</div></td> + </tr> + <tr> + <td><div class=right>X</div></td> + </tr> + <tr> + <td><div class=left>X</div></td> + </tr> + <tr> + <td><div class=right>X</div></td> + </tr> +</table> +<br> +<table> + <tr> + <td><div class=left>X</div></td> + </tr> + <tr> + <td><div class=center>X</div></td> + </tr> + <tr> + <td><div class=right>X</div></td> + </tr> + <tr> + <td><div class=right>X</div></td> + </tr> + <tr> + <td><div class=left>X</div></td> + </tr> +</table> diff --git a/tests/wpt/tests/css/css-writing-modes/reference/table-cell-align-002-ref.html b/tests/wpt/tests/css/css-writing-modes/reference/table-cell-align-002-ref.html new file mode 100644 index 00000000000..eaacb7786ba --- /dev/null +++ b/tests/wpt/tests/css/css-writing-modes/reference/table-cell-align-002-ref.html @@ -0,0 +1,72 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Writing Modes reference: text-align in orthogonal table cell</title> + +<meta name="flags" content="ahem" /> +<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> + +<style> +table { + font: 20px/1 Ahem; + border: 1px solid gray; +} + +td { + width: 3.5em; + height: 1.75em; + padding: 0; + color: green; + vertical-align: top; +} + +td > div { + position: relative; + top: 0.5em; +} + +.left { + left: 0.5em; +} +.center { + left: 1em; +} +.right { + left: 1.5em; +} +</style> + +<table> + <tr> + <td><div class=left>X</div></td> + </tr> + <tr> + <td><div class=center>X</div></td> + </tr> + <tr> + <td><div class=right>X</div></td> + </tr> + <tr> + <td><div class=left>X</div></td> + </tr> + <tr> + <td><div class=right>X</div></td> + </tr> +</table> +<br> +<table> + <tr> + <td><div class=left>X</div></td> + </tr> + <tr> + <td><div class=center>X</div></td> + </tr> + <tr> + <td><div class=right>X</div></td> + </tr> + <tr> + <td><div class=right>X</div></td> + </tr> + <tr> + <td><div class=left>X</div></td> + </tr> +</table> diff --git a/tests/wpt/tests/css/css-writing-modes/reference/table-cell-align-005-ref.html b/tests/wpt/tests/css/css-writing-modes/reference/table-cell-align-005-ref.html new file mode 100644 index 00000000000..c5cd6fe28a9 --- /dev/null +++ b/tests/wpt/tests/css/css-writing-modes/reference/table-cell-align-005-ref.html @@ -0,0 +1,74 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Writing Modes reference: text-align in orthogonal table cell</title> + +<meta name="flags" content="ahem" /> +<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> + +<style> +table { + font: 40px/1 Ahem; + border: 1px solid gray; +} + +td { + height: 2em; + padding: 0; + color: green; + vertical-align: top; +} + +td div { + position: relative; +} + +.t { + top: 0; +} +.m { + top: 0.5em; +} +.b { + top: 1em; +} +</style> + +<table> + <tr> + <td><div class=t>X</div></td> + <td><div class=m>X</div></td> + <td><div class=b>X</div></td> + <td><div class=t>X</div></td> + <td><div class=b>X</div></td> + </tr> +</table> +<br> +<table> + <tr> + <td><div class=t>X</div></td> + <td><div class=m>X</div></td> + <td><div class=b>X</div></td> + <td><div class=b>X</div></td> + <td><div class=t>X</div></td> + </tr> +</table> +<br> +<table> + <tr> + <td><div class=t>X</div></td> + <td><div class=m>X</div></td> + <td><div class=b>X</div></td> + <td><div class=t>X</div></td> + <td><div class=b>X</div></td> + </tr> +</table> +<br> +<table> + <tr> + <td><div class=t>X</div></td> + <td><div class=m>X</div></td> + <td><div class=b>X</div></td> + <td><div class=b>X</div></td> + <td><div class=t>X</div></td> + </tr> +</table> diff --git a/tests/wpt/tests/css/css-writing-modes/table-cell-align-001.html b/tests/wpt/tests/css/css-writing-modes/table-cell-align-001.html new file mode 100644 index 00000000000..046dc96e8f2 --- /dev/null +++ b/tests/wpt/tests/css/css-writing-modes/table-cell-align-001.html @@ -0,0 +1,75 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Writing Modes test: text-align in orthogonal table cell</title> + +<link rel="help" href="https://drafts.csswg.org/css-writing-modes-3/#line-mappings"> +<meta assert="text-align values respect line-relative mappings of the table cell"> +<link rel="match" href="reference/table-cell-align-001-ref.html"> +<link rel="author" title="Jonathan Kew" href="mailto:jkew@mozilla.com"> + +<meta name="flags" content="ahem" /> +<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> + +<style> +table { + font: 20px/1 Ahem; + border: 1px solid gray; + writing-mode: vertical-lr; +} + +td { + inline-size: 2em; + padding: 0; + color: green; + writing-mode: horizontal-tb; +} + +/* If text-align works correctly on the cells, their green Ahem glyphs + should cover the red part of each background. */ +.left { + text-align: left; + background: linear-gradient(to right, red 50%, transparent 50%); +} +.center { + text-align: center; + background: linear-gradient(to right, transparent 25%, red 25%, red 75%, transparent 75%); +} +.right { + text-align: right; + background: linear-gradient(to right, transparent 50%, red 50%); +} +.start { + text-align: start; + background: linear-gradient(to right, red 50%, transparent 50%); +} +.start:dir(rtl) { + background: linear-gradient(to left, red 50%, transparent 50%); +} +.end { + text-align: end; + background: linear-gradient(to right, transparent 50%, red 50%); +} +.end:dir(rtl) { + background: linear-gradient(to left, transparent 50%, red 50%); +} +</style> + +<table> + <tr> + <td class=left>X</td> + <td class=center>X</td> + <td class=right>X</td> + <td class=start>X</td> + <td class=end>X</td> + </tr> +</table> +<br> +<table> + <tr dir=rtl> + <td class=left>X</td> + <td class=center>X</td> + <td class=right>X</td> + <td class=start>X</td> + <td class=end>X</td> + </tr> +</table> diff --git a/tests/wpt/tests/css/css-writing-modes/table-cell-align-002.html b/tests/wpt/tests/css/css-writing-modes/table-cell-align-002.html new file mode 100644 index 00000000000..14c201d937d --- /dev/null +++ b/tests/wpt/tests/css/css-writing-modes/table-cell-align-002.html @@ -0,0 +1,78 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Writing Modes test: text-align in orthogonal table cell</title> + +<link rel="help" href="https://drafts.csswg.org/css-writing-modes-3/#line-mappings"> +<meta assert="text-align values respect line-relative mappings of the table cell with padding included"> +<link rel="match" href="reference/table-cell-align-002-ref.html"> +<link rel="author" title="Jonathan Kew" href="mailto:jkew@mozilla.com"> + +<meta name="flags" content="ahem" /> +<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> + +<style> +table { + font: 20px/1 Ahem; + border: 1px solid gray; + writing-mode: vertical-lr; +} + +td { + inline-size: 2em; + padding: .5em 1em .25em .5em; + color: green; + writing-mode: horizontal-tb; + background-size: 2em 1em; + background-position: .5em .5em; + background-repeat: no-repeat; +} + +/* If text-align works correctly on the cells, their green Ahem glyphs + should cover the red part of each background. */ +.left { + text-align: left; + background-image: linear-gradient(to right, red 50%, transparent 50%); +} +.center { + text-align: center; + background-image: linear-gradient(to right, transparent 25%, red 25%, red 75%, transparent 75%); +} +.right { + text-align: right; + background-image: linear-gradient(to right, transparent 50%, red 50%); +} +.start { + text-align: start; + background-image: linear-gradient(to right, red 50%, transparent 50%); +} +.start:dir(rtl) { + background-image: linear-gradient(to left, red 50%, transparent 50%); +} +.end { + text-align: end; + background-image: linear-gradient(to right, transparent 50%, red 50%); +} +.end:dir(rtl) { + background-image: linear-gradient(to left, transparent 50%, red 50%); +} +</style> + +<table> + <tr> + <td class=left>X</td> + <td class=center>X</td> + <td class=right>X</td> + <td class=start>X</td> + <td class=end>X</td> + </tr> +</table> +<br> +<table> + <tr dir=rtl> + <td class=left>X</td> + <td class=center>X</td> + <td class=right>X</td> + <td class=start>X</td> + <td class=end>X</td> + </tr> +</table> diff --git a/tests/wpt/tests/css/css-writing-modes/table-cell-align-003.html b/tests/wpt/tests/css/css-writing-modes/table-cell-align-003.html new file mode 100644 index 00000000000..c32f535c546 --- /dev/null +++ b/tests/wpt/tests/css/css-writing-modes/table-cell-align-003.html @@ -0,0 +1,75 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Writing Modes test: text-align in orthogonal table cell</title> + +<link rel="help" href="https://drafts.csswg.org/css-writing-modes-3/#line-mappings"> +<meta assert="text-align values respect line-relative mappings of the table cell"> +<link rel="match" href="reference/table-cell-align-001-ref.html"> +<link rel="author" title="Jonathan Kew" href="mailto:jkew@mozilla.com"> + +<meta name="flags" content="ahem" /> +<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> + +<style> +table { + font: 20px/1 Ahem; + border: 1px solid gray; + writing-mode: vertical-rl; +} + +td { + inline-size: 2em; + padding: 0; + color: green; + writing-mode: horizontal-tb; +} + +/* If text-align works correctly on the cells, their green Ahem glyphs + should cover the red part of each background. */ +.left { + text-align: left; + background: linear-gradient(to right, red 50%, transparent 50%); +} +.center { + text-align: center; + background: linear-gradient(to right, transparent 25%, red 25%, red 75%, transparent 75%); +} +.right { + text-align: right; + background: linear-gradient(to right, transparent 50%, red 50%); +} +.start { + text-align: start; + background: linear-gradient(to right, red 50%, transparent 50%); +} +.start:dir(rtl) { + background: linear-gradient(to left, red 50%, transparent 50%); +} +.end { + text-align: end; + background: linear-gradient(to right, transparent 50%, red 50%); +} +.end:dir(rtl) { + background: linear-gradient(to left, transparent 50%, red 50%); +} +</style> + +<table> + <tr> + <td class=left>X</td> + <td class=center>X</td> + <td class=right>X</td> + <td class=start>X</td> + <td class=end>X</td> + </tr> +</table> +<br> +<table> + <tr dir=rtl> + <td class=left>X</td> + <td class=center>X</td> + <td class=right>X</td> + <td class=start>X</td> + <td class=end>X</td> + </tr> +</table> diff --git a/tests/wpt/tests/css/css-writing-modes/table-cell-align-004.html b/tests/wpt/tests/css/css-writing-modes/table-cell-align-004.html new file mode 100644 index 00000000000..d9b31bf6f94 --- /dev/null +++ b/tests/wpt/tests/css/css-writing-modes/table-cell-align-004.html @@ -0,0 +1,78 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Writing Modes test: text-align in orthogonal table cell</title> + +<link rel="help" href="https://drafts.csswg.org/css-writing-modes-3/#line-mappings"> +<meta assert="text-align values respect line-relative mappings of the table cell with padding included"> +<link rel="match" href="reference/table-cell-align-002-ref.html"> +<link rel="author" title="Jonathan Kew" href="mailto:jkew@mozilla.com"> + +<meta name="flags" content="ahem" /> +<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> + +<style> +table { + font: 20px/1 Ahem; + border: 1px solid gray; + writing-mode: vertical-rl; +} + +td { + inline-size: 2em; + padding: .5em 1em .25em .5em; + color: green; + writing-mode: horizontal-tb; + background-size: 2em 1em; + background-position: .5em .5em; + background-repeat: no-repeat; +} + +/* If text-align works correctly on the cells, their green Ahem glyphs + should cover the red part of each background. */ +.left { + text-align: left; + background-image: linear-gradient(to right, red 50%, transparent 50%); +} +.center { + text-align: center; + background-image: linear-gradient(to right, transparent 25%, red 25%, red 75%, transparent 75%); +} +.right { + text-align: right; + background-image: linear-gradient(to right, transparent 50%, red 50%); +} +.start { + text-align: start; + background-image: linear-gradient(to right, red 50%, transparent 50%); +} +.start:dir(rtl) { + background-image: linear-gradient(to left, red 50%, transparent 50%); +} +.end { + text-align: end; + background-image: linear-gradient(to right, transparent 50%, red 50%); +} +.end:dir(rtl) { + background-image: linear-gradient(to left, transparent 50%, red 50%); +} +</style> + +<table> + <tr> + <td class=left>X</td> + <td class=center>X</td> + <td class=right>X</td> + <td class=start>X</td> + <td class=end>X</td> + </tr> +</table> +<br> +<table> + <tr dir=rtl> + <td class=left>X</td> + <td class=center>X</td> + <td class=right>X</td> + <td class=start>X</td> + <td class=end>X</td> + </tr> +</table> diff --git a/tests/wpt/tests/css/css-writing-modes/table-cell-align-005.html b/tests/wpt/tests/css/css-writing-modes/table-cell-align-005.html new file mode 100644 index 00000000000..569a59db08c --- /dev/null +++ b/tests/wpt/tests/css/css-writing-modes/table-cell-align-005.html @@ -0,0 +1,101 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Writing Modes test: text-align in orthogonal table cell</title> + +<link rel="help" href="https://drafts.csswg.org/css-writing-modes-3/#line-mappings"> +<meta assert="text-align values respect line-relative mappings of the table cell"> +<link rel="match" href="reference/table-cell-align-005-ref.html"> +<link rel="author" title="Jonathan Kew" href="mailto:jkew@mozilla.com"> + +<meta name="flags" content="ahem" /> +<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> + +<style> +table { + font: 40px/1 Ahem; + border: 1px solid gray; +} + +td { + inline-size: 2em; + padding: 0; + color: green; +} + +table.vlr td { + writing-mode: vertical-lr; +} + +table.vrl td { + writing-mode: vertical-rl; +} + +/* If text-align works correctly on the cells, their green Ahem glyphs + should cover the red part of each background. */ +.left { + text-align: left; + background: linear-gradient(to bottom, red 50%, transparent 50%); +} +.center { + text-align: center; + background: linear-gradient(to bottom, transparent 25%, red 25%, red 75%, transparent 75%); +} +.right { + text-align: right; + background: linear-gradient(to bottom, transparent 50%, red 50%); +} +.start { + text-align: start; + background: linear-gradient(to bottom, red 50%, transparent 50%); +} +.start:dir(rtl) { + background: linear-gradient(to top, red 50%, transparent 50%); +} +.end { + text-align: end; + background: linear-gradient(to bottom, transparent 50%, red 50%); +} +.end:dir(rtl) { + background: linear-gradient(to top, transparent 50%, red 50%); +} +</style> + +<table class=vlr> + <tr> + <td class=left>X</td> + <td class=center>X</td> + <td class=right>X</td> + <td class=start>X</td> + <td class=end>X</td> + </tr> +</table> +<br> +<table class=vlr> + <tr dir=rtl> + <td class=left>X</td> + <td class=center>X</td> + <td class=right>X</td> + <td class=start>X</td> + <td class=end>X</td> + </tr> +</table> +<br> +<table class=vrl> + <tr> + <td class=left>X</td> + <td class=center>X</td> + <td class=right>X</td> + <td class=start>X</td> + <td class=end>X</td> + </tr> +</table> +<br> +<table class=vrl> + <tr dir=rtl> + <td class=left>X</td> + <td class=center>X</td> + <td class=right>X</td> + <td class=start>X</td> + <td class=end>X</td> + </tr> +</table> diff --git a/tests/wpt/tests/css/selectors/open-pseudo.html b/tests/wpt/tests/css/selectors/open-pseudo.html index 0f3b9f3c379..c215bf18645 100644 --- a/tests/wpt/tests/css/selectors/open-pseudo.html +++ b/tests/wpt/tests/css/selectors/open-pseudo.html @@ -5,51 +5,85 @@ <script src="/resources/testharnessreport.js"></script> <script src="/resources/testdriver.js"></script> <script src="/resources/testdriver-vendor.js"></script> +<style> + +dialog:open + #afterdialog, +details:open + #afterdetails, +select:open + #afterselect { + will-change: text-decoration; +} + +</style> <dialog>dialog</dialog> +<p id="afterdialog"></p> <details>details</details> +<p id="afterdetails"></p> <select> <option>one</option> </select> +<p id="afterselect"></p> <script> test(() => { const dialog = document.querySelector('dialog'); + const after = document.getElementById("afterdialog"); assert_false(dialog.matches(':open'), ':open should not match when the dialog is closed.'); + assert_equals(getComputedStyle(after).willChange, "auto", + ":open style should not be applied when the dialog is closed"); dialog.show(); assert_true(dialog.matches(':open'), - ':open should match after dialog.open().'); + ':open should match after dialog.show().'); + assert_equals(getComputedStyle(after).willChange, "text-decoration", + ":open style should be applied after dialog.show()"); dialog.close(); + assert_equals(getComputedStyle(after).willChange, "auto", + ":open style should not be applied when the dialog is closed (2)"); + dialog.showModal(); assert_true(dialog.matches(':open'), ':open should match after dialog.showModal().'); + assert_equals(getComputedStyle(after).willChange, "text-decoration", + ":open style should be applied after dialog.showModal()"); dialog.close(); + assert_equals(getComputedStyle(after).willChange, "auto", + ":open style should not be applied when the dialog is closed (3)"); }, 'The dialog element should support :open.'); test(() => { const details = document.querySelector('details'); + const after = document.getElementById("afterdetails"); assert_false(details.matches(':open'), ':open should not match when the details is closed.'); + assert_equals(getComputedStyle(after).willChange, "auto", + ":open style should not be applied when the details is closed"); details.open = true; assert_true(details.matches(':open'), ':open should match when the details is open.'); + assert_equals(getComputedStyle(after).willChange, "text-decoration", + ":open style should be applied when the details is open"); }, 'The details element should support :open.'); promise_test(async () => { const select = document.querySelector('select'); + const after = document.getElementById("afterselect"); assert_false(select.matches(':open'), ':open should not match when the select is closed.'); + assert_equals(getComputedStyle(after).willChange, "auto", + ":open style should not be applied when the select is closed"); await test_driver.click(select); await new Promise(requestAnimationFrame); assert_true(select.matches(':open'), ':open should match when the select is open.'); + assert_equals(getComputedStyle(after).willChange, "text-decoration", + ":open style should be applied when the select is open"); }, 'The select element should support :open.'); </script> diff --git a/tests/wpt/tests/css/selectors/popover-open-with-has-sibling-selector.html b/tests/wpt/tests/css/selectors/popover-open-with-has-sibling-selector.html new file mode 100644 index 00000000000..85f433e1791 --- /dev/null +++ b/tests/wpt/tests/css/selectors/popover-open-with-has-sibling-selector.html @@ -0,0 +1,45 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m"> +<link rel="help" href="https://drafts.csswg.org/selectors/#selectordef-popover-open"> +<link rel="match" href="../reference/ref-filled-green-100px-square.xht"> +<style> + .half-square { + width: 100px; + height: 50px; + background-color: red; + } + #p1-sibling:not(:has(+:popover-open)) { + background-color: green; + } + #p2-sibling:has(+:popover-open) { + background-color: green; + } + [popover] { + visibility: hidden; + } +</style> + +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> + +<div> + <div id="p1-sibling" class="half-square"></div> + <div popover id="p1">Popover 1</div> +</div> + +<div> + <div id="p2-sibling" class="half-square"></div> + <div popover id="p2">Popover 2</div> +</div> + +<script> + addEventListener("load", async () => { + p1.showPopover(); + await new Promise(r => requestAnimationFrame(r)); + p1.hidePopover(); + await new Promise(r => requestAnimationFrame(r)); + p2.showPopover(); + document.documentElement.classList.remove("reftest-wait"); + }); +</script> +</html> diff --git a/tests/wpt/tests/custom-elements/registries/CustomElementRegistry-initialize.html b/tests/wpt/tests/custom-elements/registries/CustomElementRegistry-initialize.html index 142dc56746c..c4b291751ec 100644 --- a/tests/wpt/tests/custom-elements/registries/CustomElementRegistry-initialize.html +++ b/tests/wpt/tests/custom-elements/registries/CustomElementRegistry-initialize.html @@ -115,6 +115,27 @@ test(() => { assert_equals(shadowRoot.querySelector('ef').customElementRegistry, window.customElements); }, 'initialize is no-op on a subtree with a non-null registry'); +test(() => { + const doc = new Document(); + assert_equals(doc.customElementRegistry, null); + const registry = new CustomElementRegistry(); + registry.initialize(doc); + assert_equals(doc.customElementRegistry, registry); +}, 'initialize works on Document'); + +test(() => { + const doc = new Document(); + const df = doc.createDocumentFragment(); + const dummy = doc.createElement("dummy"); + df.append(dummy); + assert_equals(dummy.customElementRegistry, null); + assert_equals(df.customElementRegistry, undefined); + const registry = new CustomElementRegistry(); + registry.initialize(df); + assert_equals(dummy.customElementRegistry, registry); + assert_equals(df.customElementRegistry, undefined); +}, 'initialize works on DocumentFragment'); + </script> </body> </html> diff --git a/tests/wpt/tests/custom-elements/scoped-registry-initialize.html b/tests/wpt/tests/custom-elements/scoped-registry-initialize.html new file mode 100644 index 00000000000..18dbd0ebedd --- /dev/null +++ b/tests/wpt/tests/custom-elements/scoped-registry-initialize.html @@ -0,0 +1,85 @@ +<!DOCTYPE html> +<html> +<head> +<meta name="author" title="Ryosuke Niwa" href="mailto:rniwa@webkit.org"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/custom-elements.html#dom-customelementregistry-initialize"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +</head> +<body> +<script> + +function runTest(title, makeDocument, customElementRegistry) { + test(() => { + assert_equals(makeDocument().createElement('a-b').customElementRegistry, null); + }, `${title}: customElementRegistry of an upgrade candidate created with a document without a browsing context uses null regsitry by default`); + + test(() => { + const element = makeDocument().createElement('a-b'); + customElementRegistry.initialize(element); + assert_equals(element.customElementRegistry, customElementRegistry); + }, `${title}: customElementRegistry of an upgrade candidate after calling CustomElementRegistry.prototype.initialize should return the registry`); + + test(() => { + const element = makeDocument().createElement('a-b', {customElementRegistry}); + customElementRegistry.initialize(element); + assert_equals(element.customElementRegistry, customElementRegistry); + }, `${title}: customElementRegistry of an upgrade candidate created with an explicit customElementRegistry argument should return the registry`); + + test(() => { + const element = makeDocument().createElement('foo'); + assert_equals(element.customElementRegistry, null); + }, `${title}: customElementRegistry of an unknown element created with a document without a browsing context uses null regsitry by default`); + + test(() => { + const element = makeDocument().createElement('foo'); + customElementRegistry.initialize(element); + assert_equals(element.customElementRegistry, customElementRegistry); + }, `${title}: customElementRegistry of an unknown element after calling CustomElementRegistry.prototype.initialize should return the registry`); + + test(() => { + const element = makeDocument().createElement('foo', {customElementRegistry}); + assert_equals(element.customElementRegistry, customElementRegistry); + }, `${title}: customElementRegistry of an unknown element created with an explicit customElementRegistry argument should return the registry`); + + const addElement = (doc) => { + const element = doc.createElement('b-c'); + if (doc.body) + doc.body.appendChild(element); + else if (doc.documentElement) + doc.documentElement.appendChild(element); + else + doc.appendChild(element); + return element; + } + + test(() => { + assert_equals(addElement(makeDocument()).customElementRegistry, null); + }, `${title}: customElementRegistry of an upgrade candidate connected to a document without a browsing context uses null regsitry by default`); + + test(() => { + const doc = makeDocument(); + const element = addElement(doc); + customElementRegistry.initialize(doc); + assert_equals(doc.customElementRegistry, customElementRegistry); + assert_equals(element.customElementRegistry, customElementRegistry); + }, `${title}: customElementRegistry of document and an upgrade candidate after calling CustomElementRegistry.prototype.initialize should return the registry`); + + test(() => { + const doc = makeDocument(); + const element = addElement(doc); + customElementRegistry.initialize(doc); + assert_equals(doc.customElementRegistry, customElementRegistry); + assert_equals(element.customElementRegistry, customElementRegistry); + element.innerHTML = '<a-b></a-b>'; + assert_equals(element.querySelector('a-b').customElementRegistry, customElementRegistry); + }, `${title}: customElementRegistry of an element created after calling CustomElementRegistry.prototype.initialize should return the registry`); +} + +runTest('Document', () => new Document, new CustomElementRegistry); +runTest('HTMLDocument', () => document.implementation.createHTMLDocument(), new CustomElementRegistry); +runTest('XHTMLDocument', () => document.implementation.createDocument('http://www.w3.org/1999/xhtml', 'html', null), new CustomElementRegistry); + +</script> +</body> +</html> diff --git a/tests/wpt/tests/dom/observable/tentative/observable-from.any.js b/tests/wpt/tests/dom/observable/tentative/observable-from.any.js index 3caf99052c8..20b2c8010cc 100644 --- a/tests/wpt/tests/dom/observable/tentative/observable-from.any.js +++ b/tests/wpt/tests/dom/observable/tentative/observable-from.any.js @@ -1728,3 +1728,14 @@ test(() => { assert_not_equals(reportedError, null, "Protocol error is reported to the global"); assert_true(reportedError instanceof TypeError); }, "Invalid iterator protocol error is surfaced before Subscriber#signal is consulted"); + +// Regression test for https://github.com/WICG/observable/issues/208. +promise_test(async () => { + let errorReported = false; + self.onerror = e => errorReported = true; + + // `first()` aborts the subscription after the first item is encountered. + const value = await Observable.from([1, 2, 3]).first(); + assert_false(errorReported); +}, "No error is reported when aborting a subscription to a sync iterator " + + "that has no `return()` implementation"); diff --git a/tests/wpt/tests/dom/ranges/Range-compareBoundaryPoints-crash.html b/tests/wpt/tests/dom/ranges/Range-compareBoundaryPoints-crash.html new file mode 100644 index 00000000000..673eeb61828 --- /dev/null +++ b/tests/wpt/tests/dom/ranges/Range-compareBoundaryPoints-crash.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<title>Range.compareBoundaryPoints() crash test</title> +<link rel=help href="crbug.com/410996563"> + +<table id="table"> +<thead> +<tr id="row"></tr> + +<script> +const selection = document.getSelection(); +const range = new Range(); +const cell = row.insertCell(); +range.setEndBefore(cell); +selection.addRange(range); +selection.removeRange(range); +table.tHead = null; +range.compareBoundaryPoints(Range.START_TO_END, range); +</script> diff --git a/tests/wpt/tests/editing/other/delete-at-end-boundary-of-div-followed-by-inline-element-containing-hidden-select-element-with-non-editable-node.html b/tests/wpt/tests/editing/other/delete-at-end-boundary-of-div-followed-by-inline-element-containing-hidden-select-element-with-non-editable-node.html new file mode 100644 index 00000000000..5c362d4963f --- /dev/null +++ b/tests/wpt/tests/editing/other/delete-at-end-boundary-of-div-followed-by-inline-element-containing-hidden-select-element-with-non-editable-node.html @@ -0,0 +1,48 @@ +<!doctype html> +<html> +<head> +<meta charset="utf-8"> +<title>Delete at end boundary of div followed by inline element containing hidden +select element with non editable node</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/resources/testdriver-actions.js"></script> +</head> +<body> +<div contenteditable="true" id="editableDiv"><div id="first">First block</div> +<span id="second">Second block<select style="visibility:hidden"></select></span></div> +<script> +"use strict"; + +const kDeleteKey = "\uE017"; + +function sendDeleteKey() { + return new test_driver.Actions() + .keyDown(kDeleteKey) + .keyUp(kDeleteKey) + .send(); +} + +promise_test(async () => { + const firstDiv = document.getElementById("first"); + await new test_driver.click(document.querySelector('#first')); + const range = document.createRange(); + const selection = window.getSelection(); + range.setStart(firstDiv.firstChild, 11); + range.collapse(true); + selection.removeAllRanges(); + selection.addRange(range); + await sendDeleteKey(); + const expected= "<div id=\"first\">First blockSecond block</div>" + + "<span id=\"second\"><select style=\"visibility:hidden\"></select></span>"; + assert_equals( + editableDiv.innerHTML, + expected, + "The test should not crash and Second block should be merged with First block" + ); +}, "waiting for command to execute"); +</script> +</body> +</html>
\ No newline at end of file diff --git a/tests/wpt/tests/editing/other/delete-at-start-boundary-of-div-containing-hidden-select-element-with-non-editable-node.html b/tests/wpt/tests/editing/other/delete-at-start-boundary-of-div-containing-hidden-select-element-with-non-editable-node.html new file mode 100644 index 00000000000..0ed42e57292 --- /dev/null +++ b/tests/wpt/tests/editing/other/delete-at-start-boundary-of-div-containing-hidden-select-element-with-non-editable-node.html @@ -0,0 +1,48 @@ +<!doctype html> +<html> +<head> +<meta charset="utf-8"> +<title>Delete at start boundary of div containing hidden select element +with non editable node</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/resources/testdriver-actions.js"></script> +</head> +<body> +<div contenteditable="true" id="editableDiv"><div id="first">First block</div> +<div id="second">Second block<select style="visibility:hidden"></select></div></div> +<script> +"use strict"; + +const kBackspaceKey = "\uE003"; + +function sendBackspaceKey() { + return new test_driver.Actions() + .keyDown(kBackspaceKey) + .keyUp(kBackspaceKey) + .send(); +} + +promise_test(async () => { + const secondDiv = document.getElementById("second"); + await new test_driver.click(document.querySelector('#second')); + const range = document.createRange(); + const selection = window.getSelection(); + range.setStart(secondDiv.firstChild, 0); + range.collapse(true); + selection.removeAllRanges(); + selection.addRange(range); + await sendBackspaceKey(); + const expected = "<div id=\"first\">First blockSecond block</div>" + + "<div id=\"second\"><select style=\"visibility:hidden\"></select></div>"; + assert_equals( + editableDiv.innerHTML, + expected, + "The test should not crash and Second block should be merged with First block" + ); +}, "waiting for command to execute"); +</script> +</body> +</html>
\ No newline at end of file diff --git a/tests/wpt/tests/feature-policy/experimental-features/trust-token-redemption-supported-by-feature-policy.tentative.html b/tests/wpt/tests/feature-policy/experimental-features/trust-token-redemption-supported-by-feature-policy.tentative.html index e349eadc5d1..646f8eee548 100644 --- a/tests/wpt/tests/feature-policy/experimental-features/trust-token-redemption-supported-by-feature-policy.tentative.html +++ b/tests/wpt/tests/feature-policy/experimental-features/trust-token-redemption-supported-by-feature-policy.tentative.html @@ -4,6 +4,8 @@ <script src="/resources/testharnessreport.js"></script> <script> test(() => { - assert_in_array('trust-token-redemption', document.featurePolicy.features()); + assert_true( + document.featurePolicy.features().includes('trust-token-redemption'), + 'trust token redemption should be in document.featurePolicy.features()'); }, 'document.featurePolicy.features should advertise trust token redemption.'); </script> diff --git a/tests/wpt/tests/fedcm/support/single_identifier_accounts.py b/tests/wpt/tests/fedcm/support/single_identifier_accounts.py index fb80ef7cf6d..38eff8c3571 100644 --- a/tests/wpt/tests/fedcm/support/single_identifier_accounts.py +++ b/tests/wpt/tests/fedcm/support/single_identifier_accounts.py @@ -17,7 +17,7 @@ def main(request, response): }, { "id": "john_doe2", - "phone": "+1 (416) 000-0000" + "tel": "+1 (416) 000-0000" } ] } diff --git a/tests/wpt/tests/fetch/http-cache/no-vary-search.tentative.any.js b/tests/wpt/tests/fetch/http-cache/no-vary-search.tentative.any.js index 379da6a0594..6c5a714e287 100644 --- a/tests/wpt/tests/fetch/http-cache/no-vary-search.tentative.any.js +++ b/tests/wpt/tests/fetch/http-cache/no-vary-search.tentative.any.js @@ -6,12 +6,15 @@ // META: script=http-cache.js /* NOTE for testing No-Vary-Search-Header: -If `params` is set to true, `expect=("dispatch" "uuid")` must be specified. -Otherwise: -- The same HTTP Cache will be used by other tests, which are supposed - to be distinguished by uuid. -- The test utility cannot get the server's states because UA will use the HTTP - Cache instead of sending a new request to server to ask for the latest state. +- If `params` is set to true, `expect=("dispatch" "uuid")` must be specified. + Otherwise: + - The same HTTP Cache will be used by other tests, which are supposed + to be distinguished by uuid. + - The test utility cannot get the server's states because UA will use the HTTP + Cache instead of sending a new request to server to ask for the latest state. +- Do not test not_cached cases and cached cases within one test. Test infra + checks the number of requests and responses without considering if the + previous responses should be served from cache or not. */ var tests = [ { @@ -28,6 +31,61 @@ var tests = [ expected_type: "cached" } ] + }, + { + name: "Ground truth: When key-order is not set, URLs should be compared in an order-sensitive way.", + requests: [ + { + url_params: "a=1&b=2", + response_headers: [ + ["Cache-Control", "max-age=10000"], + ], + }, + { + url_params: "b=2&a=1", + expected_type: "not_cached" + } + ] + }, + { + name: "When key-order is set , URLs should be compared in an order-insensitive way. Matched cases:", + requests: [ + { + url_params: "a=1&b=2", + response_headers: [ + ["Cache-Control", "max-age=10000"], + ["No-Vary-Search", "key-order"], + ], + }, + { + url_params: "b=2&a=1", + expected_type: "cached" + } + ] + }, + { + name: "When key-order is set , URLs should be compared in an order-insensitive way. Not matched cases", + requests: [ + { + url_params: "a=1&b=2", + response_headers: [ + ["Cache-Control", "max-age=10000"], + ["No-Vary-Search", "key-order"], + ], + }, + { + url_params: "b=2", + expected_type: "not_cached" + }, + { + url_params: "a=2&b=2", + expected_type: "not_cached" + }, + { + url_params: "a=1&b=2&c=3", + expected_type: "not_cached" + } + ] } ]; run_tests(tests); diff --git a/tests/wpt/tests/html/browsers/history/the-location-interface/location_hash_set_empty_string.html b/tests/wpt/tests/html/browsers/history/the-location-interface/location_hash_set_empty_string.html index bfde4e63829..8eef392e611 100644 --- a/tests/wpt/tests/html/browsers/history/the-location-interface/location_hash_set_empty_string.html +++ b/tests/wpt/tests/html/browsers/history/the-location-interface/location_hash_set_empty_string.html @@ -12,6 +12,6 @@ window.location.hash = ''; test(() => { assert_true(window.location.hash === ''); - assert_true(window.location.href === orig_location + '#'); + assert_true(window.location.href === orig_location); }, 'window.location.hash is an empty string'); </script> diff --git a/tests/wpt/tests/html/browsers/the-window-object/open-close/close_noopener_beforeunload-1.html b/tests/wpt/tests/html/browsers/the-window-object/open-close/close_noopener_beforeunload-1.html deleted file mode 100644 index fc114bc443e..00000000000 --- a/tests/wpt/tests/html/browsers/the-window-object/open-close/close_noopener_beforeunload-1.html +++ /dev/null @@ -1,8 +0,0 @@ -<!doctype html> -<script> -let chan = new BroadcastChannel("close_noopener_beforeunload" + location.search); -onload = function() { window.close(); }; -onbeforeunload = function() { - chan.postMessage({ name: "beforeunload", history: history.length }); -} -</script> diff --git a/tests/wpt/tests/html/browsers/the-window-object/open-close/close_noopener_beforeunload-2.html b/tests/wpt/tests/html/browsers/the-window-object/open-close/close_noopener_beforeunload-2.html deleted file mode 100644 index 4cce1e2e6f7..00000000000 --- a/tests/wpt/tests/html/browsers/the-window-object/open-close/close_noopener_beforeunload-2.html +++ /dev/null @@ -1,6 +0,0 @@ -<!doctype html> -<script> -onload = function() { - setTimeout(() => window.location = "close_noopener_beforeunload-1.html" + location.search, 0); -} -</script> diff --git a/tests/wpt/tests/html/browsers/the-window-object/open-close/close_noopener_beforeunload.html b/tests/wpt/tests/html/browsers/the-window-object/open-close/close_noopener_beforeunload.html index 6862a70b8c1..4db39fcb7c7 100644 --- a/tests/wpt/tests/html/browsers/the-window-object/open-close/close_noopener_beforeunload.html +++ b/tests/wpt/tests/html/browsers/the-window-object/open-close/close_noopener_beforeunload.html @@ -4,21 +4,31 @@ <script src="/resources/testharnessreport.js"></script> <div id="log"></div> <script> -async_test(t => { - window.open("close_noopener_beforeunload-2.html?2", "", "noopener"); - let chan = new BroadcastChannel("close_noopener_beforeunload?2"); - chan.onmessage = t.step_func_done(function(event) { - assert_equals(event.data.name, "beforeunload", "correct message received"); - assert_equals(event.data.history, 2, "session history has multiple entries"); +function waitForMessage(channel, name) { + return new Promise(resolve => { + function listener({ data }) { + if (data.name === name) { + channel.removeEventListener("message", listener); + resolve(data); + } + }; + channel.addEventListener("message", listener); }); +} + +async_test(t => { + let chan = new BroadcastChannel("close_noopener_beforeunload2"); + waitForMessage(chan, "beforeunload").then(t.step_func_done(data => { + assert_equals(data.history, 2, "session history has multiple entries"); + })); + window.open("self-close.html?navs=1&channel=close_noopener_beforeunload2", "", "noopener"); }, "closing noopener window with 2 entries"); async_test(t => { - window.open("close_noopener_beforeunload-1.html?1", "", "noopener"); - let chan = new BroadcastChannel("close_noopener_beforeunload?1"); - chan.onmessage = t.step_func_done(function(event) { - assert_equals(event.data.name, "beforeunload", "correct message received"); - assert_equals(event.data.history, 1, "session history has a single entry"); - }); + let chan = new BroadcastChannel("close_noopener_beforeunload1"); + waitForMessage(chan, "beforeunload").then(t.step_func_done(data => { + assert_equals(data.history, 1, "session history has a single entry"); + })); + window.open("self-close.html?navs=0&channel=close_noopener_beforeunload1", "", "noopener"); }, "closing noopener window with 1 entry"); </script> diff --git a/tests/wpt/tests/html/browsers/the-window-object/open-close/script-closable.html b/tests/wpt/tests/html/browsers/the-window-object/open-close/script-closable.html new file mode 100644 index 00000000000..2a7278c2ce8 --- /dev/null +++ b/tests/wpt/tests/html/browsers/the-window-object/open-close/script-closable.html @@ -0,0 +1,85 @@ +<!doctype html> +<title>Test whether a window is script-closable</title> +<link rel="help" href="https://html.spec.whatwg.org/#script-closable"/> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="log"></div> + +<script> +let uid = 0; + +async function withChannel(createWindow) { + const channel_name = `channel_${++uid}`; + const channel = new BroadcastChannel(channel_name); + + const closedPromise = new Promise(resolve => { + channel.addEventListener("message", ({data}) => { + if (data.name === 'load') { + assert_true(true, 'window was loaded'); + } else { + assert_not_equals(data.history, 1, "If script-closable, then not due to history length"); + resolve(data.closed); + } + }); + }); + + await createWindow(channel_name); + return closedPromise; +} + +const Actions = { + async form(noopener) { + return withChannel((channel_name) => { + const form = document.createElement("form"); + form.action = "self-close.html"; + form.target = '_blank'; + if (noopener) { + form.rel = "noopener"; + } + // ?navs=1 + const inp1 = document.createElement("input"); + inp1.name = "navs"; + inp1.value = "1"; + form.appendChild(inp1); + // ?channel=channel_name + const inp2 = document.createElement("input"); + inp2.name = "channel"; + inp2.value = channel_name; + form.appendChild(inp2); + document.body.appendChild(form); + + form.submit(); + form.remove(); + }); + }, + async link(noopener) { + return withChannel((channel_name) => { + const anchor = document.createElement("a"); + anchor.href = `self-close.html?navs=1&channel=${channel_name}`; + anchor.target = '_blank'; + if (noopener) { + anchor.rel = "noopener"; + } + document.body.appendChild(anchor); + + anchor.click(); + + anchor.remove(); + }); + }, + async script(noopener) { + return withChannel((channel_name) => { + const url = `self-close.html?navs=1&channel=${channel_name}`; + window.open(url, "_blank", noopener ? 'noopener' : ''); + }); + } +} + +for (const action of [Actions.form, Actions.link, Actions.script]) { + for (const noopener of [false, true]) + promise_test(async () => { + const closed = await action(noopener); + assert_true(closed, "window closed"); + }, `Window created by ${action.name} with ${noopener ? 'noopener' : 'opener'} is script-closable`); +} +</script> diff --git a/tests/wpt/tests/html/browsers/the-window-object/open-close/self-close.html b/tests/wpt/tests/html/browsers/the-window-object/open-close/self-close.html new file mode 100644 index 00000000000..d409e9f423d --- /dev/null +++ b/tests/wpt/tests/html/browsers/the-window-object/open-close/self-close.html @@ -0,0 +1,26 @@ +<!doctype html> +<p>self-close.html?navs=n&channel=name will navigate n times, then close and notify the channel.</p> + +<script> +window.onload = setTimeout(() => { + const urlParams = new URLSearchParams(window.location.search); + let n = parseInt(urlParams.get('navs')) || 0; + + const channel = new BroadcastChannel(urlParams.get('channel')); + + channel.postMessage({ name: 'load', href: window.location.href }); + + if (n > 0) { + urlParams.set('navs', n-1); + window.location.href = `${window.location.pathname}?${urlParams.toString()}#${n}`; + } else { + window.onbeforeunload = () => { + channel.postMessage({ name: 'beforeunload', history: history.length, closed: true }); + } + window.close(); + if (!window.closed) { + channel.postMessage({ name: 'close failed', history: history.length, closed: false }); + } + } +}, 0); +</script> diff --git a/tests/wpt/tests/html/document-isolation-policy/credentialless-cache.tentative.window.js b/tests/wpt/tests/html/document-isolation-policy/credentialless-cache.tentative.window.js index 99a0f077102..0c52d6ced32 100644 --- a/tests/wpt/tests/html/document-isolation-policy/credentialless-cache.tentative.window.js +++ b/tests/wpt/tests/html/document-isolation-policy/credentialless-cache.tentative.window.js @@ -1,3 +1,4 @@ +// META: timeout=long // META: script=/common/get-host-info.sub.js // META: script=/common/utils.js // META: script=/common/dispatcher/dispatcher.js diff --git a/tests/wpt/tests/html/editing/dnd/platform/mousedown-move-inner-when-dragging.html b/tests/wpt/tests/html/editing/dnd/platform/mousedown-move-inner-when-dragging-1.html index 81ee4f03751..81ee4f03751 100644 --- a/tests/wpt/tests/html/editing/dnd/platform/mousedown-move-inner-when-dragging.html +++ b/tests/wpt/tests/html/editing/dnd/platform/mousedown-move-inner-when-dragging-1.html diff --git a/tests/wpt/tests/html/editing/dnd/platform/mousedown-move-inner-when-dragging-2.html b/tests/wpt/tests/html/editing/dnd/platform/mousedown-move-inner-when-dragging-2.html new file mode 100644 index 00000000000..1cabc554923 --- /dev/null +++ b/tests/wpt/tests/html/editing/dnd/platform/mousedown-move-inner-when-dragging-2.html @@ -0,0 +1,47 @@ +<!doctype html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/resources/testdriver-actions.js"></script> +<head> +<title>Test dragging still occurs when mousedown moves the inner element</title> +</head> +<body> +<div id="container"> + <template shadowrootmode="open"> + <div id="element" draggable="true" style="width: 40px; height: 40px; background-color:red;"> + <slot id="slot"></slot> + </div> + <div id="element2"></div> + </template> + <div id="inner" style="width: 30px; height: 30px; background-color:black;"></div> +</div> +<script> + +promise_test(function() { + return new Promise(r => { + const element = container.shadowRoot.getElementById("element"); + + element.addEventListener("dragstart", function(e) { + assert_equals(e.target, element); + r(); + }); + + element.addEventListener("mousedown", function() { + const element2 = container.shadowRoot.getElementById("element2"); + const slot = container.shadowRoot.getElementById("slot"); + element2.appendChild(slot); + }); + + new test_driver.Actions() + .pointerMove(0, 0, {origin: inner}) + .pointerDown() + .pointerMove(10, 10, {origin:inner}) + .pointerUp() + .send(); + }); +}, "dragstart should still fire when the mousedown event moves the container of the inner element around"); +</script> +</body> +</html> diff --git a/tests/wpt/tests/html/editing/dnd/platform/pointerdown-add-overflow-hidden.html b/tests/wpt/tests/html/editing/dnd/platform/pointerdown-add-overflow-hidden.html new file mode 100644 index 00000000000..ac953adfd87 --- /dev/null +++ b/tests/wpt/tests/html/editing/dnd/platform/pointerdown-add-overflow-hidden.html @@ -0,0 +1,42 @@ +<!doctype html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/resources/testdriver-actions.js"></script> +<head> +<title>Test dragging still occurs when pointerdown adds overflow:hidden to the dragged element</title> +<style> +.dragging { + overflow: hidden; +} +</style> +</head> +<body> +<li id="item" draggable="true"> + Item 1 +</li> +<script> + +promise_test(function() { + return new Promise(r => { + item.addEventListener("pointerdown", function() { + item.classList.add("dragging"); + }); + + item.addEventListener("dragstart", function(e) { + assert_equals(e.target, item); + r(); + }); + + new test_driver.Actions() + .pointerMove(0, 0, {origin: item}) + .pointerDown() + .pointerMove(10, 10, {origin: item}) + .pointerUp() + .send(); + }); +}, "dragstart should still fire when the dragged element gets overflow:hidden in its pointerdown"); +</script> +</body> +</html> diff --git a/tests/wpt/tests/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-with-trusted-types-ref.html b/tests/wpt/tests/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-with-trusted-types-ref.html new file mode 100644 index 00000000000..b177f47b757 --- /dev/null +++ b/tests/wpt/tests/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-with-trusted-types-ref.html @@ -0,0 +1,8 @@ +<!doctype html> +<html> +<body> +<div style="width: 1em; color: white; background-color: black;"> + <marquee loop="1" behavior="alternate">m</marquee> +</div> +</body> +</html> diff --git a/tests/wpt/tests/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-with-trusted-types.html b/tests/wpt/tests/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-with-trusted-types.html new file mode 100644 index 00000000000..57f49850321 --- /dev/null +++ b/tests/wpt/tests/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-with-trusted-types.html @@ -0,0 +1,12 @@ +<!doctype html> +<html> +<head> +<meta http-equiv="Content-Security-Policy" content="require-trusted-types-for 'script'"> +<link rel="match" href="marquee-with-trusted-types-ref.html"> +</head> +<body> +<div style="width: 1em; color: white; background-color: black;"> + <marquee loop="1" behavior="alternate">m</marquee> +</div> +</body> +</html> diff --git a/tests/wpt/tests/html/semantics/embedded-content/the-canvas-element/imagedata.html b/tests/wpt/tests/html/semantics/embedded-content/the-canvas-element/imagedata.html index e124f8ff6ea..123654a528a 100644 --- a/tests/wpt/tests/html/semantics/embedded-content/the-canvas-element/imagedata.html +++ b/tests/wpt/tests/html/semantics/embedded-content/the-canvas-element/imagedata.html @@ -43,12 +43,6 @@ test(function() { }, "ImageData(buffer, w, h), buffer.length == 4 * w * h must be true"); test(function() { - assert_throws_js(TypeError, function() { - new ImageData(new Int8Array(1), 1); - }); -}, "ImageData(buffer, w, opt h), Uint8ClampedArray argument type check"); - -test(function() { var imageData = new ImageData(new Uint8ClampedArray(24), 2); assert_equals(imageData.width, 2); assert_equals(imageData.height, 3); diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/select-iterate-before-beginning.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/select-iterate-before-beginning.tentative.html index 5ccaa111499..0e8c16f8fda 100644 --- a/tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/select-iterate-before-beginning.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/select-iterate-before-beginning.tentative.html @@ -12,18 +12,26 @@ select, ::picker(select) { } </style> -<select> +<select id=s1> <button>button</button> <option class=one>one</option> <option>two</option> </select> +<select id=s2> + <option class=one>one</option> + <hr> + <optgroup></optgroup> + <option class=two>two</option> +</select> + <script> -promise_test(async () => { - const select = document.querySelector('select'); - const firstOption = document.querySelector('option.one'); - const arrowUp = '\uE013'; +const arrowUp = '\uE013'; +const arrowDown = '\uE015'; +promise_test(async () => { + const select = document.getElementById('s1'); + const firstOption = select.querySelector('option.one'); assert_equals(getComputedStyle(select).appearance, 'base-select', 'appearance:base-select must be supported in order to run this test.'); @@ -38,5 +46,37 @@ promise_test(async () => { assert_equals(document.activeElement, firstOption, 'The first option should remain focused after pressing ArrowUp.'); } + + // close select for the next test + await test_driver.click(select); + assert_false(select.matches(':open'), + 'select should be closed at the end of the test.'); }, 'Attempting to focus the previous option while focused on the first option should not crash.'); + +promise_test(async () => { + const select = document.getElementById('s2'); + const firstOption = select.querySelector('option.one'); + const secondOption = select.querySelector('option.two'); + assert_equals(getComputedStyle(select).appearance, 'base-select', + 'appearance:base-select must be supported in order to run this test.'); + + await test_driver.click(select); + assert_true(select.matches(':open'), + 'select should open after clicking it.'); + + assert_equals(document.activeElement, firstOption, + 'first option should be focused after opening select.'); + + await test_driver.send_keys(document.activeElement, arrowDown); + assert_equals(document.activeElement, secondOption, + 'second option should be focused after arrow down.'); + + await test_driver.send_keys(document.activeElement, arrowUp); + assert_equals(document.activeElement, firstOption, + 'first option should be focused after arrow up.'); + + await test_driver.click(select); + assert_false(select.matches(':open'), + 'select should be closed at the end of the test.'); +}, 'Keyboard navigating backwards over an <hr> and <optgroup> should not crash.'); </script> diff --git a/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-requestclose-4-crash.html b/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-requestclose-4-crash.html new file mode 100644 index 00000000000..a6b0268cb90 --- /dev/null +++ b/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-requestclose-4-crash.html @@ -0,0 +1,13 @@ +<!doctype html> +<link rel="author" href="mailto:wpt@keithcirkel.co.uk" /> +<link rel="help" href="https://html.spec.whatwg.org/#dom-dialog-requestclose" /> + +<!-- This test passes if it does not crash. --> + +<script> + const doc = document.implementation.createHTMLDocument(""); + const dialog = doc.createElement("dialog"); + dialog.setAttribute("open", ""); + doc.body.append(dialog); + dialog.requestClose(); +</script> diff --git a/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-requestclose.html b/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-requestclose.html index f63bc91ab47..9a9c87167d5 100644 --- a/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-requestclose.html +++ b/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-requestclose.html @@ -10,6 +10,10 @@ <dialog>Dialog</dialog> <script> +function waitForRender() { + return new Promise(resolve => requestAnimationFrame(() => requestAnimationFrame(resolve))); +} + const dialog = document.querySelector('dialog'); function openDialog(openMethod) { assert_false(dialog.open); @@ -48,8 +52,8 @@ async function setup(t,closedby) { if (closedby) { dialog.setAttribute('closedby',closedby); } - // Be sure any pending close events get fired. - await new Promise(resolve => requestAnimationFrame(resolve)); + // Be sure any pending close events (from prior test cleanups) get fired. + await waitForRender(); return getSignal(t); } @@ -75,7 +79,7 @@ async function setup(t,closedby) { assert_false(dialog.open); assert_false(dialog.matches(':open')); assert_array_equals(events,['cancel'],'close is scheduled'); - await new Promise(resolve => requestAnimationFrame(resolve)); + await waitForRender(); assert_array_equals(events,['cancel','close']); },`requestClose fires both cancel and close ${testDescription}`); @@ -100,7 +104,7 @@ async function setup(t,closedby) { assert_array_equals(events,['cancel']); },`closedby has no effect on dialog.requestClose() ${testDescription}`); - if (dialog.closedBy != "none") { + if (closedby != "none") { promise_test(async (t) => { const signal = await setup(t,closedby); let shouldPreventDefault = true; @@ -180,7 +184,7 @@ promise_test(async (t) => { dialog.requestClose(); assert_false(dialog.open); assert_array_equals(events,['cancel'],'close is scheduled'); - await new Promise(resolve => requestAnimationFrame(resolve)); + await waitForRender(); assert_array_equals(events,['cancel','close']); },`requestClose fires cancel and close when dialog is open via attribute`); diff --git a/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/toggle-events.html b/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/toggle-events.html index 555dc03b019..ba04b7cc391 100644 --- a/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/toggle-events.html +++ b/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/toggle-events.html @@ -324,17 +324,23 @@ } else { assert_equals(toggleEventCounter, 0, "toggle event not fired"); } + // Clean up for the next test. + document.body.prepend(mydialog); + mydialog.close(); + await waitForTick(); }, `dialog.${methodName}() should not open if beforetoggle removes`); promise_test(async (t) => { + assert_true(document.body.contains(mydialog),'still in the document'); + assert_false(mydialog.open,'initially closed'); const abortController = new AbortController(); const signal = abortController.signal; - t.add_cleanup(async () => { + t.add_cleanup(() => { try { mydialog.hidePopover(); } catch {} try { mydialog.close(); } catch {} mydialog.removeAttribute('popover'); abortController.abort(); - await waitForTick(); + waitForTick(); // Note that cleanups can't await }); mydialog.setAttribute('popover', ''); mydialog.addEventListener("beforetoggle", () => { @@ -362,6 +368,9 @@ } else { assert_equals(toggleEventCounter, 1, "toggle event was fired for showPopover"); } + // Clean up for the next test. + mydialog.close(); + await waitForTick(); }, `dialog.${methodName}() should not open if beforetoggle calls showPopover`); }); </script> diff --git a/tests/wpt/tests/html/semantics/permission-element/invalid-css-properties.tentative.html b/tests/wpt/tests/html/semantics/permission-element/invalid-css-properties.tentative.html index 2f6fc07b392..f8dd5b68116 100644 --- a/tests/wpt/tests/html/semantics/permission-element/invalid-css-properties.tentative.html +++ b/tests/wpt/tests/html/semantics/permission-element/invalid-css-properties.tentative.html @@ -17,6 +17,7 @@ width: 200px; transform: rotate(10); border: 0px; + cursor: none; } </style> @@ -32,6 +33,7 @@ assert_equals(getComputedStyle(el_with_negatives).mask, "none", "mask"); assert_equals(getComputedStyle(el_with_negatives).paddingLeft, "0px", "padding-left"); assert_equals(getComputedStyle(el_with_negatives).transform, "none", "transform"); + assert_equals(getComputedStyle(el_with_negatives).cursor, "pointer", "cursor"); }, "None of the listed properties should be applied"); </script> </body>
\ No newline at end of file diff --git a/tests/wpt/tests/html/semantics/popovers/popover-focus-2.html b/tests/wpt/tests/html/semantics/popovers/popover-focus-2.html index cd03c6a8434..9cacd2b8757 100644 --- a/tests/wpt/tests/html/semantics/popovers/popover-focus-2.html +++ b/tests/wpt/tests/html/semantics/popovers/popover-focus-2.html @@ -11,6 +11,10 @@ <script src="/resources/testdriver-vendor.js"></script> <script src="resources/popover-utils.js"></script> +<meta name=variant content=?test1> +<meta name=variant content=?test2> +<meta name=variant content=?test3> + <div id=fixup> <button id=button1 tabindex="0">Button1</button> <div popover id=popover0 tabindex="0" style="top:300px"> @@ -96,63 +100,75 @@ async function testPopoverFocusNavigation() { button1.focus(); await verifyFocusOrder([button1, button2, invoker0, invoker1, inside_popover1, invoker2, inside_popover3, invoker3, inside_popover2, button3, button4],'set 2'); } -promise_test(async t => { - invoker0.setAttribute('popovertarget', 'popover0'); - invoker1.setAttribute('popovertarget', 'popover1'); - invoker2.setAttribute('popovertarget', 'popover2'); - invoker3.setAttribute('popovertarget', 'popover3'); - t.add_cleanup(() => { - invoker0.removeAttribute('popovertarget'); - invoker1.removeAttribute('popovertarget'); - invoker2.removeAttribute('popovertarget'); - invoker3.removeAttribute('popovertarget'); - }); - await testPopoverFocusNavigation(); -}, "Popover focus navigation with popovertarget invocation"); -promise_test(async t => { - invoker0.setAttribute('commandfor', 'popover0'); - invoker1.setAttribute('commandfor', 'popover1'); - invoker2.setAttribute('commandfor', 'popover2'); - invoker3.setAttribute('commandfor', 'popover3'); - invoker0.setAttribute('command', 'toggle-popover'); - invoker1.setAttribute('command', 'toggle-popover'); - invoker2.setAttribute('command', 'toggle-popover'); - invoker3.setAttribute('command', 'toggle-popover'); - t.add_cleanup(() => { - invoker0.removeAttribute('commandfor'); - invoker1.removeAttribute('commandfor'); - invoker2.removeAttribute('commandfor'); - invoker3.removeAttribute('commandfor'); - invoker0.removeAttribute('command'); - invoker1.removeAttribute('command'); - invoker2.removeAttribute('command'); - invoker3.removeAttribute('command'); - }); - await testPopoverFocusNavigation(); -}, "Popover focus navigation with command/commandfor invocation"); -promise_test(async t => { - const invoker0Click = () => { - popover0.togglePopover({ source: invoker0 }); - }; - invoker0.addEventListener('click', invoker0Click); - const invoker1Click = () => { - popover1.togglePopover({ source: invoker1 }); - }; - invoker1.addEventListener('click', invoker1Click); - const invoker2Click = () => { - popover2.togglePopover({ source: invoker2 }); - }; - invoker2.addEventListener('click', invoker2Click); - const invoker3Click = () => { - popover3.togglePopover({ source: invoker3 }); - }; - invoker3.addEventListener('click', invoker3Click); - t.add_cleanup(() => { - invoker0.removeEventListener('click', invoker0Click); - invoker1.removeEventListener('click', invoker1Click); - invoker2.removeEventListener('click', invoker2Click); - invoker3.removeEventListener('click', invoker3Click); - }); - await testPopoverFocusNavigation() -}, "Popover focus navigation with imperative invocation"); + +// This test is very slow. Variants are used to split it into pieces. +switch (window.location.search.substring(1)) { + case 'test1': + promise_test(async t => { + invoker0.setAttribute('popovertarget', 'popover0'); + invoker1.setAttribute('popovertarget', 'popover1'); + invoker2.setAttribute('popovertarget', 'popover2'); + invoker3.setAttribute('popovertarget', 'popover3'); + t.add_cleanup(() => { + invoker0.removeAttribute('popovertarget'); + invoker1.removeAttribute('popovertarget'); + invoker2.removeAttribute('popovertarget'); + invoker3.removeAttribute('popovertarget'); + }); + await testPopoverFocusNavigation(); + }, "Popover focus navigation with popovertarget invocation"); + break; + case 'test2': + promise_test(async t => { + invoker0.setAttribute('commandfor', 'popover0'); + invoker1.setAttribute('commandfor', 'popover1'); + invoker2.setAttribute('commandfor', 'popover2'); + invoker3.setAttribute('commandfor', 'popover3'); + invoker0.setAttribute('command', 'toggle-popover'); + invoker1.setAttribute('command', 'toggle-popover'); + invoker2.setAttribute('command', 'toggle-popover'); + invoker3.setAttribute('command', 'toggle-popover'); + t.add_cleanup(() => { + invoker0.removeAttribute('commandfor'); + invoker1.removeAttribute('commandfor'); + invoker2.removeAttribute('commandfor'); + invoker3.removeAttribute('commandfor'); + invoker0.removeAttribute('command'); + invoker1.removeAttribute('command'); + invoker2.removeAttribute('command'); + invoker3.removeAttribute('command'); + }); + await testPopoverFocusNavigation(); + }, "Popover focus navigation with command/commandfor invocation"); + break; + case 'test3': + promise_test(async t => { + const invoker0Click = () => { + popover0.togglePopover({ source: invoker0 }); + }; + invoker0.addEventListener('click', invoker0Click); + const invoker1Click = () => { + popover1.togglePopover({ source: invoker1 }); + }; + invoker1.addEventListener('click', invoker1Click); + const invoker2Click = () => { + popover2.togglePopover({ source: invoker2 }); + }; + invoker2.addEventListener('click', invoker2Click); + const invoker3Click = () => { + popover3.togglePopover({ source: invoker3 }); + }; + invoker3.addEventListener('click', invoker3Click); + t.add_cleanup(() => { + invoker0.removeEventListener('click', invoker0Click); + invoker1.removeEventListener('click', invoker1Click); + invoker2.removeEventListener('click', invoker2Click); + invoker3.removeEventListener('click', invoker3Click); + }); + await testPopoverFocusNavigation() + }, "Popover focus navigation with imperative invocation"); + break; + default: + assert_unreached('Invalid variant'); +} </script> diff --git a/tests/wpt/tests/html/semantics/popovers/resources/popover-utils.js b/tests/wpt/tests/html/semantics/popovers/resources/popover-utils.js index 6ab5a08898d..7878b125f2f 100644 --- a/tests/wpt/tests/html/semantics/popovers/resources/popover-utils.js +++ b/tests/wpt/tests/html/semantics/popovers/resources/popover-utils.js @@ -2,10 +2,6 @@ function waitForRender() { return new Promise(resolve => requestAnimationFrame(() => requestAnimationFrame(resolve))); } -function waitForTick() { - return new Promise(resolve => step_timeout(resolve, 0)); -} - async function clickOn(element) { await waitForRender(); let rect = element.getBoundingClientRect(); diff --git a/tests/wpt/tests/html/semantics/the-button-element/command-and-commandfor/on-popover-behavior.html b/tests/wpt/tests/html/semantics/the-button-element/command-and-commandfor/on-popover-behavior.html index 77325b5f0f6..44496e9b386 100644 --- a/tests/wpt/tests/html/semantics/the-button-element/command-and-commandfor/on-popover-behavior.html +++ b/tests/wpt/tests/html/semantics/the-button-element/command-and-commandfor/on-popover-behavior.html @@ -12,6 +12,13 @@ </div> <button id="invokerbutton" commandfor="invokee" command="toggle-popover"></button> +<style> +#invokee { + margin: 0; + position-area: block-end span-all; +} +</style> + <script> function resetState() { invokerbutton.setAttribute("commandfor", "invokee"); @@ -149,4 +156,16 @@ invokerbutton.click(); assert_false(invokee.matches(":popover-open")); }, "invoking (as hide-popover) closed popover is noop"); + + + test(function (t) { + t.add_cleanup(resetState); + invokerbutton.setAttribute("command", "show-popover"); + invokerbutton.click(); + assert_true(invokee.matches(":popover-open"), + ":popover-open should match after calling invokerbutton.click()"); + const rect = invokee.getBoundingClientRect(); + assert_not_equals(rect.y, 0, + "popover should not be at the top of the window because it is anchor positioned."); + }, "invoking (as show-popover) should create an implicit anchor reference for anchor positioning."); </script> diff --git a/tests/wpt/tests/html/semantics/the-button-element/interest-target/interesttarget-hide-delay.tentative.html b/tests/wpt/tests/html/semantics/the-button-element/interest-target/interesttarget-hide-delay.tentative.html index 9ec1c229c01..8828d879cac 100644 --- a/tests/wpt/tests/html/semantics/the-button-element/interest-target/interesttarget-hide-delay.tentative.html +++ b/tests/wpt/tests/html/semantics/the-button-element/interest-target/interesttarget-hide-delay.tentative.html @@ -10,8 +10,17 @@ <script src="/resources/testdriver-vendor.js"></script> <script src="resources/invoker-utils.js"></script> +<meta name=variant content=?method=hover> +<meta name=variant content=?method=focus> + <body> <script> +// The invokerMethod parameter is provided by variants, to +// effectively split this (slow) test into multiple runs. +const urlParams = new URLSearchParams(window.location.search); +invokerMethod = urlParams.get('method'); +description = `method ${invokerMethod}`; + // NOTE about testing methodology: // This test uses popovers as an invoker target, and checks whether they are // hidden *after* the appropriate de-hover delay. The delay used for testing is @@ -29,19 +38,19 @@ async function makeTestParts(t) { // This ensures the tests in this file don't succeed sometimes, due to the above NOTE. assert_true(HTMLAnchorElement.prototype.hasOwnProperty('interestTargetElement'),'interesttarget is not supported'); let {popover, invoker, unrelated} = await createPopoverAndInvokerForHoverTests(t, /*showdelayMs*/ 0, invokerHideDelay); - let mouseOverInvoker; + let specificInvokerElement; invoker.innerHTML = '<span><span>Click me</span></span>'; - mouseOverInvoker = invoker.firstElementChild.firstElementChild; - assert_true(!!mouseOverInvoker); - assert_false(popover.matches(':popover-open')); - await hoverOver(invoker); // Always start with the mouse over the invoker, which will invoke the popover immediately - assert_true(popover.matches(':popover-open')); - return {popover, invoker, unrelated, mouseOverInvoker}; + specificInvokerElement = invoker.firstElementChild.firstElementChild; + assert_true(!!specificInvokerElement,'invalid'); + assert_false(popover.matches(':popover-open'),'popover should start closed'); + await hoverOrFocus(invokerMethod,invoker); // Always start with the focus/mouse over the invoker, which will invoke the popover immediately + assert_true(popover.matches(':popover-open'),'popover should be open'); + return {popover, invoker, unrelated, specificInvokerElement}; } promise_test(async (t) => { const {popover,invoker} = await makeTestParts(t); - const token = await mouseOverAndRecord(t,invoker); + const token = await mouseOverOrFocusAndRecord(t,invokerMethod,invoker); await waitForHoverTime(hoverWaitTime); assert_true(msSinceMouseOver(token) >= hoverWaitTime,'waitForHoverTime should wait the specified time'); assert_true(hoverWaitTime > invokerHideDelay,'invokerHideDelay is the value from CSS, hoverWaitTime should be longer than that'); @@ -49,41 +58,55 @@ promise_test(async (t) => { promise_test(async (t) => { const {popover,invoker,unrelated} = await makeTestParts(t); - const token = await mouseOverAndRecord(t,unrelated); + const token = await mouseOverOrFocusAndRecord(t,invokerMethod,unrelated); let showing = popover.matches(':popover-open'); if (msSinceMouseOver(token) < invokerHideDelay) { // Only check if the WPT runner wasn't too slow. assert_true(showing,'interest shouldn\'t be immediately lost'); } - await hoverOver(unrelated); + await hoverOrFocus(invokerMethod,unrelated); await waitForHoverTime(hoverWaitTime); assert_false(popover.matches(':popover-open'),'interest should be lost after delay'); -},`The interest-target-hide-delay causes interest to be lost after a delay`); +},`The interest-target-hide-delay causes interest to be lost after a delay, ${description}`); + +promise_test(async (t) => { + const {popover,invoker,unrelated} = await makeTestParts(t); + // First hover/focus unrelated. + const token = await mouseOverOrFocusAndRecord(t,invokerMethod,unrelated); + // Then immediately re-hover/focus the invoker. + await hoverOrFocus(invokerMethod,invoker); + if (msSinceMouseOver(token) >= invokerHideDelay) + return; // The WPT runner was too slow. + let showing1 = popover.matches(':popover-open'); + await waitForHoverTime(hoverWaitTime); + let showing2 = popover.matches(':popover-open'); + assert_true(showing1 && showing2,'interest should not be lost'); +},`Hide delay is cancelled if hover/focus returns, ${description}`); promise_test(async (t) => { const {popover,invoker,unrelated} = await makeTestParts(t); - await hoverOver(popover); + await hoverOrFocus(invokerMethod,popover); await waitForHoverTime(hoverWaitTime); assert_true(popover.matches(':popover-open'),'hovering the interest target element should keep it showing'); - const token = await mouseOverAndRecord(t,unrelated); + const token = await mouseOverOrFocusAndRecord(t,invokerMethod,unrelated); let showing = popover.matches(':popover-open'); if (msSinceMouseOver(token) >= invokerHideDelay) return; // The WPT runner was too slow. assert_true(showing,'subsequently hovering unrelated element shouldn\'t immediately cause interest lost'); - await hoverOver(unrelated); + await hoverOrFocus(invokerMethod,unrelated); await waitForHoverTime(hoverWaitTime); assert_false(popover.matches(':popover-open'),'hovering unrelated element should cause interest lost after delay'); -},`hovering the interest target element keeps the invoker from losing interest`); +},`hovering/focusing the interest target element keeps the invoker from losing interest, ${description}`); promise_test(async (t) => { - const {popover,invoker,unrelated,mouseOverInvoker} = await makeTestParts(t); - await hoverOver(popover); + const {popover,invoker,unrelated,specificInvokerElement} = await makeTestParts(t); + await hoverOrFocus(invokerMethod,popover); await waitForHoverTime(hoverWaitTime); - await hoverOver(mouseOverInvoker); + await hoverOrFocus(invokerMethod,specificInvokerElement); await waitForHoverTime(hoverWaitTime); assert_true(popover.matches(':popover-open'),'Moving hover between invoker and target should not cause interest lost'); - await hoverOver(unrelated); + await hoverOrFocus(invokerMethod,unrelated); await waitForHoverTime(hoverWaitTime); assert_false(popover.matches(':popover-open'),'Moving hover to unrelated should cause interest lost'); -},`moving hover between the invoker and the target prevents interest lost`); +},`moving hover/focus between the invoker and the target prevents interest lost, ${description}`); </script> diff --git a/tests/wpt/tests/html/semantics/the-button-element/interest-target/interesttarget-keyboard-behavior.tentative.html b/tests/wpt/tests/html/semantics/the-button-element/interest-target/interesttarget-keyboard-behavior.tentative.html index 3ae653400d1..7040019e750 100644 --- a/tests/wpt/tests/html/semantics/the-button-element/interest-target/interesttarget-keyboard-behavior.tentative.html +++ b/tests/wpt/tests/html/semantics/the-button-element/interest-target/interesttarget-keyboard-behavior.tentative.html @@ -9,6 +9,7 @@ <script src="/resources/testdriver-actions.js"></script> <script src="/resources/testdriver-vendor.js"></script> <script src="resources/invoker-utils.js"></script> +<script src="/html/semantics/popovers/resources/popover-utils.js"></script> <div id="examples"> <button id="<button>" interesttarget=target>Button</button> @@ -39,13 +40,6 @@ </style> <script> -const kEscape = '\uE00C'; -function sendLoseInterestHotkey() { - return new test_driver.Actions() - .keyDown(kEscape) - .keyUp(kEscape) - .send(); -} const allInterestTargetElements = document.querySelectorAll('#examples [interesttarget]'); function verifyInterest(onlyElements,description) { if (!(onlyElements instanceof Array)) { @@ -162,9 +156,12 @@ allInterestTargetElements.forEach(el => { assert_false(target.matches(':popover-open'),'anothertarget popover opens, closing target'); assert_true(anothertarget.matches(':popover-open')); await sendLoseInterestHotkey(); - assert_array_equals(events,['target loseinterest','anothertarget loseinterest'],'Fire loseinterest in both active elements'); + assert_array_equals(events,['anothertarget loseinterest'],'Lose interest hot key on focused element loses just interest in that element'); assert_false(target.matches(':popover-open')); assert_false(anothertarget.matches(':popover-open')); + await focusOn(el); + await sendLoseInterestHotkey(); + assert_array_equals(events,['anothertarget loseinterest','target loseinterest'],'Now both lost interest'); verifyInterest(undefined,`Nothing has interest now`); }, `Cancelling loseinterest caused by keyboard-gained interest cancels interest, ${description}`); }); diff --git a/tests/wpt/tests/html/semantics/the-button-element/interest-target/interesttarget-popover-focus.tentative.html b/tests/wpt/tests/html/semantics/the-button-element/interest-target/interesttarget-popover-focus.tentative.html index 6cf64d953fe..9dfc39a37a6 100644 --- a/tests/wpt/tests/html/semantics/the-button-element/interest-target/interesttarget-popover-focus.tentative.html +++ b/tests/wpt/tests/html/semantics/the-button-element/interest-target/interesttarget-popover-focus.tentative.html @@ -32,7 +32,7 @@ assert_true(target.matches(':popover-open'),'Focusing should trigger interest'); assert_equals(interestCount,1); assert_equals(loseInterestCount,0); - await sendTab(); + await sendShowInterestHotkey(); assert_equals(document.activeElement,contained); assert_true(target.matches(':popover-open'),'Moving focus into popover should not lose interest'); assert_equals(interestCount,1); diff --git a/tests/wpt/tests/html/semantics/the-button-element/interest-target/interesttarget-pseudo-classes.tentative.html b/tests/wpt/tests/html/semantics/the-button-element/interest-target/interesttarget-pseudo-classes.tentative.html index 348d9ae7310..7cd50ebfe20 100644 --- a/tests/wpt/tests/html/semantics/the-button-element/interest-target/interesttarget-pseudo-classes.tentative.html +++ b/tests/wpt/tests/html/semantics/the-button-element/interest-target/interesttarget-pseudo-classes.tentative.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <meta charset="utf-8" /> +<meta name="timeout" content="long"> <link rel="author" href="mailto:masonf@chromium.org"> <link rel="help" href="https://open-ui.org/components/interest-invokers.explainer"> <script src="/resources/testharness.js"></script> @@ -8,10 +9,28 @@ <script src="/resources/testdriver-actions.js"></script> <script src="/resources/testdriver-vendor.js"></script> <script src="resources/invoker-utils.js"></script> +<script src="/html/semantics/popovers/resources/popover-utils.js"></script> <div id=unrelated tabindex=0>Unrelated</div> <button id=invoker interesttarget=target>Invoker</button> -<div id=target>Target <button id=target_button>contained button</button></div> +<div id=target popover>Target popover with all kinds of focusable things + <button id=target_button>contained button</button> + <button id=target_button_2>contained button 2</button> + <a href=foo>Link</a> + <dialog open>Dialog</dialog> + <textarea></textarea> + <input type=text> + <input type=checkbox> + <input type=radio> + <input type=button> + <input type=range> + <map name="mymap"> + <area shape="circle" coords="75,75,75" href=foo> + </map> + <img usemap="#mymap" src="../../embedded-content/the-img-element/resources/green.png"> + <div tabindex=0>tabindex=0</div> +</div> +<button id=after>Button after</button> <style> button { interest-target-delay: 0s; @@ -30,17 +49,19 @@ function checkPseudos(invoker,target,expectHasPartialInterest,expectHasInterest, assert_false(invoker.matches(':target-of-partial-interest'),'invoker should never match :target-of-partial-interest'); assert_false(target.matches(':has-interest'),'target should never match :has-interest'); assert_false(target.matches(':has-partial-interest'),'target should never match :has-partial-interest'); + assert_equals(target.matches(':popover-open'),expectTargetHasInterest,'Popover should be open if target has interest'); } -function add_cleanups(t) { - t.add_cleanup(async() => { - invoker.removeAttribute('style'); - await focusOn(unrelated); - await hoverOver(unrelated); - }); +// Note that add_cleanup does not wait for async functions. +async function do_cleanup(t) { + invoker.removeAttribute('style'); + await focusOn(unrelated); + await hoverOver(unrelated); + await sendLoseInterestHotkey(); + target.hidePopover(); + await waitForRender(); } promise_test(async (t) => { - add_cleanups(t); let hasInterest = false; target.addEventListener('interest',() => (hasInterest=true)); target.addEventListener('loseinterest',() => (hasInterest=false)); @@ -55,10 +76,10 @@ promise_test(async (t) => { await hoverOver(unrelated); checkPseudos(invoker,target,false,false,false,false,'hovering unrelated loses interest'); assert_false(hasInterest,'loseinterest event was fired'); + await do_cleanup(); },'Basic pseudo class function, with mouse hover triggering'); promise_test(async (t) => { - add_cleanups(t); let hasInterest = false; target.addEventListener('interest',() => (hasInterest=true)); target.addEventListener('loseinterest',() => (hasInterest=false)); @@ -67,6 +88,7 @@ promise_test(async (t) => { await focusOn(invoker); checkPseudos(invoker,target,true,true,true,true,'focusing invoker shows partial interest (and therefore also interest)'); assert_true(hasInterest,'event was fired'); + // Partial interest does not affect programmatic focusability: await focusOn(target_button); checkPseudos(invoker,target,false,true,false,true,'focusing the target upgrades to full interest (no longer partial interest)'); assert_true(hasInterest,'loseinterest event was not yet fired'); @@ -76,12 +98,63 @@ promise_test(async (t) => { await focusOn(unrelated); checkPseudos(invoker,target,false,false,false,false,'focusing unrelated loses interest'); assert_false(hasInterest,'loseinterest event was fired'); + await do_cleanup(); },'Basic pseudo class function, with keyboard focus triggering'); +promise_test(async (t) => { + checkPseudos(invoker,target,false,false,false,false,'initial'); + await focusOn(invoker); + checkPseudos(invoker,target,true,true,true,true,'focusing invoker shows partial interest'); + assert_equals(document.activeElement,invoker); + // Tab once, which should skip over the button in the popover, to the button + // that comes after it. + await sendTab(); + assert_equals(document.activeElement,after,'focus should be on the button after the popover'); + checkPseudos(invoker,target,false,false,false,false,'interest was lost, due to blur of the invoker'); + await do_cleanup(); +},'Keyboard-triggered partial focus keeps contents from being keyboard focusable'); + +promise_test(async (t) => { + checkPseudos(invoker,target,false,false,false,false,'initial'); + await focusOn(invoker); + checkPseudos(invoker,target,true,true,true,true,'focusing invoker shows partial interest'); + invoker.setAttribute('style',`interest-target-delay: 10000s`); + await sendShowInterestHotkey(); + checkPseudos(invoker,target,false,true,false,true,'invoker now has full interest'); + assert_equals(document.activeElement,target_button,'focus moves to the target automatically'); + await do_cleanup(); +},'Show interest hotkey confers "full interest", without any delays'); + +promise_test(async (t) => { + checkPseudos(invoker,target,false,false,false,false,'initial'); + await focusOn(invoker); + await sendShowInterestHotkey(); + checkPseudos(invoker,target,false,true,false,true,'invoker now has full interest'); + await sendTab(); + assert_equals(document.activeElement,target_button_2,'focus should now be able to move within the target'); + await sendShiftTab(); + assert_equals(document.activeElement,target_button,'focus should now be able to move within the target (backwards)'); + await sendShiftTab(); + assert_equals(document.activeElement,invoker,'focus should go back to invoker'); + checkPseudos(invoker,target,false,true,false,true,'focusing back on invoker keeps full interest'); + await focusOn(unrelated); + checkPseudos(invoker,target,false,false,false,false,'focusing unrelated loses interest'); + await do_cleanup(); +},'With full interest, contents are keyboard focusable'); + +promise_test(async (t) => { + checkPseudos(invoker,target,false,false,false,false,'initial'); + await focusOn(invoker); + checkPseudos(invoker,target,true,true,true,true,'focusing invoker shows partial interest'); + invoker.setAttribute('style',`interest-target-delay: 10000s`); + await sendLoseInterestHotkey(); + checkPseudos(invoker,target,false,false,false,false,'Hot key loses interest immediately (no delays)'); + await do_cleanup(); +},`Lose interest hotkey works`); + const invokerDelayMs = 100; // The CSS delay setting. const hoverWaitTime = 200; // How long to wait to cover the delay for sure. promise_test(async (t) => { - add_cleanups(t); invoker.setAttribute('style',`interest-target-delay: ${invokerDelayMs}ms`); checkPseudos(invoker,target,false,false,false,false,'initial'); const token1 = await mouseOverAndRecord(t,invoker); @@ -104,5 +177,6 @@ promise_test(async (t) => { } await waitForHoverTime(hoverWaitTime); checkPseudos(invoker,target,false,false,false,false,'no pseudos should match after de-hover delay'); + await do_cleanup(); },'The pseudo classes only match after delays, once interest is shown'); </script> diff --git a/tests/wpt/tests/html/semantics/the-button-element/interest-target/interesttarget-show-delay.tentative.html b/tests/wpt/tests/html/semantics/the-button-element/interest-target/interesttarget-show-delay.tentative.html index ca47c0f237d..8d7b78de7fc 100644 --- a/tests/wpt/tests/html/semantics/the-button-element/interest-target/interesttarget-show-delay.tentative.html +++ b/tests/wpt/tests/html/semantics/the-button-element/interest-target/interesttarget-show-delay.tentative.html @@ -10,27 +10,41 @@ <script src="/resources/testdriver-vendor.js"></script> <script src="resources/invoker-utils.js"></script> +<meta name=variant content=?layout=plain&method=hover> +<meta name=variant content=?layout=nested&method=hover> +<meta name=variant content=?layout=nested-offset&method=hover> +<meta name=variant content=?layout=plain&method=focus> +<meta name=variant content=?layout=nested&method=focus> +<meta name=variant content=?layout=nested-offset&method=focus> + <body> <script> +// The invokerLayout and invokerMethod parameters are provided by variants, to +// effectively split this (slow) test into multiple runs. +const urlParams = new URLSearchParams(window.location.search); +invokerLayout = urlParams.get('layout'); +invokerMethod = urlParams.get('method'); +description = `layout ${invokerLayout}, method ${invokerMethod}`; + // NOTE about testing methodology: // This test uses popovers as an invoker target, and checks whether they are -// triggered *after* the appropriate hover delay. The delay used for testing is -// kept low, to avoid this test taking too long, but that means that sometimes -// on a slow bot/client, the hover delay can elapse before we are able to check -// the popover status. And that can make this test flaky. To avoid that, the -// msSinceMouseOver() function is used to check that not-too-much time has -// passed, and if it has, the test is simply skipped. Because of this +// triggered *after* the appropriate hover/focus delay. The delay used for +// testing is kept low, to avoid this test taking too long, but that means that +// sometimes on a slow bot/client, the hover delay can elapse before we are able +// to check the popover status. And that can make this test flaky. To avoid +// that, the msSinceMouseOver() function is used to check that not-too-much time +// has passed, and if it has, the test is simply skipped. Because of this // methodology, many/most of these tests will pass on browsers that do not // implement `interesttarget`. See the `interesttarget-basic-delays` test. -const invokerShowDelay = 100; // The CSS delay setting. -const hoverWaitTime = 200; // How long to wait to cover the delay for sure. +const invokerShowDelayMs = 100; // The CSS delay setting. +const hoverFocusWaitTimeMs = 200; // How long to wait to cover the delay for sure. async function makePopoverAndInvoker(test, invokerLayout, showdelayMs) { // This ensures the tests in this file don't succeed sometimes, due to the above NOTE. assert_true(HTMLAnchorElement.prototype.hasOwnProperty('interestTargetElement'),'interesttarget is not supported'); if (showdelayMs === undefined) { - showdelayMs = invokerShowDelay; + showdelayMs = invokerShowDelayMs; } let {popover, invoker, unrelated} = await createPopoverAndInvokerForHoverTests(test, showdelayMs, /*hidedelayMs*/10000000); invoker.setAttribute('class','invoker'); @@ -53,131 +67,142 @@ async function makePopoverAndInvoker(test, invokerLayout, showdelayMs) { // Reassign invoker to the child: invoker = invoker.appendChild(document.createElement('div')); invoker.textContent = 'Invoker child'; + invoker.tabIndex = 0; invoker.setAttribute('style','position:relative; top:300px; left:300px;'); break; default: assert_unreached(`Invalid invokerLayout ${invokerLayout}`); } - test.add_cleanup(async () => { + test.add_cleanup(() => { originalInvoker.remove(); - await waitForRender(); }); - await hoverOver(unrelated); // Start by mousing over the unrelated element - await waitForRender(); assert_false(popover.matches(':popover-open'),'Popover should start out closed'); return {popover,invoker,unrelated,reassignInvokerTargetFn}; } -["plain","nested","nested-offset"].forEach(invokerLayout => { - promise_test(async (t) => { - const {popover,invoker} = await makePopoverAndInvoker(t,invokerLayout); - const token = await mouseOverAndRecord(t,invoker); - let showing = popover.matches(':popover-open'); - // See NOTE above. - if (msSinceMouseOver(token) < invokerShowDelay) - assert_false(showing,'interest should not be shown immediately'); - await waitForHoverTime(hoverWaitTime); - assert_true(msSinceMouseOver(token) >= hoverWaitTime,'waitForHoverTime should wait the specified time'); - assert_true(popover.matches(':popover-open'),'interest should be shown after the delay'); - assert_true(hoverWaitTime > invokerShowDelay,'invokerShowDelay is the CSS setting, hoverWaitTime should be longer than that'); - },`interesttarget fires after a delay, invokerLayout=${invokerLayout}`); +promise_test(async (t) => { + const {popover,invoker} = await makePopoverAndInvoker(t,invokerLayout); + const token = await mouseOverOrFocusAndRecord(t,invokerMethod,invoker); + let showing = popover.matches(':popover-open'); + // See NOTE above. + if (msSinceMouseOver(token) < invokerShowDelayMs) + assert_false(showing,'interest should not be shown immediately'); + await waitForHoverTime(hoverFocusWaitTimeMs); + assert_true(msSinceMouseOver(token) >= hoverFocusWaitTimeMs,'waitForHoverTime should wait the specified time'); + assert_true(popover.matches(':popover-open'),'interest should be shown after the delay'); + assert_true(hoverFocusWaitTimeMs > invokerShowDelayMs,'invokerShowDelayMs is the CSS setting, hoverFocusWaitTimeMs should be longer than that'); +},`interesttarget fires after a delay, ${description}`); + +promise_test(async (t) => { + const {popover,invoker} = await makePopoverAndInvoker(t,invokerLayout); + assert_false(popover.matches(':popover-open')); + invoker.click(); // Click the invoker + assert_false(popover.matches(':popover-open'),'Clicking the invoker should not "show interest"'); +},`interesttarget should not trigger via mouse click, ${description}`); - promise_test(async (t) => { - const {popover,invoker} = await makePopoverAndInvoker(t,invokerLayout); - assert_false(popover.matches(':popover-open')); - invoker.click(); // Click the invoker - assert_false(popover.matches(':popover-open'),'Clicking the invoker should not "show interest"'); - },`interesttarget should not trigger via mouse click, invokerLayout=${invokerLayout}`); +promise_test(async (t) => { + const longerHoverDelay = hoverFocusWaitTimeMs*2; + const {popover,invoker} = await makePopoverAndInvoker(t,invokerLayout,longerHoverDelay); + const token = await mouseOverOrFocusAndRecord(t,invokerMethod,invoker); + await waitForHoverTime(hoverFocusWaitTimeMs); + showing = popover.matches(':popover-open'); + if (msSinceMouseOver(token) >= longerHoverDelay) + return; // The WPT runner was too slow. + assert_false(showing,'interesttarget should respect CSS setting'); +},`interesttarget interest-target-show-delay is respected, ${description}`); - promise_test(async (t) => { - const longerHoverDelay = hoverWaitTime*2; - const {popover,invoker} = await makePopoverAndInvoker(t,invokerLayout,longerHoverDelay); - const token = await mouseOverAndRecord(t,invoker); - await waitForHoverTime(hoverWaitTime); - showing = popover.matches(':popover-open'); - if (msSinceMouseOver(token) >= longerHoverDelay) - return; // The WPT runner was too slow. - assert_false(showing,'interesttarget should respect CSS setting'); - },`interesttarget interest-target-show-delay is respected, invokerLayout=${invokerLayout}`); +promise_test(async (t) => { + const longerHoverDelay = hoverFocusWaitTimeMs*4; + const {popover,invoker,unrelated} = await makePopoverAndInvoker(t,invokerLayout,longerHoverDelay); + const token = await mouseOverOrFocusAndRecord(t,invokerMethod,invoker); + await waitForHoverTime(hoverFocusWaitTimeMs); + showing1 = popover.matches(':popover-open'); + await hoverOrFocus(invokerMethod,unrelated); + if (msSinceMouseOver(token) >= longerHoverDelay) + return; // The WPT runner was too slow. + await waitForHoverTime(longerHoverDelay); + showing2 = popover.matches(':popover-open'); + assert_false(showing1,'interest shouldn\'t be shown immediately'); + assert_false(showing2,'because target was de-hovered/de-focused before the delay elapsed, interest should never be shown'); +},`Show delay is cancelled if hover/focus changes, ${description}`); - promise_test(async (t) => { - const {popover,invoker} = await makePopoverAndInvoker(t,invokerLayout); - popover.showPopover(); - assert_true(popover.matches(':popover-open')); - let gotInterest = false; - popover.addEventListener('interest',() => (gotInterest=true),{once:true}); - await hoverOver(invoker); - const stillOpen = popover.matches(':popover-open'); - await waitForHoverTime(hoverWaitTime); - assert_true(popover.matches(':popover-open'),'popover should stay showing after delay'); - assert_true(stillOpen,'popover should have been open before the delay also'); - assert_true(gotInterest,'interest event should still be fired'); - },`interesttarget does not close an already-open popover, invokerLayout=${invokerLayout}`); +promise_test(async (t) => { + const {popover,invoker} = await makePopoverAndInvoker(t,invokerLayout); + popover.showPopover(); + assert_true(popover.matches(':popover-open')); + let gotInterest = false; + popover.addEventListener('interest',() => (gotInterest=true),{once:true}); + await hoverOrFocus(invokerMethod,invoker); + const stillOpen = popover.matches(':popover-open'); + await waitForHoverTime(hoverFocusWaitTimeMs); + assert_true(popover.matches(':popover-open'),'popover should stay showing after delay'); + assert_true(stillOpen,'popover should have been open before the delay also'); + assert_true(gotInterest,'interest event should still be fired'); +},`interesttarget does not close an already-open popover, ${description}`); - promise_test(async (t) => { - const {popover,invoker} = await makePopoverAndInvoker(t,invokerLayout); - popover.remove(); // Remove from the document - let gotInterest = false; - popover.addEventListener('interest',() => (gotInterest=true),{once:true}); - await hoverOver(invoker); - await waitForHoverTime(hoverWaitTime); - assert_false(gotInterest,'interest should not be shown if the target is removed'); - // Now put it back in the document and make sure it doesn't trigger. - document.body.appendChild(popover); - await waitForHoverTime(hoverWaitTime); - assert_false(gotInterest,'interest should not be shown even when returned to the document'); - },`interesttarget does nothing when the target is moved out of the document, invokerLayout=${invokerLayout}`); +promise_test(async (t) => { + const {popover,invoker} = await makePopoverAndInvoker(t,invokerLayout); + popover.remove(); // Remove from the document + let gotInterest = false; + popover.addEventListener('interest',() => (gotInterest=true),{once:true}); + await hoverOrFocus(invokerMethod,invoker); + await waitForHoverTime(hoverFocusWaitTimeMs); + assert_false(gotInterest,'interest should not be shown if the target is removed'); + // Now put it back in the document and make sure it doesn't trigger. + document.body.appendChild(popover); + await waitForHoverTime(hoverFocusWaitTimeMs); + assert_false(gotInterest,'interest should not be shown even when returned to the document'); +},`interesttarget does nothing when the target is moved out of the document, ${description}`); - promise_test(async (t) => { - const {popover,invoker,reassignInvokerTargetFn} = await makePopoverAndInvoker(t,invokerLayout); - const popover2 = document.createElement('div'); - popover2.popover = 'auto'; - document.body.appendChild(popover2); - t.add_cleanup(() => popover2.remove()); - const token = await mouseOverAndRecord(t,invoker); - let eitherShowing = popover.matches(':popover-open') || popover2.matches(':popover-open'); - reassignInvokerTargetFn(popover2); - // See NOTE above. - if (msSinceMouseOver(token) >= invokerShowDelay) - return; // The WPT runner was too slow. - assert_false(eitherShowing,'interest should should not be shown immediately'); - await waitForHoverTime(hoverWaitTime); - assert_false(popover.matches(':popover-open'),'old target should not receive interest, since interesttarget was reassigned'); - assert_false(popover2.matches(':popover-open'),'new target should not receive interest, since interesttarget was reassigned'); - },`interesttarget does nothing when the target changes, invokerLayout=${invokerLayout}`); +promise_test(async (t) => { + const {popover,invoker,reassignInvokerTargetFn} = await makePopoverAndInvoker(t,invokerLayout); + const popover2 = document.createElement('div'); + popover2.popover = 'auto'; + document.body.appendChild(popover2); + t.add_cleanup(() => popover2.remove()); + const token = await mouseOverOrFocusAndRecord(t,invokerMethod,invoker); + let eitherShowing = popover.matches(':popover-open') || popover2.matches(':popover-open'); + reassignInvokerTargetFn(popover2); + // See NOTE above. + if (msSinceMouseOver(token) >= invokerShowDelayMs) + return; // The WPT runner was too slow. + assert_false(eitherShowing,'interest should should not be shown immediately'); + await waitForHoverTime(hoverFocusWaitTimeMs); + assert_false(popover.matches(':popover-open'),'old target should not receive interest, since interesttarget was reassigned'); + assert_false(popover2.matches(':popover-open'),'new target should not receive interest, since interesttarget was reassigned'); +},`interesttarget does nothing when the target changes, ${description}`); - promise_test(async (t) => { - const {popover,invoker,unrelated} = await makePopoverAndInvoker(t,invokerLayout,/*showdelayMs*/0); - const invoker2 = document.createElement('button'); - invoker2.interestTargetElement = popover; - document.body.appendChild(invoker2); - t.add_cleanup(() => invoker2.remove()); - invoker2.setAttribute('style',` - interest-target-show-delay: 0s; - interest-target-hide-delay: 10000s; - position:fixed; - top:300px; - `); - invoker2.innerText = 'Invoker 2'; - let events = []; - popover.addEventListener('interest',() => events.push('interest')); - popover.addEventListener('loseinterest',() => events.push('lose interest')); - popover.addEventListener('beforetoggle',(e) => events.push(e.newState)); - assert_array_equals(events,[]); - await hoverOver(invoker); - assert_array_equals(events,['interest','open']); - // Different invoker for same target - should first (immediately) lose interest on old invoker. - await hoverOver(invoker2); - assert_array_equals(events,['interest','open','lose interest','closed','interest','open']); - // Lose interest delays are long, so nothing happens here. - events = []; - await hoverOver(unrelated); - assert_array_equals(events,[]); - // Back to the same invoker - shouldn't re-fire events. - await hoverOver(invoker2); - assert_array_equals(events,[]); - assert_true(popover.matches(':popover-open')); - popover.hidePopover(); - },`moving hover between two invokers for the same target does the right thing, invokerLayout=${invokerLayout}`); -}); +promise_test(async (t) => { + const {popover,invoker,unrelated} = await makePopoverAndInvoker(t,invokerLayout,/*showdelayMs*/0); + const invoker2 = document.createElement('button'); + invoker2.interestTargetElement = popover; + document.body.appendChild(invoker2); + t.add_cleanup(() => invoker2.remove()); + invoker2.setAttribute('style',` + interest-target-show-delay: 0s; + interest-target-hide-delay: 10000s; + position:fixed; + top:300px; + `); + invoker2.innerText = 'Invoker 2'; + let events = []; + popover.addEventListener('interest',() => events.push('interest')); + popover.addEventListener('loseinterest',() => events.push('lose interest')); + popover.addEventListener('beforetoggle',(e) => events.push(e.newState)); + assert_array_equals(events,[]); + await hoverOrFocus(invokerMethod,invoker); + assert_array_equals(events,['interest','open']); + // Different invoker for same target - should first (immediately) lose interest on old invoker. + await hoverOrFocus(invokerMethod,invoker2); + assert_array_equals(events,['interest','open','lose interest','closed','interest','open']); + // Lose interest delays are long, so nothing happens here. + events = []; + await hoverOrFocus(invokerMethod,unrelated); + assert_array_equals(events,[]); + // Back to the same invoker - shouldn't re-fire events. + await hoverOrFocus(invokerMethod,invoker2); + assert_array_equals(events,[]); + assert_true(popover.matches(':popover-open')); + popover.hidePopover(); +},`moving hover/focus between two invokers for the same target does the right thing, ${description}`); </script> diff --git a/tests/wpt/tests/html/semantics/the-button-element/interest-target/resources/invoker-utils.js b/tests/wpt/tests/html/semantics/the-button-element/interest-target/resources/invoker-utils.js index 67d2aa841c9..bc43e738c34 100644 --- a/tests/wpt/tests/html/semantics/the-button-element/interest-target/resources/invoker-utils.js +++ b/tests/wpt/tests/html/semantics/the-button-element/interest-target/resources/invoker-utils.js @@ -17,6 +17,7 @@ async function clickOn(element) { async function focusOn(element) { element.focus(); await waitForRender(); + assert_equals(document.activeElement,element,'focus should be on element'); } async function hoverOver(element) { await waitForRender(); @@ -30,23 +31,41 @@ async function hoverOver(element) { await waitForRender(); } function mouseOverAndRecord(t,element) { - let mouseMoveInfo; - t.add_cleanup(() => mouseMoveInfo?.controller.abort()); - const controller = new AbortController(); - mouseMoveInfo = {element, controller, moved: false, started: performance.now()}; - document.addEventListener("mousemove", (e) => {mouseMoveInfo.moved = true;}, {signal: controller.signal}); + let timingInfo = {element, started: performance.now()}; return (new test_driver.Actions()) .pointerMove(0, 0, {origin: element}) .send() - .then(() => mouseMoveInfo); + .then(() => timingInfo); +} +function focusAndRecord(t,element) { + let timingInfo = {element, started: performance.now()}; + element.focus(); + return timingInfo; +} +async function hoverOrFocus(invokerMethod,element) { + if (invokerMethod === 'hover') { + await hoverOver(element); + } else { + assert_equals(invokerMethod,'focus'); + element.focus(); + await waitForRender(); + } +} +async function mouseOverOrFocusAndRecord(t,invokerMethod,element) { + if (invokerMethod === 'hover') { + return await mouseOverAndRecord(t,element); + } else { + assert_equals(invokerMethod,'focus'); + return focusAndRecord(t,element); + } } // Note that this may err on the side of being too large (reporting a number // that is larger than the actual time since the mouseover happened), due to how -// `mousemoveInfo.started` is initialized, on first mouse move. However, this +// `timingInfo.started` is initialized, on first mouse move. However, this // function is intended to be used as a detector for the test harness taking too // long for some tests, so it's ok to be conservative. -function msSinceMouseOver(mouseMoveInfo) { - return performance.now() - mouseMoveInfo.started; +function msSinceMouseOver(timingInfo) { + return performance.now() - timingInfo.started; } async function waitForHoverTime(hoverWaitTimeMs) { await new Promise(resolve => step_timeout(resolve,hoverWaitTimeMs)); @@ -55,10 +74,12 @@ async function waitForHoverTime(hoverWaitTimeMs) { async function createPopoverAndInvokerForHoverTests(test, showdelayMs, hideDelayMs) { const unrelated = document.createElement('div'); + unrelated.tabIndex = 0; document.body.appendChild(unrelated); unrelated.textContent = 'Unrelated'; unrelated.setAttribute('style','position:fixed; top:0;'); - // Ensure we never hover over an active interesttarget element. + // Ensure we never hover over or focus on an active interesttarget element. + unrelated.focus(); await hoverOver(unrelated); const popover = document.createElement('div'); popover.popover = 'auto'; @@ -81,12 +102,30 @@ async function createPopoverAndInvokerForHoverTests(test, showdelayMs, hideDelay assert_equals(actualShowDelay,showdelayMs,'interest-target-show-delay is incorrect'); const actualHideDelay = Number(getComputedStyle(invoker).interestTargetHideDelay.slice(0,-1))*1000; assert_equals(actualHideDelay,hideDelayMs,'interest-target-hide-delay is incorrect'); - test.add_cleanup(async () => { + test.add_cleanup(() => { popover.remove(); invoker.remove(); unrelated.remove(); - await waitForRender(); }); assert_false(popover.matches(':popover-open'),'The popover should start out closed'); return {popover, invoker, unrelated}; } +async function sendLoseInterestHotkey() { + const kEscape = '\uE00C'; + await new test_driver.Actions() + .keyDown(kEscape) + .keyUp(kEscape) + .send(); + await waitForRender(); +} +async function sendShowInterestHotkey() { + const kAlt = "\uE00A"; + const kArrowUp = '\uE013'; + await new test_driver.Actions() + .keyDown(kAlt) + .keyDown(kArrowUp) + .keyUp(kArrowUp) + .keyUp(kAlt) + .send(); + await waitForRender(); +} diff --git a/tests/wpt/tests/html/webappapis/scripting/event-loops/new-scroll-event-dispatched-at-next-updating-rendering-time.html b/tests/wpt/tests/html/webappapis/scripting/event-loops/new-scroll-event-dispatched-at-next-updating-rendering-time.html new file mode 100644 index 00000000000..a858c205d05 --- /dev/null +++ b/tests/wpt/tests/html/webappapis/scripting/event-loops/new-scroll-event-dispatched-at-next-updating-rendering-time.html @@ -0,0 +1,116 @@ +<!doctype html> +<meta charset="utf-8"> +<link rel="help" href="https://html.spec.whatwg.org/#event-loop-processing-model"> +<link rel="help" href="https://issues.chromium.org/issues/397737222"> +<meta name="viewport" content="width=device-width,initial-scale=1"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> +</style> +<iframe width="300" height="300" srcdoc=" + <style> + html { + transition: color 1s step-start; + } + .scroller { + overflow: auto; + width: 100%; + height: 100px; + } + .spacer { + height: 500px; + } + </style> + <div class='scroller'> + <div class='spacer'></div> + </div> + <div class='scroller'> + <div class='spacer'></div> + </div> + "></iframe> +<script> +promise_test(async function() { + await new Promise(resolve => window.addEventListener("load", resolve, { once: true })); + + const iframe = document.querySelector("iframe"); + const mql = iframe.contentWindow.matchMedia("(max-width: 300px)"); + assert_true(mql.matches, ""); + + // Set up a MQL change event listener to receive the event in between + // scroll and transitionrun events. + let timeOnMQLChange = null; + iframe.width = "400"; + const mqlChangeEvent = new Promise(resolve => { + mql.addEventListener("change", () => { + timeOnMQLChange = performance.now(); + resolve(); + }, { once: true }); + }); + + // There are two scroll containers, setup a scroll event listener for one + // of them. + const scrollers = iframe.contentDocument.querySelectorAll(".scroller"); + let timeOnScrollEventOnAnotherScroller = null; + scrollers[1].addEventListener("scroll", () => { + timeOnScrollEventOnAnotherScroller = performance.now(); + }, { once: true }); + + // Setup another scroll event listener for the other scroll container. + const scrollEventPromise = new Promise(resolve => { + scrollers[0].addEventListener("scroll", resolve, { once: true }); + }); + // And scroll the scroller. + scrollers[0].scrollTop = 10; + + // Await the scroll event. + await scrollEventPromise; + + const timeOnScrollEvent = performance.now(); + + // Scroll the other scroller. + scrollers[1].scrollTop = 10; + + assert_equals(timeOnScrollEventOnAnotherScroller, null, + "The new scroll event should not yet have been dispatched"); + + // Trigger a CSS transition. + let timeOnTransitionRun = null; + const transitionrunEventPromise = new Promise(resolve => { + iframe.contentDocument.documentElement.addEventListener("transitionrun", () => { + timeOnTransitionRun = performance.now(); + resolve(); + }, { once: true }); + }); + iframe.contentDocument.documentElement.style.color = "blue"; + getComputedStyle(iframe.contentDocument.documentElement).color; + + // Now it's time to receive the MQL change event. + await mqlChangeEvent; + assert_less_than(timeOnScrollEvent, timeOnMQLChange, + "The MQL change event should have been dispatched after the first scroll event"); + assert_equals(timeOnScrollEventOnAnotherScroller, null, + "The new scroll event should not yet have been dispatched"); + + // Await the transitionrun event. + await transitionrunEventPromise; + + assert_less_than(timeOnScrollEvent, timeOnTransitionRun, + "The transitionrun event should have been dispatched after the first scroll event"); + assert_equals(timeOnScrollEventOnAnotherScroller, null, + "The new scroll event should not yet have been dispatched"); + + // Await a requestAnimationFrame callback. + await new Promise(resolve => requestAnimationFrame(resolve)); + + assert_equals(timeOnScrollEventOnAnotherScroller, null, + "The new scroll event should not yet have been dispatched"); + + // Await one more requestAnimationFrame callback. + await new Promise(resolve => requestAnimationFrame(resolve)); + + assert_not_equals(timeOnScrollEventOnAnotherScroller, null, + "The new scroll event should now have been dispatched"); + assert_less_than(timeOnTransitionRun, timeOnScrollEventOnAnotherScroller, + "The new scroll event should have been dispatched after the transitionrun event"); +}); +</script> diff --git a/tests/wpt/tests/html/webappapis/update-rendering/child-document-raf-order.html b/tests/wpt/tests/html/webappapis/update-rendering/child-document-raf-order.html index 222c1af444e..eccc1bde7fb 100644 --- a/tests/wpt/tests/html/webappapis/update-rendering/child-document-raf-order.html +++ b/tests/wpt/tests/html/webappapis/update-rendering/child-document-raf-order.html @@ -47,6 +47,17 @@ callbacks for each. <script> +// Split array into chunks of len. +function chunk (arr, len) { + var chunks = [], + i = 0, + n = arr.length; + while (i < n) { + chunks.push(arr.slice(i, i += len)); + } + return chunks; +} + async_test(function (t) { step_timeout(setup, 0); @@ -108,9 +119,20 @@ async_test(function (t) { }); let finish = t.step_func(function() { - assert_array_equals(notification_sequence, - ["parent_raf", "first_child_raf", "second_child_raf"], - "expected order of notifications"); + + // The test requests rafs recursively, + // but since all three rafs run as part of the same "update the rendering" task, + // they should always come in a triplet. + assert_equals(notification_sequence.length % 3, 0); + + let chunks = chunk(notification_sequence, 3); + for (var i = 0; i < chunks.length; i++) { + // Assert correct ordering per triplet of rafs. + assert_array_equals(chunks[i], + ["parent_raf", "first_child_raf", "second_child_raf"], + "expected order of notifications"); + } + t.done(); }); }); diff --git a/tests/wpt/tests/infrastructure/metadata/infrastructure/testdriver/get_all_cookies.sub.https.html.ini b/tests/wpt/tests/infrastructure/metadata/infrastructure/testdriver/get_all_cookies.sub.https.html.ini new file mode 100644 index 00000000000..ede46b74c64 --- /dev/null +++ b/tests/wpt/tests/infrastructure/metadata/infrastructure/testdriver/get_all_cookies.sub.https.html.ini @@ -0,0 +1,5 @@ +[get_all_cookies.sub.https.html] + [Get all HTTPS cookies] + expected: + # WPT CI uses a `firefox` version that doesn't support partitioned cookies + if product == "firefox" or product == "firefox_android": FAIL diff --git a/tests/wpt/tests/infrastructure/metadata/infrastructure/testdriver/get_named_cookie.sub.https.html.ini b/tests/wpt/tests/infrastructure/metadata/infrastructure/testdriver/get_named_cookie.sub.https.html.ini new file mode 100644 index 00000000000..05352bf82a1 --- /dev/null +++ b/tests/wpt/tests/infrastructure/metadata/infrastructure/testdriver/get_named_cookie.sub.https.html.ini @@ -0,0 +1,5 @@ +[get_named_cookie.sub.https.html] + [Get Named HTTPS cookie] + expected: + # WPT CI uses a `firefox` version that doesn't support partitioned cookies + if product == "firefox" or product == "firefox_android": FAIL diff --git a/tests/wpt/tests/infrastructure/testdriver/get_all_cookies.sub.https.html b/tests/wpt/tests/infrastructure/testdriver/get_all_cookies.sub.https.html index e94167133b3..70a4ff77333 100644 --- a/tests/wpt/tests/infrastructure/testdriver/get_all_cookies.sub.https.html +++ b/tests/wpt/tests/infrastructure/testdriver/get_all_cookies.sub.https.html @@ -17,8 +17,9 @@ promise_test(async t => { document.cookie = "test5=5; SameSite=Strict"; document.cookie = "test6=6; SameSite=None; Secure"; document.cookie = "test7=7; SameSite=Lax"; + document.cookie = "test8=8; Secure; Partitioned; SameSite=None"; const cookies = await test_driver.get_all_cookies(); - assert_equals(cookies.length, 8); + assert_equals(cookies.length, 9); let cookieMap = new Map(); for (const cookie of cookies) { cookieMap.set(cookie["name"], cookie); @@ -108,5 +109,15 @@ promise_test(async t => { assert_equals(cookieMap.get("test7")["httpOnly"], false); assert_equals(cookieMap.get("test7")["expiry"], undefined); assert_equals(cookieMap.get("test7")["sameSite"], "Lax"); + + // test8 [Partitioned] + assert_equals(cookieMap.get("test8")["name"], "test8"); + assert_equals(cookieMap.get("test8")["value"], "8"); + assert_equals(cookieMap.get("test8")["path"], "/infrastructure/testdriver"); + assert_equals(cookieMap.get("test8")["domain"], "{{host}}"); + assert_equals(cookieMap.get("test8")["secure"], true); + assert_equals(cookieMap.get("test8")["httpOnly"], false); + assert_equals(cookieMap.get("test8")["expiry"], undefined); + assert_equals(cookieMap.get("test8")["sameSite"], "None"); }, "Get all HTTPS cookies"); </script> diff --git a/tests/wpt/tests/infrastructure/testdriver/get_named_cookie.sub.https.html b/tests/wpt/tests/infrastructure/testdriver/get_named_cookie.sub.https.html index 8e8f4433812..32b3bed459e 100644 --- a/tests/wpt/tests/infrastructure/testdriver/get_named_cookie.sub.https.html +++ b/tests/wpt/tests/infrastructure/testdriver/get_named_cookie.sub.https.html @@ -17,6 +17,7 @@ promise_test(async t => { document.cookie = "test5=5; SameSite=Strict"; document.cookie = "test6=6; SameSite=None; Secure"; document.cookie = "test7=7; SameSite=Lax"; + document.cookie = "test8=8; Secure; Partitioned; SameSite=None"; // test0 let cookie = await test_driver.get_named_cookie("test0"); @@ -110,5 +111,17 @@ promise_test(async t => { assert_equals(cookie["httpOnly"], false); assert_equals(cookie["expiry"], undefined); assert_equals(cookie["sameSite"], "Lax"); + + // test8 [Partitioned] + cookie = await test_driver.get_named_cookie("test8"); + assert_equals(cookie["name"], "test8"); + assert_equals(cookie["value"], "8"); + assert_equals(cookie["path"], "/infrastructure/testdriver"); + assert_equals(cookie["domain"], "{{host}}"); + assert_equals(cookie["secure"], true); + assert_equals(cookie["httpOnly"], false); + assert_equals(cookie["expiry"], undefined); + assert_equals(cookie["sameSite"], "None"); + }, "Get Named HTTPS cookie"); </script> diff --git a/tests/wpt/tests/mediacapture-image/ImageCapture-grabFrame-crash.html b/tests/wpt/tests/mediacapture-image/ImageCapture-grabFrame-crash.https.html index d4bf57f0fa9..d4bf57f0fa9 100644 --- a/tests/wpt/tests/mediacapture-image/ImageCapture-grabFrame-crash.html +++ b/tests/wpt/tests/mediacapture-image/ImageCapture-grabFrame-crash.https.html diff --git a/tests/wpt/tests/mediacapture-image/ImageCapture-grabFrame.html b/tests/wpt/tests/mediacapture-image/ImageCapture-grabFrame.https.html index a9a6930aafc..a9a6930aafc 100644 --- a/tests/wpt/tests/mediacapture-image/ImageCapture-grabFrame.html +++ b/tests/wpt/tests/mediacapture-image/ImageCapture-grabFrame.https.html diff --git a/tests/wpt/tests/mediacapture-image/ImageCapture-track.html b/tests/wpt/tests/mediacapture-image/ImageCapture-track.https.html index 774970ad0c4..774970ad0c4 100644 --- a/tests/wpt/tests/mediacapture-image/ImageCapture-track.html +++ b/tests/wpt/tests/mediacapture-image/ImageCapture-track.https.html diff --git a/tests/wpt/tests/mediacapture-image/getPhotoCapabilities.html b/tests/wpt/tests/mediacapture-image/getPhotoCapabilities.https.html index 8b6ab891ff8..8b6ab891ff8 100644 --- a/tests/wpt/tests/mediacapture-image/getPhotoCapabilities.html +++ b/tests/wpt/tests/mediacapture-image/getPhotoCapabilities.https.html diff --git a/tests/wpt/tests/mediacapture-image/getPhotoSettings.html b/tests/wpt/tests/mediacapture-image/getPhotoSettings.https.html index 04a7a5395fc..04a7a5395fc 100644 --- a/tests/wpt/tests/mediacapture-image/getPhotoSettings.html +++ b/tests/wpt/tests/mediacapture-image/getPhotoSettings.https.html diff --git a/tests/wpt/tests/mediacapture-image/idlharness.window.js b/tests/wpt/tests/mediacapture-image/idlharness.https.window.js index 2977138647b..2977138647b 100644 --- a/tests/wpt/tests/mediacapture-image/idlharness.window.js +++ b/tests/wpt/tests/mediacapture-image/idlharness.https.window.js diff --git a/tests/wpt/tests/mediacapture-image/takePhoto-reject.html b/tests/wpt/tests/mediacapture-image/takePhoto-reject.https.html index fff36e1a3b8..669512ca516 100644 --- a/tests/wpt/tests/mediacapture-image/takePhoto-reject.html +++ b/tests/wpt/tests/mediacapture-image/takePhoto-reject.https.html @@ -14,7 +14,7 @@ context.fillRect(0, 0, 10, 10); // This test verifies that ImageCapture.takePhoto() rejects if any passed // option is unsupported or outside its allowed range. -function makePromiseTest(getOption) { +function makePromiseTest(getOption, name) { image_capture_test(async (t, imageCaptureTest) => { imageCaptureTest.mockImageCapture().state().redEyeReduction = 0; @@ -29,7 +29,7 @@ function makePromiseTest(getOption) { } catch (error) { assert_equals(error.name, 'NotSupportedError'); } - }); + }, name); } const optionsGenerators = [ @@ -41,11 +41,9 @@ const optionsGenerators = [ capabilities => ({ fillLightMode: 'off' }), ]; -for (key in optionsGenerators) { - generate_tests( - makePromiseTest, - [[ 'ImageCapture.takePhoto(options) rejects with bad options, #' + key, - optionsGenerators[key] ]]); -} - +optionsGenerators.forEach((optionsGenerator, key) => { + makePromiseTest( + optionsGenerator, + `ImageCapture.takePhoto(options) rejects with bad options, #${key}`); +}); </script> diff --git a/tests/wpt/tests/mediacapture-image/takePhoto-with-PhotoSettings.html b/tests/wpt/tests/mediacapture-image/takePhoto-with-PhotoSettings.https.html index 2946e782d0b..2946e782d0b 100644 --- a/tests/wpt/tests/mediacapture-image/takePhoto-with-PhotoSettings.html +++ b/tests/wpt/tests/mediacapture-image/takePhoto-with-PhotoSettings.https.html diff --git a/tests/wpt/tests/mediacapture-image/takePhoto.html b/tests/wpt/tests/mediacapture-image/takePhoto.https.html index 44586406c47..44586406c47 100644 --- a/tests/wpt/tests/mediacapture-image/takePhoto.html +++ b/tests/wpt/tests/mediacapture-image/takePhoto.https.html diff --git a/tests/wpt/tests/nav-tracking-mitigations/META.yml b/tests/wpt/tests/nav-tracking-mitigations/META.yml index 00a8c7b72a1..9e7ffe47ba9 100644 --- a/tests/wpt/tests/nav-tracking-mitigations/META.yml +++ b/tests/wpt/tests/nav-tracking-mitigations/META.yml @@ -2,8 +2,9 @@ spec: https://privacycg.github.io/nav-tracking-mitigations/ suggested_reviewers: - amaliev - bvandersloot-mozilla + - g-ortuno - hoodjoshua + - MrPickles - njeunje - - rtarpine-google + - svendlarsen - Trikolon - - wanderview diff --git a/tests/wpt/tests/navigation-api/ordering-and-transition/intercept-async.html b/tests/wpt/tests/navigation-api/ordering-and-transition/intercept-async.html index d402340b068..4fa7c88833e 100644 --- a/tests/wpt/tests/navigation-api/ordering-and-transition/intercept-async.html +++ b/tests/wpt/tests/navigation-api/ordering-and-transition/intercept-async.html @@ -45,6 +45,7 @@ promise_test(async t => { ["handler sync", "#1", { from, navigationType: "push" }], ["handler after microtask", "#1", { from, navigationType: "push" }], ["committed fulfilled", "#1", { from, navigationType: "push" }], + ["transition.committed fulfilled", "#1", { from, navigationType: "push" }], ["promise microtask", "#1", { from, navigationType: "push" }], ["handler after setTimeout", "#1", { from, navigationType: "push" }], ["navigatesuccess", "#1", { from, navigationType: "push" }], diff --git a/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-double-intercept.html b/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-double-intercept.html index 8baea7bf1ea..0598fb554e0 100644 --- a/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-double-intercept.html +++ b/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-double-intercept.html @@ -54,9 +54,11 @@ promise_test(async t => { ["currententrychange", "#2", { from: fromHash1, navigationType: "push" }], ["handler run", "#2", { from: fromHash1, navigationType: "push" }], ["committed fulfilled 1", "#2", { from: fromHash1, navigationType: "push" }], + ["transition.committed fulfilled 1", "#2", { from: fromHash1, navigationType: "push" }], ["finished rejected 1", "#2", { from: fromHash1, navigationType: "push" }], ["transition.finished rejected", "#2", { from: fromHash1, navigationType: "push" }], ["committed fulfilled 2", "#2", { from: fromHash1, navigationType: "push" }], + ["transition.committed fulfilled 2", "#2", { from: fromHash1, navigationType: "push" }], ["promise microtask", "#2", { from: fromHash1, navigationType: "push" }], ["navigatesuccess", "#2", { from: fromHash1, navigationType: "push" }], ["finished fulfilled 2", "#2", null], diff --git a/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-in-transition-finished.html b/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-in-transition-finished.html index 6f8b667ce31..8b3811dd36f 100644 --- a/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-in-transition-finished.html +++ b/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-in-transition-finished.html @@ -52,6 +52,7 @@ promise_test(async t => { ["currententrychange", "#1", { from: fromStart, navigationType: "push" }], ["handler run", "#1", { from: fromStart, navigationType: "push" }], ["committed fulfilled 1", "#1", { from: fromStart, navigationType: "push" }], + ["transition.committed fulfilled 1", "#1", { from: fromStart, navigationType: "push" }], ["promise microtask", "#1", { from: fromStart, navigationType: "push" }], ["navigatesuccess", "#1", { from: fromStart, navigationType: "push" }], ["finished fulfilled 1", "#1", null], @@ -61,6 +62,7 @@ promise_test(async t => { ["currententrychange", "#2", { from: fromHash1, navigationType: "push" }], ["handler run", "#2", { from: fromHash1, navigationType: "push" }], ["committed fulfilled 2", "#2", { from: fromHash1, navigationType: "push" }], + ["transition.committed fulfilled 2", "#2", { from: fromHash1, navigationType: "push" }], ["navigatesuccess", "#2", { from: fromHash1, navigationType: "push" }], ["finished fulfilled 2", "#2", null], ["transition.finished fulfilled", "#2", null] diff --git a/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler-redirect.html b/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler-redirect.html index 90cf813d058..2f60bfd749d 100644 --- a/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler-redirect.html +++ b/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler-redirect.html @@ -54,6 +54,7 @@ promise_test(async t => { ["currententrychange", "#2", { from, navigationType: "push" }], ["handler start", "#2", { from, navigationType: "push" }], ["committed fulfilled", "#2", { from, navigationType: "push" }], + ["transition.committed fulfilled", "#2", { from, navigationType: "push" }], ["handler async step 1", "#2", { from, navigationType: "push" }], ["navigatesuccess", "#2", { from, navigationType: "push" }], ["finished fulfilled", "#2", null], diff --git a/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler-reject.tentative.html b/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler-reject.tentative.html new file mode 100644 index 00000000000..6d19614f743 --- /dev/null +++ b/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler-reject.tentative.html @@ -0,0 +1,52 @@ +<!doctype html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<meta name="variant" content="?no-currententrychange"> +<meta name="variant" content="?currententrychange"> + +<script type="module"> +import { Recorder, hasVariant } from "./resources/helpers.mjs"; + +promise_test(async t => { + // Wait for after the load event so that the navigation doesn't get converted + // into a replace navigation. + await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0)); + + const from = navigation.currentEntry; + + const recorder = new Recorder({ + skipCurrentChange: !hasVariant("currententrychange"), + finalExpectedEvent: "transition.finished rejected" + }); + + recorder.setUpNavigationAPIListeners(); + + navigation.addEventListener("navigate", e => { + e.intercept({ async precommitHandler() { + recorder.record("precommitHandler start"); + return Promise.reject(); + }, + async handler() { recorder.record("handler should not run"); } + }); + }); + + const result = navigation.navigate("#1"); + recorder.setUpResultListeners(result); + + Promise.resolve().then(() => recorder.record("promise microtask")); + + await recorder.readyToAssert; + + recorder.assert([ + /* event name, location.hash value, navigation.transition properties */ + ["navigate", "", null], + ["precommitHandler start", "", { from, navigationType: "push" }], + ["promise microtask", "", { from, navigationType: "push" }], + ["navigateerror", "", { from, navigationType: "push" }], + ["committed rejected", "", null], + ["finished rejected", "", null], + ["transition.committed rejected", "", null], + ["transition.finished rejected", "", null], + ]); +}, "event and promise ordering for same-document navigation.navigate() intercepted by intercept() with a precommitHandler"); +</script> diff --git a/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler.html b/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler.html index 27e317cfc67..8257e56d44e 100644 --- a/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler.html +++ b/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler.html @@ -51,6 +51,7 @@ promise_test(async t => { ["currententrychange", "#1", { from, navigationType: "push" }], ["handler start", "#1", { from, navigationType: "push" }], ["committed fulfilled", "#1", { from, navigationType: "push" }], + ["transition.committed fulfilled", "#1", { from, navigationType: "push" }], ["handler async step", "#1", { from, navigationType: "push" }], ["navigatesuccess", "#1", { from, navigationType: "push" }], ["finished fulfilled", "#1", null], diff --git a/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-intercept-stop.html b/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-intercept-stop.html index 189475d5de1..1a7faa4e0ee 100644 --- a/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-intercept-stop.html +++ b/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-intercept-stop.html @@ -42,6 +42,7 @@ promise_test(async t => { ["AbortSignal abort", "#1", { from, navigationType: "push" }], ["navigateerror", "#1", { from, navigationType: "push" }], ["committed fulfilled", "#1", null], + ["transition.committed fulfilled", "#1", null], ["promise microtask", "#1", null], ["finished rejected", "#1", null], ["transition.finished rejected", "#1", null], diff --git a/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-intercept.html b/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-intercept.html index cdbd8f6ef66..eec9d3ca119 100644 --- a/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-intercept.html +++ b/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-intercept.html @@ -38,6 +38,7 @@ promise_test(async t => { ["currententrychange", "#1", { from, navigationType: "push" }], ["handler run", "#1", { from, navigationType: "push" }], ["committed fulfilled", "#1", { from, navigationType: "push" }], + ["transition.committed fulfilled", "#1", { from, navigationType: "push" }], ["promise microtask", "#1", { from, navigationType: "push" }], ["navigatesuccess", "#1", { from, navigationType: "push" }], ["finished fulfilled", "#1", null], diff --git a/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-same-document-intercept-reentrant.html b/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-same-document-intercept-reentrant.html index 0106e997c9f..88715fda355 100644 --- a/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-same-document-intercept-reentrant.html +++ b/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-same-document-intercept-reentrant.html @@ -53,8 +53,20 @@ promise_test(async t => { ["currententrychange", "#2", { from, navigationType: "push" }], ["handler run", "#2", { from, navigationType: "push" }], ["committed fulfilled 2", "#2", { from, navigationType: "push" }], + ["transition.committed fulfilled 2", "#2", { from, navigationType: "push" }], ["committed rejected 1", "#2", { from, navigationType: "push" }], ["finished rejected 1", "#2", { from, navigationType: "push" }], + // Because of the reentrant nature of this test, + // "transition.committed fulfilled 1" and "transition.committed fulfilled 2" + // are for the same transition.committed promise: the one for the second + // navigation that interrupted the first. The first navigation never + // was aborted during navigate event dispatch, so there was never a + // transition.committed for it. But by the time + // recorder.setUpResultListeners(result1, " 1") runs, the second + // navigation's transition.committed had been installed, so we attached a + // listener to log it with the "1" label (in addition to the previous + // listener to log it with the "2" label). + ["transition.committed fulfilled 1", "#2", { from, navigationType: "push" }], ["promise microtask", "#2", { from, navigationType: "push" }], ["navigatesuccess", "#2", { from, navigationType: "push" }], ["finished fulfilled 2", "#2", null], diff --git a/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-same-document-intercept-reject.html b/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-same-document-intercept-reject.html index 6713edca2d9..05f295177a0 100644 --- a/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-same-document-intercept-reject.html +++ b/tests/wpt/tests/navigation-api/ordering-and-transition/navigate-same-document-intercept-reject.html @@ -42,6 +42,7 @@ promise_test(async t => { ["currententrychange", "#1", { from, navigationType: "push" }], ["handler run", "#1", { from, navigationType: "push" }], ["committed fulfilled", "#1", { from, navigationType: "push" }], + ["transition.committed fulfilled", "#1", { from, navigationType: "push" }], ["promise microtask", "#1", { from, navigationType: "push" }], ["navigateerror", "#1", { from, navigationType: "push" }], ["finished rejected", "#1", null], diff --git a/tests/wpt/tests/navigation-api/ordering-and-transition/reload-intercept-reject.html b/tests/wpt/tests/navigation-api/ordering-and-transition/reload-intercept-reject.html index 7394ce4d17a..96833f314f4 100644 --- a/tests/wpt/tests/navigation-api/ordering-and-transition/reload-intercept-reject.html +++ b/tests/wpt/tests/navigation-api/ordering-and-transition/reload-intercept-reject.html @@ -42,6 +42,7 @@ promise_test(async t => { ["currententrychange", "", { from, navigationType: "reload" }], ["handler run", "", { from, navigationType: "reload" }], ["committed fulfilled", "", { from, navigationType: "reload" }], + ["transition.committed fulfilled", "", { from, navigationType: "reload" }], ["promise microtask", "", { from, navigationType: "reload" }], ["navigateerror", "", { from, navigationType: "reload" }], ["finished rejected", "", null], diff --git a/tests/wpt/tests/navigation-api/ordering-and-transition/reload-intercept.html b/tests/wpt/tests/navigation-api/ordering-and-transition/reload-intercept.html index 18ff6191c0d..1494136e199 100644 --- a/tests/wpt/tests/navigation-api/ordering-and-transition/reload-intercept.html +++ b/tests/wpt/tests/navigation-api/ordering-and-transition/reload-intercept.html @@ -38,6 +38,7 @@ promise_test(async t => { ["currententrychange", "", { from, navigationType: "reload" }], ["handler run", "", { from, navigationType: "reload" }], ["committed fulfilled", "", { from, navigationType: "reload" }], + ["transition.committed fulfilled", "", { from, navigationType: "reload" }], ["promise microtask", "", { from, navigationType: "reload" }], ["navigatesuccess", "", { from, navigationType: "reload" }], ["finished fulfilled", "", null], diff --git a/tests/wpt/tests/navigation-api/ordering-and-transition/reload-no-popstate.html b/tests/wpt/tests/navigation-api/ordering-and-transition/reload-no-popstate.html index 9c1186344dc..6c4592b67cc 100644 --- a/tests/wpt/tests/navigation-api/ordering-and-transition/reload-no-popstate.html +++ b/tests/wpt/tests/navigation-api/ordering-and-transition/reload-no-popstate.html @@ -37,6 +37,7 @@ promise_test(async t => { ["currententrychange", "", { from, navigationType: "reload" }], ["handler run", "", { from, navigationType: "reload" }], ["committed fulfilled", "", { from, navigationType: "reload" }], + ["transition.committed fulfilled", "", { from, navigationType: "reload" }], ["promise microtask", "", { from, navigationType: "reload" }], ["navigatesuccess", "", { from, navigationType: "reload" }], ["finished fulfilled", "", null], diff --git a/tests/wpt/tests/navigation-api/ordering-and-transition/resources/helpers.mjs b/tests/wpt/tests/navigation-api/ordering-and-transition/resources/helpers.mjs index 341befc1056..22752e4cfed 100644 --- a/tests/wpt/tests/navigation-api/ordering-and-transition/resources/helpers.mjs +++ b/tests/wpt/tests/navigation-api/ordering-and-transition/resources/helpers.mjs @@ -63,6 +63,7 @@ export class Recorder { } setUpResultListeners(result, suffix = "") { + result.committed.then( () => this.record(`committed fulfilled${suffix}`), err => this.recordWithError(`committed rejected${suffix}`, err) @@ -72,6 +73,11 @@ export class Recorder { () => this.record(`finished fulfilled${suffix}`), err => this.recordWithError(`finished rejected${suffix}`, err) ); + + this.#navigationAPI.transition?.committed?.then( + () => this.record(`transition.committed fulfilled${suffix}`), + err => this.recordWithError(`transition.committed rejected${suffix}`, err) + ); } record(name) { @@ -114,6 +120,13 @@ export class Recorder { if (this.#skipCurrentChange) { expectedAsArray = expectedAsArray.filter(expected => expected[0] !== "currententrychange"); } + // TODO: Remove once https://github.com/whatwg/html/pull/10919 is merged. + if (!('committed' in NavigationTransition.prototype)) { + expectedAsArray = expectedAsArray.filter(expected => { + return !expected[0].includes("transition.committed fulfilled") && + !expected[0].includes("transition.committed rejected") + }); + } // Doing this up front gives nicer error messages because // assert_array_equals is nice. diff --git a/tests/wpt/tests/navigation-api/precommit-handler/precommitHandler-redirect-options.html b/tests/wpt/tests/navigation-api/precommit-handler/precommitHandler-redirect-options.html new file mode 100644 index 00000000000..06542d7e084 --- /dev/null +++ b/tests/wpt/tests/navigation-api/precommit-handler/precommitHandler-redirect-options.html @@ -0,0 +1,81 @@ +<!doctype html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<body> +<script> +promise_test(async t => { + // Wait for after the load event so that the navigation doesn't get converted + // into a replace navigation. + await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0)); + + let start_length = navigation.entries().length; + let start_hash = location.hash; + + let navInfo0 = { nav : "info0" }; + let navState0 = { statevar: "state0" }; + + let navInfo1 = { nav : "info1" }; + let navState1 = { statevar: "state1" }; + + let navInfo2 = { nav : "info2" }; + let navState2 = { statevar: "state2" }; + + navigation.onnavigate = t.step_func(e => { + e.intercept({ + precommitHandler: t.step_func(controller => { + assert_equals(location.hash, start_hash); + assert_equals(new URL(e.destination.url).hash, "#push"); + assert_equals(e.info, navInfo0); + assert_not_equals(e.destination.getState(), navState0); + assert_equals(e.destination.getState().statevar, navState0.statevar); + + // Redirect without options should not overwrite the original options. + controller.redirect("#redirect0"); + assert_equals(location.hash, start_hash); + assert_equals(new URL(e.destination.url).hash, "#redirect0"); + assert_equals(e.info, navInfo0); + assert_not_equals(e.destination.getState(), navState0); + assert_equals(e.destination.getState().statevar, navState0.statevar); + + // Update both info and state. + controller.redirect("#redirect1", { info: navInfo1, state: navState1}); + assert_equals(location.hash, start_hash); + assert_equals(new URL(e.destination.url).hash, "#redirect1"); + assert_equals(e.info, navInfo1); + assert_not_equals(e.destination.getState(), navState1); + assert_equals(e.destination.getState().statevar, navState1.statevar); + + // Update just info + controller.redirect("#redirect2", { info: navInfo2 }); + assert_equals(location.hash, start_hash); + assert_equals(new URL(e.destination.url).hash, "#redirect2"); + assert_equals(e.info, navInfo2); + assert_not_equals(e.destination.getState(), navState1); + assert_equals(e.destination.getState().statevar, navState1.statevar); + + // Update just state - this also tests the case where the url does + // not change. + controller.redirect("#redirect2", { state: navState2 }); + assert_equals(location.hash, start_hash); + assert_equals(new URL(e.destination.url).hash, "#redirect2"); + assert_equals(e.info, navInfo2); + assert_not_equals(e.destination.getState(), navState2); + assert_equals(e.destination.getState().statevar, navState2.statevar); + + // Explicit undefined is treated as absent. + controller.redirect("#redirect2", { info: undefined, state: undefined }); + assert_equals(location.hash, start_hash); + assert_equals(new URL(e.destination.url).hash, "#redirect2"); + assert_equals(e.info, navInfo2); + assert_not_equals(e.destination.getState(), navState2); + assert_equals(e.destination.getState().statevar, navState2.statevar); + }), + }); + }); + await navigation.navigate("#push", { info: navInfo0, state: navState0 }).committed; + assert_equals(location.hash, "#redirect2"); + assert_equals(navigation.entries().length, start_length + 1); + assert_equals(navigation.currentEntry.getState().statevar, navState2.statevar); +}, "precommitHandler redirect() with options dictionary"); +</script> +</body> diff --git a/tests/wpt/tests/navigation-api/precommit-handler/precommitHandler-redirect-throws.html b/tests/wpt/tests/navigation-api/precommit-handler/precommitHandler-redirect-throws.html index 353daa1a48b..b4592712010 100644 --- a/tests/wpt/tests/navigation-api/precommit-handler/precommitHandler-redirect-throws.html +++ b/tests/wpt/tests/navigation-api/precommit-handler/precommitHandler-redirect-throws.html @@ -61,6 +61,20 @@ promise_test(async t => { }, "redirect() to cross-origin url"); promise_test(async t => { + // See https://github.com/whatwg/html/issues/5380 for why not `new SharedArrayBuffer()` + const buffer = new WebAssembly.Memory({ shared:true, initial:1, maximum:1 }).buffer; + + navigation.onnavigate = t.step_func(e => { + e.intercept({ precommitHandler: t.step_func(controller => { + assert_throws_dom("DataCloneError", () => { + controller.redirect(location.href, { state: buffer }); + }); + })}); + }); + await navigation.navigate("#").finished; +}, "redirect() with an unserializable state object"); + +promise_test(async t => { navigation.onnavigate = t.step_func(e => { e.intercept({ precommitHandler: t.step_func(controller => { assert_throws_dom("InvalidStateError", () => controller.redirect("#")); diff --git a/tests/wpt/tests/resources/chromium/webxr-test.js b/tests/wpt/tests/resources/chromium/webxr-test.js index 41340aa27e0..0885b559e63 100644 --- a/tests/wpt/tests/resources/chromium/webxr-test.js +++ b/tests/wpt/tests/resources/chromium/webxr-test.js @@ -956,7 +956,9 @@ class MockRuntime { this._calculateAnchorInformation(frameData); - this._calculateDepthInformation(frameData); + if (options.depthActive) { + this._calculateDepthInformation(frameData); + } this._injectAdditionalFrameData(options, frameData); diff --git a/tests/wpt/tests/resources/test/conftest.py b/tests/wpt/tests/resources/test/conftest.py index 723087d3184..1301e7a9f77 100644 --- a/tests/wpt/tests/resources/test/conftest.py +++ b/tests/wpt/tests/resources/test/conftest.py @@ -263,4 +263,4 @@ class HTMLItem(pytest.Item): @staticmethod def _assert_sequence(nums): if nums and len(nums) > 0: - assert nums == list(range(1, nums[-1] + 1)) + assert nums == list(range(nums[-1] + 1)) diff --git a/tests/wpt/tests/resources/testharness.js b/tests/wpt/tests/resources/testharness.js index 8ef0574f1f0..d1d9d61eab8 100644 --- a/tests/wpt/tests/resources/testharness.js +++ b/tests/wpt/tests/resources/testharness.js @@ -88,7 +88,7 @@ status: harness_status.structured_clone(), asserts: asserts.map(assert => assert.structured_clone())}); }] - } + }; on_event(window, 'load', function() { setTimeout(() => { @@ -203,7 +203,7 @@ } }); this.message_events = new_events; - } + }; WindowTestEnvironment.prototype.next_default_test_name = function() { var suffix = this.name_counter > 0 ? " " + this.name_counter : ""; @@ -225,8 +225,8 @@ WindowTestEnvironment.prototype.test_timeout = function() { var metas = document.getElementsByTagName("meta"); for (var i = 0; i < metas.length; i++) { - if (metas[i].name == "timeout") { - if (metas[i].content == "long") { + if (metas[i].name === "timeout") { + if (metas[i].content === "long") { return settings.harness_timeout.long; } break; @@ -487,7 +487,7 @@ this.all_loaded = false; this.on_loaded_callback = null; Promise.resolve().then(function() { - this.all_loaded = true + this.all_loaded = true; if (this.on_loaded_callback) { this.on_loaded_callback(); } @@ -563,7 +563,7 @@ // The worker object may be from another execution context, // so do not use instanceof here. return 'ServiceWorker' in global_scope && - Object.prototype.toString.call(worker) == '[object ServiceWorker]'; + Object.prototype.toString.call(worker) === '[object ServiceWorker]'; } var seen_func_name = Object.create(null); @@ -810,7 +810,7 @@ return bring_promise_to_current_realm(promise) .then(test.unreached_func("Should have rejected: " + description)) .catch(function(e) { - assert_throws_js_impl(constructor, function() { throw e }, + assert_throws_js_impl(constructor, function() { throw e; }, description, "promise_rejects_js"); }); } @@ -862,7 +862,7 @@ return bring_promise_to_current_realm(promise) .then(test.unreached_func("Should have rejected: " + description)) .catch(function(e) { - assert_throws_dom_impl(type, function() { throw e }, description, + assert_throws_dom_impl(type, function() { throw e; }, description, "promise_rejects_dom", constructor); }); } @@ -881,7 +881,7 @@ return bring_promise_to_current_realm(promise) .then(test.unreached_func("Should have rejected: " + description)) .catch(function(e) { - assert_throws_exactly_impl(exception, function() { throw e }, + assert_throws_exactly_impl(exception, function() { throw e; }, description, "promise_rejects_exactly"); }); } @@ -907,7 +907,7 @@ */ function EventWatcher(test, watchedNode, eventTypes, timeoutPromise) { - if (typeof eventTypes == 'string') { + if (typeof eventTypes === 'string') { eventTypes = [eventTypes]; } @@ -972,7 +972,7 @@ if (waitingFor) { return Promise.reject('Already waiting for an event or events'); } - if (typeof types == 'string') { + if (typeof types === 'string') { types = [types]; } if (options && options.record && options.record === 'all') { @@ -987,7 +987,7 @@ // This should always fail, otherwise we should have // resolved the promise. - assert_true(waitingFor.types.length == 0, + assert_true(waitingFor.types.length === 0, 'Timed out waiting for ' + waitingFor.types.join(', ')); var result = recordedEvents; recordedEvents = null; @@ -1423,11 +1423,11 @@ case Node.COMMENT_NODE: return "Comment node <!--" + truncate(val.data, 60) + "-->"; case Node.DOCUMENT_NODE: - return "Document node with " + val.childNodes.length + (val.childNodes.length == 1 ? " child" : " children"); + return "Document node with " + val.childNodes.length + (val.childNodes.length === 1 ? " child" : " children"); case Node.DOCUMENT_TYPE_NODE: return "DocumentType node"; case Node.DOCUMENT_FRAGMENT_NODE: - return "DocumentFragment node with " + val.childNodes.length + (val.childNodes.length == 1 ? " child" : " children"); + return "DocumentFragment node with " + val.childNodes.length + (val.childNodes.length === 1 ? " child" : " children"); default: return "Node object of unknown type"; } @@ -2121,7 +2121,7 @@ {func:func}); // Basic sanity-check on the passed-in constructor - assert(typeof constructor == "function", + assert(typeof constructor === "function", assertion_type, description, "${constructor} is not a constructor", {constructor:constructor}); @@ -2196,7 +2196,7 @@ assert(maybeDescription === undefined, "Too many args passed to no-constructor version of assert_throws_dom, or accidentally explicitly passed undefined"); } - assert_throws_dom_impl(type, func, description, "assert_throws_dom", constructor) + assert_throws_dom_impl(type, func, description, "assert_throws_dom", constructor); } expose_assert(assert_throws_dom, "assert_throws_dom"); @@ -2229,8 +2229,8 @@ {func:func}); // Sanity-check our type - assert(typeof type == "number" || - typeof type == "string", + assert(typeof type === "number" || + typeof type === "string", assertion_type, description, "${type} is not a number or string", {type:type}); @@ -2459,7 +2459,7 @@ function assert_implements(condition, description) { assert(!!condition, "assert_implements", description); } - expose_assert(assert_implements, "assert_implements") + expose_assert(assert_implements, "assert_implements"); /** * Assert that an optional feature is implemented, based on a 'truthy' condition. @@ -2573,11 +2573,11 @@ 2: "Timeout", 3: "Not Run", 4: "Optional Feature Unsupported", - } + }; Test.prototype.format_status = function() { return this.status_formats[this.status]; - } + }; Test.prototype.structured_clone = function() { @@ -2887,7 +2887,7 @@ return new Promise(resolve => { this.step_wait_func(cond, resolve, description, timeout, interval); }); - } + }; /* * Private method for registering cleanup functions. `testharness.js` @@ -3120,7 +3120,7 @@ throw new Error("AbortController is not supported in this browser"); } return this._abortController.signal; - } + }; /** * A RemoteTest object mirrors a Test object on a remote worker. The @@ -3196,11 +3196,11 @@ function(callback) { callback(); }); - } + }; RemoteTest.prototype.format_status = function() { return Test.prototype.status_formats[this.status]; - } + }; /* * A RemoteContext listens for test events from a remote test context, such @@ -3472,7 +3472,7 @@ this.all_done_callbacks = []; this.hide_test_state = false; - this.pending_remotes = []; + this.remotes = []; this.current_test = null; this.asserts_run = []; @@ -3514,26 +3514,26 @@ for (var p in properties) { if (properties.hasOwnProperty(p)) { var value = properties[p]; - if (p == "allow_uncaught_exception") { + if (p === "allow_uncaught_exception") { this.allow_uncaught_exception = value; - } else if (p == "explicit_done" && value) { + } else if (p === "explicit_done" && value) { this.wait_for_finish = true; - } else if (p == "explicit_timeout" && value) { + } else if (p === "explicit_timeout" && value) { this.timeout_length = null; if (this.timeout_id) { clearTimeout(this.timeout_id); } - } else if (p == "single_test" && value) { + } else if (p === "single_test" && value) { this.set_file_is_test(); - } else if (p == "timeout_multiplier") { + } else if (p === "timeout_multiplier") { this.timeout_multiplier = value; if (this.timeout_length) { this.timeout_length *= this.timeout_multiplier; } - } else if (p == "hide_test_state") { + } else if (p === "hide_test_state") { this.hide_test_state = value; - } else if (p == "output") { + } else if (p === "output") { this.output = value; } else if (p === "debug") { settings.debug = value; @@ -3626,11 +3626,14 @@ Tests.prototype.push = function(test) { + if (this.phase === this.phases.COMPLETE) { + return; + } if (this.phase < this.phases.HAVE_TESTS) { this.start(); } this.num_pending++; - test.index = this.tests.push(test); + test.index = this.tests.push(test) - 1; this.notify_test_state(test); }; @@ -3643,11 +3646,11 @@ }; Tests.prototype.all_done = function() { - return (this.tests.length > 0 || this.pending_remotes.length > 0) && + return (this.tests.length > 0 || this.remotes.length > 0) && test_environment.all_loaded && (this.num_pending === 0 || this.is_aborted) && !this.wait_for_finish && !this.processing_callbacks && - !this.pending_remotes.some(function(w) { return w.running; }); + !this.remotes.some(function(w) { return w.running; }); }; Tests.prototype.start = function() { @@ -3716,7 +3719,8 @@ function(test, testDone) { if (test.phase === test.phases.INITIAL) { - test.phase = test.phases.COMPLETE; + test.phase = test.phases.HAS_RESULT; + test.done(); testDone(); } else { add_test_done_callback(test, testDone); @@ -3727,14 +3731,14 @@ }; Tests.prototype.set_assert = function(assert_name, args) { - this.asserts_run.push(new AssertRecord(this.current_test, assert_name, args)) - } + this.asserts_run.push(new AssertRecord(this.current_test, assert_name, args)); + }; Tests.prototype.set_assert_status = function(index, status, stack) { let assert_record = this.asserts_run[index]; assert_record.status = status; assert_record.stack = stack; - } + }; /** * Update the harness status to reflect an unrecoverable harness error that @@ -3876,7 +3880,7 @@ } var remoteContext = this.create_remote_worker(worker); - this.pending_remotes.push(remoteContext); + this.remotes.push(remoteContext); return remoteContext.done; }; @@ -3899,7 +3903,7 @@ } var remoteContext = this.create_remote_window(remote); - this.pending_remotes.push(remoteContext); + this.remotes.push(remoteContext); return remoteContext.done; }; @@ -4111,8 +4115,8 @@ } else { var root = output_document.documentElement; var is_html = (root && - root.namespaceURI == "http://www.w3.org/1999/xhtml" && - root.localName == "html"); + root.namespaceURI === "http://www.w3.org/1999/xhtml" && + root.localName === "html"); var is_svg = (output_document.defaultView && "SVGSVGElement" in output_document.defaultView && root instanceof output_document.defaultView.SVGSVGElement); @@ -4557,7 +4561,7 @@ */ function AssertionError(message) { - if (typeof message == "string") { + if (typeof message === "string") { message = sanitize_unpaired_surrogates(message); } this.message = message; @@ -4603,7 +4607,7 @@ } return lines.slice(i).join("\n"); - } + }; function OptionalFeatureUnsupportedError(message) { diff --git a/tests/wpt/tests/sanitizer-api/sethtml-safety.sub.dat b/tests/wpt/tests/sanitizer-api/sethtml-safety.sub.dat index 6969835d66d..314d5ac37b1 100644 --- a/tests/wpt/tests/sanitizer-api/sethtml-safety.sub.dat +++ b/tests/wpt/tests/sanitizer-api/sethtml-safety.sub.dat @@ -34,10 +34,19 @@ script | "xxx" #data -<img src="https://{{host}}/test-image" onclick="2+2" one="two"> +<a href="https://{{host}}/" onclick="2+2" one="two"> #document -| <img> -| src="https://{{host}}/test-image" +| <a> +| href="https://{{host}}/" + +#data +<a href="https://{{host}}/" onclick="2+2" one="two"> +#config +{ "elements": ["a"], "attributes": ["href", "onclick", "one"]} +#document +| <a> +| href="https://{{host}}/" +| one="two" #data <img src="https://{{host}}/test-image" onclick="2+2" one="two"> diff --git a/tests/wpt/tests/sanitizer-api/sethtml-unsafety.sub.dat b/tests/wpt/tests/sanitizer-api/sethtml-unsafety.sub.dat index bc162c04e5f..3b132a254ca 100644 --- a/tests/wpt/tests/sanitizer-api/sethtml-unsafety.sub.dat +++ b/tests/wpt/tests/sanitizer-api/sethtml-unsafety.sub.dat @@ -42,12 +42,22 @@ script | "xxx" #data -<img src="https://{{host}}/test-image" onclick="2+2" one="two"> +<a href="https://{{host}}/" onclick="2+2" one="two"> #document -| <img> +| <a> +| href="https://{{host}}/" +| one="two" +| onclick="2+2" + +#data +<a href="https://{{host}}/" onclick="2+2" one="two"> +#config +{ "elements": ["a"], "attributes": ["href", "onclick", "one"]} +#document +| <a> +| href="https://{{host}}/" | onclick="2+2" | one="two" -| src="https://{{host}}/test-image" #data <img src="https://{{host}}/test-image" onclick="2+2" one="two"> diff --git a/tests/wpt/tests/screen-capture/getallscreensmedia-exposure.tentative.https.window.js b/tests/wpt/tests/screen-capture/getallscreensmedia-exposure.tentative.https.window.js index 9be2fa07dd6..983fd6fbc9a 100644 --- a/tests/wpt/tests/screen-capture/getallscreensmedia-exposure.tentative.https.window.js +++ b/tests/wpt/tests/screen-capture/getallscreensmedia-exposure.tentative.https.window.js @@ -12,8 +12,7 @@ async_test(t => { i.src = "/content-security-policy/support/echo-policy.py?policy=" + encodeURIComponent("script-src 'none'; object-src 'none'; base-uri 'none'; require-trusted-types-for 'script'"); i.onload = t.step_func_done(_ => { - assert_equals("function", typeof i.contentWindow.navigator.mediaDevices.getAllScreensMedia); + assert_equals("undefined", typeof i.contentWindow.navigator.mediaDevices.getAllScreensMedia); }); document.body.appendChild(i); -}, "Strict CSP + TT, exposure."); - +}, "Strict CSP + TT, no exposure."); diff --git a/tests/wpt/tests/scroll-animations/scroll-timelines/scroll-timeline-invalidation.html b/tests/wpt/tests/scroll-animations/scroll-timelines/scroll-timeline-invalidation.html index a26500989ed..a0d33c28e08 100644 --- a/tests/wpt/tests/scroll-animations/scroll-timelines/scroll-timeline-invalidation.html +++ b/tests/wpt/tests/scroll-animations/scroll-timelines/scroll-timeline-invalidation.html @@ -123,6 +123,15 @@ promise_test(async t => { // makes the scroll timeline stale. // https://github.com/w3c/csswg-drafts/issues/8694 + // runAndWaitForFrameUpdate will yield after the requestAnimationFrame callbacks + // have been serviced, which is prior to when stale timelines are updated. + // https://github.com/w3c/csswg-drafts/issues/12120 + assert_approx_equals(timeline.currentTime.value, 60, 0.1); + + // Now wait another beat such that the rest of the HTML Processing Model event loop + // has run and we can check whether stale timelines have been updated. + await new Promise(setTimeout); + // With a single layout, timeline current time would be at 60%, but the // timeline would be stale. const expected_progress = 60 * maxScroll / (maxScroll + 1000); diff --git a/tests/wpt/tests/selection/caret/move-around-generated-content.html b/tests/wpt/tests/selection/caret/move-around-generated-content.html new file mode 100644 index 00000000000..ea22a399ae8 --- /dev/null +++ b/tests/wpt/tests/selection/caret/move-around-generated-content.html @@ -0,0 +1,260 @@ +<!doctype html> +<html> +<head> +<meta charset="utf-8"> +<title>Test for caret movement around generated content</title> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1958985"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/resources/testdriver-actions.js"></script> +<script> +"use strict"; + +function getRangeDescription(range) { + function getNodeDescription(node) { + if (!node) { + return "null"; + } + switch (node.nodeType) { + case Node.TEXT_NODE: + return `${node.nodeName} "${node.data}"`; + case Node.ELEMENT_NODE: + return `<${node.nodeName.toLowerCase()}>`; + default: + return `${node.nodeName}`; + } + } + if (range === null) { + return "null"; + } + if (range === undefined) { + return "undefined"; + } + return range.startContainer == range.endContainer && + range.startOffset == range.endOffset + ? `(${getNodeDescription(range.startContainer)}, ${range.startOffset})` + : `(${getNodeDescription(range.startContainer)}, ${ + range.startOffset + }) - (${getNodeDescription(range.endContainer)}, ${range.endOffset})`; +} + +const kArrowLeft = "\uE012"; +const kArrowUp = "\uE013"; +const kArrowRight = "\uE014"; +const kArrowDown = "\uE015"; + +function sendKey(k) { + return new test_driver.Actions().keyDown(k).keyUp(k).send(); +} + +promise_test(async () => { + await new Promise(resolve => { + addEventListener("load", resolve, {once: true}); + }); +}, "Initializing tests"); + +promise_test(async t => { + const editingHost = document.querySelector("#test1"); + editingHost.focus(); + const p = editingHost.querySelector("#a"); + + test(() => { + assert_equals( + getRangeDescription(getSelection().getRangeAt(0)), + getRangeDescription({ + startContainer: editingHost.querySelector("#a").firstChild, + startOffset: 0, + endContainer: editingHost.querySelector("#a").firstChild, + endOffset: 0, + }), + ); + }, `${t.name}: caret should start at the beginning of the first line`); + + await sendKey(kArrowDown); + test(() => { + assert_equals( + getRangeDescription(getSelection().getRangeAt(0)), + getRangeDescription({ + startContainer: editingHost.querySelector("#one").firstChild, + startOffset: 0, + endContainer: editingHost.querySelector("#one").firstChild, + endOffset: 0, + }), + ); + }, `${t.name}: arrow-down should move the caret to the start of the first list item`); + + await sendKey(kArrowDown); + test(() => { + assert_equals( + getRangeDescription(getSelection().getRangeAt(0)), + getRangeDescription({ + startContainer: editingHost.querySelector("#two"), + startOffset: 0, + endContainer: editingHost.querySelector("#two"), + endOffset: 0, + }), + ); + }, `${t.name}: arrow-down should move the caret to the second list item`); + + await sendKey(kArrowDown); + test(() => { + assert_equals( + getRangeDescription(getSelection().getRangeAt(0)), + getRangeDescription({ + startContainer: editingHost.querySelector("#three").firstChild, + startOffset: 0, + endContainer: editingHost.querySelector("#three").firstChild, + endOffset: 0, + }), + ); + }, `${t.name}: arrow-down should move the caret to the third list item`); + + await sendKey(kArrowDown); + test(() => { + assert_equals( + getRangeDescription(getSelection().getRangeAt(0)), + getRangeDescription({ + startContainer: editingHost.querySelector("#z").firstChild, + startOffset: 0, + endContainer: editingHost.querySelector("#z").firstChild, + endOffset: 0, + }), + ); + }, `${t.name}: arrow-down should move the caret to the final paragraph`); +}, "Moving caret between list items using arrow keys"); + +promise_test(async t => { + const editingHost = document.querySelector("#test2"); + editingHost.focus(); + const p = editingHost.querySelector("#before"); + + test(() => { + assert_equals( + getRangeDescription(getSelection().getRangeAt(0)), + getRangeDescription({ + startContainer: editingHost.querySelector("#before").firstChild, + startOffset: 0, + endContainer: editingHost.querySelector("#before").firstChild, + endOffset: 0, + }), + ); + }, `${t.name}: caret should start at the beginning of the first line`); + + await sendKey(kArrowDown); + test(() => { + assert_equals( + getRangeDescription(getSelection().getRangeAt(0)), + getRangeDescription({ + startContainer: editingHost.querySelector("#quote").firstChild, + startOffset: 0, + endContainer: editingHost.querySelector("#quote").firstChild, + endOffset: 0, + }), + ); + }, `${t.name}: arrow-down should move the caret to the start of the block quote`); + + await sendKey(kArrowDown); + test(() => { + assert_equals( + getRangeDescription(getSelection().getRangeAt(0)), + getRangeDescription({ + startContainer: editingHost.querySelector("#after").firstChild, + startOffset: 0, + endContainer: editingHost.querySelector("#after").firstChild, + endOffset: 0, + }), + ); + }, `${t.name}: arrow-down should move the caret to the final paragraph`); + + await sendKey(kArrowLeft); + test(() => { + assert_equals( + getRangeDescription(getSelection().getRangeAt(0)), + getRangeDescription({ + startContainer: editingHost.querySelector("#quote").firstChild, + startOffset: 5, + endContainer: editingHost.querySelector("#quote").firstChild, + endOffset: 5, + }), + ); + }, `${t.name}: arrow-left should move the caret to the end of the quote`); + + await sendKey(kArrowUp); + test(() => { + assert_equals( + getRangeDescription(getSelection().getRangeAt(0)), + getRangeDescription({ + startContainer: editingHost.querySelector("#before").firstChild, + startOffset: 10, + endContainer: editingHost.querySelector("#before").firstChild, + endOffset: 10, + }), + ); + }, `${t.name}: arrow-up should move the caret to into the first line`); + + await sendKey(kArrowRight); + test(() => { + assert_equals( + getRangeDescription(getSelection().getRangeAt(0)), + getRangeDescription({ + startContainer: editingHost.querySelector("#before").firstChild, + startOffset: 11, + endContainer: editingHost.querySelector("#before").firstChild, + endOffset: 11, + }), + ); + }, `${t.name}: arrow-right should move the caret forward by one character`); + + await sendKey(kArrowDown); + test(() => { + assert_equals( + getRangeDescription(getSelection().getRangeAt(0)), + getRangeDescription({ + startContainer: editingHost.querySelector("#quote").firstChild, + startOffset: 5, + endContainer: editingHost.querySelector("#quote").firstChild, + endOffset: 5, + }), + ); + }, `${t.name}: arrow-down should move the caret to the end of the quote`); +}, "Moving caret past the block-quote using arrow keys"); +</script> +<style> +div { + font-family: monospace; +} +ul { + list-style-type: none; +} +li::before { + content: "*\00a0"; + display: inline-block; +} +blockquote { + margin-inline-start: 5ch; +} +blockquote::after { + content: "\00a0*"; + display: inline-block; +} +</style> +</head> +<body> +<div id=test1 contenteditable> + <p id=a>abc</p> + <ul> + <li id=one>one</li> + <li id=two><br></li> + <li id=three>three</li> + </ul> + <p id=z>xyz</p> +</div> +<div id=test2 contenteditable> + <p id=before>paragraph before the blockquote</p> + <blockquote id=quote>quote</blockquote> + <p id=after>after the blockquote</p> +</div> +</body> +</html> diff --git a/tests/wpt/tests/shadow-dom/focus-navigation/reading-flow/tentative/carousel-grid-order.html b/tests/wpt/tests/shadow-dom/focus-navigation/reading-flow/tentative/carousel-grid-order.html new file mode 100644 index 00000000000..89b3f8dd928 --- /dev/null +++ b/tests/wpt/tests/shadow-dom/focus-navigation/reading-flow/tentative/carousel-grid-order.html @@ -0,0 +1,54 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>CSS Display: reading-flow with value flex-flow on carousel container</title> +<link rel="help" href="https://drafts.csswg.org/css-display-4/#reading-flow"> +<link rel="help" href="https://drafts.csswg.org/css-overflow-5/#scroll-marker-next-focus"> +<link rel="author" title="Di Zhang" href="mailto:dizhangg@chromium.org"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/resources/testdriver-actions.js"></script> +<script src='../../resources/shadow-dom.js'></script> +<script src="../../resources/focus-utils.js"></script> + +<style> + #scroller { + width: 120px; + height: 100px; + overflow-x: auto; + scroll-marker-group: before; + white-space: nowrap; + display: grid; + grid-auto-flow: column; + reading-flow: grid-order; + } + + #scroller div { + display: inline-block; + width: 100px; + height: 100px; + } + + #scroller div::scroll-marker { + content: "#"; + background: white; + } + +</style> + + + +<div class="test-case" data-expect="scroller,C,A,B" + data-description="Grid items in carousel should follow grid-order reading flow"> + <div id="scroller"> + <div id="A" tabindex="0" style="order: 2; background: red"></div> + <div id="B" tabindex="0" style="order: 3; background: yellow"></div> + <div id="C" tabindex="0" style="order: 1; background: blue"></div> + </div> +</div> + +<script> +runFocusTestCases(); +</script> diff --git a/tests/wpt/tests/speculation-rules/prefetch/anonymous-client.https.html b/tests/wpt/tests/speculation-rules/prefetch/anonymous-client.https.html index bf5896b2dd0..902724cdb0e 100644 --- a/tests/wpt/tests/speculation-rules/prefetch/anonymous-client.https.html +++ b/tests/wpt/tests/speculation-rules/prefetch/anonymous-client.https.html @@ -15,7 +15,6 @@ await agent.navigate(nextUrl); let requestHeaders = await agent.getRequestHeaders(); - assert_in_array(requestHeaders.purpose, ["", "prefetch"], "The vendor-specific header Purpose, if present, must be 'prefetch'."); - assert_equals(requestHeaders.sec_purpose, "prefetch;anonymous-client-ip"); + assert_prefetched_anonymous_client_ip(requestHeaders); }, "test anonymous-client url prefetch for cross origin pages"); </script> diff --git a/tests/wpt/tests/speculation-rules/prefetch/cross-origin-cookies.https.html b/tests/wpt/tests/speculation-rules/prefetch/cross-origin-cookies.https.html index a16872fcef9..95c95197a70 100644 --- a/tests/wpt/tests/speculation-rules/prefetch/cross-origin-cookies.https.html +++ b/tests/wpt/tests/speculation-rules/prefetch/cross-origin-cookies.https.html @@ -36,6 +36,6 @@ assert_equals(response_cookies["type"], "prefetch"); let requestHeaders = await agent.getRequestHeaders(); - assert_equals(requestHeaders.sec_purpose, "prefetch;anonymous-client-ip"); + assert_prefetched_anonymous_client_ip(requestHeaders); }, "speculation rules based prefetch should not use cookies for cross origin urls."); </script> diff --git a/tests/wpt/tests/speculation-rules/prefetch/prefetch-uses-cache.sub.https.html b/tests/wpt/tests/speculation-rules/prefetch/prefetch-uses-cache.sub.https.html index c0e9e73c75e..59071c82021 100644 --- a/tests/wpt/tests/speculation-rules/prefetch/prefetch-uses-cache.sub.https.html +++ b/tests/wpt/tests/speculation-rules/prefetch/prefetch-uses-cache.sub.https.html @@ -18,13 +18,13 @@ promise_test(async t => { const initiator = await spawnWindow(t); const url1 = initiator.getExecutorURL({ hostname: is_same_site ? undefined : '{{hosts[alt][www]}}', - executor: 'cacheable-executor.sub.html', - page: 1 + page: 1, + pipe: 'header(Cache-Control,private\\,max-age=604800)' }); const url2 = initiator.getExecutorURL({ hostname: is_same_site ? undefined : '{{hosts[][]}}', - executor: 'cacheable-executor.sub.html', - page: 2 + page: 2, + pipe: 'header(Cache-Control,private\\,max-age=604800)' }); await initiator.forceSinglePrefetch(url1); diff --git a/tests/wpt/tests/speculation-rules/prefetch/referrer-policy-from-rules.https.html b/tests/wpt/tests/speculation-rules/prefetch/referrer-policy-from-rules.https.html index 5024052eb46..f877bd84824 100644 --- a/tests/wpt/tests/speculation-rules/prefetch/referrer-policy-from-rules.https.html +++ b/tests/wpt/tests/speculation-rules/prefetch/referrer-policy-from-rules.https.html @@ -67,7 +67,7 @@ subsetTest(promise_test, async t => { // rule allows for prefetching. const headers = await agent.getRequestHeaders(); assert_prefetched(headers, "must be prefetched"); - assert_equals(headers.referer, '', "must send no referrer"); + assert_equals(headers.referer, undefined, "must send no referrer"); }, 'with "no-referrer" referrer policy in rule set overriding "unsafe-url" of cross-site referring page'); subsetTest(promise_test, async t => { diff --git a/tests/wpt/tests/speculation-rules/prefetch/referrer-policy.https.html b/tests/wpt/tests/speculation-rules/prefetch/referrer-policy.https.html index 8eb24c45815..a1d2aa4b188 100644 --- a/tests/wpt/tests/speculation-rules/prefetch/referrer-policy.https.html +++ b/tests/wpt/tests/speculation-rules/prefetch/referrer-policy.https.html @@ -57,7 +57,7 @@ subsetTest(promise_test, async t => { const headers = await agent.getRequestHeaders(); assert_prefetched(headers, "must be prefetched"); - assert_equals(headers.referer, '', "must send no referrer"); + assert_equals(headers.referer, undefined, "must send no referrer"); }, 'with "no-referrer" referrer policy'); subsetTest(promise_test, async t => { diff --git a/tests/wpt/tests/speculation-rules/prefetch/resources/authenticate.py b/tests/wpt/tests/speculation-rules/prefetch/resources/authenticate.py index 8820781709d..ea0c546afff 100644 --- a/tests/wpt/tests/speculation-rules/prefetch/resources/authenticate.py +++ b/tests/wpt/tests/speculation-rules/prefetch/resources/authenticate.py @@ -1,9 +1,10 @@ +import importlib +util = importlib.import_module("speculation-rules.prefetch.resources.util") def main(request, response): def fmt(x): return f'"{x.decode("utf-8")}"' if x is not None else "undefined" - purpose = request.headers.get("Purpose", b"").decode("utf-8") sec_purpose = request.headers.get("Sec-Purpose", b"").decode("utf-8") headers = [ @@ -14,23 +15,12 @@ def main(request, response): status = 200 if request.auth.username is not None or sec_purpose.startswith( "prefetch") else 401 - content = f''' - <!DOCTYPE html> - <script src="/common/dispatcher/dispatcher.js"></script> - <script src="utils.sub.js"></script> - <script> - window.requestHeaders = {{ - purpose: "{purpose}", - sec_purpose: "{sec_purpose}" - }}; + content = util.get_executor_html( + request, + f'''window.requestCredentials = {{ + username: {fmt(request.auth.username)}, + password: {fmt(request.auth.password)} + }}; + ''') - window.requestCredentials = {{ - username: {fmt(request.auth.username)}, - password: {fmt(request.auth.password)} - }}; - - const uuid = new URLSearchParams(location.search).get('uuid'); - window.executor = new Executor(uuid); - </script> - ''' return status, headers, content diff --git a/tests/wpt/tests/speculation-rules/prefetch/resources/basic-service-worker.js b/tests/wpt/tests/speculation-rules/prefetch/resources/basic-service-worker.js index 07beb37d660..18432ed62ed 100644 --- a/tests/wpt/tests/speculation-rules/prefetch/resources/basic-service-worker.js +++ b/tests/wpt/tests/speculation-rules/prefetch/resources/basic-service-worker.js @@ -2,8 +2,25 @@ const swOption = new URL(location.href).searchParams.get('sw'); if (swOption !== 'no-fetch-handler') { self.addEventListener('fetch', event => { + + // Intercept the prefetched and navigated URLs only (e.g. do not intercept + // subresource requests related to `/common/dispatcher/dispatcher.js`). + if (!event.request.url.includes('counting-executor.py')) { + return; + } + if (swOption === 'fetch-handler') { event.respondWith(fetch(event.request)); + } else if (swOption === 'fetch-handler-modify-url') { + // The "Sec-Purpose: prefetch" header is dropped in fetch-handler-modify-* + // cases in Step 33 of // https://fetch.spec.whatwg.org/#dom-request + // because it's a https://fetch.spec.whatwg.org/#forbidden-request-header + const url = new URL(event.request.url); + url.searchParams.set('intercepted', 'true'); + event.respondWith(fetch(url, {headers: event.request.headers})); + } else if (swOption === 'fetch-handler-modify-referrer') { + event.respondWith(fetch(event.request, + {referrer: new URL('/intercepted', location.href).href})); } else { // Do nothing to fallback to the network. } diff --git a/tests/wpt/tests/speculation-rules/prefetch/resources/cacheable-executor.sub.html b/tests/wpt/tests/speculation-rules/prefetch/resources/cacheable-executor.sub.html deleted file mode 100644 index ba1b3acb0c1..00000000000 --- a/tests/wpt/tests/speculation-rules/prefetch/resources/cacheable-executor.sub.html +++ /dev/null @@ -1,13 +0,0 @@ -<!DOCTYPE html> -<script src="/common/dispatcher/dispatcher.js"></script> -<script src="utils.sub.js"></script> -<script> -window.requestHeaders = { - purpose: "{{header_or_default(Purpose, )}}", - sec_purpose: "{{header_or_default(Sec-Purpose, )}}", - referer: "{{header_or_default(Referer, )}}", -}; - -const uuid = new URLSearchParams(location.search).get('uuid'); -window.executor = new Executor(uuid); -</script> diff --git a/tests/wpt/tests/speculation-rules/prefetch/resources/cacheable-executor.sub.html.headers b/tests/wpt/tests/speculation-rules/prefetch/resources/cacheable-executor.sub.html.headers deleted file mode 100644 index 0ee6ec2ab10..00000000000 --- a/tests/wpt/tests/speculation-rules/prefetch/resources/cacheable-executor.sub.html.headers +++ /dev/null @@ -1 +0,0 @@ -Cache-Control: private, max-age=604800 diff --git a/tests/wpt/tests/speculation-rules/prefetch/resources/cookies.py b/tests/wpt/tests/speculation-rules/prefetch/resources/cookies.py index 304f999570b..54aaabee70e 100644 --- a/tests/wpt/tests/speculation-rules/prefetch/resources/cookies.py +++ b/tests/wpt/tests/speculation-rules/prefetch/resources/cookies.py @@ -1,12 +1,14 @@ import json +import importlib +util = importlib.import_module("speculation-rules.prefetch.resources.util") + def main(request, response): cookies = json.dumps({ key.decode("utf-8"): request.cookies[key].value.decode("utf-8") for key in request.cookies }) - purpose = request.headers.get("Purpose", b"").decode("utf-8") sec_purpose = request.headers.get("Sec-Purpose", b"").decode("utf-8") cookie_count = int( @@ -21,20 +23,8 @@ def main(request, response): if b"cookieindices" in request.GET: headers.extend([(b"Vary", b"Cookie"), (b"Cookie-Indices", b"\"vary1\", \"vary2\"")]) - content = f''' - <!DOCTYPE html> - <script src="/common/dispatcher/dispatcher.js"></script> - <script src="utils.sub.js"></script> - <script> - window.requestHeaders = {{ - purpose: "{purpose}", - sec_purpose: "{sec_purpose}" - }}; - - window.requestCookies = {cookies}; - - const uuid = new URLSearchParams(location.search).get('uuid'); - window.executor = new Executor(uuid); - </script> - ''' + content = util.get_executor_html( + request, + f'window.requestCookies = {cookies};') + return headers, content diff --git a/tests/wpt/tests/speculation-rules/prefetch/resources/executor.sub.html b/tests/wpt/tests/speculation-rules/prefetch/resources/executor.sub.html index 6e4f18ba854..d27acfe100a 100644 --- a/tests/wpt/tests/speculation-rules/prefetch/resources/executor.sub.html +++ b/tests/wpt/tests/speculation-rules/prefetch/resources/executor.sub.html @@ -2,26 +2,52 @@ <script src="/common/dispatcher/dispatcher.js" nonce="abc"></script> <script src="utils.sub.js" nonce="abc"></script> <script nonce="abc"> - -// Workaround for https://crbug.com/404573971. +// For a given string `str` that is escaped by WPT's `.sub.html` or +// `pipe=sub(html)` functionality, return the original unescaped string. +// +// Concretely, for `str` as the result of `html.escape(x, quote=True)`, +// return the original unescaped string `x`. +// See `/tools/wptserve/wptserve/pipes.py` and +// https://docs.python.org/3/library/html.html#html.escape. +// +// See https://crbug.com/404573971 for fixing the escaping issue. function reverse_html_escape(str) { + str = str.replaceAll('<', '<'); + str = str.replaceAll('>', '>'); str = str.replaceAll('"', '"'); + str = str.replaceAll(''', "'"); + str = str.replaceAll('&', '&'); return str; } +// To be consistent with https://fetch.spec.whatwg.org/#headers-class +// (accessed via iterable), +// - The keys are lower-cased header names, and +// - The entries are removed when the corresponding headers are non-existent. window.requestHeaders = { - purpose: "{{header_or_default(Purpose, )}}", - sec_purpose: "{{header_or_default(Sec-Purpose, )}}", - referer: "{{header_or_default(Referer, )}}", - sec_fetch_dest: "{{header_or_default(Sec-Fetch-Dest, )}}", - sec_fetch_mode: "{{header_or_default(Sec-Fetch-Mode, )}}", + "purpose": "{{header_or_default(Purpose, NONEXISTENT)}}", + "sec-purpose": "{{header_or_default(Sec-Purpose, NONEXISTENT)}}", + "referer": "{{header_or_default(Referer, NONEXISTENT)}}", + "sec-fetch-dest": "{{header_or_default(Sec-Fetch-Dest, NONEXISTENT)}}", + "sec-fetch-mode": "{{header_or_default(Sec-Fetch-Mode, NONEXISTENT)}}", // Convert to the raw string to avoid backslashes from being processed as // escape sequences. // TODO(crbug.com/404573971): Remove `header_or_default` to reflect // `__no_tags__` properly. - sec_speculation_tags: reverse_html_escape( - String.raw`{{header_or_default(Sec-Speculation-Tags, __no_tags__)}}`), + sec_speculation_tags: + String.raw`{{header_or_default(Sec-Speculation-Tags, __no_tags__)}}`, }; +Object.keys(requestHeaders).forEach(key => { + if (requestHeaders[key] === "NONEXISTENT") { + delete requestHeaders[key]; + } else { + requestHeaders[key] = reverse_html_escape(requestHeaders[key]); + } +}); + +// The fetch request's URL sent to the server. +window.requestUrl = reverse_html_escape( + "{{location[server]}}{{location[path]}}{{location[query]}}"); const uuid = new URLSearchParams(location.search).get('uuid'); window.executor = new Executor(uuid); diff --git a/tests/wpt/tests/speculation-rules/prefetch/resources/prefetch_nvs_hint.py b/tests/wpt/tests/speculation-rules/prefetch/resources/prefetch_nvs_hint.py index d912eff90a5..223135dc8b8 100644 --- a/tests/wpt/tests/speculation-rules/prefetch/resources/prefetch_nvs_hint.py +++ b/tests/wpt/tests/speculation-rules/prefetch/resources/prefetch_nvs_hint.py @@ -1,5 +1,8 @@ import time +import importlib +util = importlib.import_module("speculation-rules.prefetch.resources.util") + def main(request, response): response.headers.set("Cache-Control", "no-store") uuid = request.GET[b"uuid"] @@ -33,17 +36,4 @@ def main(request, response): time.sleep(0.1) nvswait = request.server.stash.take(uuid) - content = (f'<!DOCTYPE html>\n' - f'<script src="/common/dispatcher/dispatcher.js"></script>\n' - f'<script src="utils.sub.js"></script>\n' - f'<script>\n' - f' window.requestHeaders = {{\n' - f' purpose: "{request.headers.get("Purpose", b"").decode("utf-8")}",\n' - f' sec_purpose: "{request.headers.get("Sec-Purpose", b"").decode("utf-8")}",\n' - f' referer: "{request.headers.get("Referer", b"").decode("utf-8")}",\n' - f' }};\n' - f' const uuid = new URLSearchParams(location.search).get("uuid");\n' - f' window.executor = new Executor(uuid);\n' - f'</script>\n') - - return content + return util.get_executor_html(request, '') diff --git a/tests/wpt/tests/speculation-rules/prefetch/resources/util.py b/tests/wpt/tests/speculation-rules/prefetch/resources/util.py new file mode 100644 index 00000000000..1ef6778badf --- /dev/null +++ b/tests/wpt/tests/speculation-rules/prefetch/resources/util.py @@ -0,0 +1,16 @@ +import os +from wptserve.pipes import template + +# Returns the executor HTML (as bytes). +# `additional_script` (str) is inserted to the JavaScript before the executor. +def get_executor_html(request, additional_script): + content = template( + request, + open(os.path.join(os.path.dirname(__file__), "executor.sub.html"), "rb").read()) + + # Insert an additional script at the head of script before Executor. + content = content.replace( + b'<script nonce="abc">', + b'<script nonce="abc">' + additional_script.encode('utf-8')) + + return content diff --git a/tests/wpt/tests/speculation-rules/prefetch/resources/utils.sub.js b/tests/wpt/tests/speculation-rules/prefetch/resources/utils.sub.js index 61411073aec..a90459fdf03 100644 --- a/tests/wpt/tests/speculation-rules/prefetch/resources/utils.sub.js +++ b/tests/wpt/tests/speculation-rules/prefetch/resources/utils.sub.js @@ -186,14 +186,34 @@ function insertDocumentRule(predicate, extra_options={}) { } function assert_prefetched (requestHeaders, description) { - assert_in_array(requestHeaders.purpose, ["", "prefetch"], "The vendor-specific header Purpose, if present, must be 'prefetch'."); - assert_in_array(requestHeaders.sec_purpose, + assert_in_array(requestHeaders.purpose, [undefined, "prefetch"], "The vendor-specific header Purpose, if present, must be 'prefetch'."); + assert_in_array(requestHeaders['sec-purpose'], ["prefetch", "prefetch;anonymous-client-ip"], description); } +function assert_prefetched_anonymous_client_ip(requestHeaders, description) { + assert_in_array(requestHeaders.purpose, [undefined, "prefetch"], "The vendor-specific header Purpose, if present, must be 'prefetch'."); + assert_equals(requestHeaders['sec-purpose'], + "prefetch;anonymous-client-ip", + description); +} + function assert_not_prefetched (requestHeaders, description){ - assert_equals(requestHeaders.purpose, "", description); - assert_equals(requestHeaders.sec_purpose, "", description); + assert_equals(requestHeaders.purpose, undefined, description); + assert_equals(requestHeaders['sec-purpose'], undefined, description); +} + +// If the prefetch request is intercepted and modified by ServiceWorker, +// - "Sec-Purpose: prefetch" header is dropped in Step 33 of +// https://fetch.spec.whatwg.org/#dom-request +// because it's a https://fetch.spec.whatwg.org/#forbidden-request-header. +// - "Purpose: prefetch" can still be sent. +// Note that this check passes also for non-prefetch requests, so additional +// checks are needed to distinguish from non-prefetch requests. +function assert_prefetched_without_sec_purpose(requestHeaders, description) { + assert_in_array(requestHeaders.purpose, [undefined, "prefetch"], + "The vendor-specific header Purpose, if present, must be 'prefetch'."); + assert_equals(requestHeaders['sec-purpose'], undefined, description); } // Use nvs_header query parameter to ask the wpt server diff --git a/tests/wpt/tests/speculation-rules/prefetch/sec-fetch-headers.https.html b/tests/wpt/tests/speculation-rules/prefetch/sec-fetch-headers.https.html index 730f0720995..3d1d1770d78 100644 --- a/tests/wpt/tests/speculation-rules/prefetch/sec-fetch-headers.https.html +++ b/tests/wpt/tests/speculation-rules/prefetch/sec-fetch-headers.https.html @@ -23,7 +23,7 @@ promise_test(async t => { const headers = await agent.getRequestHeaders(); assert_prefetched(headers, "must be prefetched"); - assert_equals(headers.sec_fetch_dest, "document", "Sec-Fetch-Dest"); + assert_equals(headers['sec-fetch-dest'], "document", "Sec-Fetch-Dest"); }, 'Sec-Fetch-Dest'); promise_test(async t => { @@ -34,7 +34,7 @@ promise_test(async t => { const headers = await agent.getRequestHeaders(); assert_prefetched(headers, "must be prefetched"); - assert_equals(headers.sec_fetch_mode, "navigate", "Sec-Fetch-Mode"); + assert_equals(headers['sec-fetch-mode'], "navigate", "Sec-Fetch-Mode"); }, 'Sec-Fetch-Mode'); promise_test(async t => { @@ -47,7 +47,7 @@ promise_test(async t => { const headers = await agent.getRequestHeaders(); assert_prefetched(headers, "must be prefetched"); - assert_equals(headers.sec_fetch_dest, "document", "Sec-Fetch-Dest"); + assert_equals(headers['sec-fetch-dest'], "document", "Sec-Fetch-Dest"); }, 'Sec-Fetch-Dest with redirects'); promise_test(async t => { @@ -60,6 +60,6 @@ promise_test(async t => { const headers = await agent.getRequestHeaders(); assert_prefetched(headers, "must be prefetched"); - assert_equals(headers.sec_fetch_mode, "navigate", "Sec-Fetch-Mode"); + assert_equals(headers['sec-fetch-mode'], "navigate", "Sec-Fetch-Mode"); }, 'Sec-Fetch-Mode with redirects'); </script> diff --git a/tests/wpt/tests/speculation-rules/prefetch/tentative/service-worker/basic.sub.https.html b/tests/wpt/tests/speculation-rules/prefetch/tentative/service-worker/basic.sub.https.html index e4c103535cc..bee8e2ff1f4 100644 --- a/tests/wpt/tests/speculation-rules/prefetch/tentative/service-worker/basic.sub.https.html +++ b/tests/wpt/tests/speculation-rules/prefetch/tentative/service-worker/basic.sub.https.html @@ -10,6 +10,8 @@ <meta name="variant" content="?origin=same-site&sw=fetch-handler"> <meta name="variant" content="?origin=same-site&sw=fetch-handler-to-fallback"> +<meta name="variant" content="?origin=same-site&sw=fetch-handler-modify-url"> +<meta name="variant" content="?origin=same-site&sw=fetch-handler-modify-referrer"> <meta name="variant" content="?origin=same-site&sw=no-fetch-handler"> <meta name="variant" content="?origin=same-site&sw=no-controller"> @@ -21,6 +23,8 @@ <script> setup(() => assertSpeculationRulesIsSupported()); +// TODO(https://crbug.com/404573972): Rename "same-site" tests to +// "same-origin", and add same-site cross-origin tests. const originOption = new URL(location.href).searchParams.get('origin'); const swOption = new URL(location.href).searchParams.get('sw'); @@ -30,7 +34,7 @@ promise_test(async t => { const win = await spawnWindow(t, { protocol: 'https', hostname: hostname }); const nextUrl = win.getExecutorURL({ executor: 'counting-executor.py', protocol: 'https', page: 2 }); - const swUrl = '../../resources/basic-service-worker.js?sw=' + swOption; + const swUrl = new URL('../../resources/basic-service-worker.js?sw=' + swOption, location.href).href; // Register a SW not controlling any pages below, just to confirm such // unrelated SWs in the same-origin doesn't affect the behavior. @@ -58,18 +62,63 @@ promise_test(async t => { return requestHeaders; }, []); + const controllerUrl = await win.execute_script(() => { + return navigator.serviceWorker.controller?.scriptURL; + }, []); + + if (swOption === 'no-controller') { + assert_equals(controllerUrl, undefined); + } else { + // The navigated page should be controlled by the ServiceWorker, + // regardless of whether prefetch is performed/used. + assert_equals(controllerUrl, swUrl); + } + // Current Chromium's expected behavior: // prefetch works when // - there are no controlling service worker, or - // - same-origin prefetches with controlling service worker. + // - same-site prefetches with controlling service worker. if (swOption === 'no-controller' || - originOption === 'same-site') { + (originOption === 'same-site' && + (swOption === 'fetch-handler' || + swOption === 'fetch-handler-to-fallback' || + swOption === 'no-fetch-handler'))) { assert_prefetched(headers, "Prefetched result should be served."); assert_equals(requestCount.prefetch, 1, 'a prefetch request should be sent to the server.'); assert_equals(requestCount.nonPrefetch, 0, 'non-prefetch requests should not be sent to the server.'); assert_prefetched(headers, "Prefetched result should be served."); + } else if (originOption === 'same-site' && + (swOption === 'fetch-handler-modify-url' || + swOption === 'fetch-handler-modify-referrer')) { + // When the ServiceWorker modifies the prefetch request + // (`fetch-handler-modify-*` cases below), still prefetch can work and be + // served, but Sec-Purpose header is dropped + // because it's a https://fetch.spec.whatwg.org/#forbidden-request-header + assert_prefetched_without_sec_purpose(headers, + "Prefetched result should be served without Sec-Purpose."); + // `requestCount` checks the Sec-Purpose header so the prefetch request + // without Sec-Prefetch is counted as nonPrefetch here. + assert_equals(requestCount.nonPrefetch, 1, + 'a prefetch request without Sec-Purpose should be sent to the server.'); + assert_equals(requestCount.prefetch, 0, + 'Other requests with Sec-Prefetch should not be sent to the server.'); + + // Check the modified URL/referrer to check if the prefetched and + // ServiceWorker-modified response is actually served. + if (swOption === 'fetch-handler-modify-url') { + assert_equals( + await win.execute_script(() => { return requestUrl; }, []), + nextUrl + '&intercepted=true', + 'URL should be modified by ServiceWorker'); + } + if (swOption === 'fetch-handler-modify-referrer') { + assert_equals( + headers.referer, + new URL('/intercepted', location.href).href, + 'Referrer should be modified by ServiceWorker'); + } } else { assert_not_prefetched(headers, "Prefetched result should not be served."); assert_equals(requestCount.nonPrefetch, 1, diff --git a/tests/wpt/tests/speculation-rules/prefetch/user-pass.https.html b/tests/wpt/tests/speculation-rules/prefetch/user-pass.https.html index 011e6137e61..c6cc51bdb04 100644 --- a/tests/wpt/tests/speculation-rules/prefetch/user-pass.https.html +++ b/tests/wpt/tests/speculation-rules/prefetch/user-pass.https.html @@ -33,8 +33,7 @@ assert_equals(request_credentials.username, undefined); assert_equals(request_credentials.password, undefined); - assert_in_array(requestHeaders.purpose, ["", "prefetch"]); - assert_equals(requestHeaders.sec_purpose, "prefetch;anonymous-client-ip"); + assert_prefetched_anonymous_client_ip(requestHeaders); } else { assert_equals(request_credentials.username, credentials.username); diff --git a/tests/wpt/tests/speculation-rules/prerender/about-blank-iframes.html b/tests/wpt/tests/speculation-rules/prerender/about-blank-iframes.https.html index af289197c6e..af289197c6e 100644 --- a/tests/wpt/tests/speculation-rules/prerender/about-blank-iframes.html +++ b/tests/wpt/tests/speculation-rules/prerender/about-blank-iframes.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/activation-start.html b/tests/wpt/tests/speculation-rules/prerender/activation-start.https.html index 7aee20c3465..7aee20c3465 100644 --- a/tests/wpt/tests/speculation-rules/prerender/activation-start.html +++ b/tests/wpt/tests/speculation-rules/prerender/activation-start.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/blob_object_url.html b/tests/wpt/tests/speculation-rules/prerender/blob_object_url.https.html index 49fb7c9e2c3..49fb7c9e2c3 100644 --- a/tests/wpt/tests/speculation-rules/prerender/blob_object_url.html +++ b/tests/wpt/tests/speculation-rules/prerender/blob_object_url.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/credentialed-prerender-not-opt-in.html b/tests/wpt/tests/speculation-rules/prerender/credentialed-prerender-not-opt-in.https.html index 697382a6dc8..697382a6dc8 100644 --- a/tests/wpt/tests/speculation-rules/prerender/credentialed-prerender-not-opt-in.html +++ b/tests/wpt/tests/speculation-rules/prerender/credentialed-prerender-not-opt-in.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/credentialed-prerender-opt-in.html b/tests/wpt/tests/speculation-rules/prerender/credentialed-prerender-opt-in.https.html index 91626bafce6..91626bafce6 100644 --- a/tests/wpt/tests/speculation-rules/prerender/credentialed-prerender-opt-in.html +++ b/tests/wpt/tests/speculation-rules/prerender/credentialed-prerender-opt-in.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/cross-origin-iframe.html b/tests/wpt/tests/speculation-rules/prerender/cross-origin-iframe.https.html index 0fc92fcce1c..0fc92fcce1c 100644 --- a/tests/wpt/tests/speculation-rules/prerender/cross-origin-iframe.html +++ b/tests/wpt/tests/speculation-rules/prerender/cross-origin-iframe.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/csp-script-src-elem-inline-speculation-rules.html b/tests/wpt/tests/speculation-rules/prerender/csp-script-src-elem-inline-speculation-rules.https.html index 7f33c32793b..7f33c32793b 100644 --- a/tests/wpt/tests/speculation-rules/prerender/csp-script-src-elem-inline-speculation-rules.html +++ b/tests/wpt/tests/speculation-rules/prerender/csp-script-src-elem-inline-speculation-rules.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/csp-script-src-inline-speculation-rules.html b/tests/wpt/tests/speculation-rules/prerender/csp-script-src-inline-speculation-rules.https.html index 1d5b35c30fb..1d5b35c30fb 100644 --- a/tests/wpt/tests/speculation-rules/prerender/csp-script-src-inline-speculation-rules.html +++ b/tests/wpt/tests/speculation-rules/prerender/csp-script-src-inline-speculation-rules.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/csp-script-src-self.html b/tests/wpt/tests/speculation-rules/prerender/csp-script-src-self.https.html index 86cf9def4a5..86cf9def4a5 100644 --- a/tests/wpt/tests/speculation-rules/prerender/csp-script-src-self.html +++ b/tests/wpt/tests/speculation-rules/prerender/csp-script-src-self.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/csp-script-src-strict-dynamic.html b/tests/wpt/tests/speculation-rules/prerender/csp-script-src-strict-dynamic.https.html index d5d80794011..d5d80794011 100644 --- a/tests/wpt/tests/speculation-rules/prerender/csp-script-src-strict-dynamic.html +++ b/tests/wpt/tests/speculation-rules/prerender/csp-script-src-strict-dynamic.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/csp-script-src-unsafe-inline.html b/tests/wpt/tests/speculation-rules/prerender/csp-script-src-unsafe-inline.https.html index b9b3092a128..b9b3092a128 100644 --- a/tests/wpt/tests/speculation-rules/prerender/csp-script-src-unsafe-inline.html +++ b/tests/wpt/tests/speculation-rules/prerender/csp-script-src-unsafe-inline.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/fetch-blob.html b/tests/wpt/tests/speculation-rules/prerender/fetch-blob.https.html index 37577f3b5bc..37577f3b5bc 100644 --- a/tests/wpt/tests/speculation-rules/prerender/fetch-blob.html +++ b/tests/wpt/tests/speculation-rules/prerender/fetch-blob.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/iframe-added-post-activation.html b/tests/wpt/tests/speculation-rules/prerender/iframe-added-post-activation.https.html index d22b511e108..d22b511e108 100644 --- a/tests/wpt/tests/speculation-rules/prerender/iframe-added-post-activation.html +++ b/tests/wpt/tests/speculation-rules/prerender/iframe-added-post-activation.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/indexeddb.html b/tests/wpt/tests/speculation-rules/prerender/indexeddb.https.html index f8240014dee..f8240014dee 100644 --- a/tests/wpt/tests/speculation-rules/prerender/indexeddb.html +++ b/tests/wpt/tests/speculation-rules/prerender/indexeddb.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/local-storage.html b/tests/wpt/tests/speculation-rules/prerender/local-storage.https.html index 2f7428746cc..2f7428746cc 100644 --- a/tests/wpt/tests/speculation-rules/prerender/local-storage.html +++ b/tests/wpt/tests/speculation-rules/prerender/local-storage.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/media-autoplay.html b/tests/wpt/tests/speculation-rules/prerender/media-autoplay.https.html index f5d3291ffdc..f5d3291ffdc 100644 --- a/tests/wpt/tests/speculation-rules/prerender/media-autoplay.html +++ b/tests/wpt/tests/speculation-rules/prerender/media-autoplay.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/navigation-api-location-replace.html b/tests/wpt/tests/speculation-rules/prerender/navigation-api-location-replace.https.html index e3ecf1b72b6..e3ecf1b72b6 100644 --- a/tests/wpt/tests/speculation-rules/prerender/navigation-api-location-replace.html +++ b/tests/wpt/tests/speculation-rules/prerender/navigation-api-location-replace.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/navigation-api-multiple-entries.html b/tests/wpt/tests/speculation-rules/prerender/navigation-api-multiple-entries.https.html index e8e0f874597..e8e0f874597 100644 --- a/tests/wpt/tests/speculation-rules/prerender/navigation-api-multiple-entries.html +++ b/tests/wpt/tests/speculation-rules/prerender/navigation-api-multiple-entries.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/navigation-api.html b/tests/wpt/tests/speculation-rules/prerender/navigation-api.https.html index fd25e94b5b3..fd25e94b5b3 100644 --- a/tests/wpt/tests/speculation-rules/prerender/navigation-api.html +++ b/tests/wpt/tests/speculation-rules/prerender/navigation-api.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/navigator-plugins.html b/tests/wpt/tests/speculation-rules/prerender/navigator-plugins.https.html index 4d7fa4902ac..4d7fa4902ac 100644 --- a/tests/wpt/tests/speculation-rules/prerender/navigator-plugins.html +++ b/tests/wpt/tests/speculation-rules/prerender/navigator-plugins.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/prerender-while-prerender.html b/tests/wpt/tests/speculation-rules/prerender/prerender-while-prerender.https.html index 8aa80baf525..8aa80baf525 100644 --- a/tests/wpt/tests/speculation-rules/prerender/prerender-while-prerender.html +++ b/tests/wpt/tests/speculation-rules/prerender/prerender-while-prerender.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/referrer-policy-from-rules.html b/tests/wpt/tests/speculation-rules/prerender/referrer-policy-from-rules.https.html index 7e3b65fe612..7e3b65fe612 100644 --- a/tests/wpt/tests/speculation-rules/prerender/referrer-policy-from-rules.html +++ b/tests/wpt/tests/speculation-rules/prerender/referrer-policy-from-rules.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/referrer-policy-mismatch.html b/tests/wpt/tests/speculation-rules/prerender/referrer-policy-mismatch.https.html index fa2d424660a..fa2d424660a 100644 --- a/tests/wpt/tests/speculation-rules/prerender/referrer-policy-mismatch.html +++ b/tests/wpt/tests/speculation-rules/prerender/referrer-policy-mismatch.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/referrer-policy-no-referrer.html b/tests/wpt/tests/speculation-rules/prerender/referrer-policy-no-referrer.https.html index a0d1763f95b..a0d1763f95b 100644 --- a/tests/wpt/tests/speculation-rules/prerender/referrer-policy-no-referrer.html +++ b/tests/wpt/tests/speculation-rules/prerender/referrer-policy-no-referrer.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/referrer-policy-origin.html b/tests/wpt/tests/speculation-rules/prerender/referrer-policy-origin.https.html index 95eb8ba72f7..95eb8ba72f7 100644 --- a/tests/wpt/tests/speculation-rules/prerender/referrer-policy-origin.html +++ b/tests/wpt/tests/speculation-rules/prerender/referrer-policy-origin.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/referrer-policy-strict-origin.html b/tests/wpt/tests/speculation-rules/prerender/referrer-policy-strict-origin.https.html index 0861012fa44..0861012fa44 100644 --- a/tests/wpt/tests/speculation-rules/prerender/referrer-policy-strict-origin.html +++ b/tests/wpt/tests/speculation-rules/prerender/referrer-policy-strict-origin.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/referrer.html b/tests/wpt/tests/speculation-rules/prerender/referrer.https.html index c0ecc845b56..c0ecc845b56 100644 --- a/tests/wpt/tests/speculation-rules/prerender/referrer.html +++ b/tests/wpt/tests/speculation-rules/prerender/referrer.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/remove-script-element.html b/tests/wpt/tests/speculation-rules/prerender/remove-script-element.https.html index 31f5f4bb4b9..31f5f4bb4b9 100644 --- a/tests/wpt/tests/speculation-rules/prerender/remove-script-element.html +++ b/tests/wpt/tests/speculation-rules/prerender/remove-script-element.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/response-code-non-successful.html b/tests/wpt/tests/speculation-rules/prerender/response-code-non-successful.https.html index 68cd505b2ba..68cd505b2ba 100644 --- a/tests/wpt/tests/speculation-rules/prerender/response-code-non-successful.html +++ b/tests/wpt/tests/speculation-rules/prerender/response-code-non-successful.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/response-code-successful.html b/tests/wpt/tests/speculation-rules/prerender/response-code-successful.https.html index eca7f38c8c3..eca7f38c8c3 100644 --- a/tests/wpt/tests/speculation-rules/prerender/response-code-successful.html +++ b/tests/wpt/tests/speculation-rules/prerender/response-code-successful.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/restriction-audio-setSinkId-with-invalid-sinkId.https.tentative.html b/tests/wpt/tests/speculation-rules/prerender/restriction-audio-setSinkId-with-invalid-sinkId.https.tentative.https.html index f4a362894c8..f4a362894c8 100644 --- a/tests/wpt/tests/speculation-rules/prerender/restriction-audio-setSinkId-with-invalid-sinkId.https.tentative.html +++ b/tests/wpt/tests/speculation-rules/prerender/restriction-audio-setSinkId-with-invalid-sinkId.https.tentative.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/restriction-audio-setSinkId.https.tentative.html b/tests/wpt/tests/speculation-rules/prerender/restriction-audio-setSinkId.https.tentative.https.html index a3b6db50418..a3b6db50418 100644 --- a/tests/wpt/tests/speculation-rules/prerender/restriction-audio-setSinkId.https.tentative.html +++ b/tests/wpt/tests/speculation-rules/prerender/restriction-audio-setSinkId.https.tentative.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/restriction-broadcast-channel.html b/tests/wpt/tests/speculation-rules/prerender/restriction-broadcast-channel.https.html index 167f5f9bc4d..167f5f9bc4d 100644 --- a/tests/wpt/tests/speculation-rules/prerender/restriction-broadcast-channel.html +++ b/tests/wpt/tests/speculation-rules/prerender/restriction-broadcast-channel.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/restriction-focus.html b/tests/wpt/tests/speculation-rules/prerender/restriction-focus.https.html index b606d1f8bf9..b606d1f8bf9 100644 --- a/tests/wpt/tests/speculation-rules/prerender/restriction-focus.html +++ b/tests/wpt/tests/speculation-rules/prerender/restriction-focus.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/restriction-media-auto-play-attribute.html b/tests/wpt/tests/speculation-rules/prerender/restriction-media-auto-play-attribute.https.html index 10db174db9f..10db174db9f 100644 --- a/tests/wpt/tests/speculation-rules/prerender/restriction-media-auto-play-attribute.html +++ b/tests/wpt/tests/speculation-rules/prerender/restriction-media-auto-play-attribute.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/restriction-media-play.html b/tests/wpt/tests/speculation-rules/prerender/restriction-media-play.https.html index 3db8c22c417..3db8c22c417 100644 --- a/tests/wpt/tests/speculation-rules/prerender/restriction-media-play.html +++ b/tests/wpt/tests/speculation-rules/prerender/restriction-media-play.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/restriction-message-boxes.html b/tests/wpt/tests/speculation-rules/prerender/restriction-message-boxes.https.html index a40df1acc2b..a40df1acc2b 100644 --- a/tests/wpt/tests/speculation-rules/prerender/restriction-message-boxes.html +++ b/tests/wpt/tests/speculation-rules/prerender/restriction-message-boxes.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/restriction-prompt-by-before-unload.html b/tests/wpt/tests/speculation-rules/prerender/restriction-prompt-by-before-unload.https.html index 63a4b11fc3a..63a4b11fc3a 100644 --- a/tests/wpt/tests/speculation-rules/prerender/restriction-prompt-by-before-unload.html +++ b/tests/wpt/tests/speculation-rules/prerender/restriction-prompt-by-before-unload.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/restriction-request-picture-in-picture.html b/tests/wpt/tests/speculation-rules/prerender/restriction-request-picture-in-picture.https.html index 743254d3d9c..743254d3d9c 100644 --- a/tests/wpt/tests/speculation-rules/prerender/restriction-request-picture-in-picture.html +++ b/tests/wpt/tests/speculation-rules/prerender/restriction-request-picture-in-picture.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/restriction-speech-synthesis.html b/tests/wpt/tests/speculation-rules/prerender/restriction-speech-synthesis.https.html index 9dbdf9fd45b..9dbdf9fd45b 100644 --- a/tests/wpt/tests/speculation-rules/prerender/restriction-speech-synthesis.html +++ b/tests/wpt/tests/speculation-rules/prerender/restriction-speech-synthesis.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/restriction-window-move.html b/tests/wpt/tests/speculation-rules/prerender/restriction-window-move.https.html index 232760db365..232760db365 100644 --- a/tests/wpt/tests/speculation-rules/prerender/restriction-window-move.html +++ b/tests/wpt/tests/speculation-rules/prerender/restriction-window-move.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/restriction-window-open.html b/tests/wpt/tests/speculation-rules/prerender/restriction-window-open.https.html index 7397d31e65c..7397d31e65c 100644 --- a/tests/wpt/tests/speculation-rules/prerender/restriction-window-open.html +++ b/tests/wpt/tests/speculation-rules/prerender/restriction-window-open.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/restriction-window-resize.html b/tests/wpt/tests/speculation-rules/prerender/restriction-window-resize.https.html index a2466c48b36..a2466c48b36 100644 --- a/tests/wpt/tests/speculation-rules/prerender/restriction-window-resize.html +++ b/tests/wpt/tests/speculation-rules/prerender/restriction-window-resize.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/restrictions.html b/tests/wpt/tests/speculation-rules/prerender/restrictions.https.html index 817a1995bc5..817a1995bc5 100644 --- a/tests/wpt/tests/speculation-rules/prerender/restrictions.html +++ b/tests/wpt/tests/speculation-rules/prerender/restrictions.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/sandbox-iframe.html b/tests/wpt/tests/speculation-rules/prerender/sandbox-iframe.https.html index 469b8aadc31..469b8aadc31 100644 --- a/tests/wpt/tests/speculation-rules/prerender/sandbox-iframe.html +++ b/tests/wpt/tests/speculation-rules/prerender/sandbox-iframe.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/script-supports-speculationrules.html b/tests/wpt/tests/speculation-rules/prerender/script-supports-speculationrules.https.html index 2dc856fce5d..2dc856fce5d 100644 --- a/tests/wpt/tests/speculation-rules/prerender/script-supports-speculationrules.html +++ b/tests/wpt/tests/speculation-rules/prerender/script-supports-speculationrules.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/send-beacon.html b/tests/wpt/tests/speculation-rules/prerender/send-beacon.https.html index 34843efcde7..34843efcde7 100644 --- a/tests/wpt/tests/speculation-rules/prerender/send-beacon.html +++ b/tests/wpt/tests/speculation-rules/prerender/send-beacon.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/session-storage.tentative.html b/tests/wpt/tests/speculation-rules/prerender/session-storage.tentative.https.html index 92d73285cce..92d73285cce 100644 --- a/tests/wpt/tests/speculation-rules/prerender/session-storage.tentative.html +++ b/tests/wpt/tests/speculation-rules/prerender/session-storage.tentative.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/state-and-event.html b/tests/wpt/tests/speculation-rules/prerender/state-and-event.https.html index 7e8e7fd0a92..7e8e7fd0a92 100644 --- a/tests/wpt/tests/speculation-rules/prerender/state-and-event.html +++ b/tests/wpt/tests/speculation-rules/prerender/state-and-event.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/visibility-state.html b/tests/wpt/tests/speculation-rules/prerender/visibility-state.https.html index e9e8548c4f6..e9e8548c4f6 100644 --- a/tests/wpt/tests/speculation-rules/prerender/visibility-state.html +++ b/tests/wpt/tests/speculation-rules/prerender/visibility-state.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/workers-in-cross-origin-iframe.html b/tests/wpt/tests/speculation-rules/prerender/workers-in-cross-origin-iframe.https.html index 260bc8eacbf..260bc8eacbf 100644 --- a/tests/wpt/tests/speculation-rules/prerender/workers-in-cross-origin-iframe.html +++ b/tests/wpt/tests/speculation-rules/prerender/workers-in-cross-origin-iframe.https.html diff --git a/tests/wpt/tests/speculation-rules/prerender/workers.html b/tests/wpt/tests/speculation-rules/prerender/workers.https.html index 3abae233a5f..3abae233a5f 100644 --- a/tests/wpt/tests/speculation-rules/prerender/workers.html +++ b/tests/wpt/tests/speculation-rules/prerender/workers.https.html diff --git a/tests/wpt/tests/storage-access-api/resources/storage-access-beyond-cookies-iframe-iframe.html b/tests/wpt/tests/storage-access-api/resources/storage-access-beyond-cookies-iframe-iframe.html index 8b3720a6354..09eef3fe52f 100644 --- a/tests/wpt/tests/storage-access-api/resources/storage-access-beyond-cookies-iframe-iframe.html +++ b/tests/wpt/tests/storage-access-api/resources/storage-access-beyond-cookies-iframe-iframe.html @@ -385,6 +385,63 @@ message = "Cross-partition third-party blob URL was accessible after granting storage access"; break; } + case "BlobURLSharedWorker": { + const handle = await test_driver.bless("fake user interaction", () => document.requestStorageAccess({createObjectURL: true, revokeObjectURL: true, SharedWorker: true})); + const workerScript = await fetch('/storage-access-api/resources/shared-worker-relay.js').then(response => response.text()); + const workerBlob = new Blob([workerScript], { type: 'text/javascript' }); + + const firstPartyBlobUrl = handle.createObjectURL(workerBlob); + const thirdPartyWorker = new SharedWorker(firstPartyBlobUrl); + var workerCreated = true; + await new Promise((resolve) => { + thirdPartyWorker.onerror = (event) => { + message = "Third-party SharedWorker not created from first-party blob URL unexpectedly."; + workerCreated = false; + resolve(); + } + thirdPartyWorker.port.onmessage = (event) => { + message = "Third-party SharedWorker created from first-party blob URL."; + resolve(); + } + thirdPartyWorker.port.postMessage("ping"); + }); + if (!workerCreated) { + break; + } + + const firstPartyWorker = handle.SharedWorker(firstPartyBlobUrl); + await new Promise((resolve) => { + firstPartyWorker.onerror = (event) => { + message = "First-party SharedWorker not created from first-party blob URL unexpectedly."; + workerCreated = false; + resolve(); + } + firstPartyWorker.port.onmessage = (event) => { + message = "First-party SharedWorker created from first-party blob URL."; + resolve(); + } + firstPartyWorker.port.postMessage("ping"); + }); + if (!workerCreated) { + break; + } + + const thirdPartyBlobUrl = URL.createObjectURL(workerBlob); + const worker = handle.SharedWorker(thirdPartyBlobUrl); + await new Promise((resolve) => { + worker.onerror = (event) => { + message = "Blob URL SharedWorker tests completed successfully."; + workerCreated = false; + resolve(); + }; + worker.port.onmessage = (event) => { + message = "First-party SharedWorker created from third-party blob URL unexpectedly."; + resolve(); + } + worker.port.postMessage("ping"); + }); + break; + } case "unpartitioned": { await MaybeSetStorageAccess("*", "*", "allowed"); await test_driver.set_permission({ name: 'storage-access' }, 'denied'); diff --git a/tests/wpt/tests/storage-access-api/resources/storage-access-beyond-cookies-iframe.sub.html b/tests/wpt/tests/storage-access-api/resources/storage-access-beyond-cookies-iframe.sub.html index 6c60c962b1b..2e10d1cae15 100644 --- a/tests/wpt/tests/storage-access-api/resources/storage-access-beyond-cookies-iframe.sub.html +++ b/tests/wpt/tests/storage-access-api/resources/storage-access-beyond-cookies-iframe.sub.html @@ -145,6 +145,9 @@ window.addEventListener("message", async (e) => { channel.close(); break; } + case "BlobURLSharedWorker": { + break; + } default: { message = "Unexpected type " + type; break; diff --git a/tests/wpt/tests/storage-access-api/storage-access-beyond-cookies.BlobURLSharedWorker.sub.https.tentative.window.js b/tests/wpt/tests/storage-access-api/storage-access-beyond-cookies.BlobURLSharedWorker.sub.https.tentative.window.js new file mode 100644 index 00000000000..f0559984230 --- /dev/null +++ b/tests/wpt/tests/storage-access-api/storage-access-beyond-cookies.BlobURLSharedWorker.sub.https.tentative.window.js @@ -0,0 +1,22 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js + +'use strict'; + +async_test(t => { + // Set up a message listener that simply calls t.done() when a message is received. + window.addEventListener("message", t.step_func(e => { + if (e.data.type != "result") { + return; + } + assert_equals(e.data.message, "Blob URL SharedWorker tests completed successfully."); + t.done(); + })); + + // Create an iframe that's cross-site with top-frame. + const id = Date.now(); + let iframe = document.createElement("iframe"); + iframe.src = "https://{{hosts[alt][]}}:{{ports[https][0]}}/storage-access-api/resources/storage-access-beyond-cookies-iframe.sub.html?type=BlobURLSharedWorker&id=" + id; + document.body.appendChild(iframe); + +}, "Verify a blob URL created via URL.createObjectURL from the third-party context shouldn't be useable as the shared worker script when it's passed to saa_handle.SharedWorker."); diff --git a/tests/wpt/tests/streams/readable-streams/crashtests/garbage-collection.any.js b/tests/wpt/tests/streams/readable-streams/crashtests/garbage-collection.any.js new file mode 100644 index 00000000000..b2ba5cd4c27 --- /dev/null +++ b/tests/wpt/tests/streams/readable-streams/crashtests/garbage-collection.any.js @@ -0,0 +1,15 @@ +// META: global=window,worker +// META: script=/common/gc.js +'use strict'; + +// See https://crbug.com/335506658 for details. +promise_test(async () => { + let closed = new ReadableStream({ + pull(controller) { + controller.enqueue('is there anybody in there?'); + } + }).getReader().closed; + // 3 GCs are actually required to trigger the bug at time of writing. + for (let i = 0; i < 5; ++i) + await garbageCollect(); +}, 'Garbage-collecting a stream along with its reader should not crash'); diff --git a/tests/wpt/tests/svg/coordinate-systems/viewBox-synthesized-in-img-001-ref.html b/tests/wpt/tests/svg/coordinate-systems/viewBox-synthesized-in-img-001-ref.html index dc27ce9a4e8..306b4f6b191 100644 --- a/tests/wpt/tests/svg/coordinate-systems/viewBox-synthesized-in-img-001-ref.html +++ b/tests/wpt/tests/svg/coordinate-systems/viewBox-synthesized-in-img-001-ref.html @@ -3,57 +3,66 @@ <title>Reference Case</title> <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com"> <style> - embed { + div.img-mockup { border: 1px solid black; margin: 2px; vertical-align: top; + display: inline-block; } </style> <body> <script> - // Note: in this reference case, we take an explicit 'viewBox' param - // which is expected to match the viewBox that the testcase will - // be implicitly synthesizing as part of rendering SVG-as-an-image. - // (For parts of the testcase where no viewBox should be synthesized, - // this param should be left as the empty string.) - function makeDataURI(width, height, viewBox) { - let uri = "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' "; - uri += `width='${width}' height='${height}' viewBox='${viewBox}' preserveAspectRatio='none'>`; - uri += "<rect fill='blue' x='2' y='2' height='6' width='6'/></svg>"; - return uri; - } - - const SVG_SIZE_VALS_TO_TEST = [ "", "0", "0", "0", "0", "10" ]; - const IMG_SIZE_VALS_TO_TEST = [ "20", "30" ]; + // This is the <rect> width and height in the testcase's data URI. + const RECT_SIZE = 6; + // This is the <rect> x/y position in the testcase's data URI. + const RECT_POS = 2; - // Returns the size in one axis (height or width) that we expect the browser - // to use, in the viewBox that it synthesizes for a particular piece of the - // corresponding testcase. The params are the specified size (height or - // width) of the <svg> element and host <img> element (in the corresponding - // piece of the testcase). - // - // This function returns null if no viewBox should be synthesized at all. - function synthesizeViewBoxComponent(svgSizeVal, embedSizeVal) { - if (svgSizeVal == "") { - // The <svg> element has no specified size in this axis, so the browser - // should render the testcase with a synthesized viewBox that's exactly - // as large as the testcase's <img> element in this axis. - return embedSizeVal; + // Determines the scale factor that we expect to apply to our SVG in a given + // axis, based on the specified size (width or height) of the SVG element and + // the img element in that axis, and based on whether we expect a viewBox to + // be synthesized at all. + function getExpectedScaleInAxis(svgSize, imgSize, shouldSynthesizeViewBox) { + if (shouldSynthesizeViewBox && svgSize == 10) { + // We'll be synthesizing a viewBox, and it'll be scaling our SVG content + // in this axis to fit the image size, so we need to scale up the size + // that we'll use for our mockup. + return imgSize / svgSize; } + // Otherwise, we expect to render the SVG content at a 1.0 scale in this + // axis. + return 1.0; + } + function makeRectMockup(svgWidth, svgHeight, + imgWidth, imgHeight) { + let fakeRect = document.createElement("div"); + fakeRect.style.backgroundColor = "blue"; - if (svgSizeVal == "0" || svgSizeVal == "0%") { - // The <svg> element has a specified size of 0 in this axis, so the - // browser should decline to synthesize a viewBox at all when rendering - // this part of the testcase, since a zero-sized viewBox would result in - // nothing being painted. - return null; - } + // Size/position the rect based on the scale that we expect the SVG + // content to be rendered at in each axis. To inform that expectation, + // first decide whether we expect a synthesized viewBox: we expect + // the testcase's SVG-as-an-image document to synthesize a viewBox from + // the width and/or height *unless* that viewBox would be empty + // (zero-sized) in some axis. + let shouldSynthesizeViewBox = svgWidth != 0 && svgHeight != 0; - // Otherwise the browser should just use the given specified size of the - // <svg> element to construct the synthetic viewBox. - return svgSizeVal; + // Now compute the expected scale in each axis using a helper function: + let horizScale = getExpectedScaleInAxis(svgWidth, imgWidth, + shouldSynthesizeViewBox); + let vertScale = getExpectedScaleInAxis(svgHeight, imgHeight, + shouldSynthesizeViewBox); + + fakeRect.style.width = `${RECT_SIZE * horizScale}px`; + fakeRect.style.height = `${RECT_SIZE * vertScale}px`; + fakeRect.style.marginLeft = `${RECT_POS * horizScale}px`; + fakeRect.style.marginTop = `${RECT_POS * vertScale}px`; + return fakeRect; } + // To make the logic simpler, we just use 0 here for all of the testcase's + // sizes that we expect to behave like 0 (e.g. 0%, -5, -5%). + const SVG_SIZE_VALS_TO_TEST = [ null, 0, 0, 0, 0, 10 ]; + const IMG_SIZE_VALS_TO_TEST = [ 20, 30 ]; + function go() { // We group our elements into rows with a particular number of items, // to make sure things fit nicely/predictably into the WPT viewport: @@ -67,26 +76,21 @@ for (sh of SVG_SIZE_VALS_TO_TEST) { // Generate a new container element at the start and every N elems: if (elemIdx % NUM_ELEMS_PER_ROW == 0) { - container = document.createElement("div"); - document.body.appendChild(container); + container = document.createElement("div"); + document.body.appendChild(container); } elemIdx++; - const embed = document.createElement("embed"); - embed.setAttribute("width", iw); - embed.setAttribute("height", ih); + // Mockup for the img element: + const fakeImg = document.createElement("div"); + fakeImg.classList.add("img-mockup"); + fakeImg.style.width = `${iw}px`; + fakeImg.style.height = `${ih}px`; - // vbw/vbh here are the width/height we'll use in our viewBox. - let vbw = synthesizeViewBoxComponent(sw, iw); - let vbh = synthesizeViewBoxComponent(sh, ih); - let viewBox = ""; - if (vbw != null && vbh != null) { - viewBox = `0 0 ${vbw} ${vbh}`; - } - const dataURI = makeDataURI(sw, sh, viewBox); - embed.setAttribute("src", dataURI); + // Add the mockup for the blue rect inside of the img: + fakeImg.appendChild(makeRectMockup(sw, sh, iw, ih)); - container.appendChild(embed); + container.appendChild(fakeImg); } } } diff --git a/tests/wpt/tests/svg/coordinate-systems/viewBox-synthesized-in-img-001.tentative.html b/tests/wpt/tests/svg/coordinate-systems/viewBox-synthesized-in-img-001.tentative.html index 85b555da050..4496be9a5c2 100644 --- a/tests/wpt/tests/svg/coordinate-systems/viewBox-synthesized-in-img-001.tentative.html +++ b/tests/wpt/tests/svg/coordinate-systems/viewBox-synthesized-in-img-001.tentative.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <meta charset="utf-8"> +<meta name="timeout" content="long"> <title>Testcase for SVG viewBox synthesis when SVG is used as an image</title> <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com"> <link rel="help" href="https://www.w3.org/TR/SVG/coords.html#ViewBoxAttribute"> @@ -15,9 +16,14 @@ <body> <script> function makeDataURI(width, height) { - let uri = "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' "; - uri += `width='${width}' height='${height}'>`; - uri += "<rect fill='blue' x='2' y='2' height='6' width='6'/></svg>"; + let uri = "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'"; + if (width != "") { + uri += ` width='${width}'`; + } + if (height != "") { + uri += ` height='${height}'`; + } + uri += "><rect fill='blue' x='2' y='2' height='6' width='6'/></svg>"; return uri; } @@ -38,8 +44,8 @@ for (sh of SVG_SIZE_VALS_TO_TEST) { // Generate a new container element at the start and every N elems: if (elemIdx % NUM_ELEMS_PER_ROW == 0) { - container = document.createElement("div"); - document.body.appendChild(container); + container = document.createElement("div"); + document.body.appendChild(container); } elemIdx++; diff --git a/tests/wpt/tests/svg/geometry/reftests/circle-calc-dynamic-viewport-ref.html b/tests/wpt/tests/svg/geometry/reftests/circle-calc-dynamic-viewport-ref.html new file mode 100644 index 00000000000..dfd1f609496 --- /dev/null +++ b/tests/wpt/tests/svg/geometry/reftests/circle-calc-dynamic-viewport-ref.html @@ -0,0 +1,18 @@ +<!doctype html> +<title>Changing container size of SVG with calc() cx/cy/r on <circle> (reference)</title> +<div id="hcontainer" style="width: 100px; height: 100px; position: absolute"> + <svg width="100" height="100"> + <circle cy="50" r="100"/> + </svg> + <svg width="100" height="100"> + <circle cx="50" cy="50" r="50"/> + </svg> +</div> +<div id="vcontainer" style="width: 100px; height: 100px; position: absolute; left: 116px"> + <svg width="100" height="100"> + <circle cx="50" r="100"/> + </svg> + <svg width="100" height="100"> + <circle cy="50" cy="50" r="50"/> + </svg> +</div> diff --git a/tests/wpt/tests/svg/geometry/reftests/circle-calc-dynamic-viewport.html b/tests/wpt/tests/svg/geometry/reftests/circle-calc-dynamic-viewport.html new file mode 100644 index 00000000000..cff8915d6f0 --- /dev/null +++ b/tests/wpt/tests/svg/geometry/reftests/circle-calc-dynamic-viewport.html @@ -0,0 +1,29 @@ +<!doctype html> +<html class="reftest-wait"> +<title>Changing container size of SVG with calc() cx/cy/r on <circle></title> +<link rel="match" href="circle-calc-dynamic-viewport-ref.html"> +<script src="/common/rendering-utils.js"></script> +<script src="/common/reftest-wait.js"></script> +<div id="hcontainer" style="width: 50px; height: 100px; position: absolute"> + <svg width="100%" height="100%"> + <circle cy="50" style="r: calc(50% + 50px)"/> + </svg> + <svg width="100%" height="100%"> + <circle style="cx: calc(25% + 25px)" cy="50" r="50"/> + </svg> +</div> +<div id="vcontainer" style="width: 100px; height: 50px; position: absolute; left: 116px"> + <svg width="100%" height="100%"> + <circle cx="50" style="r: calc(50% + 50px)"/> + </svg> + <svg width="100%" height="100%"> + <circle cy="50" style="cy: calc(25% + 25px)" r="50"/> + </svg> +</div> +<script> + waitForAtLeastOneFrame().then(() => { + document.getElementById('hcontainer').style.width = '100px'; + document.getElementById('vcontainer').style.height = '100px'; + takeScreenshot(); + }); +</script> diff --git a/tests/wpt/tests/svg/geometry/reftests/ellipse-calc-dynamic-viewport-ref.html b/tests/wpt/tests/svg/geometry/reftests/ellipse-calc-dynamic-viewport-ref.html new file mode 100644 index 00000000000..70576349bc0 --- /dev/null +++ b/tests/wpt/tests/svg/geometry/reftests/ellipse-calc-dynamic-viewport-ref.html @@ -0,0 +1,18 @@ +<!doctype html> +<title>Changing container size of SVG with calc() cx/cy/rx/ry on <ellipse> (reference)</title> +<div id="hcontainer" style="width: 100px; height: 100px; position: absolute"> + <svg width="100" height="100"> + <ellipse cy="50" rx="100" ry="50"/> + </svg> + <svg width="100" height="100"> + <ellipse cx="50" cy="50" rx="50" ry="50"/> + </svg> +</div> +<div id="vcontainer" style="width: 100px; height: 100px; position: absolute; left: 116px"> + <svg width="100" height="100"> + <ellipse cx="50" rx="50" ry="100"/> + </svg> + <svg width="100%" height="100%"> + <ellipse cx="50" cy="50" rx="50" ry="50"/> + </svg> +</div> diff --git a/tests/wpt/tests/svg/geometry/reftests/ellipse-calc-dynamic-viewport.html b/tests/wpt/tests/svg/geometry/reftests/ellipse-calc-dynamic-viewport.html new file mode 100644 index 00000000000..d817b788246 --- /dev/null +++ b/tests/wpt/tests/svg/geometry/reftests/ellipse-calc-dynamic-viewport.html @@ -0,0 +1,29 @@ +<!doctype html> +<html class="reftest-wait"> +<title>Changing container size of SVG with calc() cx/cy/rx/ry on <ellipse></title> +<link rel="match" href="ellipse-calc-dynamic-viewport-ref.html"> +<script src="/common/rendering-utils.js"></script> +<script src="/common/reftest-wait.js"></script> +<div id="hcontainer" style="width: 50px; height: 100px; position: absolute"> + <svg width="100%" height="100%"> + <ellipse cy="50" style="rx: calc(50% + 50px)" ry="50"/> + </svg> + <svg width="100%" height="100%"> + <ellipse style="cx: calc(25% + 25px)" cy="50" rx="50" ry="50"/> + </svg> +</div> +<div id="vcontainer" style="width: 100px; height: 50px; position: absolute; left: 116px"> + <svg width="100%" height="100%"> + <ellipse cx="50" rx="50" style="ry: calc(50% + 50px)"/> + </svg> + <svg width="100%" height="100%"> + <ellipse cx="50" style="cy: calc(25% + 25px)" rx="50" ry="50"/> + </svg> +</div> +<script> + waitForAtLeastOneFrame().then(() => { + document.getElementById('hcontainer').style.width = '100px'; + document.getElementById('vcontainer').style.height = '100px'; + takeScreenshot(); + }); +</script> diff --git a/tests/wpt/tests/svg/geometry/reftests/rect-calc-dynamic-viewport-ref.html b/tests/wpt/tests/svg/geometry/reftests/rect-calc-dynamic-viewport-ref.html new file mode 100644 index 00000000000..84971d4b811 --- /dev/null +++ b/tests/wpt/tests/svg/geometry/reftests/rect-calc-dynamic-viewport-ref.html @@ -0,0 +1,24 @@ +<!doctype html> +<title>Changing container size of SVG with calc() width/height/x/y/rx/ry on <rect> (reference)</title> +<div id="hcontainer" style="width: 100px; height: 100px; position: absolute"> + <svg width="100" height="100"> + <rect width="100" height="100"/> + </svg> + <svg width="100" height="100"> + <rect width="100" height="100" x="50"/> + </svg> + <svg width="100" height="100"> + <rect width="100" height="100" rx="50"/> + </svg> +</div> +<div id="vcontainer" style="width: 100px; height: 100px; position: absolute; left: 116px"> + <svg width="100" height="100"> + <rect width="100" height="100"/> + </svg> + <svg width="100" height="100"> + <rect width="100" height="100" y="50"/> + </svg> + <svg width="100" height="100"> + <rect width="100" height="100" ry="50"/> + </svg> +</div> diff --git a/tests/wpt/tests/svg/geometry/reftests/rect-calc-dynamic-viewport.html b/tests/wpt/tests/svg/geometry/reftests/rect-calc-dynamic-viewport.html new file mode 100644 index 00000000000..6fe39012511 --- /dev/null +++ b/tests/wpt/tests/svg/geometry/reftests/rect-calc-dynamic-viewport.html @@ -0,0 +1,35 @@ +<!doctype html> +<html class="reftest-wait"> +<title>Changing container size of SVG with calc() width/height/x/y/rx/ry on <rect></title> +<link rel="match" href="rect-calc-dynamic-viewport-ref.html"> +<script src="/common/rendering-utils.js"></script> +<script src="/common/reftest-wait.js"></script> +<div id="hcontainer" style="width: 50px; height: 100px; position: absolute"> + <svg width="100%" height="100%"> + <rect style="width: calc(50% + 50px)" height="100"/> + </svg> + <svg width="100%" height="100%"> + <rect width="100" height="100" style="x: calc(25% + 25px)"/> + </svg> + <svg width="100%" height="100%"> + <rect width="100" height="100" style="rx: calc(25% + 25px)"/> + </svg> +</div> +<div id="vcontainer" style="width: 100px; height: 50px; position: absolute; left: 116px"> + <svg width="100%" height="100%"> + <rect width="100" style="height: calc(50% + 50px)"/> + </svg> + <svg width="100%" height="100%"> + <rect width="100" height="100" style="y: calc(25% + 25px)"/> + </svg> + <svg width="100%" height="100%"> + <rect width="100" height="100" style="ry: calc(25% + 25px)"/> + </svg> +</div> +<script> + waitForAtLeastOneFrame().then(() => { + document.getElementById('hcontainer').style.width = '100px'; + document.getElementById('vcontainer').style.height = '100px'; + takeScreenshot(); + }); +</script> diff --git a/tests/wpt/tests/svg/painting/scripted/SVGMarkerElement-orientType-synchronization.html b/tests/wpt/tests/svg/painting/scripted/SVGMarkerElement-orientType-synchronization.html index 04142128310..a409183189a 100644 --- a/tests/wpt/tests/svg/painting/scripted/SVGMarkerElement-orientType-synchronization.html +++ b/tests/wpt/tests/svg/painting/scripted/SVGMarkerElement-orientType-synchronization.html @@ -26,4 +26,17 @@ test(function() { assert_equals(marker.getAttribute('orient'), '1'); assert_equals(marker.orientType.baseVal, SVGMarkerElement.SVG_MARKER_ORIENT_ANGLE); }, `${document.title}, setting orientAngle using valueInSpecifiedUnits`); + +test(function() { + const marker = document.createElementNS('http://www.w3.org/2000/svg', 'marker'); + assert_false(marker.hasAttribute('orient')); + + marker.setOrientToAuto(); + assert_equals(marker.getAttribute('orient'), 'auto'); + + marker.orientAngle.baseVal.convertToSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_UNSPECIFIED); + assert_true(marker.hasAttribute('orient')); + assert_equals(marker.getAttribute('orient'), '0'); + assert_equals(marker.orientType.baseVal, SVGMarkerElement.SVG_MARKER_ORIENT_ANGLE); +}, `${document.title}, setting orientAngle using convertToSpecifiedUnits`); </script> diff --git a/tests/wpt/tests/svg/path/reftests/path-zoom-ref.html b/tests/wpt/tests/svg/path/reftests/path-zoom-ref.html new file mode 100644 index 00000000000..4b09749e2c2 --- /dev/null +++ b/tests/wpt/tests/svg/path/reftests/path-zoom-ref.html @@ -0,0 +1,22 @@ +<!doctype html> +<html> +<style type="text/css"> + path { + stroke-width: 10px; + stroke: blue; + fill: lime; + } + svg { + width: 100px; + height: 100px; + border: 1px solid black; + background: red; + zoom: 400%; + } +</style> +<body> +<svg> + <path d="m 5 5 h90 v90 h-90 z"></path> +</svg> +</body> +</html> diff --git a/tests/wpt/tests/svg/path/reftests/path-zoom.html b/tests/wpt/tests/svg/path/reftests/path-zoom.html new file mode 100644 index 00000000000..281124334a2 --- /dev/null +++ b/tests/wpt/tests/svg/path/reftests/path-zoom.html @@ -0,0 +1,33 @@ +<!doctype html> +<html class="reftest-wait"> +<title>Test of dynamic zoom on path.</title> +<link rel="help" + href="https://www.w3.org/TR/SVG2/paths.html#PathElement"> +<link rel="match" href="path-zoom-ref.html"> +<script src="/common/reftest-wait.js"></script> +<script src="/common/rendering-utils.js"></script> +<style type="text/css"> + path { + stroke-width: 10px; + stroke: blue; + fill: lime; + } + svg { + width: 100px; + height: 100px; + border: 1px solid black; + background: red; + } +</style> +<script> +function Zoom() { + document.getElementById("changeMyZoom").style.zoom = "400%"; + takeScreenshot(); +} +</script> +<body onload="waitForAtLeastOneFrame().then(Zoom)"> +<svg id="changeMyZoom"> + <path d="m 5 5 h90 v90 h-90 z"></path> +</svg> +</body> +</html> diff --git a/tests/wpt/tests/tools/ci/commands.json b/tests/wpt/tests/tools/ci/commands.json index f26baddacad..7c54fb72cbf 100644 --- a/tests/wpt/tests/tools/ci/commands.json +++ b/tests/wpt/tests/tools/ci/commands.json @@ -78,5 +78,15 @@ "requirements": [ "requirements_tc.txt" ] + }, + "update-codeowners": { + "path": "update_codeowners.py", + "parser": "get_parser", + "script": "run_update_codeowners", + "help": "Update CODEOWNERS file", + "virtualenv": true, + "requirements": [ + "../wpt/requirements_metadata.txt" + ] } } diff --git a/tests/wpt/tests/tools/ci/requirements_tc.txt b/tests/wpt/tests/tools/ci/requirements_tc.txt index a7021667970..cb4ba194778 100644 --- a/tests/wpt/tests/tools/ci/requirements_tc.txt +++ b/tests/wpt/tests/tools/ci/requirements_tc.txt @@ -1,4 +1,4 @@ pygithub==2.6.1 pyyaml==6.0.1 requests==2.32.3 -taskcluster==68.0.4 +taskcluster==83.5.6 diff --git a/tests/wpt/tests/tools/ci/update_codeowners.py b/tests/wpt/tests/tools/ci/update_codeowners.py new file mode 100644 index 00000000000..4e36e2679bf --- /dev/null +++ b/tests/wpt/tests/tools/ci/update_codeowners.py @@ -0,0 +1,80 @@ +import argparse +import os +from typing import Optional, Set + +import requests + +from ..manifest import manifest +from ..wpt import metadata, virtualenv + +here = os.path.dirname(__file__) +wpt_root = os.path.abspath(os.path.join(here, os.pardir, os.pardir)) + + +def get_parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser() + parser.add_argument("--manifest", dest="manifest_path", help="Path to MANIFEST.json") + parser.add_argument("metadata_path", help="Path to wpt metadata repository") + return parser + + +def get_labels(interop_year: int = 2025) -> Set[str]: + data_url = "https://raw.githubusercontent.com/web-platform-tests/wpt.fyi/refs/heads/main/webapp/static/interop-data.json" + resp = requests.get(data_url) + resp.raise_for_status() + data = resp.json() + focus_areas = data[str(interop_year)]["focus_areas"] + labels = set() + for focus_area in focus_areas.values(): + labels |= set(focus_area["labels"]) + + return labels + + +def run_update_codeowners(venv: virtualenv.Virtualenv, + metadata_path: str, + manifest_path: Optional[str], + interop_year: int = 2025, + reviewer: Optional[str] = "@web-platform-tests/interop") -> int: + if manifest_path is None: + manifest_path = os.path.join(wpt_root, "MANIFEST.json") + wpt_manifest = manifest.load_and_update(wpt_root, manifest_path, "/") + + labels = get_labels(interop_year) + metadata_map = metadata.load_metadata_map(metadata_path) + tests_by_label = metadata.get_labelled_tests(metadata_map, + list(labels)) + all_labelled_tests = set() + for labelled_tests in tests_by_label.values(): + all_labelled_tests |= set(labelled_tests) + + test_lines = [] + for _test_type, rel_path, tests in wpt_manifest: + if any(test.id in all_labelled_tests for test in tests): + test_lines.append(f"{rel_path} {reviewer}\n") + + output = [] + start_line = "# GENERATED: interop-tests" + end_line = "# END GENERATED" + in_generated = False + found_generated = False + with open(os.path.join(wpt_root, "CODEOWNERS")) as f: + for line in f: + if not in_generated: + if line.strip() == start_line: + output.append(line) + found_generated = True + in_generated = True + output.extend(test_lines) + else: + output.append(line) + else: + if line.strip() == end_line: + in_generated = False + output.append(line) + if not found_generated: + output.extend(["\n", start_line + "\n"] + test_lines + [end_line + "\n"]) + with open(os.path.join(wpt_root, "CODEOWNERS"), "w") as f: + f.writelines(output) + + return 0 diff --git a/tests/wpt/tests/tools/requirements_mypy.txt b/tests/wpt/tests/tools/requirements_mypy.txt index 06fb778ea66..5edf2d9614d 100644 --- a/tests/wpt/tests/tools/requirements_mypy.txt +++ b/tests/wpt/tests/tools/requirements_mypy.txt @@ -1,5 +1,6 @@ mypy==1.14.0 mypy-extensions==1.0.0 +pydantic==2.10.6 toml==0.10.2 tomli==2.0.1 types-atomicwrites==1.4.5.1 diff --git a/tests/wpt/tests/tools/requirements_tests.txt b/tests/wpt/tests/tools/requirements_tests.txt index 9bb2dceafe4..833fdb3b876 100644 --- a/tests/wpt/tests/tools/requirements_tests.txt +++ b/tests/wpt/tests/tools/requirements_tests.txt @@ -2,5 +2,5 @@ httpx[http2]==0.27.2 json-e==4.7.0 jsonschema==4.17.3 pyyaml==6.0.1 -taskcluster==68.0.4 +taskcluster==83.5.6 mozterm==1.0.0 diff --git a/tests/wpt/tests/tools/wpt/android.py b/tests/wpt/tests/tools/wpt/android.py index b4720ada41b..cbde92b8d5c 100644 --- a/tests/wpt/tests/tools/wpt/android.py +++ b/tests/wpt/tests/tools/wpt/android.py @@ -288,8 +288,8 @@ def install(logger, dest=None, reinstall=False, prompt=True): if new_install: packages = ["platform-tools", - "build-tools;35.0.0", - "platforms;android-35", + "build-tools;36.0.0", + "platforms;android-36", "emulator"] install_android_packages(logger, paths, packages, prompt=prompt) diff --git a/tests/wpt/tests/tools/wpt/commands.json b/tests/wpt/tests/tools/wpt/commands.json index de825c79b76..72e1ec7d423 100644 --- a/tests/wpt/tests/tools/wpt/commands.json +++ b/tests/wpt/tests/tools/wpt/commands.json @@ -91,5 +91,25 @@ "requirements.txt", "requirements_android.txt" ] + }, + "metadata-validate": { + "path": "metadata.py", + "script": "run_validate", + "parser": "get_parser_validate", + "help": "Validate metadata from wpt-metadata", + "virtualenv": true, + "requirements": [ + "requirements_metadata.txt" + ] + }, + "metadata-list": { + "path": "metadata.py", + "script": "run_list", + "parser": "get_parser_list", + "help": "List metadata with given labels from wpt-metadata", + "virtualenv": true, + "requirements": [ + "requirements_metadata.txt" + ] } } diff --git a/tests/wpt/tests/tools/wpt/metadata.py b/tests/wpt/tests/tools/wpt/metadata.py new file mode 100644 index 00000000000..2e91da7c658 --- /dev/null +++ b/tests/wpt/tests/tools/wpt/metadata.py @@ -0,0 +1,158 @@ +import argparse +import logging +import os +import re +from typing import Any, Dict, List, Optional, Mapping, Sequence, Set, Union + +import pydantic +import yaml +from pydantic import BaseModel + + +from ..manifest import manifest +from .virtualenv import Virtualenv + +here = os.path.dirname(__file__) +wpt_root = os.path.abspath(os.path.join(here, os.pardir, os.pardir)) + +class UrlResultsModel(BaseModel): + model_config = pydantic.ConfigDict(extra='forbid') + + test: str + subtest: Optional[str] = None + status: Optional[str] = None + + +class UrlLinkModel(BaseModel): + model_config = pydantic.ConfigDict(extra='forbid') + + url: str + results: List[UrlResultsModel] + product: Optional[str] = None + + +class LabelResultsModel(BaseModel): + test: str + + +class LabelLinkModel(BaseModel): + label: str + results: List[LabelResultsModel] + + +class MetadataModel(BaseModel): + links: List[Union[LabelLinkModel, UrlLinkModel]] + + +def load_metadata_map(src_dir: str) -> Mapping[str, MetadataModel]: + rv = {} + for dir_path, dir_names, file_names in os.walk(src_dir): + if "META.yml" not in file_names: + continue + + id_prefix = os.path.relpath(dir_path, src_dir).replace(os.path.sep, "/") + "/" + if id_prefix[0] != "/": + id_prefix = "/" + id_prefix + meta_path = os.path.join(dir_path, "META.yml") + + with open(meta_path) as f: + data = yaml.safe_load(f) + try: + rv[id_prefix] = MetadataModel.model_validate(data) + except Exception as e: + logging.critical(f"Error validating metadata {meta_path}") + raise e + return rv + + +def get_all_tests(metadata_map: Mapping[str, MetadataModel]) -> Set[str]: + rv = set() + + for id_prefix, metadata in metadata_map.items(): + for link in metadata.links: + for result in link.results: + if result.test != "*": + test_id = id_prefix + result.test + rv.add(test_id) + return rv + + +def get_labelled_tests( + metadata_map: Mapping[str, MetadataModel], + label_patterns: Sequence[Union[str, re.Pattern[Any]]] +) -> Mapping[str, Set[str]]: + rv: Dict[str, Set[str]] = {} + for id_prefix, metadata in metadata_map.items(): + for link in metadata.links: + if isinstance(link, LabelLinkModel): + for label in label_patterns: + if (isinstance(label, str) and link.label == label or + isinstance(label, re.Pattern) and label.match(link.label) is not None): + if link.label not in rv: + rv[link.label] = set() + + for result in link.results: + rv[link.label].add(id_prefix + result.test) + break + return rv + + +def get_parser_validate() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser() + parser.add_argument("--manifest", dest="manifest_path", help="Path to MANIFEST.json") + parser.add_argument("metadata_path", help="Path to wpt metadata repository") + return parser + + +def run_validate(venv: Virtualenv, metadata_path: str, manifest_path: Optional[str] = None) -> int: + if manifest_path is None: + manifest_path = os.path.join(wpt_root, "MANIFEST.json") + wpt_manifest = manifest.load_and_update(wpt_root, manifest_path, "/") + metadata_map = load_metadata_map(metadata_path) + + metadata_tests = get_all_tests(metadata_map) + for _type, _rel_path, tests in wpt_manifest: + for test in tests: + metadata_tests.discard(test.id) + + if metadata_tests: + tests_str = "\n".join(metadata_map) + logging.error(f"The following tests were in metadata but not in the manifest:\n{tests_str}") + return 1 + + return 0 + + +def get_parser_list() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser() + parser.add_argument("--manifest", dest="manifest_path", help="Path to MANIFEST.json") + parser.add_argument("metadata_path", help="Path to wpt metadata repository") + parser.add_argument("labels", nargs="+", help="Regexp representing test labels to list") + return parser + + +def run_list(venv: Virtualenv, metadata_path: str, labels: List[str], manifest_path: Optional[str] = None) -> int: + if manifest_path is None: + manifest_path = os.path.join(wpt_root, "MANIFEST.json") + wpt_manifest = manifest.load_and_update(wpt_root, manifest_path, "/") + + metadata_map = load_metadata_map(metadata_path) + label_patterns = [re.compile(item) for item in labels] + tests_by_label = get_labelled_tests(metadata_map, label_patterns) + all_labelled_tests = set() + tests_by_id = {} + for labelled_tests in tests_by_label.values(): + all_labelled_tests |= set(labelled_tests) + + for test_type, _rel_path, tests in wpt_manifest: + for test in tests: + if test.id in all_labelled_tests: + tests_by_id[test.id] = (test_type, test) + + + for label in sorted(tests_by_label): + labelled_tests = tests_by_label[label] + print(f"{label}\t{len(labelled_tests)}") + for test in sorted(tests, key=lambda x:x.id): + print(f" {test}\t{tests_by_id[test.id][0]}") + return 0 diff --git a/tests/wpt/tests/tools/wpt/requirements_install.txt b/tests/wpt/tests/tools/wpt/requirements_install.txt index f7df06548c9..9da7570da49 100644 --- a/tests/wpt/tests/tools/wpt/requirements_install.txt +++ b/tests/wpt/tests/tools/wpt/requirements_install.txt @@ -1,2 +1,2 @@ mozinstall==2.1.0 -packaging==24.0 +packaging==25.0 diff --git a/tests/wpt/tests/tools/wptrunner/requirements.txt b/tests/wpt/tests/tools/wptrunner/requirements.txt index 4074b20618a..97b56937955 100644 --- a/tests/wpt/tests/tools/wptrunner/requirements.txt +++ b/tests/wpt/tests/tools/wptrunner/requirements.txt @@ -3,7 +3,7 @@ mozdebug==0.3.1 mozinfo==1.2.3 # https://bugzilla.mozilla.org/show_bug.cgi?id=1621226 mozlog==8.0.0 mozprocess==1.3.1 -packaging==24.0 +packaging==25.0 pillow==10.4.0; python_version < '3.9' pillow==11.1.0; python_version >= '3.9' requests==2.32.3 diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/servo.py b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/servo.py index d0bf0a38ea3..00d7eac0dfd 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/servo.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/servo.py @@ -113,6 +113,9 @@ class ServoWdspecBrowser(WebDriverBrowser): command = [self.binary, f"--webdriver={self.port}", "--hard-fail", + # See https://github.com/servo/servo/issues/30080. + # For some reason rustls does not like the certificate generated by the WPT tooling. + "--ignore-certificate-errors", "--headless"] + self.webdriver_args if self.binary_args: command += self.binary_args diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/servodriver.py b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/servodriver.py index bd16d7987e5..7121e1dafcc 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/servodriver.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/servodriver.py @@ -101,7 +101,7 @@ class ServoWebDriverBrowser(WebDriverBrowser): # For some reason rustls does not like the certificate generated by the WPT tooling. "--ignore-certificate-errors", "--window-size", "800x600", - "data:,", + "about:blank", ] ca_cert_path = server_config.ssl_config["ca_cert_path"] diff --git a/tests/wpt/tests/tools/wptserve/tests/functional/base.py b/tests/wpt/tests/tools/wptserve/tests/functional/base.py index f47308d88df..1897d224761 100644 --- a/tests/wpt/tests/tools/wptserve/tests/functional/base.py +++ b/tests/wpt/tests/tools/wptserve/tests/functional/base.py @@ -92,7 +92,7 @@ class TestUsingH2Server: self.server.start() self.client = httpx.Client(base_url=f'https://{self.server.host}:{self.server.port}', - http2=True, verify=False) + http2=True, verify=False, timeout=30) def teardown_method(self, test_method): self.client.close() diff --git a/tests/wpt/tests/ua-client-hints/useragentdata.https.tentative.any.js b/tests/wpt/tests/ua-client-hints/useragentdata.https.tentative.any.js new file mode 100644 index 00000000000..3af48ee416a --- /dev/null +++ b/tests/wpt/tests/ua-client-hints/useragentdata.https.tentative.any.js @@ -0,0 +1,12 @@ +// META: title=tests for navigator.userAgentData on Linux + +promise_test(() => { + return navigator.userAgentData.getHighEntropyValues(["platformVersion", "wow64"]).then( + hints => { + if (navigator.userAgentData.platform === "Linux") { + assert_true(hints.platformVersion === ""); + assert_equals(hints.wow64, false); + } + } + ); +}, "Platform version and wow64-ness on Linux should be fixed values"); diff --git a/tests/wpt/tests/viewport-segments/META.yml b/tests/wpt/tests/viewport-segments/META.yml new file mode 100644 index 00000000000..38eb8c0cb93 --- /dev/null +++ b/tests/wpt/tests/viewport-segments/META.yml @@ -0,0 +1,4 @@ +spec: https://drafts.csswg.org/css-viewport-1/ +suggested_reviewers: + - bokand + - chrishtr diff --git a/tests/wpt/tests/viewport-segments/README.md b/tests/wpt/tests/viewport-segments/README.md new file mode 100644 index 00000000000..50e724bd711 --- /dev/null +++ b/tests/wpt/tests/viewport-segments/README.md @@ -0,0 +1,2 @@ +This directory contains (tentative) tests for the +[Viewport Segments CSS](https://www.w3.org/TR/mediaqueries-5/#mf-horizontal-viewport-segments) specification and the [Viewport Segments JavaScript](https://drafts.csswg.org/css-viewport/#segments) specification. diff --git a/tests/wpt/tests/viewport-segments/WEB_FEATURES.yml b/tests/wpt/tests/viewport-segments/WEB_FEATURES.yml new file mode 100644 index 00000000000..ebb7d6a73d3 --- /dev/null +++ b/tests/wpt/tests/viewport-segments/WEB_FEATURES.yml @@ -0,0 +1,3 @@ +features: +- name: viewport-segments + files: "**" diff --git a/tests/wpt/tests/viewport-segments/viewport-segments-change-event.https.html b/tests/wpt/tests/viewport-segments/viewport-segments-change-event.https.html new file mode 100644 index 00000000000..f039d5514d0 --- /dev/null +++ b/tests/wpt/tests/viewport-segments/viewport-segments-change-event.https.html @@ -0,0 +1,51 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script> +'use strict'; + +promise_test(async (t) => { + t.add_cleanup(async () => { + await test_driver.clear_display_features(); + }); + + // There is always one segment the dimension of the viewport. + assert_true(matchMedia('(horizontal-viewport-segments: 1)').matches); + assert_true(matchMedia('(vertical-viewport-segments: 1)').matches); + + assert_false(matchMedia('(horizontal-viewport-segments: 2)').matches); + assert_false(matchMedia('(vertical-viewport-segments: 2)').matches); + + const horizontalViewportSegmentsMQL = window.matchMedia('(horizontal-viewport-segments: 2)'); + const verticalViewportSegmentsMQL = window.matchMedia('(vertical-viewport-segments: 2)'); + let promise = new Promise(resolve => { + horizontalViewportSegmentsMQL.addEventListener( + 'change', + () => { resolve(horizontalViewportSegmentsMQL.matches); }, + { once: true } + ); + }); + await test_driver.set_display_features([{ + orientation: 'vertical', maskLength: 20, offset: 20 + }]); + assert_true(await promise, 'The horizontal viewport segments media query should match.'); + + promise = new Promise(resolve => { + verticalViewportSegmentsMQL.addEventListener( + 'change', + () => { resolve(verticalViewportSegmentsMQL.matches); }, + { once: true } + ); + }); + await test_driver.set_display_features([{ + orientation: 'horizontal', maskLength: 20, offset: 20 + }]); + assert_true(await promise, 'The vertical viewport segments media query should match.'); +}, 'Tests the Viewport Segments Media Query change event handler.'); +</script> +</head> +<body> +</body> +</html> diff --git a/tests/wpt/tests/viewport-segments/viewport-segments-env-variables.https.html b/tests/wpt/tests/viewport-segments/viewport-segments-env-variables.https.html new file mode 100644 index 00000000000..6004398b2ce --- /dev/null +++ b/tests/wpt/tests/viewport-segments/viewport-segments-env-variables.https.html @@ -0,0 +1,141 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<style> + /* The following styles set the margin top/left/bottom/right to the + values where the display feature between segments is, and the width and + height of the div to the width and height of the display feature */ + @media (horizontal-viewport-segments: 2) { + div { + margin: env(viewport-segment-top 0 0, 10px) + env(viewport-segment-left 1 0, 10px) + env(viewport-segment-bottom 0 0, 10px) + env(viewport-segment-right 0 0, 10px); + width: calc(env(viewport-segment-left 1 0, 10px) - + env(viewport-segment-right 0 0, 0px)); + height: env(viewport-segment-height 0 0, 10px); + } + } + + @media (vertical-viewport-segments: 2) { + div { + margin: env(viewport-segment-bottom 0 0, 11px) + env(viewport-segment-right 0 1, 11px) + env(viewport-segment-top 0 1, 11px) + env(viewport-segment-left 0 0, 11px); + width: env(viewport-segment-width 0 0, 11px); + height: calc(env(viewport-segment-top 0 1, 11px) - + env(viewport-segment-bottom 0 0, 0px)); + } + } + + @media (horizontal-viewport-segments: 1) and + (vertical-viewport-segments: 1) { + div { opacity: 0.1; margin: 1px; width: 1px; height: 1px; } + } + + @media (horizontal-viewport-segments: 2) and + (vertical-viewport-segments: 1) { + div { opacity: 0.2; } + } + + @media (horizontal-viewport-segments: 1) and + (vertical-viewport-segments: 2) { + div { opacity: 0.3; } + } +</style> +</head> +<body> + <div id='target'></div> +</body> +<script> +'use strict'; + +promise_test(async (t) => { + t.add_cleanup(async () => { + await test_driver.clear_display_features(); + }); + + const displayFeatureLength = 10; + const target = document.querySelector('#target'); + const targetComputedStyle = window.getComputedStyle(target); + assert_equals(targetComputedStyle.marginTop, '1px'); + assert_equals(targetComputedStyle.marginRight,'1px'); + assert_equals(targetComputedStyle.marginBottom,'1px'); + assert_equals(targetComputedStyle.marginLeft, '1px'); + assert_equals(targetComputedStyle.width, '1px'); + assert_equals(targetComputedStyle.height, '1px'); + assert_equals(targetComputedStyle.opacity, '0.1'); + + const horizontalViewportSegmentsMQL = window.matchMedia('(horizontal-viewport-segments: 2)'); + let promise = new Promise(resolve => { + horizontalViewportSegmentsMQL.addEventListener( + 'change', + () => { resolve(horizontalViewportSegmentsMQL.matches); }, + { once: true } + ); + }); + await test_driver.set_display_features([{ + orientation: 'vertical', + maskLength: displayFeatureLength, + offset: window.innerWidth / 2 - displayFeatureLength / 2 + }]); + assert_true(await promise); + assert_equals(targetComputedStyle.marginTop, '0px'); + assert_equals(targetComputedStyle.marginRight, + window.innerWidth / 2 + displayFeatureLength / 2 + 'px'); + assert_equals(targetComputedStyle.marginBottom, window.innerHeight + 'px'); + assert_equals(targetComputedStyle.marginLeft, + window.innerWidth / 2 - displayFeatureLength / 2 + 'px'); + assert_equals(targetComputedStyle.width, displayFeatureLength + 'px'); + assert_equals(targetComputedStyle.height, window.innerHeight + 'px'); + assert_equals(targetComputedStyle.opacity, '0.2'); + + + const verticalViewportSegmentsMQL = window.matchMedia('(vertical-viewport-segments: 2)'); + promise = new Promise(resolve => { + verticalViewportSegmentsMQL.addEventListener( + 'change', + () => { resolve(verticalViewportSegmentsMQL.matches); }, + { once: true } + ); + }); + await test_driver.set_display_features([{ + orientation: 'horizontal', + maskLength: displayFeatureLength, + offset: window.innerHeight / 2 - displayFeatureLength / 2 + }]); + assert_true(await promise); + assert_equals(targetComputedStyle.marginTop, + window.innerHeight / 2 - displayFeatureLength / 2 + 'px'); + assert_equals(targetComputedStyle.marginRight, window.innerWidth + 'px'); + assert_equals(targetComputedStyle.marginBottom, + window.innerHeight / 2 + displayFeatureLength / 2 + 'px'); + assert_equals(targetComputedStyle.marginLeft, '0px'); + assert_equals(targetComputedStyle.width, window.innerWidth + 'px'); + assert_equals(targetComputedStyle.height, displayFeatureLength + 'px'); + assert_equals(targetComputedStyle.opacity, '0.3'); + + const oneSegmentMQL = window.matchMedia('(vertical-viewport-segments: 1)'); + promise = new Promise(resolve => { + oneSegmentMQL.addEventListener( + 'change', + () => { resolve(oneSegmentMQL.matches); }, + { once: true } + ); + }); + await test_driver.clear_display_features(); + assert_true(await promise); + assert_equals(targetComputedStyle.marginTop, '1px'); + assert_equals(targetComputedStyle.marginRight,'1px'); + assert_equals(targetComputedStyle.marginBottom,'1px'); + assert_equals(targetComputedStyle.marginLeft, '1px'); + assert_equals(targetComputedStyle.width, '1px'); + assert_equals(targetComputedStyle.height, '1px'); + assert_equals(targetComputedStyle.opacity, '0.1'); + +}, 'Tests the Viewport Segments Media Query change event handler.'); +</script> +</html> diff --git a/tests/wpt/tests/viewport-segments/viewport-segments-segments-property.https.html b/tests/wpt/tests/viewport-segments/viewport-segments-segments-property.https.html new file mode 100644 index 00000000000..852e49fa7fe --- /dev/null +++ b/tests/wpt/tests/viewport-segments/viewport-segments-segments-property.https.html @@ -0,0 +1,97 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +</head> +<body> +<iframe src="about:blank"></iframe> +</body> +<script> +'use strict'; + +promise_test(async (t) => { + t.add_cleanup(async () => { + await test_driver.clear_display_features(); + }); + + // When the viewport is not divided the segments property should be null. + assert_equals(viewport.segments, null); + // iframes do not receive segments information. + assert_equals(window.frames[0].viewport.segments, null); + + const displayFeatureLength = 10; + const horizontalViewportSegmentsMQL = window.matchMedia('(horizontal-viewport-segments: 2)'); + let promise = new Promise(resolve => { + horizontalViewportSegmentsMQL.addEventListener( + 'change', + () => { resolve(horizontalViewportSegmentsMQL.matches); }, + { once: true } + ); + }); + await test_driver.set_display_features([{ + orientation: 'vertical', + maskLength: displayFeatureLength, + offset: window.innerWidth / 2 - displayFeatureLength / 2 + }]); + assert_true(await promise); + assert_equals(viewport.segments.length, 2); + const segmentLeft = viewport.segments[0]; + assert_equals(segmentLeft.x, 0); + assert_equals(segmentLeft.y, 0); + assert_equals(segmentLeft.width, window.innerWidth / 2 - displayFeatureLength / 2); + assert_equals(segmentLeft.height, window.innerHeight); + const segmentRight = viewport.segments[1]; + assert_equals(segmentRight.x, window.innerWidth / 2 + displayFeatureLength / 2); + assert_equals(segmentRight.y, 0); + assert_equals(segmentRight.width, window.innerWidth / 2 - displayFeatureLength / 2); + assert_equals(segmentRight.height, window.innerHeight); + // iframes do not receive segments information. + assert_equals(window.frames[0].viewport.segments, null); + + + const verticalViewportSegmentsMQL = window.matchMedia('(vertical-viewport-segments: 2)'); + promise = new Promise(resolve => { + verticalViewportSegmentsMQL.addEventListener( + 'change', + () => { resolve(verticalViewportSegmentsMQL.matches); }, + { once: true } + ); + }); + await test_driver.set_display_features([{ + orientation: 'horizontal', + maskLength: displayFeatureLength, + offset: window.innerHeight / 2 - displayFeatureLength / 2 + }]); + assert_true(await promise); + assert_equals(viewport.segments.length, 2); + const segmentTop = viewport.segments[0]; + assert_equals(segmentTop.x, 0); + assert_equals(segmentTop.y, 0); + assert_equals(segmentTop.width, window.innerWidth); + assert_equals(segmentTop.height, window.innerHeight / 2 - displayFeatureLength / 2); + const segmentBottom = viewport.segments[1]; + assert_equals(segmentBottom.x, 0); + assert_equals(segmentBottom.y, window.innerHeight / 2 + displayFeatureLength / 2); + assert_equals(segmentBottom.width, window.innerWidth); + assert_equals(segmentBottom.height, window.innerHeight / 2 - displayFeatureLength / 2); + // iframes do not receive segments information. + assert_equals(window.frames[0].viewport.segments, null); + + const oneSegmentMQL = window.matchMedia('(vertical-viewport-segments: 1)'); + promise = new Promise(resolve => { + oneSegmentMQL.addEventListener( + 'change', + () => { resolve(oneSegmentMQL.matches); }, + { once: true } + ); + }); + await test_driver.clear_display_features(); + assert_true(await promise); + assert_equals(viewport.segments, null); + // iframes do not receive segments information. + assert_equals(window.frames[0].viewport.segments, null); + +}, 'Tests the Viewport Segments Media Query change event handler.'); +</script> +</html> diff --git a/tests/wpt/tests/webcodecs/audio-data.any.js b/tests/wpt/tests/webcodecs/audio-data.any.js index c18606e2b70..dd199c485fb 100644 --- a/tests/wpt/tests/webcodecs/audio-data.any.js +++ b/tests/wpt/tests/webcodecs/audio-data.any.js @@ -88,6 +88,15 @@ test(t => { test(t => { let data = createDefaultAudioData(); + data.close(); + assert_equals(data.sampleRate, 0); + assert_equals(data.numberOfFrames, 0); + assert_equals(data.numberOfChannels, 0); + assert_equals(data.format, null); +}, 'AudioData close'); + +test(t => { + let data = createDefaultAudioData(); let clone = data.clone(); diff --git a/tests/wpt/tests/webcodecs/audioDecoder-codec-specific.https.any.js b/tests/wpt/tests/webcodecs/audioDecoder-codec-specific.https.any.js index 32eb6598c66..b0791813f21 100644 --- a/tests/wpt/tests/webcodecs/audioDecoder-codec-specific.https.any.js +++ b/tests/wpt/tests/webcodecs/audioDecoder-codec-specific.https.any.js @@ -356,6 +356,9 @@ promise_test(async t => { let outputs = 0; callbacks.output = frame => { + if (outputs === 0) { + assert_equals(frame.timestamp, -42); + } outputs++; frame.close(); }; @@ -368,7 +371,30 @@ promise_test(async t => { await decoder.flush(); assert_equals(outputs, CONFIG.codec === 'vorbis' ? 1 : 2, 'outputs'); -}, 'Test decoding a with negative timestamp'); +}, 'Test decoding a with a negative timestamp'); + +promise_test(async t => { + const callbacks = {}; + const decoder = createAudioDecoder(t, callbacks); + + let outputs = 0; + callbacks.output = frame => { + if (outputs === 0) { + assert_equals(frame.timestamp, 42); + } + outputs++; + frame.close(); + }; + + decoder.configure(CONFIG); + decoder.decode(new EncodedAudioChunk( + {type: 'key', timestamp: 42, data: CHUNK_DATA[0]})); + decoder.decode(new EncodedAudioChunk( + {type: 'key', timestamp: CHUNKS[0].duration + 42, data: CHUNK_DATA[1]})); + + await decoder.flush(); + assert_equals(outputs, CONFIG.codec === 'vorbis' ? 1 : 2, 'outputs'); +}, 'Test decoding a with a positive timestamp'); promise_test(async t => { const callbacks = {}; diff --git a/tests/wpt/tests/webdriver/tests/support/helpers.py b/tests/wpt/tests/webdriver/tests/support/helpers.py index 0bd27a39acd..f4763deca14 100644 --- a/tests/wpt/tests/webdriver/tests/support/helpers.py +++ b/tests/wpt/tests/webdriver/tests/support/helpers.py @@ -80,6 +80,10 @@ def cleanup_session(session): session.window_handle = current_window + # Do not try to clean up already ended session. + if session.session_id is None: + return + _restore_timeouts(session) _ensure_valid_window(session) _dismiss_user_prompts(session) diff --git a/tests/wpt/tests/webnn/conformance_tests/dequantizeLinear.https.any.js b/tests/wpt/tests/webnn/conformance_tests/dequantizeLinear.https.any.js index 35c15055661..900bb57bacf 100644 --- a/tests/wpt/tests/webnn/conformance_tests/dequantizeLinear.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/dequantizeLinear.https.any.js @@ -705,6 +705,65 @@ const dequantizeLinearTests = [ } } }, + , + { + 'name': + 'quantizeLinear then dequantizeLinear with different scale and zero_point', + 'graph': { + 'inputs': { + 'quantizeLinearInput': { + 'data': [-1.1202747821807861, 13.163229942321777], + 'descriptor': {shape: [2], dataType: 'float32'}, + 'constant': false + }, + 'quantizeLinearScale': { + 'data': [0.1202747821807861, 1.2800687253475189], + 'descriptor': {shape: [2], dataType: 'float32'}, + 'constant': true + }, + 'quantizeLinearZeroPoint': { + 'data': [12, -21], + 'descriptor': {shape: [2], dataType: 'int8'}, + 'constant': true + }, + 'dequantizeLinearScale': { + 'data': [1.1202747821807861, 0.2800687253475189], + 'descriptor': {shape: [2], dataType: 'float32'}, + 'constant': true + }, + 'dequantizeLinearZeroPoint': { + 'data': [35, -24], + 'descriptor': {shape: [2], dataType: 'int8'}, + 'constant': true + } + }, + 'operators': [ + { + 'name': 'quantizeLinear', + 'arguments': [ + {'input': 'quantizeLinearInput'}, {'scale': 'quantizeLinearScale'}, + {'zeroPoint': 'quantizeLinearZeroPoint'} + ], + 'outputs': 'quantizeLinearOutput' + }, + { + 'name': 'dequantizeLinear', + 'arguments': [ + {'input': 'quantizeLinearOutput'}, + {'scale': 'dequantizeLinearScale'}, + {'zeroPoint': 'dequantizeLinearZeroPoint'} + ], + 'outputs': 'dequantizeLinearOutput' + } + ], + 'expectedOutputs': { + 'dequantizeLinearOutput': { + 'data': [-35.848793029785156, 3.6408934593200684], + 'descriptor': {shape: [2], dataType: 'float32'} + } + } + } + }, ]; if (navigator.ml) { diff --git a/tests/wpt/tests/webnn/conformance_tests/qdq_subgraph.https.any.js b/tests/wpt/tests/webnn/conformance_tests/qdq_subgraph.https.any.js new file mode 100644 index 00000000000..8f6f2246b04 --- /dev/null +++ b/tests/wpt/tests/webnn/conformance_tests/qdq_subgraph.https.any.js @@ -0,0 +1,569 @@ +// META: title=test WebNN `dequantization -> operators -> quantization` subgraph +// META: global=window,worker +// META: variant=?cpu +// META: variant=?gpu +// META: variant=?npu +// META: script=../resources/utils.js +// META: timeout=long + +'use strict'; + +const subgraphTests = [ + { + 'name': 'quantized conv2d', + 'graph': { + 'inputs': { + 'input': { + 'data': [0.05605664849281311, 0.7114229798316956, 0.6529743671417236], + 'descriptor': {shape: [1, 1, 1, 3], dataType: 'float32'}, + 'constant': false + }, + 'inputScale': { + 'data': [0.003921568859368563], + 'descriptor': {shape: [1], dataType: 'float32'}, + 'constant': true + }, + 'inputZeroPoint': { + 'data': [-128], + 'descriptor': {shape: [1], dataType: 'int8'}, + 'constant': true + }, + 'filter': { + 'data': [2, 3, 4], + 'descriptor': {shape: [1, 1, 1, 3], dataType: 'int8'}, + 'constant': true + }, + 'filterScale': { + 'data': [0.023458752938762234], + 'descriptor': {shape: [1], dataType: 'float32'}, + 'constant': true + }, + 'filterZeroPoint': { + 'data': [0], + 'descriptor': {shape: [1], dataType: 'int8'}, + 'constant': true + }, + 'bias': { + 'data': [1], + 'descriptor': {shape: [1], dataType: 'int32'}, + 'constant': true + }, + 'biasScale': { + 'data': [0.000091995115004270], + 'descriptor': {shape: [1], dataType: 'float32'}, + 'constant': true + }, + 'biasZeroPoint': { + 'data': [0], + 'descriptor': {shape: [1], dataType: 'int32'}, + 'constant': true + }, + 'outputScale': { + 'data': [0.003921568859368563], + 'descriptor': {shape: [1], dataType: 'float32'}, + 'constant': true + }, + 'outputZeroPoint': { + 'data': [0], + 'descriptor': {shape: [1], dataType: 'int8'}, + 'constant': true + }, + }, + 'operators': [ + { + 'name': 'quantizeLinear', + 'arguments': [ + {'input': 'input'}, + {'scale': 'inputScale', 'zeroPoint': 'inputZeroPoint'} + ], + 'outputs': 'quantizedInput' + }, + { + 'name': 'dequantizeLinear', + 'arguments': [ + {'input': 'quantizedInput'}, + {'scale': 'inputScale', 'zeroPoint': 'inputZeroPoint'} + ], + 'outputs': 'dequantizedInput' + }, + { + 'name': 'dequantizeLinear', + 'arguments': [ + {'input': 'filter'}, + {'scale': 'filterScale', 'zeroPoint': 'filterZeroPoint'} + ], + 'outputs': 'dequantizedFilter' + }, + { + 'name': 'dequantizeLinear', + 'arguments': [ + {'input': 'bias'}, + {'scale': 'biasScale', 'zeroPoint': 'biasZeroPoint'} + ], + 'outputs': 'dequantizedBias' + }, + { + 'name': 'conv2d', + 'arguments': [ + {'input': 'dequantizedInput'}, {'filter': 'dequantizedFilter'}, { + 'options': { + 'inputLayout': 'nhwc', + 'bias': 'dequantizedBias', + 'filterLayout': 'ohwi' + } + } + ], + 'outputs': 'conv2dOutput' + }, + { + 'name': 'quantizeLinear', + 'arguments': [ + {'input': 'conv2dOutput'}, + {'scale': 'outputScale', 'zeroPoint': 'outputZeroPoint'} + ], + 'outputs': 'quantizedConv2dOutput' + }, + { + 'name': 'dequantizeLinear', + 'arguments': [ + {'input': 'quantizedConv2dOutput'}, + {'scale': 'outputScale', 'zeroPoint': 'outputZeroPoint'} + ], + 'outputs': 'output' + } + ], + 'expectedOutputs': { + 'output': { + 'data': [0.11372549831867218], + 'descriptor': {shape: [1, 1, 1, 1], dataType: 'float32'} + } + } + } + }, + { + 'name': 'quantized element-wise binary add', + 'graph': { + 'inputs': { + 'inputA': { + 'data': [ + 0.41167140007019043, 0.0479511022567749, 0.33355462551116943, + 0.19882695376873016, 0.41167140007019043, 0.07934240251779556, + ], + 'descriptor': {shape: [1, 1, 2, 3], dataType: 'float32'}, + 'constant': false + }, + 'inputAScale': { + 'data': [0.003921568859368563], + 'descriptor': {shape: [1], dataType: 'float32'}, + 'constant': true + }, + 'inputAZeroPoint': { + 'data': [-128], + 'descriptor': {shape: [1], dataType: 'int8'}, + 'constant': true + }, + 'inputB': { + 'data': [ + 2, 7, 8, 11, 5, 23, + ], + 'descriptor': {shape: [1, 1, 2, 3], dataType: 'int8'}, + 'constant': true + }, + 'inputBScale': { + 'data': [0.003921568859368563], + 'descriptor': {shape: [1], dataType: 'float32'}, + 'constant': true + }, + 'inputBZeroPoint': { + 'data': [-128], + 'descriptor': {shape: [1], dataType: 'int8'}, + 'constant': true + }, + 'outputScale': { + 'data': [0.003921568859368563], + 'descriptor': {shape: [1], dataType: 'float32'}, + 'constant': true + }, + 'outputZeroPoint': { + 'data': [-128], + 'descriptor': {shape: [1], dataType: 'int8'}, + 'constant': true + }, + }, + 'operators': [ + { + 'name': 'quantizeLinear', + 'arguments': [ + {'input': 'inputA'}, + {'scale': 'inputAScale', 'zeroPoint': 'inputAZeroPoint'} + ], + 'outputs': 'quantizedInputA' + }, + { + 'name': 'dequantizeLinear', + 'arguments': [ + {'input': 'quantizedInputA'}, + {'scale': 'inputAScale', 'zeroPoint': 'inputAZeroPoint'} + ], + 'outputs': 'dequantizedInputA' + }, + { + 'name': 'dequantizeLinear', + 'arguments': [ + {'input': 'inputB'}, + {'scale': 'inputBScale', 'zeroPoint': 'inputBZeroPoint'} + ], + 'outputs': 'dequantizedInputB' + }, + { + 'name': 'add', + 'arguments': [ + {'inputA': 'dequantizedInputA'}, {'inputB': 'dequantizedInputB'} + ], + 'outputs': 'addOutput' + }, + { + 'name': 'quantizeLinear', + 'arguments': [ + {'input': 'addOutput'}, + {'scale': 'outputScale', 'zeroPoint': 'outputZeroPoint'} + ], + 'outputs': 'quantizedAddOutput' + }, + { + 'name': 'dequantizeLinear', + 'arguments': [ + {'input': 'quantizedAddOutput'}, + {'scale': 'outputScale', 'zeroPoint': 'outputZeroPoint'} + ], + 'outputs': 'output' + } + ], + 'expectedOutputs': { + 'output': { + 'data': [ + 0.9215686917304993, 0.5764706134796143, 0.8666667342185974, + 0.7450980544090271, 0.9333333969116211, 0.6705882549285889, + ], + 'descriptor': {shape: [1, 1, 2, 3], dataType: 'float32'} + } + } + } + }, + { + 'name': 'quantized element-wise binary sub', + 'graph': { + 'inputs': { + 'inputA': { + 'data': [ + 15.57776927947998, -62.7008056640625, + 82.55709075927734, -74.90638732910156, + ], + 'descriptor': {shape: [2, 2], dataType: 'float32'}, + 'constant': false + }, + 'inputAScale': { + 'data': [0.617084980010986], + 'descriptor': {shape: [1], dataType: 'float32'}, + 'constant': true + }, + 'inputAZeroPoint': { + 'data': [120], + 'descriptor': {shape: [1], dataType: 'int8'}, + 'constant': true + }, + 'inputB': { + 'data': [ + 12, 9, 2, 43, + ], + 'descriptor': {shape: [2, 2], dataType: 'int8'}, + 'constant': true + }, + 'inputBScale': { + 'data': [0.617084980010986], + 'descriptor': {shape: [1], dataType: 'float32'}, + 'constant': true + }, + 'inputBZeroPoint': { + 'data': [120], + 'descriptor': {shape: [1], dataType: 'int8'}, + 'constant': true + }, + 'outputScale': { + 'data': [0.617084980010986], + 'descriptor': {shape: [1], dataType: 'float32'}, + 'constant': true + }, + 'outputZeroPoint': { + 'data': [120], + 'descriptor': {shape: [1], dataType: 'int8'}, + 'constant': true + }, + }, + 'operators': [ + { + 'name': 'quantizeLinear', + 'arguments': [ + {'input': 'inputA'}, + {'scale': 'inputAScale', 'zeroPoint': 'inputAZeroPoint'} + ], + 'outputs': 'quantizedInputA' + }, + { + 'name': 'dequantizeLinear', + 'arguments': [ + {'input': 'quantizedInputA'}, + {'scale': 'inputAScale', 'zeroPoint': 'inputAZeroPoint'} + ], + 'outputs': 'dequantizedInputA' + }, + { + 'name': 'dequantizeLinear', + 'arguments': [ + {'input': 'inputB'}, + {'scale': 'inputBScale', 'zeroPoint': 'inputBZeroPoint'} + ], + 'outputs': 'dequantizedInputB' + }, + { + 'name': 'sub', + 'arguments': [ + {'inputA': 'dequantizedInputA'}, {'inputB': 'dequantizedInputB'} + ], + 'outputs': 'subOutput' + }, + { + 'name': 'quantizeLinear', + 'arguments': [ + {'input': 'subOutput'}, + {'scale': 'outputScale', 'zeroPoint': 'outputZeroPoint'} + ], + 'outputs': 'quantizedSubOutput' + }, + { + 'name': 'dequantizeLinear', + 'arguments': [ + {'input': 'quantizedSubOutput'}, + {'scale': 'outputScale', 'zeroPoint': 'outputZeroPoint'} + ], + 'outputs': 'output' + } + ], + 'expectedOutputs': { + 'output': { + 'data': [ + 4.319594860076904, 4.319594860076904, 4.319594860076904, + -27.1517391204834, + ], + 'descriptor': {shape: [2, 2], dataType: 'float32'} + } + } + } + }, + { + 'name': 'quantized element-wise binary mul', + 'graph': { + 'inputs': { + 'inputA': { + 'data': [ + 49.1112174987793, 11.907459259033203, 21.115795135498047, + 70.7490005493164, 94.51628112792969, 93.78905487060547, + 11.178888320922852, 32.80592346191406, 83.31897735595703, + 91.1207275390625, 0.11235756427049637, 15.397955894470215, + ], + 'descriptor': {shape: [2, 3, 2], dataType: 'float32'}, + 'constant': false + }, + 'inputAScale': { + 'data': [0.003921568859368563], + 'descriptor': {shape: [1], dataType: 'float32'}, + 'constant': true + }, + 'inputAZeroPoint': { + 'data': [127], + 'descriptor': {shape: [1], dataType: 'int8'}, + 'constant': true + }, + 'inputB': { + 'data': [ + 2, 17, 38, 41, 5, 3, 2, 17, 38, 41, 5, 3, + ], + 'descriptor': {shape: [2, 3, 2], dataType: 'int8'}, + 'constant': true + }, + 'inputBScale': { + 'data': [0.003921568859368563], + 'descriptor': {shape: [1], dataType: 'float32'}, + 'constant': true + }, + 'inputBZeroPoint': { + 'data': [127], + 'descriptor': {shape: [1], dataType: 'int8'}, + 'constant': true + }, + 'outputScale': { + 'data': [0.003921568859368563], + 'descriptor': {shape: [1], dataType: 'float32'}, + 'constant': true + }, + 'outputZeroPoint': { + 'data': [127], + 'descriptor': {shape: [1], dataType: 'int8'}, + 'constant': true + }, + }, + 'operators': [ + { + 'name': 'quantizeLinear', + 'arguments': [ + {'input': 'inputA'}, + {'scale': 'inputAScale', 'zeroPoint': 'inputAZeroPoint'} + ], + 'outputs': 'quantizedInputA' + }, + { + 'name': 'dequantizeLinear', + 'arguments': [ + {'input': 'quantizedInputA'}, + {'scale': 'inputAScale', 'zeroPoint': 'inputAZeroPoint'} + ], + 'outputs': 'dequantizedInputA' + }, + { + 'name': 'dequantizeLinear', + 'arguments': [ + {'input': 'inputB'}, + {'scale': 'inputBScale', 'zeroPoint': 'inputBZeroPoint'} + ], + 'outputs': 'dequantizedInputB' + }, + { + 'name': 'add', + 'arguments': [ + {'inputA': 'dequantizedInputA'}, {'inputB': 'dequantizedInputB'} + ], + 'outputs': 'addOutput' + }, + { + 'name': 'quantizeLinear', + 'arguments': [ + {'input': 'addOutput'}, + {'scale': 'outputScale', 'zeroPoint': 'outputZeroPoint'} + ], + 'outputs': 'quantizedAddOutput' + }, + { + 'name': 'dequantizeLinear', + 'arguments': [ + {'input': 'quantizedAddOutput'}, + {'scale': 'outputScale', 'zeroPoint': 'outputZeroPoint'} + ], + 'outputs': 'output' + } + ], + 'expectedOutputs': { + 'output': { + 'data': [ + -0.4901961088180542, -0.43137258291244507, -0.3490196168422699, + -0.33725491166114807, -0.4784314036369324, -0.4862745404243469, + -0.4901961088180542, -0.43137258291244507, -0.3490196168422699, + -0.33725491166114807, -0.4784314036369324, -0.4862745404243469, + ], + 'descriptor': {shape: [2, 3, 2], dataType: 'float32'} + } + } + } + }, + { + 'name': 'quantized transpose', + 'graph': { + 'inputs': { + 'input': { + 'data': [ + 0.6811466217041016, 0.0479511022567749, 0.33355462551116943, + 0.19882695376873016, 0.41167140007019043, 0.07934240251779556, + ], + 'descriptor': {shape: [1, 1, 2, 3], dataType: 'float32'}, + 'constant': false + }, + 'inputScale': { + 'data': [0.003921568859368563], + 'descriptor': {shape: [1], dataType: 'float32'}, + 'constant': true + }, + 'inputZeroPoint': { + 'data': [-128], + 'descriptor': {shape: [1], dataType: 'int8'}, + 'constant': true + }, + 'outputScale': { + 'data': [0.003921568859368563], + 'descriptor': {shape: [1], dataType: 'float32'}, + 'constant': true + }, + 'outputZeroPoint': { + 'data': [-128], + 'descriptor': {shape: [1], dataType: 'int8'}, + 'constant': true + }, + }, + 'operators': [ + { + 'name': 'quantizeLinear', + 'arguments': [ + {'input': 'input'}, + {'scale': 'inputScale', 'zeroPoint': 'inputZeroPoint'} + ], + 'outputs': 'quantizedInput' + }, + { + 'name': 'dequantizeLinear', + 'arguments': [ + {'input': 'quantizedInput'}, + {'scale': 'inputScale', 'zeroPoint': 'inputZeroPoint'} + ], + 'outputs': 'dequantizedInput' + }, + { + 'name': 'transpose', + 'arguments': [{'input': 'dequantizedInput'}], + 'outputs': 'transposeOutput' + }, + { + 'name': 'quantizeLinear', + 'arguments': [ + {'input': 'transposeOutput'}, + {'scale': 'outputScale', 'zeroPoint': 'outputZeroPoint'} + ], + 'outputs': 'quantizedtransposeOutput' + }, + { + 'name': 'dequantizeLinear', + 'arguments': [ + {'input': 'quantizedtransposeOutput'}, + {'scale': 'outputScale', 'zeroPoint': 'outputZeroPoint'} + ], + 'outputs': 'output' + } + ], + 'expectedOutputs': { + 'output': { + 'data': [ + 0.6823529601097107, 0.20000001788139343, + 0.0470588281750679, 0.4117647409439087, + 0.3333333432674408, 0.0784313753247261, + ], + 'descriptor': {shape: [3, 2, 1, 1], dataType: 'float32'} + } + } + } + }, +]; + +if (navigator.ml) { + subgraphTests.forEach((test) => { + webnn_conformance_test(buildAndExecuteGraph, getPrecisionTolerance, test); + }); +} else { + test(() => assert_implements(navigator.ml, 'missing navigator.ml')); +} diff --git a/tests/wpt/tests/webnn/conformance_tests/quantizeLinear.https.any.js b/tests/wpt/tests/webnn/conformance_tests/quantizeLinear.https.any.js index 0e9fe5e6b4a..af46c8945a3 100644 --- a/tests/wpt/tests/webnn/conformance_tests/quantizeLinear.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/quantizeLinear.https.any.js @@ -18,7 +18,7 @@ const getQuantizeLinearPrecisionTolerance = (graphResources) => { - const toleranceValueDict = {int8: 1, uint8: 1, int4: 1, uint4: 1}; + const toleranceValueDict = {int32: 1, int8: 1, uint8: 1, int4: 1, uint4: 1}; const expectedDataType = getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs); return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]}; diff --git a/tests/wpt/tests/webnn/conformance_tests/subgraph.https.any.js b/tests/wpt/tests/webnn/conformance_tests/subgraph.https.any.js index a494a8b7a95..9b21d6e4f94 100644 --- a/tests/wpt/tests/webnn/conformance_tests/subgraph.https.any.js +++ b/tests/wpt/tests/webnn/conformance_tests/subgraph.https.any.js @@ -2523,137 +2523,6 @@ const subgraphTests = [ } } }, - { - 'name': 'quantized conv2d', - 'graph': { - 'inputs': { - 'input': { - 'data': [0.05605664849281311, 0.7114229798316956, 0.6529743671417236], - 'descriptor': {shape: [1, 1, 1, 3], dataType: 'float32'}, - 'constant': false - }, - 'inputScale': { - 'data': [0.003921568859368563], - 'descriptor': {shape: [1], dataType: 'float32'}, - 'constant': true - }, - 'inputZeroPoint': { - 'data': [-128], - 'descriptor': {shape: [1], dataType: 'int8'}, - 'constant': true - }, - 'filter': { - 'data': [2, 3, 4], - 'descriptor': {shape: [1, 1, 1, 3], dataType: 'int8'}, - 'constant': true - }, - 'filterScale': { - 'data': [0.023458752938762234], - 'descriptor': {shape: [1], dataType: 'float32'}, - 'constant': true - }, - 'filterZeroPoint': { - 'data': [0], - 'descriptor': {shape: [1], dataType: 'int8'}, - 'constant': true - }, - 'bias': { - 'data': [1], - 'descriptor': {shape: [1], dataType: 'int32'}, - 'constant': true - }, - 'biasScale': { - 'data': [0.000091995115004270], - 'descriptor': {shape: [1], dataType: 'float32'}, - 'constant': true - }, - 'biasZeroPoint': { - 'data': [0], - 'descriptor': {shape: [1], dataType: 'int32'}, - 'constant': true - }, - 'outputScale': { - 'data': [0.003921568859368563], - 'descriptor': {shape: [1], dataType: 'float32'}, - 'constant': true - }, - 'outputZeroPoint': { - 'data': [0], - 'descriptor': {shape: [1], dataType: 'int8'}, - 'constant': true - }, - }, - 'operators': [ - { - 'name': 'quantizeLinear', - 'arguments': [ - {'input': 'input'}, - {'scale': 'inputScale', 'zeroPoint': 'inputZeroPoint'} - ], - 'outputs': 'quantizedInput' - }, - { - 'name': 'dequantizeLinear', - 'arguments': [ - {'input': 'quantizedInput'}, - {'scale': 'inputScale', 'zeroPoint': 'inputZeroPoint'} - ], - 'outputs': 'dequantizedInput' - }, - { - 'name': 'dequantizeLinear', - 'arguments': [ - {'input': 'filter'}, - {'scale': 'filterScale', 'zeroPoint': 'filterZeroPoint'} - ], - 'outputs': 'dequantizedFilter' - }, - { - 'name': 'dequantizeLinear', - 'arguments': [ - {'input': 'bias'}, - {'scale': 'biasScale', 'zeroPoint': 'biasZeroPoint'} - ], - 'outputs': 'dequantizedBias' - }, - { - 'name': 'conv2d', - 'arguments': [ - {'input': 'dequantizedInput'}, {'filter': 'dequantizedFilter'}, { - 'options': { - 'inputLayout': 'nhwc', - 'bias': 'dequantizedBias', - 'filterLayout': 'ohwi' - } - } - ], - 'outputs': 'conv2dOutput' - }, - { - 'name': 'quantizeLinear', - 'arguments': [ - {'input': 'conv2dOutput'}, - {'scale': 'outputScale', 'zeroPoint': 'outputZeroPoint'} - ], - 'outputs': 'quantizedConv2dOutput' - }, - { - 'name': 'dequantizeLinear', - 'arguments': [ - {'input': 'quantizedConv2dOutput'}, - {'scale': 'outputScale', 'zeroPoint': 'outputZeroPoint'} - ], - 'outputs': 'output' - } - ], - 'expectedOutputs': { - 'output': { - 'data': [0.11372549831867218], - 'descriptor': {shape: [1, 1, 1, 1], dataType: 'float32'} - } - } - } - }, ]; if (navigator.ml) { diff --git a/tests/wpt/tests/webnn/resources/utils.js b/tests/wpt/tests/webnn/resources/utils.js index f5802aa1137..d19cb7cf760 100644 --- a/tests/wpt/tests/webnn/resources/utils.js +++ b/tests/wpt/tests/webnn/resources/utils.js @@ -204,7 +204,7 @@ const getTypedArrayData = (type, size, data) => { for (let i = 0; i < data.length; i++) { outData[i] = toHalf(data[i]); } - } else if (type === 'int64') { + } else if (type === 'int64' || type === 'uint64') { if (typeof (data) === 'number' && size > 1) { return new TypedArrayDict[type](size).fill(BigInt(data)); } @@ -285,6 +285,8 @@ const assert_array_approx_equals_ulp = (actual, expected, nulp, dataType, descri /* * Test if two primitive arrays are equal within acceptable ULP distance */ + assert( + typeof nulp === 'number', `unexpected type for nulp: ${typeof nulp}`); assert_true( actual.length === expected.length, `assert_array_approx_equals_ulp: ${description} lengths differ, ` + diff --git a/tests/wpt/tests/webrtc-encoded-transform/script-metadata-transform.https.html b/tests/wpt/tests/webrtc-encoded-transform/script-metadata-transform.https.html index 11c88b46936..106593879c2 100644 --- a/tests/wpt/tests/webrtc-encoded-transform/script-metadata-transform.https.html +++ b/tests/wpt/tests/webrtc-encoded-transform/script-metadata-transform.https.html @@ -271,10 +271,11 @@ promise_test(async (test) => { assert_equals(data.senderBeforeWrite.metadata.frameId, data.senderAfterWrite.metadata.frameId, 'frameId matches (for sender before and after write)'); - assert_equals(data.senderBeforeWrite.metadata.frameId, - data.receiverBeforeWrite.metadata.frameId, + + assert_true(data.senderBeforeWrite.metadata.frameId == data.receiverBeforeWrite.metadata.frameId || + data.receiverBeforeWrite.metadata.frameId == undefined, 'frameId matches (for sender and receiver)'); - assert_equals(data.senderBeforeWrite.metadata.frameId, + assert_equals(data.receiverBeforeWrite.metadata.frameId, data.receiverAfterWrite.metadata.frameId, 'frameId matches (for receiver before and after write)'); }, 'video metadata: frameId'); diff --git a/tests/wpt/tests/webrtc-encoded-transform/script-transform-sendKeyFrameRequest.https.html b/tests/wpt/tests/webrtc-encoded-transform/script-transform-sendKeyFrameRequest.https.html index 51b797eb683..9bc75bd7a0e 100644 --- a/tests/wpt/tests/webrtc-encoded-transform/script-transform-sendKeyFrameRequest.https.html +++ b/tests/wpt/tests/webrtc-encoded-transform/script-transform-sendKeyFrameRequest.https.html @@ -76,7 +76,7 @@ promise_test(async (test) => { await receiverPc.setLocalDescription(); await senderPc.setRemoteDescription(receiverPc.localDescription); - assert_equals(await sendKeyFrameRequest(receiver.transform.port), 'failure: InvalidStateError'); + assert_equals(await sendKeyFrameRequest(receiver.transform.port), 'success'); senderPc.getTransceivers()[0].direction = 'sendonly'; await senderPc.setLocalDescription(); @@ -85,7 +85,7 @@ promise_test(async (test) => { await senderPc.setRemoteDescription(receiverPc.localDescription); assert_equals(await sendKeyFrameRequest(receiver.transform.port), 'success'); -}, 'sendKeyFrameRequest rejects when the receiver is negotiated inactive, and resumes succeeding when negotiated back to active'); +}, 'sendKeyFrameRequest does not reject when the receiver is negotiated inactive, and resumes succeeding when negotiated back to active'); promise_test(async (test) => { const {sender, receiver, senderPc, receiverPc} = await createConnectionWithTransform(test, 'script-transform-sendKeyFrameRequest.js', {video: true}); diff --git a/tests/wpt/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_inactiveFrame.https.html b/tests/wpt/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_inactiveFrame.https.html index 92c20cecbf6..c6ac8c60b0a 100644 --- a/tests/wpt/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_inactiveFrame.https.html +++ b/tests/wpt/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_inactiveFrame.https.html @@ -15,7 +15,7 @@ const fakeDeviceInitParams = { supportedFeatures: ALL_FEATURES, }; -xr_session_promise_test("Ensures getDepthInformation() throws when not run in an active frame, `cpu-optimized`", +xr_session_promise_test("Ensures appropriate depth methods and attributes throw when not run in an active frame, `cpu-optimized`", inactiveFrameTestFunctionGenerator(/*isCpuOptimized=*/true), fakeDeviceInitParams, 'immersive-ar', { diff --git a/tests/wpt/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_pauseResume.https.html b/tests/wpt/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_pauseResume.https.html new file mode 100644 index 00000000000..47469f4a0ea --- /dev/null +++ b/tests/wpt/tests/webxr/depth-sensing/cpu/depth_sensing_cpu_pauseResume.https.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/webxr_util.js"></script> +<script src="../../resources/webxr_test_asserts.js"></script> +<script src="../../resources/webxr_test_constants.js"></script> +<script src="../../resources/webxr_test_constants_fake_depth.js"></script> +<script src="../pauseResumeTests.js"></script> + +<script> + +const fakeDeviceInitParams = { + supportedModes: ["immersive-ar"], + views: VALID_VIEWS, + supportedFeatures: ALL_FEATURES, + depthSensingData: DEPTH_SENSING_DATA, +}; + +xr_session_promise_test("Ensures appropriate data availability with (pause|resume)DepthSensing, `cpu-optimized`", + pauseResumeTestFunctionGenerator(/*isCpuOptimized=*/true), + fakeDeviceInitParams, + 'immersive-ar', { + requiredFeatures: ['depth-sensing'], + depthSensing: VALID_DEPTH_CONFIG_CPU_USAGE, + }); + +</script> diff --git a/tests/wpt/tests/webxr/depth-sensing/depth_sensing_attributes_throw_not_enabled.https.html b/tests/wpt/tests/webxr/depth-sensing/depth_sensing_attributes_throw_not_enabled.https.html index 43adba74a04..4e1f2e8c76d 100644 --- a/tests/wpt/tests/webxr/depth-sensing/depth_sensing_attributes_throw_not_enabled.https.html +++ b/tests/wpt/tests/webxr/depth-sensing/depth_sensing_attributes_throw_not_enabled.https.html @@ -33,6 +33,39 @@ const testFunctionDepthType = function (session, controller, t) { return Promise.resolve(); }; +const testFunctionDepthActive = function (session, controller, t) { + t.step(() => { + assert_throws_dom("InvalidStateError", () => session.depthActive, + "session.depthActive should throw when depth sensing is disabled"); + }); + + return Promise.resolve(); +}; + +const testFunctionPauseDepthSensing = function (session, controller, t) { + let done = false; + session.requestAnimationFrame((time, frame) => { + t.step(() => { + assert_throws_dom("InvalidStateError", () => session.pauseDepthSensing(), + "pauseDepthSensing() should thrown when depth sensing is disabled"); + }); + }); + + return t.step_wait(() => done); +}; + +const testFunctionResumeDepthSensing = function (session, controller, t) { + let done = false; + session.requestAnimationFrame((time, frame) => { + t.step(() => { + assert_throws_dom("InvalidStateError", () => session.resumeDepthSensing(), + "resumeDepthSensing() should thrown when depth sensing is disabled"); + }); + }); + + return t.step_wait(() => done); +}; + xr_session_promise_test( "XRSession.depthUsage rejects if depth sensing is not enabled on a session", testFunctionDepthUsage, diff --git a/tests/wpt/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_inactiveFrame.https.html b/tests/wpt/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_inactiveFrame.https.html index 6116f7a0414..8528b4f80d8 100644 --- a/tests/wpt/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_inactiveFrame.https.html +++ b/tests/wpt/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_inactiveFrame.https.html @@ -15,7 +15,7 @@ const fakeDeviceInitParams = { supportedFeatures: ALL_FEATURES, }; -xr_session_promise_test("Ensures getDepthInformation() throws when not run in an active frame, `gpu-optimized`", +xr_session_promise_test("Ensures appropriate depth methods and attributes throw when not run in an active frame, `gpu-optimized`", testFunctionGenerator(/*isCpuOptimized=*/false), fakeDeviceInitParams, 'immersive-ar', { diff --git a/tests/wpt/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_pauseResume.https.html b/tests/wpt/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_pauseResume.https.html new file mode 100644 index 00000000000..d51edb8cd3b --- /dev/null +++ b/tests/wpt/tests/webxr/depth-sensing/gpu/depth_sensing_gpu_pauseResume.https.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/webxr_util.js"></script> +<script src="../../resources/webxr_test_asserts.js"></script> +<script src="../../resources/webxr_test_constants.js"></script> +<script src="../../resources/webxr_test_constants_fake_depth.js"></script> +<script src="../pauseResumeTests.js"></script> + +<script> + +const fakeDeviceInitParams = { + supportedModes: ["immersive-ar"], + views: VALID_VIEWS, + supportedFeatures: ALL_FEATURES, + depthSensingData: DEPTH_SENSING_DATA, +}; + +xr_session_promise_test("Ensures appropriate data availability with (pause|resume)DepthSensing, `gpu-optimized`", + pauseResumeTestFunctionGenerator(/*isCpuOptimized=*/false), + fakeDeviceInitParams, + 'immersive-ar', { + requiredFeatures: ['depth-sensing'], + depthSensing: VALID_DEPTH_CONFIG_GPU_USAGE, + }); + +</script> diff --git a/tests/wpt/tests/webxr/depth-sensing/inactiveFrameTests.js b/tests/wpt/tests/webxr/depth-sensing/inactiveFrameTests.js index b310f01ef87..0cc42595537 100644 --- a/tests/wpt/tests/webxr/depth-sensing/inactiveFrameTests.js +++ b/tests/wpt/tests/webxr/depth-sensing/inactiveFrameTests.js @@ -17,6 +17,12 @@ const inactiveFrameTestFunctionGenerator = function(isCpuOptimized) { () => isCpuOptimized ? frame.getDepthInformation(view) : glBinding.getDepthInformation(view), "getDepthInformation() should throw when ran outside RAF"); + assert_throws_dom("InvalidStateError", + () => session.pauseDepthSensing(), + "pauseDepthSensing() should thrown when ran outside RAF"); + assert_throws_dom("InvalidStateError", + () => session.resumeDepthSensing(), + "resumeDepthSensing() should thrown when ran outside RAF"); }); callbackCounter--; } diff --git a/tests/wpt/tests/webxr/depth-sensing/pauseResumeTests.js b/tests/wpt/tests/webxr/depth-sensing/pauseResumeTests.js new file mode 100644 index 00000000000..e7513ef61c1 --- /dev/null +++ b/tests/wpt/tests/webxr/depth-sensing/pauseResumeTests.js @@ -0,0 +1,116 @@ +'use strict'; + +const TestStates = Object.freeze({ + "ShouldSucceedPauseScheduleRAF": 1, + "ShouldFailResumeScheduleRAF": 2, + "ShouldSucceedTestDone": 3, +}); + +const framesToWait = 10; + +const pauseResumeTestFunctionGenerator = function(isCpuOptimized) { + return (session, controller, t, sessionObjects) => { + let state = TestStates.ShouldSucceedPauseScheduleRAF; + + return session.requestReferenceSpace('viewer').then((viewerSpace) => { + let done = false; + + const glBinding = new XRWebGLBinding(session, sessionObjects.gl); + + let stepFrameCount = 0; + let advanceState = false; + + const rafCb = function(time, frame) { + const pose = frame.getViewerPose(viewerSpace); + stepFrameCount++; + for(const view of pose.views) { + const depthInformation = isCpuOptimized ? frame.getDepthInformation(view) + : glBinding.getDepthInformation(view); + + if (state == TestStates.ShouldSucceedPauseScheduleRAF + || state == TestStates.ShouldSucceedTestDone) { + t.step(() => { + assert_true(session.depthActive); + }); + // We have no guarantees about when data should start returning, + // so we need to potentially wait a few frames. + + // Final chance. If we haven't advanced the state by now, fail the + // test if it doesn't pass this time. + if (stepFrameCount >= framesToWait) { + t.step(() => { + assert_not_equals(depthInformation, null); + }); + } + + // Either we have data, or we've waited long enough to keep moving. + if (depthInformation != null || stepFrameCount >= framesToWait) { + advanceState = true; + } + } else { + // Depth should stop being available immediately. + t.step(() => { + assert_false(session.depthActive); + assert_equals(depthInformation, null); + }); + advanceState = true; + } + } + + switch(state) { + case TestStates.ShouldSucceedPauseScheduleRAF: + if (advanceState) { + session.pauseDepthSensing(); + for(const view of pose.views) { + const newDepthInformation = isCpuOptimized ? frame.getDepthInformation(view) + : glBinding.getDepthInformation(view); + t.step(()=> { + // depthActive state should update and stop returning depth info + // immediately. + assert_false(session.depthActive); + assert_equals(newDepthInformation, null); + }); + } + state = TestStates.ShouldFailResumeScheduleRAF; + stepFrameCount = 0; + advanceState = false; + } + session.requestAnimationFrame(rafCb); + break; + case TestStates.ShouldFailResumeScheduleRAF: + if (advanceState) { + session.resumeDepthSensing(); + // In pausing depth sensing, any controller data may have been + // thrown away since the UA can "tear down" any depth controller. + // So attempt to repopulate the data once we've resumed it. + controller.setDepthSensingData(DEPTH_SENSING_DATA); + t.step(()=> { + // While depth data may not return for a few frames, depthActive + // should be updated immediately. + assert_true(session.depthActive); + }); + state = TestStates.ShouldSucceedTestDone; + stepFrameCount = 0; + advanceState = false; + } + session.requestAnimationFrame(rafCb); + break; + case TestStates.ShouldSucceedTestDone: + // If we are advancing the state, we can stop pumping the rAF, but + // if we're still waiting for data to come back we need to keep it + // going. + if (advanceState) { + done = true; + } else { + session.requestAnimationFrame(rafCb); + } + break; + } + }; + + session.requestAnimationFrame(rafCb); + + return t.step_wait(() => done); + }); + }; +}; diff --git a/tests/wpt/tests/workers/WorkerNavigator_userAgentData.https.tentative.html b/tests/wpt/tests/workers/WorkerNavigator_userAgentData.https.tentative.html new file mode 100644 index 00000000000..e4026e2ff06 --- /dev/null +++ b/tests/wpt/tests/workers/WorkerNavigator_userAgentData.https.tentative.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<title> WorkerNavigator.userAgentData </title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> + promise_test(async () => { + const e = await new Promise((resolve) => { + const worker = new Worker("./support/WorkerNavigator.js"); + worker.onmessage = resolve; + }); + const highEntropyValues = await navigator.userAgentData.getHighEntropyValues([ + "platformVersion", "wow64" + ]); + + if (navigator.userAgentData.platform === "Linux") { + assert_true(e.data.platformVersion === ""); + assert_equals(e.data.wow64, false); + assert_true(highEntropyValues.platformVersion === ""); + assert_equals(highEntropyValues.wow64, false); + } + }, "Platform version and wow64-ness on Linux should contain fixed values"); +</script> |