diff --git a/tests/wpt/metadata/FileAPI/url/url-charset.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-charset.window.js.ini new file mode 100644 index 00000000000..08ab7bd35cd --- /dev/null +++ b/tests/wpt/metadata/FileAPI/url/url-charset.window.js.ini @@ -0,0 +1,4 @@ +[url-charset.window.html] + expected: TIMEOUT + [Blob charset should override any auto-detected charset.] + expected: TIMEOUT diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index c2386037356..ce5366eb2e5 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -1437,6 +1437,13 @@ {} ] ], + "content-visibility-selection-crash.html": [ + "78b610b72ee481c015ba17671e6c916d22fd6b9d", + [ + null, + {} + ] + ], "contentvisibility-nestedslot-crash.html": [ "f4f07814e6010687e95e3f62a8b837992c8b894d", [ @@ -2795,6 +2802,13 @@ ] ] }, + "text-child-crash.html": [ + "16e435823458eba768a23a652803882608ed5185", + [ + null, + {} + ] + ], "toggle-spanner-float-crash.html": [ "d5948b2dd67085108e22fde4ba7a7229b746c92b", [ @@ -4763,6 +4777,19 @@ ] } }, + "dom": { + "elements": { + "the-innertext-and-outertext-properties": { + "innertext-domnoderemoved-crash.html": [ + "94043caf69cc50dc7445ef67448058ba9ffd869b", + [ + null, + {} + ] + ] + } + } + }, "interaction": { "focus": { "focused-element-move-documents-crash.html": [ @@ -5116,6 +5143,13 @@ null, {} ] + ], + "textarea-splittext-with-range-simple-crash.html": [ + "d3c1e7ce942ff66bcee05e9fdbd4519e35ac9eab", + [ + null, + {} + ] ] } }, @@ -5226,14 +5260,14 @@ } }, "popovers": { - "popover-dialog-crash.tentative.html": [ + "popover-dialog-crash.html": [ "76f51b8a5ed81099ad51bb704b4567579e8c8b07", [ null, {} ] ], - "popover-manual-crash.tentative.html": [ + "popover-manual-crash.html": [ "d721f7c731e0d2c5a9e6c9ab79a5a450345a4874", [ null, @@ -28568,6 +28602,19 @@ {} ] ], + "fixedpos-with-abspos-with-link-print.html": [ + "057ddc91460264bbef9bb36fa7be8d89f6d6458e", + [ + null, + [ + [ + "/css/css-break/fixedpos-with-abspos-with-link-print-ref.html", + "==" + ] + ], + {} + ] + ], "fixedpos-with-link-with-inline-child-print.html": [ "694e5376cbfab7ee52c1f27b9bf0fd23a2a91375", [ @@ -28700,6 +28747,36 @@ {} ] ], + "page-name-001-print.html": [ + "56281bb4ed5f8b3e34401420b10504ed6c0e00fd", + [ + null, + [ + [ + "/css/css-break/page-name-001-print-ref.html", + "==" + ] + ], + {} + ] + ], + "table": { + "repeated-section": { + "fixedpos-in-footer-forced-break-print.html": [ + "43a54cbe7d94a6cca5d423b6c799e060fa4ad8d5", + [ + null, + [ + [ + "/css/css-break/table/repeated-section/fixedpos-in-footer-forced-break-print-ref.html", + "==" + ] + ], + {} + ] + ] + } + }, "underflow-from-next-page-print.html": [ "57fd12a831937dad52f99a6d3fc65248464a11f5", [ @@ -58933,6 +59010,45 @@ {} ] ], + "floats-placement-006.html": [ + "038e40848afd5ec8e59984882bb1b37b621f812f", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "floats-placement-007.html": [ + "d7e3ef685fc25984c1590eb437e81fd9575aaae3", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "floats-placement-008.html": [ + "90d919dddc105648b917ceba39082229996e7530", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "floats-placement-vertical-001a.xht": [ "61815e9ad37198b14ff4327185d9274b357b33de", [ @@ -127217,6 +127333,32 @@ } }, "css-anchor-position": { + "anchor-default-001.html": [ + "8bb59851ee656715cb30d3a26690ee807b7fd7ca", + [ + null, + [ + [ + "/css/css-anchor-position/anchor-default-ref.html", + "==" + ] + ], + {} + ] + ], + "anchor-default-002.html": [ + "261119e0174544b86548dc2f06000853f6cd5656", + [ + null, + [ + [ + "/css/css-anchor-position/anchor-default-ref.html", + "==" + ] + ], + {} + ] + ], "anchor-position-top-layer-001.html": [ "ffa1c1cbd1eabdf3267bef46a4c42ac63244566c", [ @@ -128566,6 +128708,19 @@ {} ] ], + "clip-text-multi-line-002.html": [ + "ff34ca0aaa681db5ef33cf0371194c6cc462f37c", + [ + null, + [ + [ + "/css/css-backgrounds/background-clip/clip-text-multi-line-002-ref.html", + "==" + ] + ], + {} + ] + ], "clip-text-multi-line.html": [ "cd51b2ea0779e2a3cf7807f7f0eee5cb6a938acc", [ @@ -134006,7 +134161,7 @@ ] ], "border-image-repeat-space-10.html": [ - "44cd8558008e68c17393cb052724cea1c5d8d701", + "306a91370674925106489003205362ee73792484", [ null, [ @@ -134015,7 +134170,23 @@ "==" ] ], - {} + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 80 + ], + [ + 0, + 1472 + ] + ] + ] + ] + } ] ], "border-image-repeat-space-2.html": [ @@ -134375,7 +134546,7 @@ ] ], "border-image-space-001.html": [ - "1153f9de493d9daf23ab4fdb49d3c19ed99d6605", + "9e125675e79213116b2675c7d2bfa95676a7585b", [ null, [ @@ -134384,7 +134555,23 @@ "==" ] ], - {} + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 12 + ], + [ + 0, + 1152 + ] + ] + ] + ] + } ] ], "border-image-width-005.xht": [ @@ -135977,6 +136164,19 @@ ] }, "css-borders": { + "border-radius-greater-than-width.html": [ + "8c421a213bc2b6b1c5df705ee8e89f774cb81619", + [ + null, + [ + [ + "/css/css-borders/reference/border-radius-greater-than-width-ref.html", + "==" + ] + ], + {} + ] + ], "borders-on-sub-unit-sized-elements.html": [ "1aff3c9a6b22a8bbaebf8c6b91dfdcc8a6a08e44", [ @@ -158075,7 +158275,7 @@ ] ], "system-cyclic.html": [ - "9d96b820e73bbe29f4d8509425ae7c4bbc1da051", + "4244610d0010f4f0fcd1430cc2b5ac1a22148ad1", [ null, [ @@ -178531,6 +178731,32 @@ {} ] ], + "font-slant-2c.html": [ + "5436fc1b671df41829116c37c5fd5eb35551c3db", + [ + null, + [ + [ + "/css/css-fonts/variations/font-slant-2-ref.html", + "==" + ] + ], + {} + ] + ], + "font-slant-3.html": [ + "047409ec35a3bbb1637fc8e0823e1563d776ec07", + [ + null, + [ + [ + "/css/css-fonts/variations/font-slant-3-ref.html", + "==" + ] + ], + {} + ] + ], "font-weight-metrics.html": [ "f10e591defcd3aa5f215158aa2218e1b4a499549", [ @@ -187070,6 +187296,19 @@ {} ] ], + "placement-implicit-001.html": [ + "738b83f4823c3245893864eecf9983e03c90ac3f", + [ + null, + [ + [ + "/css/css-grid/subgrid/placement-implicit-001-ref.html", + "==" + ] + ], + {} + ] + ], "repeat-auto-fill-001.html": [ "9e57028c4cc2757eb3ec52cc214f902562413474", [ @@ -189357,6 +189596,19 @@ ] ], "image-set": { + "image-set-conic-gradient-rendering.html": [ + "e4f426471a7e11fc935456fac7b71e173d846d38", + [ + null, + [ + [ + "/css/css-images/image-set/reference/image-set-conic-gradient-rendering-ref.html", + "==" + ] + ], + {} + ] + ], "image-set-content-rendering.html": [ "aa6d1d6f1c84a333bccab9434ddff3204a687567", [ @@ -189565,6 +189817,45 @@ {} ] ], + "image-set-repeating-conic-gradient-rendering.html": [ + "89060996f621a2dfbfde94f2ac9ab2ad48939ed4", + [ + null, + [ + [ + "/css/css-images/image-set/reference/image-set-repeating-conic-gradient-rendering-ref.html", + "==" + ] + ], + {} + ] + ], + "image-set-repeating-linear-gradient-rendering.html": [ + "a9cd6125a9eab02e2da74b9158f16d0fd39eb014", + [ + null, + [ + [ + "/css/css-images/image-set/reference/image-set-repeating-linear-gradient-rendering-ref.html", + "==" + ] + ], + {} + ] + ], + "image-set-repeating-radial-gradient-rendering.html": [ + "ec8fd54421976d3dcd2b07831a9cf27cdd97d3d7", + [ + null, + [ + [ + "/css/css-images/image-set/reference/image-set-repeating-radial-gradient-rendering-ref.html", + "==" + ] + ], + {} + ] + ], "image-set-resolution-001.html": [ "aaa750217d7079f286f01198be0b0f6dfe90ac20", [ @@ -189670,7 +189961,7 @@ ] ], "image-set-type-unsupported-rendering-2.html": [ - "d9d2f457076c9b5d9ff8f7d4ee7be8cfc204b1c8", + "ea2dd6f9795da60c0161ac0161c9d64e3bdbee21", [ null, [ @@ -189683,7 +189974,7 @@ ] ], "image-set-type-unsupported-rendering.html": [ - "a7cf98bb58b00190dfbbf51bb23f85857f4c453d", + "ef7c4a20efba60babec0f0bd08b772e684524d7e", [ null, [ @@ -198246,6 +198537,19 @@ {} ] ], + "clip-path-on-fixed-position-scroll.html": [ + "b947f10aa2af27127ada1436dc3e81358a4e6e57", + [ + null, + [ + [ + "/css/css-masking/clip-path/clip-path-on-fixed-position-scroll-ref.html", + "==" + ] + ], + {} + ] + ], "clip-path-paddingBox-1a.html": [ "493ba7ab05678854d2232e75882483516464a4e8", [ @@ -204023,6 +204327,32 @@ {} ] ], + "multicol-nested-030.html": [ + "d2cbd85e77da42fa97ca98b6c93cc8123118c47b", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "multicol-nested-031.html": [ + "341bb175d2e869e9d059eacf15f81cd0856b1d47", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "multicol-nested-column-rule-001.xht": [ "8fa8fdb7280083b538ce20b451f20d1c711335e5", [ @@ -207047,6 +207377,19 @@ ], {} ] + ], + "supports-is-consistent.html": [ + "8be0d666d6e3ca4b4306172b7c33897f9d40a9bc", + [ + null, + [ + [ + "/css/css-nesting/supports-is-consistent-ref.html", + "==" + ] + ], + {} + ] ] }, "css-outline": { @@ -215384,6 +215727,19 @@ {} ] ], + "svg-text-selection-002.html": [ + "c25946d3943babf2509453670278515bf070f6c7", + [ + null, + [ + [ + "/css/css-pseudo/reference/svg-text-selection-002-ref.html", + "==" + ] + ], + {} + ] + ], "target-text-001.html": [ "6fa529aef90ebfda8cacbaa05f481b9f94df358f", [ @@ -217668,7 +218024,7 @@ ] ], "scroll-target-snap-002.html": [ - "28f3c124525c68fa3b108019aa6f30b0d878a0bf", + "28dc5698210e27338e02ee0883cae6a06223ea8e", [ null, [ @@ -226263,6 +226619,21 @@ ] ] }, + "css-syntax": { + "missing-semicolon.html": [ + "d8e70e631591c05d2025d1800b1201ce80550fed", + [ + null, + [ + [ + "/css/css-syntax/missing-semicolon-ref.html", + "==" + ] + ], + {} + ] + ] + }, "css-tables": { "absolute-tables-006.html": [ "d5d2265c491435359a6e96df87b18460a7fa5355", @@ -245025,6 +245396,32 @@ {} ] ], + "text-decoration-propagation-02.html": [ + "d618452b2d98d9d0b1fcb7fe326280093447e3ee", + [ + null, + [ + [ + "/css/css-text-decor/reference/text-decoration-propagation-02-ref.html", + "==" + ] + ], + {} + ] + ], + "text-decoration-propagation-03.html": [ + "b019c25e7754172d228fc69f1738fd634a9410c1", + [ + null, + [ + [ + "/css/css-text-decor/reference/text-decoration-propagation-03-ref.html", + "==" + ] + ], + {} + ] + ], "text-decoration-propagation-display-contents.html": [ "33d3593b668f0d81aee48441639324a0abe34756", [ @@ -275444,7 +275841,7 @@ }, "css-view-transitions": { "3d-transform-incoming.html": [ - "0a0497122b185d4ac8d36bd190133c134be8ebb3", + "01debbcfcc1f0bdeb58cc4c3c7bbcbc1e9f02424", [ null, [ @@ -275477,7 +275874,7 @@ ] ], "3d-transform-outgoing.html": [ - "5cf83e4e672de425087ec0679342b162f89c5559", + "1cf74c8f08af8bafdcaa3f5254a34ee918511b80", [ null, [ @@ -275568,6 +275965,19 @@ {} ] ], + "content-with-child-with-transparent-background.html": [ + "6c447aa1a8f0d3b4d6d3551a388baec9f33db619", + [ + null, + [ + [ + "/css/css-view-transitions/content-with-child-with-transparent-background-ref.html", + "==" + ] + ], + {} + ] + ], "content-with-clip-max-texture-size.html": [ "376ecb6c9b72a2529ac4bd208c9595819182ab4e", [ @@ -275703,6 +276113,19 @@ } ] ], + "content-with-transparent-background.html": [ + "b961a095e727247ecc805be6b19e7744160afff2", + [ + null, + [ + [ + "/css/css-view-transitions/content-with-transparent-background-ref.html", + "==" + ] + ], + {} + ] + ], "css-tags-paint-order-with-entry.html": [ "703b64f5c68c732d42d5ffeb1bb590f3c8ebf543", [ @@ -275737,7 +276160,7 @@ ] ], "css-tags-paint-order.html": [ - "ee1d260e1e8d81af559df517d935354c8746f0b9", + "c0e8769b473052d3adc8f192d454f5bb59c10647", [ null, [ @@ -275796,7 +276219,7 @@ ] ], "dialog-in-top-layer-during-transition-new.html": [ - "0473209fa9df7867b55b986beeab466b30cd1526", + "91c22773665a1838ab2d8e3d1005929cfdc72d51", [ null, [ @@ -275809,7 +276232,7 @@ ] ], "dialog-in-top-layer-during-transition-old.html": [ - "3634f65d8c99ae81a3d1bba9f1b6dc16ef400071", + "406bdac32b86ffde4980a5f0f2d2661b58444294", [ null, [ @@ -275822,7 +276245,7 @@ ] ], "element-with-overflow.html": [ - "b600bcec27e6a515bf4a180112d648f0c44b85c0", + "678e0a062e07452feb6faee8f986f3280fcd5e6d", [ null, [ @@ -275867,6 +276290,48 @@ } ] ], + "fractional-translation-from-position.html": [ + "9cae723e8435c17d4737d8844dd324b89a108439", + [ + null, + [ + [ + "/css/css-view-transitions/fractional-translation-from-position-ref.html", + "==" + ] + ], + {} + ] + ], + "fractional-translation-from-transform.html": [ + "2d2e5d98fe5f0d7f38223f109e224ec5473d218c", + [ + null, + [ + [ + "/css/css-view-transitions/fractional-translation-from-transform-ref.html", + "==" + ] + ], + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 2 + ], + [ + 0, + 100 + ] + ] + ] + ] + } + ] + ], "hit-test-unpainted-element.html": [ "68026edfb1f99237a9e905816ef0e424b5be1500", [ @@ -275953,6 +276418,32 @@ {} ] ], + "named-element-with-fix-pos-child-new.html": [ + "8a552b03a5ec5d4f3c8c84433023faeb5130116d", + [ + null, + [ + [ + "/css/css-view-transitions/named-element-with-fix-pos-child-ref.html", + "==" + ] + ], + {} + ] + ], + "named-element-with-fix-pos-child-old.html": [ + "a8211f4200e494340e9696f1ed5a62f25ed3770b", + [ + null, + [ + [ + "/css/css-view-transitions/named-element-with-fix-pos-child-ref.html", + "==" + ] + ], + {} + ] + ], "new-and-old-sizes-match.html": [ "78efa9d82fa7591f62d855b2fe8ab80c4140f0fe", [ @@ -276066,6 +276557,19 @@ {} ] ], + "new-content-captures-positioned-spans.html": [ + "b88654cd379c92316e6eee6ed6e27ba0c80038fb", + [ + null, + [ + [ + "/css/css-view-transitions/new-content-captures-positioned-spans-ref.html", + "==" + ] + ], + {} + ] + ], "new-content-captures-root.html": [ "84e55de58a79ae2efc205ecb406cc3c4360d5fd7", [ @@ -276079,6 +276583,19 @@ {} ] ], + "new-content-captures-spans.html": [ + "5467d411565ef1ae3b26fad40256b1e590cd2348", + [ + null, + [ + [ + "/css/css-view-transitions/new-content-captures-positioned-spans-ref.html", + "==" + ] + ], + {} + ] + ], "new-content-container-writing-modes.html": [ "e7ac768e17d6104d0f70cab29a891c8b08b03c8c", [ @@ -276093,7 +276610,7 @@ ] ], "new-content-element-writing-modes.html": [ - "84b6fcf517e2c8ab560135919723abc4e0d8db31", + "d7740d78f54f52766c58adfcd618d1e260bdba42", [ null, [ @@ -276166,7 +276683,7 @@ ] ], "new-content-object-fit-fill.html": [ - "286528305b8c2281e19898df92c0e449d0890458", + "b891eee16d5e93258f8bf8df0ce80b5bdb9b2d6e", [ null, [ @@ -276199,7 +276716,7 @@ ] ], "new-content-object-fit-none.html": [ - "cad836678e94bacbfacc3cd69399ce66ddb1adfa", + "d4b81b1a0eeadb38f13b7ae00a4d694d90e43568", [ null, [ @@ -276621,7 +277138,7 @@ ] ], "old-content-object-fit-fill.html": [ - "9a660266baade6c1394242f44b35a02987281cf3", + "9ad8b14843fbb059229234fb8970f87e5a83ee48", [ null, [ @@ -276654,7 +277171,7 @@ ] ], "old-content-object-fit-none.html": [ - "115fd0611498d4b6215f379824266971e50dc2b8", + "1275aece7cae48d02e6fc403af743337d8d20d94", [ null, [ @@ -276896,7 +277413,7 @@ ] ], "scroller-child-abspos.html": [ - "952a2679aabdbbc56df43ff5256f0297f317ad0d", + "6c5b16dc01ddb72731da6e1db014aaa00f478dd5", [ null, [ @@ -276929,7 +277446,7 @@ ] ], "scroller-child.html": [ - "2c8a0c4477004a4673addd063414c98773787e94", + "72b405d64c0446a566a852f1874952025b1f054f", [ null, [ @@ -276962,7 +277479,7 @@ ] ], "scroller.html": [ - "ecc413b25507470938bb587a5f126253f6f437cd", + "c86fce2353a448312bc2b75bccff29a52c46b10d", [ null, [ @@ -276995,7 +277512,7 @@ ] ], "set-current-time-transform.html": [ - "9958a0bdca05a4c97406fe4aa7a544d943934e01", + "41e3d3f89dae0e710e81bc55d2ada31ed164b6ae", [ null, [ @@ -277008,7 +277525,7 @@ ] ], "set-current-time.html": [ - "4047623a9af086e76e6234f4617aca6bb4e3729f", + "2e37626a9e07be92b36cb02ee923577c8d866a1b", [ null, [ @@ -277053,6 +277570,39 @@ {} ] ], + "transition-in-empty-iframe.html": [ + "99e9f24176ea8985263e3e645cb201485c5abec0", + [ + null, + [ + [ + "/css/css-view-transitions/transition-in-empty-iframe-ref.html", + "==" + ] + ], + { + "fuzzy": [ + [ + [ + "/css/css-view-transitions/transition-in-empty-iframe.html", + "/css/css-view-transitions/transition-in-empty-iframe-ref.html", + "==" + ], + [ + [ + 0, + 80 + ], + [ + 0, + 1000 + ] + ] + ] + ] + } + ] + ], "view-transition-name-is-backdrop-filter-root.html": [ "c4f4d3831396b6e7491f19061e6b8b72347123e9", [ @@ -297160,6 +297710,19 @@ {} ] ], + "nth-child-of-complex-selector-many-children-2.html": [ + "1f4fcf2418547e837ed5bcad9fbba71099d5f06d", + [ + null, + [ + [ + "/css/selectors/nth-child-of-complex-selector-many-children-2-ref.html", + "==" + ] + ], + {} + ] + ], "nth-child-of-complex-selector-many-children.html": [ "72f58cd93a0476cec88dad5c4b79cdc36f949437", [ @@ -300424,6 +300987,21 @@ ] ] }, + "layers": { + "2d.layer.alpha.html": [ + "b4a87b42daaf344bb8955e7912dbd3f7adaa84fa", + [ + null, + [ + [ + "/html/canvas/element/layers/2d.layer.alpha-expected.html", + "==" + ] + ], + {} + ] + ] + }, "manual": { "building-paths": { "canvas_complexshapes_arcto_001.htm": [ @@ -301310,19 +301888,6 @@ } ] ], - "layers-alpha.html": [ - "7be5bdb0bb89faf078520d10b3362a277ce9e801", - [ - null, - [ - [ - "/html/canvas/element/manual/layers/layers-alpha-expected.html", - "==" - ] - ], - {} - ] - ], "layers-endlayer-noop.html": [ "aae72cfeaefc80f24c2894a98f233d47f2aad8bd", [ @@ -301682,6 +302247,36 @@ ] ] } + }, + "offscreen": { + "layers": { + "2d.layer.alpha.html": [ + "90506bfb622df8b321ae03118538eb7fd0af8ec2", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.alpha-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.alpha.w.html": [ + "bc9344217b108069ff34dd6e28b0efc7bc947865", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.alpha-expected.html", + "==" + ] + ], + {} + ] + ] + } } }, "dom": { @@ -306920,6 +307515,45 @@ ], {} ] + ], + "selectmenu-selected-value-behavior.tentative.html": [ + "799b445114120284e67498c650bb4951496478c2", + [ + null, + [ + [ + "/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-behavior-ref.html", + "==" + ] + ], + {} + ] + ], + "selectmenu-selected-value-part.tentative.html": [ + "e41d2ddfd66d3af95199eeea3a7b11fd89ae6aa0", + [ + null, + [ + [ + "/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-part-ref.html", + "==" + ] + ], + {} + ] + ], + "selectmenu-selected-value-slot.tentative.html": [ + "9bbf2dfc06e87438827e50db20f27d51a02d5590", + [ + null, + [ + [ + "/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-slot-ref.html", + "==" + ] + ], + {} + ] ] }, "the-textarea-element": { @@ -307973,33 +308607,33 @@ } }, "popovers": { - "popover-anchor-change-display.tentative.html": [ - "a10331b2ae9393037f7283567f77cdd111941de7", + "popover-anchor-change-display.html": [ + "a80377441b03f212e2cb8ad95c5f65528908ab02", [ null, [ [ - "/html/semantics/popovers/popover-anchor-change-display-ref.tentative.html", + "/html/semantics/popovers/popover-anchor-change-display-ref.html", "==" ] ], {} ] ], - "popover-anchor-display.tentative.html": [ - "af9e3329bbf795b6df4e507365ad9f7208089cd2", + "popover-anchor-display.html": [ + "23d50df7634b47c034b6b625b27cb7b89dfcb99d", [ null, [ [ - "/html/semantics/popovers/popover-anchor-display-ref.tentative.html", + "/html/semantics/popovers/popover-anchor-display-ref.html", "==" ] ], {} ] ], - "popover-anchor-nested-display.tentative.html": [ + "popover-anchor-nested-display.html": [ "426c0fcb85542870e7fcfecdf228e56e73957e2c", [ null, @@ -308012,104 +308646,104 @@ {} ] ], - "popover-anchor-scroll-display.tentative.html": [ - "06304778129a7d22932e4a6656db1046bfc717e4", + "popover-anchor-scroll-display.html": [ + "85a05323784ab604aa4008fdec7db57841c3924c", [ null, [ [ - "/html/semantics/popovers/popover-anchor-scroll-display-ref.tentative.html", + "/html/semantics/popovers/popover-anchor-scroll-display-ref.html", "==" ] ], {} ] ], - "popover-animated-hide-display.tentative.html": [ - "5a59a9556daa8a1fd31cf53868fa83effc9a63e4", + "popover-animated-hide-display.html": [ + "b914d80e69aefa5296960a1ed3d96073e1a08af2", [ null, [ [ - "/html/semantics/popovers/popover-animated-display-ref.tentative.html", + "/html/semantics/popovers/popover-animated-display-ref.html", "==" ] ], {} ] ], - "popover-animated-hide-finishes.tentative.html": [ - "79e0b4dcbf67400bdfdb3c93a557dc165ed68e58", + "popover-animated-hide-finishes.html": [ + "1af583b5a8315d7005a56b4eff8a76af93414b16", [ null, [ [ - "/html/semantics/popovers/popover-animated-hide-finishes-ref.tentative.html", + "/html/semantics/popovers/popover-animated-hide-finishes-ref.html", "==" ] ], {} ] ], - "popover-animated-show-display.tentative.html": [ - "f78d8e1236fcec041a7136ddb043095fa2086b19", + "popover-animated-show-display.html": [ + "6857103a759b2c222c424227d0977330d320b22a", [ null, [ [ - "/html/semantics/popovers/popover-animated-display-ref.tentative.html", + "/html/semantics/popovers/popover-animated-display-ref.html", "==" ] ], {} ] ], - "popover-appearance.tentative.html": [ - "5c2c8d1b11ebcc7e2fa0e36318c98d9e7a701ca3", + "popover-appearance.html": [ + "87cc4ba3fc89e36b5c412bdecb7a229835c712ca", [ null, [ [ - "/html/semantics/popovers/popover-appearance-ref.tentative.html", + "/html/semantics/popovers/popover-appearance-ref.html", "==" ] ], {} ] ], - "popover-backdrop-appearance.tentative.html": [ - "24e42989ca6f770b0039118692a7d7c4ad1ec3e3", + "popover-backdrop-appearance.html": [ + "4c5c0acec992249c44f53c76725b30a4d4148c38", [ null, [ [ - "/html/semantics/popovers/popover-backdrop-appearance-ref.tentative.html", + "/html/semantics/popovers/popover-backdrop-appearance-ref.html", "==" ] ], {} ] ], - "popover-dialog-appearance.tentative.html": [ - "9707ac0e9345dbe2fa513151ef5fa0e05bac508c", + "popover-dialog-appearance.html": [ + "02b34bfc67555930a2bb0a182ef09d34c9800f23", [ null, [ [ - "/html/semantics/popovers/popover-dialog-appearance-ref.tentative.html", + "/html/semantics/popovers/popover-dialog-appearance-ref.html", "==" ] ], {} ] ], - "popover-hidden-display.tentative.html": [ - "b77566fdfc7cf25cdf034aa2868394dc3954e224", + "popover-hidden-display.html": [ + "35fea3e94c67bfc7cd71a54c8f8a98e99561d865", [ null, [ [ - "/html/semantics/popovers/popover-hidden-display-ref.tentative.html", + "/html/semantics/popovers/popover-hidden-display-ref.html", "==" ] ], @@ -308132,52 +308766,52 @@ } ] ], - "popover-inside-display-none.tentative.html": [ - "b36f1bbffd24d8d4fec639aba6d45e34aa887215", + "popover-inside-display-none.html": [ + "3ccb885b81a75b899ac3433101e0822945346364", [ null, [ [ - "/html/semantics/popovers/popover-inside-display-none-ref.tentative.html", + "/html/semantics/popovers/popover-inside-display-none-ref.html", "==" ] ], {} ] ], - "popover-open-display.tentative.html": [ - "56e63d0f3758eddcee947a0c7c5830c620fd3662", + "popover-open-display.html": [ + "ca57a6259966c13837e8c3d116db1538341d6c4c", [ null, [ [ - "/html/semantics/popovers/popover-open-display-ref.tentative.html", + "/html/semantics/popovers/popover-open-display-ref.html", "==" ] ], {} ] ], - "popover-open-overflow-display.tentative.html": [ - "cae628a13f09a6a0c0bfde9d3426ece80261be21", + "popover-open-overflow-display.html": [ + "7fc96411c22f3ec926ab5022d246cb1a3defee70", [ null, [ [ - "/html/semantics/popovers/popover-open-overflow-display-ref.tentative.html", + "/html/semantics/popovers/popover-open-overflow-display-ref.html", "==" ] ], {} ] ], - "popover-stacking-context.tentative.html": [ - "b5d0d651d3e00294c2ebd7765da4455d0f98f9f1", + "popover-stacking-context.html": [ + "1a9e829250535a3de87239d43fe8c4a4733b3ba9", [ null, [ [ - "/html/semantics/popovers/popover-stacking-context-ref.tentative.html", + "/html/semantics/popovers/popover-stacking-context-ref.html", "==" ] ], @@ -309881,6 +310515,19 @@ {} ] ], + "frac-bar-003.html": [ + "69b45ea29c91faa552534b5db4832d4d99f223e4", + [ + null, + [ + [ + "/mathml/presentation-markup/fractions/frac-bar-003-ref.html", + "==" + ] + ], + {} + ] + ], "frac-color-001.html": [ "442388a6eb8239aa8e8433391639c8b46b254ca3", [ @@ -311844,6 +312491,32 @@ {} ] ], + "width-height-002.html": [ + "99822c1ed997f00795183b6ed905066527dfb17a", + [ + null, + [ + [ + "/mathml/relations/css-styling/width-height-002-ref.html", + "==" + ] + ], + {} + ] + ], + "width-height-003.html": [ + "05e00f4759b2f7a4b38262353d9c8de6ba6981c0", + [ + null, + [ + [ + "/mathml/relations/css-styling/width-height-003-ref.html", + "==" + ] + ], + {} + ] + ], "writing-mode": { "reset-and-logicial-property.html": [ "939cfc5ba60f96b3c74b6f53da1e2e7c00c3d908", @@ -319973,7 +320646,7 @@ [] ], "rsa.js": [ - "3eb79fb0131d25e3974bd62d2293d59ce0fd2957", + "5abadd3d4b86299698e8d0e2b269d887dcd2ec70", [] ], "rsa_pkcs_vectors.js": [ @@ -322624,6 +323297,50 @@ } } }, + "browsing-topics": { + "browsing-topics-permissions-policy-none.tentative.https.sub.html.headers": [ + "9c93ff7384f22e80dc874a59598fdc92f384e20e", + [] + ], + "browsing-topics-permissions-policy-self.tentative.https.sub.html.headers": [ + "6eb902eb6830b1ec83a932e8ffca9bf365f1d766", + [] + ], + "resources": { + "check-topics-request-header.py": [ + "569b75449635c51e6581afecb582cdb818e6c120", + [] + ], + "document-api-notify-parent.tentative.https.html": [ + "2fd55ebeb2c1d1df0773c50c5f0271ebcb4de857", + [] + ], + "empty.html": [ + "c50eddd41faba2ecc8928e459288fe612b999170", + [] + ], + "fetch-topics-header-not-visible-in-service-worker-helper.tentative.https.html": [ + "e9cb8144e0a17807863879fc140665af3e6767ed", + [] + ], + "fetch-topics.js": [ + "71064a90c5b04ce6fa7f154da440c2dcc62a3602", + [] + ], + "intercept-request.js": [ + "c19efb5f2f3fe5469b63b5772c875d9e62fb47b5", + [] + ], + "permissions-policy-util.sub.js": [ + "e8bf45049c53ab23fee369c058ffe4904bed45ce", + [] + ], + "topics-not-allowed-for-service-worker-fetch-helper.tentative.https.html": [ + "2278d5bc76d31b96a3759f1e20a9c2ed13f485e1", + [] + ] + } + }, "clear-site-data": { "META.yml": [ "65ca96dbb9d774e97cc3a60f6b6dde952104893b", @@ -343161,20 +343878,6 @@ [] ] }, - "prefetch-src": { - "prefetch-header-allowed.html.headers": [ - "2b1d42a8d16c04cf339366b05262c27516e4196c", - [] - ], - "prefetch-header-blocked-by-default.html.headers": [ - "6d19ed181eeb513622eab41dcd8f94967338b387", - [] - ], - "prefetch-header-blocked.html.headers": [ - "732f62d58a5989786ec98d1c14eb4d54574a8d93", - [] - ] - }, "reporting": { "multiple-report-policies.html.sub.headers": [ "485b6832e7f3e0113cc48eb109fce40eed3f28cf", @@ -343803,7 +344506,7 @@ [] ], "prefetch-helper.js": [ - "cb6fd4823f008f940bb1c292a3ef504194856df6", + "c0c0be91571676fd9ea1d8d16415c16ebd4437d6", [] ], "prefetch-subresource.css": [ @@ -343814,6 +344517,10 @@ "eaf7b1663850063a03f89d40b1f072d9e3a29749", [] ], + "prefetch-with-csp.html": [ + "8185a3abee8d9d9c256f3e150496ab748823bcb1", + [] + ], "resource.py": [ "4d73d5bf76a64b47db1fd75b9fa8ddb78962fc63", [] @@ -344289,7 +344996,7 @@ [] ], "expose-headers.py": [ - "e9de401cf2a5fb88efa77905c95cef5aa474949d", + "4e568f4063542b090ca9625dd9a53fcb0d4870b2", [] ], "image-tainting-checker.sub.html": [ @@ -344393,6 +345100,14 @@ "190420736dfbd6aaaa468656c236209c25ed11f5", [] ], + "manifest_with_single_account.json": [ + "15a657c679df7b0dfb0be1058e7086b439781762", + [] + ], + "manifest_with_two_accounts.json": [ + "932fb85dac34646c5081558c36c0367455380e39", + [] + ], "select_manifest_in_root_manifest.py": [ "d4f1efff6a74c7636f60cba35b4eff010fccfd29", [] @@ -344401,17 +345116,29 @@ "d62419ce8a0ac12a85f5b8e595a874714b038b44", [] ], + "single_account.py": [ + "2de3deb2661690675d7574ebe4e72f4c87b8f457", + [] + ], "token.py": [ "867dab9592f89a36fd2ef6d3656046318673cf5b", [] ], + "token_with_account_id.py": [ + "bef755364833b2b11ff5ca70e34678b2d079c309", + [] + ], + "two_accounts.py": [ + "bca62d60223d86b16f05fd017cdd942adaf6b4dc", + [] + ], "userinfo-iframe.html": [ "1a38c405af12cf3b42bf3137dab0f15fa1539d6f", [] ] }, "fedcm-helper.sub.js": [ - "0b7db94e0a77902a89b0725a89f2d8cc1a2f02f1", + "a4d48633f83b3a24793142b929dee52d42f33349", [] ], "fedcm-iframe-level2.html": [ @@ -344423,7 +345150,7 @@ [] ], "fedcm-mock.js": [ - "7b399af2ce3810dc28cbc4715a2f832c01a937e0", + "e9fd2ea289c1ce1ae6531b66834311fadaee536b", [] ], "fedcm-mojojs-helper.js": [ @@ -363090,6 +363817,10 @@ } }, "css-anchor-position": { + "anchor-default-ref.html": [ + "4d7de12447c8297b8f0fc04338d80a028a3e9798", + [] + ], "anchor-position-top-layer-ref.html": [ "dc7f77f2b3441ebee25f3e40a9480b668ee79ea4", [] @@ -363134,7 +363865,7 @@ [] ], "test-common.js": [ - "5ef7a951b420a9efac659c61101229c909e5b039", + "d5cf1861c112b0ae8ec2bfb28b9aa893128ca14b", [] ] } @@ -363423,6 +364154,10 @@ "0bcbc0bc13f6bb8a13adc256a728a7860f3e2d69", [] ], + "clip-text-multi-line-002-ref.html": [ + "5cb77d5296fbc10515fe2bb51f5c5c05bf7fb6a4", + [] + ], "clip-text-multi-line-ref.html": [ "3b45e919ad7295c0aef7d401325978cabb62298d", [] @@ -365013,6 +365748,10 @@ }, "css-borders": { "reference": { + "border-radius-greater-than-width-ref.html": [ + "3c8c470ef5ac93ed8d29fb26d40a2c4bbea47827", + [] + ], "borders-on-sub-unit-sized-elements-ref.html": [ "19233778ed87c6153924a153e5fdaadc5925a057", [] @@ -365276,6 +366015,10 @@ "6ed2528115ae3a5634df6a2968a71fcd81424471", [] ], + "fixedpos-with-abspos-with-link-print-ref.html": [ + "000c05350b54885c47ea74a7336e02ed857d55ea", + [] + ], "fixedpos-with-link-with-inline-child-print-ref.html": [ "f12d31acd9d077a24a4ba47bcdbb5b2a3029faf3", [] @@ -365402,6 +366145,10 @@ "cf345b59638f28ddf423ed343a269178ab47f1b9", [] ], + "page-name-001-print-ref.html": [ + "69c5c37b5a3cc4ed47fab1f8105e5f2351e2d07b", + [] + ], "reference": { "widows-001-ref.html": [ "4f822f8fd67aed18355177a5e9de18d8a63f895e", @@ -365466,6 +366213,10 @@ "ab2dcebc4158de315a8df204d110a63bbe93ea69", [] ], + "fixedpos-in-footer-forced-break-print-ref.html": [ + "38dfe20d91a02d8878677b8edead5c48ad7178b9", + [] + ], "variable-fragmentainer-size-001-ref.html": [ "bea1ace1c376708c9ab58ba706cdfcf7aa140dbd", [] @@ -367624,7 +368375,7 @@ [] ], "system-cyclic-ref.html": [ - "605a7ecda9975d7212a0b604af97ec54a4d7807f", + "11ff5f96a437dac526d9164a8219c98d08e29e6a", [] ], "system-extends-invalid-ref.html": [ @@ -378019,6 +378770,10 @@ "4f109aa21927327fcb17e7dfe86576a3352142d7", [] ], + "font-slant-3-ref.html": [ + "542479db51ca3f69e22ba8f6cba0b1e1f193236b", + [] + ], "font-weight-metrics-ref.html": [ "021586c15421fc58f549cd4dcb7a9174b29c54c7", [] @@ -378032,6 +378787,10 @@ "ea542eb06f93b353b0a3deba5623b832bcaf2267", [] ], + "Inter.no-var.subset.ttf": [ + "3f9669541a712338dbc8b618021dfadc3eaad916", + [] + ], "Inter.var.subset.ttf": [ "d042cabef1e6d943a98f944e06af84fcb96cdb59", [] @@ -379685,6 +380444,10 @@ "a884a12b991ad2a36e9ea1def1b9ff811a785a00", [] ], + "placement-implicit-001-ref.html": [ + "c27d3334d91655ed4ee57fd70ea7514cfdb9a689", + [] + ], "repeat-auto-fill-001-ref.html": [ "8cd0ef66b974e808463b51db603476adee3b5f5d", [] @@ -380162,6 +380925,10 @@ [] ], "reference": { + "image-set-conic-gradient-rendering-ref.html": [ + "2a5133ee94e792877410cae71be904c585bf0a6c", + [] + ], "image-set-linear-gradient-rendering-ref.html": [ "7f95f46eaf4fa1f7375f5a8b01c90389eff338c0", [] @@ -380173,6 +380940,18 @@ "image-set-rendering-ref.html": [ "8a56bbf4d29b3373a72b4edf93058e2238c76be5", [] + ], + "image-set-repeating-conic-gradient-rendering-ref.html": [ + "02466664c6c990123cafb534c6ad0d3d5dc60683", + [] + ], + "image-set-repeating-linear-gradient-rendering-ref.html": [ + "e2915b13318f6446c495eb7bf0e4b8676bfc0819", + [] + ], + "image-set-repeating-radial-gradient-rendering-ref.html": [ + "00035b3998a85c563860c53115a215ad03cd3d5d", + [] ] } }, @@ -381769,6 +382548,10 @@ "12bfbda589cfcf6717257d4b8f09f8ce321801ae", [] ], + "clip-path-on-fixed-position-scroll-ref.html": [ + "a4f7dc5479f1b29e5bbf52e2009533d88dd7ba1b", + [] + ], "clip-path-rotated-will-change-transform-ref.html": [ "ddbf0e9812cf432486f22a22cb2680343d5be298", [] @@ -383431,6 +384214,10 @@ "nesting-basic-ref.html": [ "8825ad47d277feb6e64fde381107833e84ccbc56", [] + ], + "supports-is-consistent-ref.html": [ + "0eb8cd16a1688183fa52bc6bc9f2b4243123513d", + [] ] }, "css-outline": { @@ -385294,6 +386081,10 @@ "selection-textarea-011-ref.html": [ "34b9913cf3c5dc3ab4276020f1de7e03fc4ae788", [] + ], + "svg-text-selection-002-ref.html": [ + "8703b313ea41d30c703fcc157bcd31866fd670d1", + [] ] }, "selection-background-painting-order-ref1.html": [ @@ -387493,6 +388284,16 @@ [] ] } + }, + "missing-semicolon-ref.html": [ + "ef8251e9e11b32c1fd016d240df76c7fd91b82f5", + [] + ], + "support": { + "missing-semicolon.css": [ + "0d9a0bbda757b8b4197d6e060f08657d12cf9e93", + [] + ] } }, "css-tables": { @@ -391469,6 +392270,14 @@ "fe5b2191c9713996e2b43d636815d4f475488716", [] ], + "text-decoration-propagation-02-ref.html": [ + "84ad43f88c30c503a38e7bedb913a4a0a34045f3", + [] + ], + "text-decoration-propagation-03-ref.html": [ + "84ad43f88c30c503a38e7bedb913a4a0a34045f3", + [] + ], "text-decoration-propagation-display-contents-ref.html": [ "c8381c64fdaa22cfc4c52fd63d3da6b7cc6dd4bd", [] @@ -393620,7 +394429,7 @@ [] ], "properties.js": [ - "93c47cd2f0310cbe445ec4bdcce29534275adde6", + "4b749db057ce11dbed2411f405326a740d89261a", [] ], "ruler-h-50%.png": [ @@ -395663,11 +396472,11 @@ }, "css-view-transitions": { "3d-transform-incoming-ref.html": [ - "df5eaaca83823999e0dad1890dd706462c077c07", + "a7d5e56db5bb2cc62ec3b339041df51321f0f8f5", [] ], "3d-transform-outgoing-ref.html": [ - "eede13140a57a0719d6f658e5d491436954c3337", + "393943e396a0d0d7da7cdb73216e01d744e0d346", [] ], "break-inside-avoid-child-ref.html": [ @@ -395690,6 +396499,10 @@ "f4a34967ec066c67b5f8b486b7079411a9adb884", [] ], + "content-with-child-with-transparent-background-ref.html": [ + "7b8c15b87f11993ae95529fe669bfb2a513ae833", + [] + ], "content-with-clip-max-texture-size-ref.html": [ "ed8998839ded3de854f9d174ca0050bc6f4ee019", [] @@ -395718,8 +396531,12 @@ "568e040c1e221c4f92391e6466d71287931a1d60", [] ], + "content-with-transparent-background-ref.html": [ + "7349d131d7dfb0876eff9ccb65040675a6d2192a", + [] + ], "css-tags-paint-order-ref.html": [ - "53f6b380c6300b3dfb75bdddf176573921b1b4e3", + "780d5fbd453e9fad21e59d4efb5f100df3dd3003", [] ], "css-tags-paint-order-with-entry-ref.html": [ @@ -395746,6 +396563,14 @@ "9e10b9b44e302a32f71c0fa7efac78eca9f0456a", [] ], + "fractional-translation-from-position-ref.html": [ + "0674b265ac92566737e4c0ab0e86e93c4313579e", + [] + ], + "fractional-translation-from-transform-ref.html": [ + "0721fca5787c73cd7f9f5e59a76bf1d311b08a12", + [] + ], "hit-test-unpainted-element-ref.html": [ "dce9f27d904d73fb3bc9925d0425ef5e484f516b", [] @@ -395770,6 +396595,10 @@ "8c57dba6588244daa4d3ff8d5daa8a1204563df1", [] ], + "named-element-with-fix-pos-child-ref.html": [ + "c1159f8e2cbc710a78e3ddc04d82e45cc6a9656c", + [] + ], "new-and-old-sizes-match-ref.html": [ "b8c3b34c03a693c9f1e71a040a2176dd8dc5413d", [] @@ -395786,10 +396615,18 @@ "deea6d139bc106593089c9f620b9329b344ac441", [] ], + "new-content-captures-positioned-spans-ref.html": [ + "6d906fc6f1c7db141556d67ef097203a67925598", + [] + ], "new-content-captures-root-ref.html": [ "2f2e5e769406ffb2b5eb9909a59dc4bb6ebff6be", [] ], + "new-content-captures-spans-ref.html": [ + "b95233d71238233cbfe3ee59ae521164be893842", + [] + ], "new-content-container-writing-modes-ref.html": [ "34e36786f83ee680e8fdef4bfe15645d67587980", [] @@ -395923,23 +396760,23 @@ [] ], "scroller-child-abspos-ref.html": [ - "fd84030f71b7733ba19a03003ed1f6535f73a8f2", + "ed118e633f013e10761fe2e66a88bce867a6b9a0", [] ], "scroller-child-ref.html": [ - "be7e69ac312be3b9ed414f47b77089aadef448dd", + "4ff2b2c5ae355f0e07442439b2ae66ae3a261bf5", [] ], "scroller-ref.html": [ - "9a764e74c7cb73ba4e32347af9acd0fbf51d2b9b", + "27a2329ee0434158807a8bb0c5deec571838b722", [] ], "set-current-time-ref.html": [ - "2cf8742768aa3591e2c2a0a1befaf72afbd93e60", + "9cf41ec1166ed82dc00240673d691c88064a350b", [] ], "set-current-time-transform-ref.html": [ - "2e977ce262776c6495741daca4c0fa2bacf5665f", + "556d3f544edcd6ea547e8d44f0b78d32d0817ccb", [] ], "set-universal-specificity-ref.html": [ @@ -395954,8 +396791,16 @@ "frame-helper.html": [ "d5bc43e7b820541b9f6e7c8cd5629fe0b08e7592", [] + ], + "transition-in-empty-iframe-child.html": [ + "4eca06a0a943338efd9835e4c2f86b0eff3fce7a", + [] ] }, + "transition-in-empty-iframe-ref.html": [ + "67476122859cd718e900e624b011984550517a6c", + [] + ], "view-transition-name-is-backdrop-filter-root-ref.html": [ "32aaf55412cada7a5832899fa26418cfd705e909", [] @@ -399775,6 +400620,10 @@ "327e8f69fe27bb0d732db62d62cdc3be505ec022", [] ], + "mq-non-matching-lazy-load-style.css": [ + "b128f7398e3bbcb7166dbb235350e0202819ebcf", + [] + ], "prefers-color-scheme-dark.svg": [ "f65fce76ecbd949bd53e64e17ab2c41ded828857", [] @@ -400200,6 +401049,10 @@ "b424e73b4508f255cbdbdcaf88446961e7814727", [] ], + "nth-child-of-complex-selector-many-children-2-ref.html": [ + "60bf0446e636ef47c4f3a2aa31178898ee588feb", + [] + ], "nth-child-of-complex-selector-many-children-ref.html": [ "031f3f1785019cb73fe25dd739a36a5a248d0b8a", [] @@ -402293,7 +403146,7 @@ [] ], "delete.js": [ - "94611e65767647353f4864f65c7ee0ece93f375d", + "bbd95e56a260ea3d1fff5e5410e79145db765c5b", [] ], "fontname.js": [ @@ -402313,7 +403166,7 @@ [] ], "forwarddelete.js": [ - "524d43274e51f0ec2b870c4bf9b4bc64334ec104", + "7c1218276b226d4aeeb038f1a03ae12d74160c78", [] ], "hilitecolor.js": [ @@ -402345,7 +403198,7 @@ [] ], "insertorderedlist.js": [ - "78cdbfeb3286e49260ddf0979a721deb417f3ac6", + "71aacdd9c277e0b34cd5888711128fc56f04c406", [] ], "insertparagraph.js": [ @@ -402357,7 +403210,7 @@ [] ], "insertunorderedlist.js": [ - "6a9a9021fdf001d2e9654bf2e4c6a28b40aad171", + "6401e8d9675cbe213ca3ce4aec6d07b044086e75", [] ], "italic.js": [ @@ -402385,7 +403238,7 @@ [] ], "multitest.js": [ - "118ae4b3a41f753433b76fabaa17e22a28ae6059", + "05e353b1620a23bf00af86fa168d86ccb7542a4e", [] ], "outdent.js": [ @@ -404658,7 +405511,7 @@ ], "resources": { "content-length.py": [ - "b4583b8da37197874b7106555f06352d6cc256a5", + "92cfadeb06177b357aa5b7ff8ac70526a3ff9184", [] ], "content-lengths.json": [ @@ -404678,7 +405531,7 @@ ], "resources": { "content-type.py": [ - "91fcd97a7cb67d8596c021d82bcce07ee85b3149", + "1f077b628996dcf53b7badc81b911b4bf48804b5", [] ], "content-types.json": [ @@ -405050,7 +405903,7 @@ [] ], "record-header.py": [ - "a6b52e1e4b992eec48c287bb6fc7fe020e81383b", + "29ff2ed7985cc131534b172e60097cb596f32a99", [] ], "record-headers.py": [ @@ -405250,7 +406103,7 @@ [] ], "nosniff.py": [ - "bc85ea0ec9837cdb71451f7237e46aea5ce6f231", + "159ecfbebd9a428bc67ce9663d96370f76117ea6", [] ], "worker.py": [ @@ -405364,7 +406217,7 @@ [] ], "preflight.py": [ - "41daebf08d35c165512c9f745fe1252bb844a42f", + "4aefee6f40dd04b338d547fee996a218614d2c44", [] ], "service-worker-bridge.html": [ @@ -405388,7 +406241,7 @@ [] ], "support.sub.js": [ - "adbafac30449cea90f09f71b46001075d9ee063c", + "8ffdf100ee8d81f75c923dc712e2e87e52ab3ce7", [] ], "worker-fetcher.html": [ @@ -407657,7 +408510,7 @@ [] ], "beforeunload-canceling-1.html": [ - "26ffa0e3a820046f514021c8c2c43f80c0c034fe", + "6ba1e657400c1a6436d844f2cc1b916f8d5ca6fc", [] ], "beforeunload-on-history-back-1.html": [ @@ -409721,6 +410574,12 @@ [] ] }, + "layers": { + "2d.layer.alpha-expected.html": [ + "615aa1cb8bfd7ab03b9fb8930317c5975d76b5fd", + [] + ] + }, "manual": { "README.md": [ "68d877200bdc538e0845683491ed17db282d4789", @@ -409943,10 +410802,6 @@ ] }, "layers": { - "layers-alpha-expected.html": [ - "03fe48a3a2078c344d8e95004cf954195d8a9ead", - [] - ], "layers-alpha-filter-expected.html": [ "5b54384a79bfaf43470bc5639f42d7b04fb1e82b", [] @@ -410481,6 +411336,12 @@ "d0524194c9186da948d150da7b36f0f1144a61f9", [] ], + "layers": { + "2d.layer.alpha-expected.html": [ + "615aa1cb8bfd7ab03b9fb8930317c5975d76b5fd", + [] + ] + }, "manual": { "filter": { "offscreencanvas.filter.js": [ @@ -410568,11 +411429,11 @@ [] ], "gentestutils.py": [ - "ecdc1067498247c6301a462fe6092b22e0e3962a", + "27412e40df5f523e78cde28cc1c32b8b82047c3e", [] ], "gentestutilsunion.py": [ - "2a9c53e99ac420611526664ebcbeea66065a0940", + "097bf12483d1896edc0de0a27563a4b7ba2eae17", [] ], "name2dir-canvas.yaml": [ @@ -410584,15 +411445,15 @@ [] ], "name2dir.yaml": [ - "15da6f88ad53c077e0a0a322ddf1b957b064a381", + "d6871f285298ee7051634a3404ce3bb67c8546a2", [] ], "templates-new.yaml": [ - "d8af47d2590aab1055ba9c512a7fc3fde8e07538", + "eaaf6efac88901f9c690c3d74a92887d748e90d5", [] ], "templates.yaml": [ - "7e96e0707bc20faeada874a390cde2bdcd2cff42", + "cb11f76db623c13993835a104eee3a58a0762218", [] ], "yaml": { @@ -410702,6 +411563,10 @@ "cc5dfe7fefbcd9a5cbf487e46cdab3afdd84c3d1", [] ], + "layers.yaml": [ + "7f9719fd505347737f4e9e39a3abaa7f63ef0ad3", + [] + ], "line-styles.yaml": [ "604f4f3659a40b89b05f1bce3968f2580dce3c6f", [] @@ -418130,6 +418995,18 @@ "d12943105f8c47d32f47eec0aa773a9a98046bfa", [] ], + "selectmenu-selected-value-behavior-ref.html": [ + "bf468c5516cdbdab072983beaf1f506e62ed2251", + [] + ], + "selectmenu-selected-value-part-ref.html": [ + "744846b5511e399b2f167862df0c18d8fffec3cc", + [] + ], + "selectmenu-selected-value-slot-ref.html": [ + "132058308449978a1d27c5b1be421a748bde2898", + [] + ], "support": { "back.html": [ "0d13a0f3b7c9c759a9a29c0d70a535b398ff108e", @@ -418541,59 +419418,59 @@ } }, "popovers": { - "popover-anchor-change-display-ref.tentative.html": [ + "popover-anchor-change-display-ref.html": [ "9530e7d3c4b98d7233a9ad22287d9f3d632b1ace", [] ], - "popover-anchor-display-ref.tentative.html": [ - "b9710ee5b5ee536b6c0f8219990a212a2e2e14da", + "popover-anchor-display-ref.html": [ + "f701810da2d1b32d9506d9aa49a2827a2ba51055", [] ], "popover-anchor-nested-display-ref.html": [ "17311f218b24d49fd72dd8c9e330efb13de43990", [] ], - "popover-anchor-scroll-display-ref.tentative.html": [ - "dbaa30b047f7d933cbbaabe769f86976c6098dd1", + "popover-anchor-scroll-display-ref.html": [ + "1bac806d11191823bdcf87b61693b00c7d507450", [] ], - "popover-animated-display-ref.tentative.html": [ + "popover-animated-display-ref.html": [ "477a97c12ccd9dc8f6a5427c7d85449e96d8f3ff", [] ], - "popover-animated-hide-finishes-ref.tentative.html": [ + "popover-animated-hide-finishes-ref.html": [ "d8334f985ed51f3277d069838132876d8aad2ffc", [] ], - "popover-appearance-ref.tentative.html": [ + "popover-appearance-ref.html": [ "7ceca94559b8d425c10243f61b038d6c8422a02b", [] ], - "popover-backdrop-appearance-ref.tentative.html": [ + "popover-backdrop-appearance-ref.html": [ "bf2b16c3f5de4777808d92e436a97609a9fbc16b", [] ], - "popover-dialog-appearance-ref.tentative.html": [ + "popover-dialog-appearance-ref.html": [ "12efbb6b1e4934de6b32df60304cd40a44548301", [] ], - "popover-hidden-display-ref.tentative.html": [ + "popover-hidden-display-ref.html": [ "2dc0d558b634279a09703798e9a531748215a563", [] ], - "popover-inside-display-none-ref.tentative.html": [ + "popover-inside-display-none-ref.html": [ "3d58e4ca095c228f05a5f6a0e4cc99aac54fd407", [] ], - "popover-open-display-ref.tentative.html": [ + "popover-open-display-ref.html": [ "144b81e6457614d4aceb4b7e71f91f77505f828a", [] ], - "popover-open-overflow-display-ref.tentative.html": [ + "popover-open-overflow-display-ref.html": [ "0d14050e85eb7ff09d1b9c7c88c13dbb16b4b77a", [] ], - "popover-stacking-context-ref.tentative.html": [ + "popover-stacking-context-ref.html": [ "4d4ca6973f89680d64b766b24909da7cf6832b67", [] ], @@ -423725,10 +424602,6 @@ "0204bf53424826b04be7bce2c34e429332a527a9", [] ], - "popover.tentative.idl": [ - "4e8c85f7dacb1447719ab4ed4cfc345c4033f467", - [] - ], "portals.idl": [ "5d85cce667b67ce301a5242fd77ec8974ffbed61", [] @@ -424799,6 +425672,10 @@ "9d5eef896ab6cab04be090ce970cb7d2347a9fca", [] ], + "frac-bar-003-ref.html": [ + "6bb6370d6e664e1e20fc51c8b1791f7bccae3ab9", + [] + ], "frac-color-001-notref.html": [ "498d6277a3258c70882e7b2ec92e82e974bf9ab0", [] @@ -425431,6 +426308,14 @@ "fcaf5fe85b44129db71f82913374859380576369", [] ], + "width-height-002-ref.html": [ + "ed5125e95265b4e158a244766138c62fd5f86a3b", + [] + ], + "width-height-003-ref.html": [ + "84eb2cd08952af64b173e241d6801822538503ae", + [] + ], "writing-mode": { "reset-and-logicial-property-ref.html": [ "6eae88efb16b3e40b0f9f40698cccb32c893415b", @@ -427075,11 +427960,19 @@ "ecfa0e3c2d9418253ae48d75fec39e662b6f862f", [] ], + "getnotifications-sw.js": [ + "331913b99358922f7d9743a8dc49218bc93004c2", + [] + ], "noop-sw.js": [ "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", [] ], "resources": { + "custom-data.js": [ + "b21d28a1bb390575f34206c87aae1f7fd8655fd7", + [] + ], "icon.png": [ "ee919cd512d8ae540d77161e7af1797f684fe014", [] @@ -427407,7 +428300,7 @@ ], "not-restored-reasons": { "test-helper.js": [ - "03ae1df3d3103c83f9b2487ed7f2281bfd861def", + "0737f719bfbabea673e279f29697aca9181d2daa", [] ] }, @@ -430611,7 +431504,7 @@ [] ], "resource-timing-content-length.py": [ - "6dbce047b72ef05976d5296ea38961e205a0f04e", + "687689e2726f456f39c32584a8dfd7f9b8bd36a2", [] ], "resource_timing_test0.css": [ @@ -430795,7 +431688,7 @@ [] ], "mock-subapps.js": [ - "ddbf27649e19954fd602b80aac17e1b5c19576be", + "b63e97b8c4dccf7726671d7f372f24bc431ba2f1", [] ], "mock-textdetection.js": [ @@ -430843,7 +431736,7 @@ [] ], "webxr-test.js": [ - "452cdfa5e37d1c4c3173d41b0741250ca257aae2", + "db61e1ce4d6412231d1004fd9f59e2b1690b754f", [] ], "webxr-test.js.headers": [ @@ -434781,7 +435674,7 @@ [] ], "soft-navigation-helper.js": [ - "d1a60c15ef406be36a05f602315561cc3225790e", + "c24af60274da083ac7563bda1042cbfb0dfd37d4", [] ] } @@ -434899,14 +435792,6 @@ "5f8621ef83660c66f0d037ea28fafefb558140f1", [] ], - "csp-prefetch-src-allow.sub.html": [ - "bb631b3554e8d9bef31f334414c2fe938b76f474", - [] - ], - "csp-prefetch-src-disallow.sub.html": [ - "7be73c8c6f2e856b49b9127e959e3e23796e749a", - [] - ], "csp-script-src-elem-inline-speculation-rules.html": [ "19aff92206f06ec19b6351398b2b351064eedbf5", [] @@ -435064,7 +435949,7 @@ [] ], "prerender-state.html": [ - "914db2a9ed900ece42982c12913576086f7db928", + "34a59f07ee1c88c6e17a19c17cc6141d5b2f2650", [] ], "prerendered-iframe.html": [ @@ -435288,7 +436173,7 @@ [] ], "helpers.js": [ - "e607124155e031a273f5abe7e9dad2da8b988d7e", + "b0f8866f7c68ee047b6590c9b8d6a399592acf7d", [] ], "resources": { @@ -435319,10 +436204,6 @@ "script-with-cookie-header.py": [ "83129a55595e54225afd7e9161931d8e5f60f0c0", [] - ], - "set-cookie.py": [ - "019697a4a8608943e0258664138ce9a7b6ae6876", - [] ] } }, @@ -436745,7 +437626,7 @@ ], "tasks": { "test.yml": [ - "fd0fda9c9913d2f7e3cc64f08da73ae0e4e20de2", + "fe24199cae10b958bb98012bbcc4b4619ff86a73", [] ] }, @@ -445413,7 +446294,7 @@ [] ], "safari.py": [ - "ba533f4bc3b5490498394a36da804ada52054775", + "3e4a6c8d4dc110cd74a341a4e8153ff682ac84e2", [] ], "sauce.py": [ @@ -445820,7 +446701,7 @@ } }, "wptrunner.py": [ - "da3b63ba5b4257d569249ce542a8ee2ef94fa4a0", + "224a4fde4df64c480232f6d3af0a651da5d0375c", [] ], "wpttest.py": [ @@ -447530,11 +448411,11 @@ "animation-model": { "animation-types": { "property-list.js": [ - "59866a5897720ed26d8ab9e8bee39d04ebc29909", + "b41ca90eef447e4fe02544c29fe004fa88a3490c", [] ], "property-types.js": [ - "6f39020b5c860b8af1326f66fd99d52583a5fd8e", + "756dbae70436224904df15c328521641d4928fbb", [] ], "property-utils.js": [ @@ -447851,7 +448732,7 @@ ] }, "test-helpers.js": [ - "5c380c88d87ae359478baeafefe425b5c486f113", + "27dfb4c0ec1605c674664eccbd0985e2b95a77ba", [] ], "uuid-in-package.har": [ @@ -449116,10 +449997,6 @@ "__init__.py": [ "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", [] - ], - "conftest.py": [ - "5fd5f8a065cec7a8f3b612e23ab26e706afc7097", - [] ] }, "find_elements": { @@ -449138,10 +450015,6 @@ "__init__.py": [ "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", [] - ], - "conftest.py": [ - "5fd5f8a065cec7a8f3b612e23ab26e706afc7097", - [] ] }, "forward": { @@ -449218,10 +450091,6 @@ "__init__.py": [ "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", [] - ], - "conftest.py": [ - "4ca71025d69184d5f6edac66f700f5c6e71d5998", - [] ] }, "get_element_tag_name": { @@ -449466,7 +450335,7 @@ [] ], "fixtures_http.py": [ - "42a74ba41fbc4d4943650fc6cfa23e24561b679c", + "748fe214a2b39d57d3581eee6a196cc5ad85ac08", [] ], "helpers.py": [ @@ -449828,7 +450697,7 @@ [] ], "gemm.json": [ - "909b8e31cea812ac5b776c565e67ad465ca30aaa", + "1323dcbdd8dfce6138d7fbf8034b2b1f1c653951", [] ], "leaky_relu.json": [ @@ -452667,7 +453536,7 @@ [] ], "webxr_test_constants.js": [ - "1a0d7bddad558f8064195d034c8b58775669eadc", + "d0d4fa274747842cea7bb2440f44b6d04b25c4a5", [] ], "webxr_test_constants_fake_depth.js": [ @@ -452699,7 +453568,7 @@ ], "resources": { "helpers.js": [ - "f6acb54c267d2b9a54c4fba4003ee904863dc1c8", + "92442f913324fd46788297e6c9171ef2f0461db9", [] ] } @@ -454211,7 +455080,7 @@ [] ], "bad-chunk-encoding.py": [ - "c34c5fa1de20f45cd78436a670c12dd56ac5585f", + "7ed0ad4ae11a14f75b36ce22dde9b0b8d1316b5a", [] ], "base.xml": [ @@ -454243,11 +455112,11 @@ [] ], "echo-content-type.py": [ - "53e1de5b32ded36383c7f1447fbd3126a911c682", + "595c88f32a72c5d8fafbed4eaf00e456513bba6c", [] ], "echo-headers.py": [ - "1c5bd46709d4d781ff6da86c9ba04a017356853c", + "58a7ed5637f9d2b193f40380f0a6e4e96306b905", [] ], "echo-method.py": [ @@ -467977,7 +468846,7 @@ }, "wrapKey_unwrapKey": { "wrapKey_unwrapKey.https.any.js": [ - "65e640a258452f796e3066739bef1032e76393e9", + "95102495fe3a5be8cd8f8196328867b0d4ba5c1e", [ "WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.any.html", { @@ -475479,9 +476348,102 @@ } } }, + "browsing-topics": { + "browsing-topics-permissions-policy-default.tentative.https.sub.html": [ + "a7c5a95cff33407b1ec172a8881964450e758a8f", + [ + null, + {} + ] + ], + "browsing-topics-permissions-policy-none.tentative.https.sub.html": [ + "7d33f3bdaee21e4c522d53cff14c258b2f9921ac", + [ + null, + {} + ] + ], + "browsing-topics-permissions-policy-self.tentative.https.sub.html": [ + "7647998c8562cc70379e5238b440dec47fb6a665", + [ + null, + {} + ] + ], + "document-api-insecure-context.tentative.http.html": [ + "b2f0abf8e0080637495989e0270955249fd0e2da", + [ + null, + {} + ] + ], + "document-api.tentative.https.html": [ + "d1d515ccba98a4fa095a3ccfa0b2f8e618e41468", + [ + null, + {} + ] + ], + "fetch-topics-header-not-visible-in-service-worker.tentative.https.html": [ + "76f7b909578c4049793a16c296181f6f8b7d9f52", + [ + null, + {} + ] + ], + "fetch-topics-insecure-context.tentative.http.html": [ + "d4cdd9ae95c3550474b0a090c29a598a730aea3d", + [ + null, + {} + ] + ], + "fetch-topics.tentative.https.html": [ + "e5dd1d9b98688637ce96230a10aaa9a66212eaf6", + [ + null, + {} + ] + ], + "fetch-without-topics-flag.tentative.https.html": [ + "f942915a7f79ecbc0a7344ddd59d2d8e64cda468", + [ + null, + {} + ] + ], + "topics-not-allowed-for-service-worker-fetch.tentative.https.html": [ + "1bd578e9bf74fb942fa1bfcc6c001c0c096364bf", + [ + null, + {} + ] + ], + "xhr-topics-insecure-context.tentative.http.html": [ + "5e32b83f9e4afd41af406a545c9740572e6b24b1", + [ + null, + {} + ] + ], + "xhr-topics.tentative.https.html": [ + "532a0404240593173a79b0d1009bacc1d85ff02d", + [ + null, + {} + ] + ], + "xhr-without-topics-attribute.tentative.https.html": [ + "47bc1049e4c26839ead80c6379eff60726a123e4", + [ + null, + {} + ] + ] + }, "clear-site-data": { "executionContexts.sub.html": [ - "f09a3f73b59994ae82532a4412116815012e4371", + "b3ae17576a3b09fe576c24d8d454b5ef504832a8", [ null, {} @@ -482596,50 +483558,6 @@ ] ] }, - "prefetch-src": { - "prefetch-allowed.html": [ - "b738823c4cd133a87f40dfed4de3ed480ccd4749", - [ - null, - {} - ] - ], - "prefetch-blocked-by-default.html": [ - "0e54de66de541426eb55b1719f9db81bdc3dbabf", - [ - null, - {} - ] - ], - "prefetch-blocked.html": [ - "890a65f82cf58b045bffc91fd10f6f7aa91ae185", - [ - null, - {} - ] - ], - "prefetch-header-allowed.html": [ - "45f6289e34ef7ca419209a7b78d0e5661a0529b6", - [ - null, - {} - ] - ], - "prefetch-header-blocked-by-default.html": [ - "e43dca76599dd1471634c000a179f7a84dd40760", - [ - null, - {} - ] - ], - "prefetch-header-blocked.html": [ - "a2abef3c17b899ec13973ebd438e2528be31bda7", - [ - null, - {} - ] - ] - }, "reporting": { "multiple-report-policies.html": [ "c28e9ae44a51c85ea614d86c6b18eda8bdffcaa6", @@ -482895,6 +483813,71 @@ ] ] }, + "resource-hints": { + "prefetch-allowed-by-any-directive.sub.html": [ + "c1954641b11bb55507fb379e08a1ce0dbd4f3732", + [ + null, + {} + ] + ], + "prefetch-allowed-by-default.html": [ + "fa31e941ebb10e71e0a32e4366b739410ae1ca2a", + [ + null, + {} + ] + ], + "prefetch-allowed-no-default.html": [ + "195c927a8d1630abdb1ab47447cc792f68cd2213", + [ + null, + {} + ] + ], + "prefetch-allowed-with-conflicting-permissive-policies.html": [ + "fe7cce0efbc6cc07b316798e726ccc0296fba8f6", + [ + null, + {} + ] + ], + "prefetch-blocked-by-default-multiple-policies.html": [ + "b53b021e6d94a83f606c8d7f3c5f545b2c813c08", + [ + null, + {} + ] + ], + "prefetch-blocked-by-default.html": [ + "6780c80e8a61fa634d3d65a6a0af5d89dc192275", + [ + null, + {} + ] + ], + "prefetch-generate-directives.html": [ + "b08d885c1ecc5eff19c7bc8aa3c45fd0c415ed46", + [ + null, + {} + ] + ], + "prefetch-ignores-prefetch-src.sub.html": [ + "f9350bd65717e163e2d2e3516f25a56400150386", + [ + null, + {} + ] + ], + "prefetch-no-csp.html": [ + "87f2937b84ed8d0c7685550b68e2affe628cdcaf", + [ + null, + {} + ] + ] + }, "sandbox": { "iframe-inside-csp.sub.html": [ "cd402bdba0198bf763e1733004c2005614b9a542", @@ -486895,7 +487878,7 @@ ] }, "fedcm-network-requests.https.html": [ - "2212a435377814bf56a4c97b739585b74363f98e", + "73d83de9119ef34dae2a1b2b864cf876f9e8cbaa", [ null, {} @@ -488306,22 +489289,29 @@ } }, "css-anchor-position": { + "anchor-default-basics.html": [ + "783cb539cc39bc68040b74fc9ac28c1bf2be38df", + [ + null, + {} + ] + ], "anchor-name-001.html": [ - "8d64d4a1a34d0c8dfd1bf080d614f2b017bc5c08", + "a7b4b01ff472b1488f2de50ddf7cadbda7ca34b9", [ null, {} ] ], "anchor-name-002.html": [ - "88728f6f4768f13d7bd188c474a4bcaf24d84d1b", + "4c14e1d63c93ce59192b4fb54c13042f15480814", [ null, {} ] ], "anchor-name-003.html": [ - "998e6433d2319ffce6ffd2f8c8a6591a374c9c1f", + "91ff5bc9065ed3d9b9f321971ccf0cadb31a992b", [ null, {} @@ -488341,6 +489331,13 @@ {} ] ], + "anchor-name-in-shadow-002.html": [ + "321ceebcc4eb1dffd5a903ec734f108d7b46aebe", + [ + null, + {} + ] + ], "anchor-name-in-shadow.html": [ "7e505ed59282008bb611471fe3a3ec9ede8ed2c3", [ @@ -488349,35 +489346,35 @@ ] ], "anchor-name-inline-001.html": [ - "ae8c1d65140c42f629c5a82b6803a80e54b7ff94", + "70b753cda2d8aaabddbdc42d1e5cc6588279e88b", [ null, {} ] ], "anchor-name-multicol-001.html": [ - "13ff9524b7f72e6c4dc894cf87dcc56ca6d116f0", + "641ecf999b7fcde52f7ce162c1756cafbf67f81d", [ null, {} ] ], "anchor-name-multicol-002.html": [ - "292b6f295ac4987adbf09f832cf44efbf28bba1e", + "73b7b566206707ac4cb3447cc732bf0026044761", [ null, {} ] ], "anchor-name-multicol-003.html": [ - "a343a732ad3fbba167cd618037820f67641b36e5", + "8b06b4c641caab53b6c4038c7100a78678360928", [ null, {} ] ], "anchor-name-multicol-004.html": [ - "11287c0c60c2cec7396d8bea5384a1fa0f0eda07", + "881578a4639e44abd04dfe7ead64345727e43cb2", [ null, {} @@ -488398,35 +489395,35 @@ ] ], "anchor-position-001.html": [ - "68e62e54790c9398b0e022e5a7f1514bcc6683dd", + "6fc188ab69499e218ed390c8a8852a4f3a886c7b", [ null, {} ] ], "anchor-position-002.html": [ - "0e4b2808d3de2484cdf0bf8ba39eed6bf7495824", + "de8fc4792a2d73828fdd991d31775029ce566ddd", [ null, {} ] ], "anchor-position-003.html": [ - "fe8ec3a8d6ba197d8dc13e63447b0d9327d16e5e", + "d5263fcddff526860684ecf68264e1ef7fe56f81", [ null, {} ] ], "anchor-position-004.html": [ - "d6d4d6427629825ef4044a7b77d28637e7818147", + "387c9ab692ea0a0d32ccee578ad34448999a3714", [ null, {} ] ], "anchor-position-borders-001.html": [ - "5bbe3d79147975834933f9d9d95c52740a6618fe", + "1e2ecbc909cee0f9f301481c12ab6a8fc9b4ff0c", [ null, {} @@ -488440,133 +489437,133 @@ ] ], "anchor-position-dynamic-001.html": [ - "95b90c9bf12c10be70fe76978bc4cf5d0af06a0d", + "96d5f996ef363efef7f32d206e37a25db6569929", [ null, {} ] ], "anchor-position-dynamic-002.html": [ - "a0924e92201993d081b01ca2a20b9ae37895698a", + "e97ae5e12b84825c12582d6b8dd36069d4250e5e", [ null, {} ] ], "anchor-position-dynamic-003.html": [ - "6deba86c7efe75dce05a3c3280e4193e7719ae79", + "0400be1bdeb5112012cccfdc655831b1883a7168", [ null, {} ] ], "anchor-position-dynamic-004.html": [ - "01f1cd2ebc7e185db37c570139bd803756f51c27", + "b7944652a0b21d5ef4e690c7a1f81c1615be218a", [ null, {} ] ], "anchor-position-grid-001.html": [ - "8178f212fe42c9f9db4c6a39920592214ad1adbd", + "92fb4d275b8988641ed0736969e918703e4d649d", [ null, {} ] ], "anchor-position-inline-001.html": [ - "09acf6be8b435493017baa82312f37686dceaf5f", + "12c1766a6cd64c27dfdca0abff2ae749ff66a7ba", [ null, {} ] ], "anchor-position-inline-002.html": [ - "c366db4b28f947cbf187dcd3acc3be653d56b1e3", + "d723e0c00440b69007463ddfe84bf83c2bdb07b0", [ null, {} ] ], "anchor-position-inline-003.html": [ - "17ab5085834100174c70ad36361027a95aace447", + "2915d6328c8cdf309f3069f8e817bfea435d9f86", [ null, {} ] ], "anchor-position-inline-004.html": [ - "58da8be7c7a83568ca5cf4bef02724dd91d6c9f7", + "e47147ec672dfc096c915cb587cd74f04cc7d3cc", [ null, {} ] ], "anchor-position-multicol-001.html": [ - "777df1b84cb58c6f8b5cee3ff315e7e8f0f4b71b", + "ddbbc8d2f4374f419f49e4956ac45a3a8fdc3fca", [ null, {} ] ], "anchor-position-multicol-002.html": [ - "748f9ad2b55f5bee16ddb3309d182ce493e9c0e0", + "7b2691a2b904ffb7fdc3d720b07ca454e1df7fe1", [ null, {} ] ], "anchor-position-multicol-003.html": [ - "3685d0782cdff7da116776fd30e3e1c86cb3efe8", + "bf3e48ed207d12bb4c766009d33bb07041b2ca48", [ null, {} ] ], "anchor-position-multicol-004.html": [ - "dea289f07e227d54bf3fe19ac810cf47a5f4b65d", + "2be88797541fd29a23b0d8b47448dcb5c5c81bb5", [ null, {} ] ], "anchor-position-multicol-005.html": [ - "92f468ceda911c5945b5022f8649a1d68a9c3c19", + "2239331ae39261865bb7bdc2d48964d57c097ed6", [ null, {} ] ], "anchor-position-multicol-006.html": [ - "2b9f55c0241736ec9feb6dbc20e5674a1ceb449f", + "93d4ac65985c11625e999adb9160ca6233378675", [ null, {} ] ], "anchor-position-multicol-colspan-001.html": [ - "705f872a7962ebc637994176df838752c10d8f24", + "f90ee5c3a262968d6126ac7ef7353bfb713891a2", [ null, {} ] ], "anchor-position-multicol-colspan-002.html": [ - "b6e720da184eb72e3d5523978cdb9977c15dc51b", + "0c341f987afb8dd44a5d5071002037599433e196", [ null, {} ] ], "anchor-position-multicol-fixed-001.html": [ - "4321c20defb2e57e6a989e4ddea9f68d84f6d1c0", + "6fca40dd7e90631d4272a0d27431e55cc6aca21f", [ null, {} ] ], "anchor-position-multicol-nested-001.html": [ - "d83b8ddd95201dbf1b00dad3faea102c87eece40", + "35ab2cfc15cea1fa1788f9b4cb09f9af39d079ec", [ null, {} @@ -488601,7 +489598,7 @@ ] ], "anchor-query-fallback.html": [ - "95d43ffedb7b8cbe437c2e444d5b454d5738ffcb", + "6058d23885f4d7639590f95f000fc13fe57ad56b", [ null, {} @@ -488650,14 +489647,14 @@ ] ], "anchor-size-001.html": [ - "e5a0dfde1f6dac48ad9f8d1fbff263f57139a8d1", + "50620da257cdb0a9d2b1446bd07c055c60ae3198", [ null, {} ] ], "anchor-size-minmax-001.html": [ - "f7fb07b0af1138ebaa9a4eb02a61c8f0e684517a", + "364b3eb24f19dea2666d986c95fc1f4f77128d7a", [ null, {} @@ -488678,14 +489675,14 @@ ] ], "anchor-size-replaced-001.html": [ - "e5d133acf7a1c176de460da65f9f907eb02e7448", + "27554b31353cf06c3e0a025bfceb23718b143eca", [ null, {} ] ], "anchor-size-writing-modes-001.html": [ - "c9e061974125146b6cbe1c1deb9bbb3c53d897e7", + "25d4eea19298878c0d25deb5faf4b17785e128b5", [ null, {} @@ -488741,14 +489738,14 @@ ] ], "position-fallback-001.html": [ - "85f1d1d65acbf177c7fd4c0eb48848876b3004de", + "d28c71ec6813000296012a4fcab8787dbb3e8f5d", [ null, {} ] ], "position-fallback-002.html": [ - "52c964609bde2aa902147429f779361b8fdaac3c", + "ea6ff11479a8c482c49820ec7fb40b33d732676d", [ null, {} @@ -488769,7 +489766,7 @@ ] ], "position-fallback-custom-property.html": [ - "ca709af3de112869c60db378175fbdd5f2c7a06f", + "edb7efc7ed6884a52f6b3a3b7ba8a06833d1c349", [ null, {} @@ -488783,7 +489780,7 @@ ] ], "position-fallback-grid-001.html": [ - "f5ab4254b521aaf57f0cab7e8213d31330056372", + "abe80bf51ef38adc7cd56a99797408da6433e1bb", [ null, {} @@ -489389,7 +490386,7 @@ ] ], "animation-range-end-computed.html": [ - "157487ebca0cc5345d3fd656a599cb82c75d42c3", + "6df4ada8afd45eebda1b102d5430177c3c9fe614", [ null, {} @@ -489403,21 +490400,21 @@ ] ], "animation-range-end-valid.html": [ - "c3c0bcce5521bccc159e7ecdbe99fda550de68d9", + "331695c75d2f6a8b21a9ff304357991cc2cc0088", [ null, {} ] ], "animation-range-shorthand.html": [ - "1301f04a7f25117609f01d7ec7420e56fd6b0310", + "7056374473b3b1a36fdd3e8bdf85d7389de1362a", [ null, {} ] ], "animation-range-start-computed.html": [ - "5fb4cb120117852d86407150b881ebf949215cdb", + "e03915563416f3574b167384b13f660f8b0fd1c2", [ null, {} @@ -489431,7 +490428,7 @@ ] ], "animation-range-start-valid.html": [ - "0ccc5be84604a3ea1e708b201b16a30adff54823", + "cd85ee239f96428ea0076b114167f213bdb121f8", [ null, {} @@ -489767,7 +490764,7 @@ ] ], "background-size-001.html": [ - "ce1666c9a8160e0a57f364caed98352873131e93", + "fee271de14a4664a0aff4f99b4511107b36beb77", [ null, {} @@ -490041,7 +491038,7 @@ ] ], "background-valid.html": [ - "41a334598f21ed9ac70a73c0307d7607039e5fe8", + "cb086dd3ec87d902d47f209688f0cee21921ab97", [ null, {} @@ -490930,9 +491927,37 @@ ] ], "all-prop-revert-layer-noop.html": [ - "66aa2b9c736c1fc2a101c000340e3a9855378f77", + "5c31c5803cc8be7e91bb0465480d9d340db8c0c1", [ - null, + "css/css-cascade/all-prop-revert-layer-noop.html?include=0", + {} + ], + [ + "css/css-cascade/all-prop-revert-layer-noop.html?include=1", + {} + ], + [ + "css/css-cascade/all-prop-revert-layer-noop.html?include=2", + {} + ], + [ + "css/css-cascade/all-prop-revert-layer-noop.html?include=3", + {} + ], + [ + "css/css-cascade/all-prop-revert-layer-noop.html?include=4", + {} + ], + [ + "css/css-cascade/all-prop-revert-layer-noop.html?include=5", + {} + ], + [ + "css/css-cascade/all-prop-revert-layer-noop.html?include=6", + {} + ], + [ + "css/css-cascade/all-prop-revert-layer-noop.html?include=7", {} ] ], @@ -490944,12 +491969,38 @@ ] ], "all-prop-revert-noop.html": [ - "d70fa53022e16e2fc01f9035e13f1f4eb9f118bf", + "e8f560d685255b91ce42a14d6b62daf2cde1ab5a", [ - null, - { - "timeout": "long" - } + "css/css-cascade/all-prop-revert-noop.html?include=0", + {} + ], + [ + "css/css-cascade/all-prop-revert-noop.html?include=1", + {} + ], + [ + "css/css-cascade/all-prop-revert-noop.html?include=2", + {} + ], + [ + "css/css-cascade/all-prop-revert-noop.html?include=3", + {} + ], + [ + "css/css-cascade/all-prop-revert-noop.html?include=4", + {} + ], + [ + "css/css-cascade/all-prop-revert-noop.html?include=5", + {} + ], + [ + "css/css-cascade/all-prop-revert-noop.html?include=6", + {} + ], + [ + "css/css-cascade/all-prop-revert-noop.html?include=7", + {} ] ], "at-scope-parsing.html": [ @@ -491401,7 +492452,7 @@ ] ], "color-invalid-color-function.html": [ - "82c6fe335809b2ae71de034e5d609f21fc439241", + "5a39d42c2d41842b0e043639217d3f6f90f4fbf3", [ null, {} @@ -492567,7 +493618,7 @@ ] ], "content-visibility-031.html": [ - "134b1c18f73d978e9f113cddd223dfdfa21cb8d9", + "d131c242bcb88df20ac436a592cc2d23a164cbfa", [ null, {} @@ -496434,7 +497485,7 @@ ] ], "font-style-parsing.html": [ - "cb5e42eab4f7f304a163ff34807ba2a54df3d5b1", + "57384eaba33170f7c39450fcf0aa595e3f3190fb", [ null, {} @@ -500225,7 +501276,7 @@ ] ], "image-set-parsing.html": [ - "3859b5f64caae2a9499fac04f5c16aa0e2c93ad0", + "52f99ecf0a5b6a7a51c5967aff393270336a77e1", [ null, {} @@ -501682,7 +502733,7 @@ ] ], "mask-valid.sub.html": [ - "c6e2c28af51dfafef5e337941497661a31e15890", + "4b2ebfb7c782469e4239ff3358d71c208badb04d", [ null, {} @@ -515273,6 +516324,13 @@ } ] ], + "user-select-inheritance.html": [ + "38a57e0285698475fefe208cc8a71ca7d04226f3", + [ + null, + {} + ] + ], "user-select-none-in-editable.html": [ "c8718dd14bb18d56f4c914221f8c19128369332c", [ @@ -516400,27 +517458,6 @@ {} ] ], - "no-containment-on-new-element-mid-transition.html": [ - "dc5ede4d8d34dd69a767d2f49871649b36b4ab75", - [ - null, - {} - ] - ], - "no-containment-on-new-element.html": [ - "57f148309b4a93bd007e43cb16ba280104fe02e0", - [ - null, - {} - ] - ], - "no-containment-on-old-element.html": [ - "b0af95bf6ceb5635e8dbaf1eb8caab4cec0d361e", - [ - null, - {} - ] - ], "no-crash-set-exception.html": [ "06e519e447c016cf244cb84bb9c0fdc30771fdd3", [ @@ -516447,7 +517484,7 @@ ] ], "only-child-group.html": [ - "c3e9d669a30e24c93cbe0dc20c211b8e3e92d9a8", + "665befee122a5a4e232c29cf34f70bdd60bab9d3", [ null, {} @@ -516461,7 +517498,7 @@ ] ], "only-child-new.html": [ - "62328f27cf259d5b50fbea43e02ba3200364b8e7", + "a03e0454f55abbd5bf56beeb3d9f9544c0be50a0", [ null, {} @@ -516475,7 +517512,7 @@ ] ], "only-child-old.html": [ - "56dfa168e253eddc61e41db8bcd766c3282ae726", + "79fb26c6d3943b3ea8ba127274cee91518001970", [ null, {} @@ -516512,7 +517549,7 @@ ] }, "paused-animation-at-end.html": [ - "47db0a6fcd67450682d56de18a9d0289d62e9199", + "ae9176ea26c242a0d268310405f1202181dd5ad1", [ null, {} @@ -516574,13 +517611,6 @@ {} ] ], - "view-transition-name-on-added-element.html": [ - "643121e81854321a027b7e1128d2cd1cc2761d06", - [ - null, - {} - ] - ], "view-transition-name-on-removed-element.html": [ "36beb308283a9a61a2289193b136fa7bed7f09d7", [ @@ -519769,6 +520799,13 @@ {} ] ], + "mq-non-matching-lazy-load.html": [ + "e0d65e300681512c69713c03c5653cdfeff3efe5", + [ + null, + {} + ] + ], "mq-unknown-feature-custom-property.html": [ "48ad5b4f51449bf90c5375c27ec1c1a13e88a5d1", [ @@ -521710,7 +522747,7 @@ ] ], "HTMLElement-constructor.html": [ - "12ceb566cb548f807bc3254ff39fdf077f8f3413", + "a387a1239a99247b65c4e4464acb7f2ca38c4f93", [ null, {} @@ -527657,6 +528694,117 @@ } ] ], + "inserthtml-do-not-preserve-inline-styles.html": [ + "3483f8f995532ec64083d5aa5a718acfcab34284", + [ + "editing/other/inserthtml-do-not-preserve-inline-styles.html?stylesAtInsertionPoint=bold&stylesInserting=fontname", + { + "timeout": "long" + } + ], + [ + "editing/other/inserthtml-do-not-preserve-inline-styles.html?stylesAtInsertionPoint=bold&stylesInserting=fontsize", + { + "timeout": "long" + } + ], + [ + "editing/other/inserthtml-do-not-preserve-inline-styles.html?stylesAtInsertionPoint=bold&stylesInserting=forecolor", + { + "timeout": "long" + } + ], + [ + "editing/other/inserthtml-do-not-preserve-inline-styles.html?stylesAtInsertionPoint=bold&stylesInserting=hilitecolor", + { + "timeout": "long" + } + ], + [ + "editing/other/inserthtml-do-not-preserve-inline-styles.html?stylesAtInsertionPoint=bold&stylesInserting=italic", + { + "timeout": "long" + } + ], + [ + "editing/other/inserthtml-do-not-preserve-inline-styles.html?stylesAtInsertionPoint=bold&stylesInserting=strikethrough", + { + "timeout": "long" + } + ], + [ + "editing/other/inserthtml-do-not-preserve-inline-styles.html?stylesAtInsertionPoint=bold&stylesInserting=subscript", + { + "timeout": "long" + } + ], + [ + "editing/other/inserthtml-do-not-preserve-inline-styles.html?stylesAtInsertionPoint=bold&stylesInserting=superscript", + { + "timeout": "long" + } + ], + [ + "editing/other/inserthtml-do-not-preserve-inline-styles.html?stylesAtInsertionPoint=bold&stylesInserting=underline", + { + "timeout": "long" + } + ], + [ + "editing/other/inserthtml-do-not-preserve-inline-styles.html?stylesAtInsertionPoint=bold,italic&stylesInserting=strikethrough,underline", + { + "timeout": "long" + } + ], + [ + "editing/other/inserthtml-do-not-preserve-inline-styles.html?stylesAtInsertionPoint=fontname&stylesInserting=bold", + { + "timeout": "long" + } + ], + [ + "editing/other/inserthtml-do-not-preserve-inline-styles.html?stylesAtInsertionPoint=forecolor&stylesInserting=bold", + { + "timeout": "long" + } + ], + [ + "editing/other/inserthtml-do-not-preserve-inline-styles.html?stylesAtInsertionPoint=hilitecolor&stylesInserting=bold", + { + "timeout": "long" + } + ], + [ + "editing/other/inserthtml-do-not-preserve-inline-styles.html?stylesAtInsertionPoint=italic&stylesInserting=bold", + { + "timeout": "long" + } + ], + [ + "editing/other/inserthtml-do-not-preserve-inline-styles.html?stylesAtInsertionPoint=strikethrough&stylesInserting=bold", + { + "timeout": "long" + } + ], + [ + "editing/other/inserthtml-do-not-preserve-inline-styles.html?stylesAtInsertionPoint=subscript&stylesInserting=bold", + { + "timeout": "long" + } + ], + [ + "editing/other/inserthtml-do-not-preserve-inline-styles.html?stylesAtInsertionPoint=superscript&stylesInserting=bold", + { + "timeout": "long" + } + ], + [ + "editing/other/inserthtml-do-not-preserve-inline-styles.html?stylesAtInsertionPoint=underline&stylesInserting=bold", + { + "timeout": "long" + } + ] + ], "insertlinebreak-with-white-space-style.tentative.html": [ "7e362c3571f54c635ad3dc9dc96b5df092f274b9", [ @@ -530142,7 +531290,7 @@ ] ], "forwarddelete.html": [ - "570da5a183c178d75868357e32181f35925172c5", + "177cee7c1fe77518c567ac96b7486d6006fa4daa", [ "editing/run/forwarddelete.html?1-1000", { @@ -530180,7 +531328,13 @@ } ], [ - "editing/run/forwarddelete.html?6001-last", + "editing/run/forwarddelete.html?6001-7000", + { + "timeout": "long" + } + ], + [ + "editing/run/forwarddelete.html?7001-last", { "timeout": "long" } @@ -530250,9 +531404,15 @@ ] ], "insertorderedlist.html": [ - "06662df7610de97934f8037cfee7eca899dd7606", + "5c477f642f6a99dd4d717140935d5d3bb5a79612", [ - null, + "editing/run/insertorderedlist.html?1-1000", + { + "timeout": "long" + } + ], + [ + "editing/run/insertorderedlist.html?1001-last", { "timeout": "long" } @@ -530325,9 +531485,21 @@ ] ], "insertunorderedlist.html": [ - "8df99f8dccdc75d61ec5bad8490a5bd60d00deaa", + "1d6e774e0d4634d59b2ed2343b3b393e9a1b904f", [ - null, + "editing/run/insertunorderedlist.html?1-1000", + { + "timeout": "long" + } + ], + [ + "editing/run/insertunorderedlist.html?1001-2000", + { + "timeout": "long" + } + ], + [ + "editing/run/insertunorderedlist.html?2001-last", { "timeout": "long" } @@ -547905,6 +549077,69 @@ ] }, "headers": { + "header-setcookie.any.js": [ + "b8a3348f5f5392757ff02c76418c73bd0cb55207", + [ + "fetch/api/headers/header-setcookie.any.html", + { + "script_metadata": [ + [ + "title", + "Headers set-cookie special cases" + ], + [ + "global", + "window,worker" + ] + ] + } + ], + [ + "fetch/api/headers/header-setcookie.any.serviceworker.html", + { + "script_metadata": [ + [ + "title", + "Headers set-cookie special cases" + ], + [ + "global", + "window,worker" + ] + ] + } + ], + [ + "fetch/api/headers/header-setcookie.any.sharedworker.html", + { + "script_metadata": [ + [ + "title", + "Headers set-cookie special cases" + ], + [ + "global", + "window,worker" + ] + ] + } + ], + [ + "fetch/api/headers/header-setcookie.any.worker.html", + { + "script_metadata": [ + [ + "title", + "Headers set-cookie special cases" + ], + [ + "global", + "window,worker" + ] + ] + } + ] + ], "header-values-normalize.any.js": [ "5710554ada9d0b9995ef76d45fd0309aff422c19", [ @@ -550790,7 +552025,7 @@ ] ], "request-headers.any.js": [ - "b73b398013ab0d9bad4ecf6b1844ed29484cb6ee", + "6de5dc16e96e3ce33e6eb21e2935b58a9a23857d", [ "fetch/api/request/request-headers.any.html", { @@ -550940,6 +552175,17 @@ {} ] ], + "request-init-priority.any.js": [ + "eb5073c85785c37d1b82e1fe7139988216236587", + [ + "fetch/api/request/request-init-priority.any.html", + {} + ], + [ + "fetch/api/request/request-init-priority.any.worker.html", + {} + ] + ], "request-init-stream.any.js": [ "f0ae441a00258ddd37998387a347d801b4029cec", [ @@ -551117,7 +552363,7 @@ ] ], "request-structure.any.js": [ - "3d55c70ac1e667fcc7f2b6f886ad022d310faa19", + "5e7855385554bd1c3ef04cfbec78dcfd9f9e9678", [ "fetch/api/request/request-structure.any.html", { @@ -556005,7 +557251,7 @@ ] ], "fetch.window.js": [ - "d4de08e4ebfab10f98e630c5e16d1925f4e344e5", + "8ee54c905629293255551d560b240c5ac7086707", [ "fetch/private-network-access/fetch.window.html", { @@ -556247,7 +557493,7 @@ ] ], "shared-worker-fetch.window.js": [ - "a317608ce8e983e9aa5e90108a3c8a1a7e792293", + "1c772003a16667b2979bff14f25b36c1c87f1e58", [ "fetch/private-network-access/shared-worker-fetch.window.html", { @@ -556347,7 +557593,7 @@ ] ], "worker-fetch.window.js": [ - "cf6e1ca30d5fa7f64480576b518db7aa2d41dd9e", + "1a57a106a651dd676084a6428a2e6bae2c310655", [ "fetch/private-network-access/worker-fetch.window.html", { @@ -556544,7 +557790,7 @@ ] ], "xhr.window.js": [ - "c1b5bf83371841d14bba43b4f38f02769534cb3b", + "b45f8283e93cbab37a11c8ce9ffbee9b5e19e073", [ "fetch/private-network-access/xhr.window.html", { @@ -558964,7 +560210,7 @@ ] ], "element-request-fullscreen-options.tentative.html": [ - "b2eb60088a3bee5962cdb42508c75bfd92152c1d", + "f3b99e84e69681e7753f379bf36f5e0b88c59d63", [ null, { @@ -563886,7 +565132,7 @@ ] ], "beforeunload-canceling.html": [ - "5102d1f8029e39189fafd1241bc9fa6836645a41", + "a3622d2f0d43fa53e8a077cb99b5c66d92868264", [ null, {} @@ -590000,7 +591246,7 @@ ] ], "idlharness.https.html": [ - "56b4a0c04967e269bb82eb7e938dda09a56542fc", + "4e9e25fd5df7221b4c99fd49c8fe0bb3753c549c", [ "html/dom/idlharness.https.html?exclude=(Document|Window|HTML.*)", { @@ -600601,8 +601847,15 @@ {} ] ], + "focus-dynamic-type-change-on-blur.html": [ + "23292d3a83a67448cbbb160b8ee56c1d20b09dbf", + [ + null, + {} + ] + ], "focus-dynamic-type-change.html": [ - "a1d3dfa2a29787d59a65151996e6b5727289e06d", + "982cda6c92a7cb208c284c2eb33d5e14307adf60", [ null, {} @@ -601341,7 +602594,7 @@ ] ], "inserted-or-removed.html": [ - "ee12316421ef6c84135a0716edb6669c51522851", + "0db2bf0e77a4a8a76ebcef1b0879cac9bb8c3fea", [ null, {} @@ -602523,14 +603776,7 @@ {} ] ], - "idlharness.tentative.html": [ - "1cab891261cfd46ceb42706c2fe7a9229abcbacf", - [ - null, - {} - ] - ], - "light-dismiss-event-ordering.tentative.html": [ + "light-dismiss-event-ordering.html": [ "4bfcecc4b059315c9fd79269f1ce73b3bdb0f2ae", [ null, @@ -602539,28 +603785,28 @@ } ] ], - "popover-anchor-display-none.tentative.html": [ + "popover-anchor-display-none.html": [ "a4285607fd30360545e1364b450443af1cca1fbe", [ null, {} ] ], - "popover-anchor-idl-property.tentative.html": [ + "popover-anchor-idl-property.html": [ "bc9f3ae770d2daded1b7f087a5d56436b578cb36", [ null, {} ] ], - "popover-anchor-multicol-display.tentative.html": [ + "popover-anchor-multicol-display.html": [ "fe65ec5ba4ebac600e32990424ba4ef7a06cccf7", [ null, {} ] ], - "popover-anchor-nesting.tentative.html": [ + "popover-anchor-nesting.html": [ "7490d75dc09c750c028f75ac0e5660b3b99084e1", [ null, @@ -602569,7 +603815,7 @@ } ] ], - "popover-animated-hide-cleanup.tentative.html": [ + "popover-animated-hide-cleanup.html": [ "9310acc4ff209807a36b75c543edad64f4318f39", [ null, @@ -602578,14 +603824,14 @@ } ] ], - "popover-animation-corner-cases.tentative.html": [ + "popover-animation-corner-cases.html": [ "f41f7a68df9058dee90de4ece70b753a801d6a49", [ null, {} ] ], - "popover-attribute-basic.tentative.html": [ + "popover-attribute-basic.html": [ "9b03c7bc1c65a14b2ad396713cf9203054231357", [ null, @@ -602595,28 +603841,28 @@ } ] ], - "popover-beforetoggle-opening-event.tentative.html": [ + "popover-beforetoggle-opening-event.html": [ "b2c3fa5d68bf051e2faf5d83e765de1ed42397b6", [ null, {} ] ], - "popover-document-open.tentative.html": [ + "popover-document-open.html": [ "429fd89d3ba68d9588b66e696095e5007eaccc9a", [ null, {} ] ], - "popover-events.tentative.html": [ + "popover-events.html": [ "b299424570024c81238ae076fdacbfa2badc83b4", [ null, {} ] ], - "popover-focus-2.tentative.html": [ + "popover-focus-2.html": [ "569b633886cf6a77546a5bd6680b339ff05db1c3", [ null, @@ -602632,7 +603878,7 @@ {} ] ], - "popover-focus.tentative.html": [ + "popover-focus.html": [ "b1e59a13971c7be224663ef3d1161ee83c0527ed", [ null, @@ -602642,7 +603888,7 @@ } ] ], - "popover-invoking-attribute.tentative.html": [ + "popover-invoking-attribute.html": [ "b49bb4e4a34ced3b30abe1e2bee14ba5c17cff1e", [ null, @@ -602652,14 +603898,14 @@ } ] ], - "popover-light-dismiss-on-scroll.tentative.html": [ + "popover-light-dismiss-on-scroll.html": [ "73b3a2d6193bc6f5a120a583a7a7e6169a34487f", [ null, {} ] ], - "popover-light-dismiss.tentative.html": [ + "popover-light-dismiss.html": [ "587418bd86fcc170adae86a258163d9418252987", [ null, @@ -602669,7 +603915,7 @@ } ] ], - "popover-not-keyboard-focusable.tentative.html": [ + "popover-not-keyboard-focusable.html": [ "815ae04ebb4024e84ced328b2d5541734e787cd5", [ null, @@ -602678,42 +603924,42 @@ } ] ], - "popover-removal-2.tentative.html": [ + "popover-removal-2.html": [ "b7b185d58d53f5cb84516e7bb2b98746221a7c6e", [ null, {} ] ], - "popover-removal.tentative.html": [ + "popover-removal.html": [ "aeed3b678db06b9e351b634f654f93829141d8c4", [ null, {} ] ], - "popover-shadow-dom.tentative.html": [ + "popover-shadow-dom.html": [ "72bbe1e8933cfa0fa189b69a41be5d5a47d0716b", [ null, {} ] ], - "popover-stacking.tentative.html": [ + "popover-stacking.html": [ "dc07c1c208473cc96ba0e63d1369f17b01f503df", [ null, {} ] ], - "popover-target-element-disabled.tentative.html": [ + "popover-target-element-disabled.html": [ "3d139c5950eb6bc1048c10e0ea6053369cb93403", [ null, {} ] ], - "popover-top-layer-combinations.tentative.html": [ + "popover-top-layer-combinations.html": [ "001bf88a25ef851e6607dc6e0ba7a7cf3b8cf4f8", [ null, @@ -602722,7 +603968,7 @@ } ] ], - "popover-top-layer-interactions.tentative.html": [ + "popover-top-layer-interactions.html": [ "50a21be7f7723e9010cfc1f5e6548a231ff3e8dd", [ null, @@ -602731,14 +603977,14 @@ } ] ], - "popover-types.tentative.html": [ + "popover-types.html": [ "615c5a818c06c1bd75c5bfc80c2fc38e543048a9", [ null, {} ] ], - "toggleevent-interface.tentative.html": [ + "toggleevent-interface.html": [ "45709458b00c466805c63d1bc4530d37677718a9", [ null, @@ -618210,6 +619456,13 @@ ] }, "spaces": { + "mspace-width-height-001.html": [ + "52b3eaa190f0b43c1d9882681011ae3404e956c0", + [ + null, + {} + ] + ], "space-1.html": [ "4cb2a58a3ceea26d8d08ac52f0f81c912a6a11d1", [ @@ -618380,10 +619633,12 @@ ] }, "ignored-properties-001.html": [ - "0966d96917a6b75121842d5de1af6953ee5110ac", + "34de5836eadc9afe14f541a553548ef93be97441", [ null, - {} + { + "timeout": "long" + } ] ], "lengths-2.html": [ @@ -618484,7 +619739,14 @@ ] ], "width-height-001.html": [ - "e762b0060e54cac7a1132303f22b24c901a87c38", + "2deedc3f0b84d4f822387f080bd13ef265f011cf", + [ + null, + {} + ] + ], + "width-height-004.html": [ + "7133573b04d82664d7c0885c0bca9bc7c745d50f", [ null, {} @@ -618544,7 +619806,7 @@ ] ], "display-1.html": [ - "e2d0c792f5d344441263bebdff3f85102ceacd0c", + "fa92771fac56ebf1cfe75966b2fc947912b5a55a", [ null, {} @@ -620623,7 +621885,7 @@ ] ], "MediaStreamTrack-applyConstraints.https.html": [ - "fd451f86cf4c0ff2bf7832a8807a5df1658447a9", + "da27b3c35729492a14d2ccaddc95ebf3956c4d78", [ null, { @@ -625544,14 +626806,14 @@ }, "notifications": { "constructor-basic.https.html": [ - "a36a8ce30470d7fb2d71bc50139ec1acc3110fa5", + "3f704de03e3395e0a4a1266f3e1eec17fc94cbe0", [ null, {} ] ], "constructor-invalid.https.html": [ - "1995ccc4f5f979d4e01e97dc95ecce698eae4885", + "2fae804c2c0a94dec203faf1ee55a3d6ae723666", [ null, {} @@ -625565,17 +626827,43 @@ ] ], "event-onclose.https.html": [ - "aee3213698e72a0b1ab4da53aed0ae1f42ad721a", + "b410e6c9a1557a90e9d4c7d62c55af8cd6ec9a7b", [ null, - {} + { + "testdriver": true + } ] ], "event-onshow.https.html": [ - "7cc2be9de5baf405689d03374154c50ff693a653", + "2f7959e7d3bb394b0740c95a21fec0887e09932f", [ null, - {} + { + "testdriver": true + } + ] + ], + "getnotifications-across-processes.https.window.js": [ + "ad0ecf27efd6b9856a4936386c2b303f6fc6df9b", + [ + "notifications/getnotifications-across-processes.https.window.html", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/resources/testdriver-vendor.js" + ], + [ + "script", + "/service-workers/service-worker/resources/test-helpers.sub.js" + ] + ] + } ] ], "historical.any.js": [ @@ -625669,7 +626957,7 @@ ] ], "instance.https.html": [ - "c0ebe7e6998e96673599600367424f8aa3e8c652", + "5ccc6cd1e3a8ea01161469fefdba562ab8eea84d", [ null, {} @@ -625697,7 +626985,7 @@ ] ], "shownotification.https.window.js": [ - "5fcfccff756afb330dd2241f563b0a8fc516205e", + "4def327181560d4da76772a717660f8beb9df839", [ "notifications/shownotification.https.window.html", { @@ -625709,6 +626997,10 @@ [ "script", "/resources/testdriver-vendor.js" + ], + [ + "script", + "resources/custom-data.js" ] ] } @@ -627618,7 +628910,7 @@ ], "not-restored-reasons": { "performance-navigation-timing-attributes.tentative.window.js": [ - "97bf79f0ef95de8194b93cba8c6adf331d9eaa64", + "047e97a7521b1bef9d3ee3ea0e64e8296301598e", [ "performance-timeline/not-restored-reasons/performance-navigation-timing-attributes.tentative.window.html", { @@ -627702,7 +628994,7 @@ ] ], "performance-navigation-timing-bfcache.tentative.window.js": [ - "b5ff4d7cc59b3efdf5376418f7708c73e5de1bbb", + "73197ef3ab30ae12f43f02ec6fd7e3084bc61575", [ "performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache.tentative.window.html", { @@ -627740,7 +629032,7 @@ ] ], "performance-navigation-timing-cross-origin-bfcache.tentative.window.js": [ - "64c0a89c82037628879c0b1d5266386e7fa2a387", + "bb8284bb1a9776ad7f7e194781403b8a0849aa0c", [ "performance-timeline/not-restored-reasons/performance-navigation-timing-cross-origin-bfcache.tentative.window.html", { @@ -628327,6 +629619,13 @@ null, {} ] + ], + "with-filter-options-originA.html": [ + "6c6643df75cf09e2155123e32a7237a155eb8a2a", + [ + null, + {} + ] ] }, "timing-removed-iframe.html": [ @@ -631639,17 +632938,6 @@ } }, "priority-hints": { - "fetch-api-request.tentative.any.js": [ - "1b576e52da801ad23fe23355995d37e71f366d10", - [ - "priority-hints/fetch-api-request.tentative.any.html", - {} - ], - [ - "priority-hints/fetch-api-request.tentative.any.worker.html", - {} - ] - ], "iframe-attr-fetchpriority.tentative.html": [ "386577690b2557cf5f54e586a4b95f638d237ecf", [ @@ -645139,7 +646427,7 @@ ] ], "no-entries-for-cross-origin-css-fetched-memory-cache.sub.html": [ - "2cfcfc7d6803e5e98639332a3aebca940c40a818", + "6b60305ded2e9975ca63540316decd9ef1f1abb8", [ null, {} @@ -647124,7 +648412,7 @@ }, "screen-details": { "getScreenDetails.tentative.https.window.js": [ - "914c72e5b8726bd917529df47fb9b6ad8b052e8b", + "06f0344f3ad98929cbad736c49ec9ab5fbebb7e0", [ "screen-details/getScreenDetails.tentative.https.window.html", { @@ -647160,7 +648448,7 @@ ] ], "permission.https.window.js": [ - "32596fac9ea3bdbbcdad3d6fd6f15a0e9b0664b7", + "f477bd4230bbfa99d5020393eb8bf9f794b5e8ca", [ "screen-details/permission.https.window.html", { @@ -647588,7 +648876,7 @@ ] ], "animation-timeline-view-functional-notation.tentative.html": [ - "d93306819af500236949934a2e0893d392176f77", + "70891c6ccf8a3aae43e44bdea2655b8969ef8a50", [ null, {} @@ -647756,7 +649044,7 @@ ] ], "timeline-range-name-offset-in-keyframes.tentative.html": [ - "993046c5f2b8d3eb62dcda1adb33ad7a82137524", + "6af1c6eae7a97133fa6ccdf8e728852cabe62394", [ null, {} @@ -647847,7 +649135,7 @@ ] ], "view-timeline-range-animation.html": [ - "9f66a5eb835462f5a26de73c4af33d66a5491576", + "3d7593823dbc6864c054c518ff9e630d1dc8290d", [ null, {} @@ -647868,7 +649156,7 @@ ] ], "view-timeline-with-delay-and-range.tentative.html": [ - "40548bf5cd4548c105872d1066a05e5848c4bfce", + "e8f537b188c1aff82c6a9e8015f56cd632379246", [ null, {} @@ -648099,7 +649387,7 @@ ] ], "view-timeline-get-current-time-range-name.html": [ - "09714b572bc742607e030fc4d8934f5cbecded8d", + "25e477e1a97acc56bb692abb8375ab05f9b8e9c9", [ null, {} @@ -648120,14 +649408,21 @@ ] ], "view-timeline-range-large-subject.html": [ - "5a7416eb54dd6e0004d7846d141c449958f40a53", + "f87a57584ed7a240315bbd2e07557fc3fecb4156", [ null, {} ] ], "view-timeline-range.html": [ - "f2a1b3f586d372fca911bc938fc23f6594dde344", + "5042c6c2a02f670b7f9d5eb3fd4d513540849054", + [ + null, + {} + ] + ], + "view-timeline-root-source.html": [ + "20ac9c54642698b0ade0261a7aa9d2f6b8c23025", [ null, {} @@ -648148,7 +649443,7 @@ ] ], "view-timeline-subject-size-changes.html": [ - "a47fed8e4467093807ecc080686bd80501abade8", + "9ae4b1df775a7b16b4493dbd10aac849d4c63104", [ null, {} @@ -653895,7 +655190,7 @@ ] ], "focus-navigation-slot-nested-2levels.html": [ - "59f0e4f0cb7e026c9766c68a3149b52c4220ee20", + "54def5ce7e56a5cdb75f46c91e8851b9121b76bd", [ null, { @@ -653958,7 +655253,7 @@ ] ], "focus-navigation-slots-in-slot.html": [ - "025a4e0f52f7a78fc1cb3aa36cf35bb351a50455", + "5cc8abbf019211d627826b5836c790e4078f09f5", [ null, { @@ -653975,8 +655270,8 @@ } ] ], - "focus-navigation-web-component-input-type-radio.html": [ - "fe591a3dc41577e0aaedf5e60941c07fb9e63cb9", + "focus-navigation-web-component-radio.html": [ + "9304cc2ce199b0ad08c1385ef759e08518428dcc", [ null, { @@ -654003,7 +655298,7 @@ ] ], "focus-nested-slots.html": [ - "747a8a1262fad5ad9e06bc6b1f7d547009df0344", + "5d069a5850cd3a1697389d540b5c0c1093313388", [ null, { @@ -655422,7 +656717,7 @@ ] ], "multiple-paint-entries-buffered.tentative.html": [ - "f88fb9530129ab501a138a823b492c5661553091", + "fcf5c023e4038a89b575f5c334e63fe1d25f7021", [ null, { @@ -656141,24 +657436,6 @@ } ] ], - "csp-prefetch-src-allow.html": [ - "f323756ce39792f12c1fb5c84dfa5be6ea890bb4", - [ - null, - { - "timeout": "long" - } - ] - ], - "csp-prefetch-src-disallow.html": [ - "e8ed74b45787a30f78adfa45322d8f9465512f29", - [ - null, - { - "timeout": "long" - } - ] - ], "csp-script-src-elem-inline-speculation-rules.tentative.html": [ "0a3b3b8a70ad1a5416b1014658c949f4d24c3bcf", [ @@ -657556,7 +658833,7 @@ }, "storage-access-api": { "hasStorageAccess-insecure.sub.window.js": [ - "35bb73a80a7c71498fd05ad4a14c198d17049485", + "74996800df9c27241a7b1750a30880832a256b3e", [ "storage-access-api/hasStorageAccess-insecure.sub.window.html", { @@ -657570,7 +658847,7 @@ ] ], "hasStorageAccess.sub.https.window.js": [ - "ede7dd62b5e1f174ed1724ce08f974a9b7dc5659", + "3faf492d13fcf93bbf5ba868c63a0f8a26c921c9", [ "storage-access-api/hasStorageAccess.sub.https.window.html", { @@ -657819,7 +659096,7 @@ ] ], "storage-access-permission.sub.https.window.js": [ - "88473ce38988246d165c351d8ea9a85c948eb186", + "d1ee7700997d66869b7e81664ff4624e89e2989f", [ "storage-access-api/storage-access-permission.sub.https.window.html", { @@ -657841,7 +659118,7 @@ ] ], "storageAccess.testdriver.sub.html": [ - "80108b5190bdb6cb010194a3fbb79ec24ffa8aa2", + "27e00b7cd70d5fd197b623dedff6360ab1668f9f", [ null, { @@ -661924,7 +663201,7 @@ }, "subapps": { "add-error.tentative.https.html": [ - "8b83afccf2c97854c12eba88bbe6fbc910c97ec9", + "8598f3fa35ab36603d05f4a68969608721b24b1e", [ null, { @@ -661933,7 +663210,7 @@ ] ], "add-success.tentative.https.html": [ - "b482982f28a8f5d90f5bb2542a57dd5a26306b78", + "24c420666e9d62cb78ba7fe2ba52194a2ecb1ac4", [ null, { @@ -665259,7 +666536,7 @@ "top-level-storage-access-api": { "tentative": { "requestStorageAccessForOrigin-insecure.sub.window.js": [ - "b4bcb2cd34074a6d6d182fef470df88590bb7ca6", + "8cf72b85fa81217fac5adb11a582d4ad641e34d7", [ "top-level-storage-access-api/tentative/requestStorageAccessForOrigin-insecure.sub.window.html", { @@ -665281,7 +666558,7 @@ ] ], "requestStorageAccessForOrigin.sub.https.window.js": [ - "f7dd478a7078673643d91fece6f64bf0148c7ec6", + "060501d1b007377a8d9975102ffe67be131a792c", [ "top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.https.window.html", { @@ -675089,15 +676366,6 @@ {} ] ] - }, - "wbn-from-network": { - "wbn-location.tentative.html": [ - "20b554b4642630bbb24bf4cce1c8de9446f9cb07", - [ - null, - {} - ] - ] } }, "web-locks": { @@ -676517,8 +677785,8 @@ } ] ], - "feature-policy-listed.html": [ - "127498dde121648453050bd8f5562fddda4cf831", + "feature-policy-listed.tentative.html": [ + "8f709e68e7535b3878d061fee98dbeab8f8b2231", [ null, {} @@ -676777,7 +678045,7 @@ }, "the-audiobuffersourcenode-interface": { "active-processing.https.html": [ - "0fa3089a3405dc491e70a43e826d6ef9cacf9d56", + "7b8c1295c6948c01ce018765b50b084d4200b144", [ null, {} @@ -677731,7 +678999,7 @@ }, "the-channelmergernode-interface": { "active-processing.https.html": [ - "6136583b90fa97542829f89c3b7a5d2611fac23f", + "9012526bdc64e5e62d246045465b84aef8d06f76", [ null, {} @@ -677828,7 +679096,7 @@ }, "the-convolvernode-interface": { "active-processing.https.html": [ - "f0f9f771bb4276e760df4c697a42342ba94d6e66", + "0712d6bccefd71730994b78cf26caabaaf1d92d2", [ null, {} @@ -680090,7 +681358,7 @@ ] ], "idlharness.https.any.js": [ - "7f5f428afa9098cebb81b499ac1294f3ea5765b0", + "f1ed92a15983192b02a11e118d5d0b78b9bcb579", [ "webcodecs/idlharness.https.any.html", { @@ -681158,7 +682426,7 @@ ] ], "videoDecoder-codec-specific.https.any.js": [ - "2a4ad6d6934ab5be4da903a846ad9b2cffb898ed", + "e78ac15cfac2dba35a3455c4a9abd6668ce15a8f", [ "webcodecs/videoDecoder-codec-specific.https.any.html?av1", { @@ -684131,7 +685399,7 @@ ] ], "idlharness.https.any.js": [ - "6122134268c82dfc96327bb5fd56b248aa809076", + "a443fa14b91a5b52496025c7468f8ce6cfb6db57", [ "webnn/idlharness.https.any.html", { @@ -685038,6 +686306,15 @@ {} ] ], + "RTCPeerConnection-GC.https.html": [ + "76ae3087e4b6acea275f64cbf5a9adb1bf608b18", + [ + null, + { + "timeout": "long" + } + ] + ], "RTCPeerConnection-SLD-SRD-timing.https.html": [ "36bde06c9634269b17cd565b20bc80b411d1d925", [ @@ -685511,7 +686788,7 @@ ] ], "RTCRtpParameters-encodings.html": [ - "b68347cbaf92814b1a9c8cddc7c0bbc7a6c79676", + "22abbb3718a91fca24ca4c0c378c7cc5b265ee05", [ null, {} @@ -685946,6 +687223,13 @@ {} ] ], + "rtp-headerextensions.html": [ + "677813742fec8d9d6182d25840f3f69b689aed0a", + [ + null, + {} + ] + ], "rtp-payloadtypes.html": [ "af7656d131ea45779334ef43a52d6e0b343a6721", [ @@ -686309,7 +687593,7 @@ ] ], "set-metadata.https.html": [ - "ad346c12e44e27c60862bb693cb84a96ac16f4fa", + "712971a62619236641c69445fd1aa99745813e5b", [ null, { @@ -686405,7 +687689,7 @@ ] ], "RTCRtpTransceiver-headerExtensionControl.html": [ - "e823bd830c6e34c159dc511c05721a40b69586b1", + "4925850ff03756d435dff9b28fde3118a608660a", [ null, {} @@ -701195,6 +702479,13 @@ ] ], "layers": { + "xrSession_updateRenderState.https.html": [ + "52f4b087bc72a05fd5b6b4b7ec40f4b0e5119abb", + [ + null, + {} + ] + ], "xrWebGLBinding_constructor.https.html": [ "b3457cf3203005562785b0a93f8e462c01addbc8", [ @@ -703049,7 +704340,7 @@ ] }, "importscripts_mime.any.js": [ - "950edb28d16a855516d8155c2b5c03db793d3567", + "bfdfc191fd3e62371a259c5d65ec4b2b85142480", [ "workers/importscripts_mime.any.serviceworker.html", { @@ -703084,6 +704375,31 @@ } ] ], + "importscripts_mime_local.any.js": [ + "62d690d8af0e093f49f9f7f7a5914a16b0d257a9", + [ + "workers/importscripts_mime_local.any.sharedworker.html", + { + "script_metadata": [ + [ + "global", + "dedicatedworker,sharedworker" + ] + ] + } + ], + [ + "workers/importscripts_mime_local.any.worker.html", + { + "script_metadata": [ + [ + "global", + "dedicatedworker,sharedworker" + ] + ] + } + ] + ], "interfaces": { "DedicatedWorkerGlobalScope": { "EventTarget.worker.js": [ @@ -706440,7 +707756,7 @@ ] ], "constructor-submitter.html": [ - "fd4ec862387698158e615b4c91744ea2e5e421d5", + "542357df34d6087bda3f79a240f982d443082548", [ null, {} @@ -731041,7 +732357,7 @@ }, "element_clear": { "clear.py": [ - "6f4f31ffa40639d5f7bfee89a9a29004131134a1", + "fa96ed3a58aa0ae81216926e153381ecfe3f2ae8", [ null, { @@ -731075,7 +732391,7 @@ ] ], "click.py": [ - "d2015445d4c153b58616d5ed738bb9802b7775ac", + "79be957d1b214527b363d9b35d46af67c7d3f9de", [ null, {} @@ -731124,7 +732440,7 @@ ] ], "shadow_dom.py": [ - "45493b730d6957027af46f1314290d13aaab40af", + "18768a60b292816a904fdfa4d2805755c5f98034", [ null, {} @@ -731184,7 +732500,7 @@ ] ], "send_keys.py": [ - "36b27b92f931491cfaf16fe568ce1b46e25d76e3", + "854d2af42ccc8f42735a3e7b6df7217fdb8770b3", [ null, {} @@ -731202,7 +732518,7 @@ }, "execute_async_script": { "arguments.py": [ - "9d281cd1a58b62d978ba5e588becb29ea0d99cc9", + "55fd9527aea390c7a1a9ae7556022ab854cfc6f9", [ null, {} @@ -731223,14 +732539,14 @@ ] ], "execute_async.py": [ - "2292aecce19286accb65233ee2acb7eb72316440", + "d0b9daee4155cad89cda865794917f35069e923a", [ null, {} ] ], "node.py": [ - "1b204df33ece48c75a06a2d4d019ef2be9b09ba7", + "53abda4b300597ade2f5b8d38260caad9cb17f31", [ null, {} @@ -731269,7 +732585,7 @@ }, "execute_script": { "arguments.py": [ - "5024eacf3fb67e2949a320cdea547346a98b4a4c", + "53c49aaa6897dc4f60da317480161c1516a7ec18", [ null, {} @@ -731290,7 +732606,7 @@ ] ], "execute.py": [ - "8804daf59fc1bae4db58e317d2c67b5d935f5d7c", + "adfd2836f32a4d9855387169a3da4d1d5841beca", [ null, {} @@ -731304,7 +732620,7 @@ ] ], "node.py": [ - "83061222b0ff5bdf3465d706d1866495407e6792", + "caf85988f15413eca765c5d5cb019b06777d3b9d", [ null, {} @@ -731343,7 +732659,7 @@ }, "find_element": { "find.py": [ - "d16372d025c3a19a6abed1c2a4b8ca1e9e00a208", + "50de92554bcb29659d5a5b842ef12a485a0cde3a", [ null, {} @@ -731361,7 +732677,7 @@ }, "find_element_from_element": { "find.py": [ - "811971aeae93487dd5ec04c91ad750d77488775a", + "102704cd8e318c69f51a762d3eda2b125eed23ae", [ null, {} @@ -731379,14 +732695,14 @@ }, "find_element_from_shadow_root": { "find.py": [ - "833291da72fa8761a61446a90eefe4201a1ac8f2", + "3d125a0f21573c067560e0a21a14f2ecf4470c3f", [ null, {} ] ], "user_prompts.py": [ - "ee79ed79f479a9bc5daee016a44c0ea453f3393e", + "3e3381e7853b25577a0f465542c848c9429e3099", [ null, { @@ -731397,7 +732713,7 @@ }, "find_elements": { "find.py": [ - "6f1283bf351f0254ca1e99c09891075d1a32c0b1", + "0d9ce21186c9a6963018d4dc819038749758ff47", [ null, {} @@ -731415,7 +732731,7 @@ }, "find_elements_from_element": { "find.py": [ - "0e3bf2fd11cfb4d5405fbb54677a6c1da1e0ebb4", + "fc898bc95afecd71535bca0f23d375a1c3738299", [ null, {} @@ -731433,14 +732749,14 @@ }, "find_elements_from_shadow_root": { "find.py": [ - "c21f081125845820ddca9b5ad3a938af29528584", + "7f2685b3b55603980dc3d4869f14409e423fc33b", [ null, {} ] ], "user_prompts.py": [ - "8ec381b3870dda9651b144ed628e9a0bbc1fe104", + "45986ad6dab9322ca7126050d623904d2542e338", [ null, { @@ -731523,7 +732839,7 @@ }, "get_computed_label": { "get.py": [ - "32b4ce33bbe4e766073138642429fe36bdcebac2", + "8124fee0c9dec85f9478b6702b25b4fdece96a8e", [ null, {} @@ -731532,7 +732848,7 @@ }, "get_computed_role": { "get.py": [ - "1e61799dc9467f14c5c83534f1e758bcf4702add", + "dcfe753f0dcaf65d6cbd77a074a0039ad0564cde", [ null, {} @@ -731573,7 +732889,7 @@ }, "get_element_attribute": { "get.py": [ - "87fd5f3333cc8ec226d9e63758cff41ace5e70cc", + "e23d7e4d5abbf2ce430e16816e7d49b740e931fb", [ null, {} @@ -731591,7 +732907,7 @@ }, "get_element_css_value": { "get.py": [ - "d178fc25f185f8d7fcd828739cbcd8a32e119c1e", + "f9797c2cff51b06818c9d2f9f46efdf321e50504", [ null, {} @@ -731609,7 +732925,7 @@ }, "get_element_property": { "get.py": [ - "7d9d7083acc37a62b630d9c354afe291fc20658d", + "072375804e814cfe2dc0d13e89f3389ec52b674d", [ null, {} @@ -731627,7 +732943,7 @@ }, "get_element_rect": { "get.py": [ - "113bc83838359fbd949d01ef223d89cef83e2443", + "7f87b44e7e932b9e5215bb277af12a6be779fc3c", [ null, {} @@ -731645,14 +732961,14 @@ }, "get_element_shadow_root": { "get.py": [ - "55b2089a6708bdaa0c41f51b9e9390a25f0a9b45", + "61d0d008100495a308189e2494184b4490cc6e39", [ null, {} ] ], "user_prompts.py": [ - "b94650a6f0b7271c8098b93078cab7fd8f8e3974", + "5b991bac26b6247b743f81ccf82faaa94dcb71a1", [ null, { @@ -731663,7 +732979,7 @@ }, "get_element_tag_name": { "get.py": [ - "bdfebc2ce79ddeef7ead2963584a9188a078c1bc", + "1bf19309e45888edcbf4483daa4970d81a70dad0", [ null, {} @@ -731681,7 +732997,7 @@ }, "get_element_text": { "get.py": [ - "b2c8a09f8c4626ffd71049e962a70cfb3beacaa4", + "aa36c487c809e101029689ef4aa1a1b8f25ec8d0", [ null, {} @@ -731832,7 +733148,7 @@ }, "is_element_enabled": { "enabled.py": [ - "ef9106cce86a874edf22b91f2082ab1b6240d930", + "34e5cce4197cb2f3d33a34e819119f4581ea3b55", [ null, {} @@ -731850,7 +733166,7 @@ }, "is_element_selected": { "selected.py": [ - "a57737590c56e117d9d330b0b5882cf3b548362d", + "b119705e7dd16fc87f41d17fc6b77c159a5a5a65", [ null, {} @@ -732128,7 +733444,7 @@ ] ], "pointer_mouse.py": [ - "bbf2dde993b289327906871385809d3b6be3720f", + "1b739a75aa076e5b45f514a67045f0430e0c0351", [ null, { @@ -732151,7 +733467,7 @@ ] ], "pointer_pen.py": [ - "6637f0315314ec4e7169173c44ec06d2b4d1e105", + "29d40276b25b11d52099af6a0dbe630d99625ef2", [ null, { @@ -732160,7 +733476,7 @@ ] ], "pointer_touch.py": [ - "9e76273cbbba7a4cc928a490d1cc64264d8b691b", + "03f32af2b48cc03c90f86317ef075ec6b292cc02", [ null, { @@ -732338,7 +733654,7 @@ ] ], "switch.py": [ - "9ccab2c6c96dc67893f1e3d2b366aabb32b9269b", + "b9cccb3ecc099232682955fd0e2fc54362895bc0", [ null, {} @@ -732352,7 +733668,7 @@ ] ], "switch_webelement.py": [ - "5b571862054f425425bc4a5d76ab39cf02d00a11", + "ceadccd812101584b4a8a9ab343048344339cefa", [ null, {} @@ -732393,7 +733709,7 @@ ] ], "screenshot.py": [ - "a1fcfac5f44985e68ca61149a9f2cfb93e4aed29", + "deea9514ed48f107196447dbe8f1f660720ba48d", [ null, {} diff --git a/tests/wpt/metadata/css/CSS2/floats/floats-placement-006.html.ini b/tests/wpt/metadata/css/CSS2/floats/floats-placement-006.html.ini new file mode 100644 index 00000000000..a57179657f7 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/floats/floats-placement-006.html.ini @@ -0,0 +1,2 @@ +[floats-placement-006.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/floats/floats-placement-007.html.ini b/tests/wpt/metadata/css/CSS2/floats/floats-placement-007.html.ini new file mode 100644 index 00000000000..b22e125306e --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/floats/floats-placement-007.html.ini @@ -0,0 +1,2 @@ +[floats-placement-007.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/floats/floats-placement-008.html.ini b/tests/wpt/metadata/css/CSS2/floats/floats-placement-008.html.ini new file mode 100644 index 00000000000..5a1e705388f --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/floats/floats-placement-008.html.ini @@ -0,0 +1,2 @@ +[floats-placement-008.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-001.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-001.html.ini deleted file mode 100644 index 0842d0b5727..00000000000 --- a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-001.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[hit-test-floats-001.html] - [hit-test-floats-001] - expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini deleted file mode 100644 index 147f062e548..00000000000 --- a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[hit-test-floats-005.html] - [Miss clipped float] - expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini b/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini index a057f038339..5e3a96e5999 100644 --- a/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini +++ b/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini @@ -8,8 +8,5 @@ [[data-expected-height\] 3] expected: FAIL - [[data-expected-height\] 1] - expected: FAIL - - [[data-expected-height\] 2] + [[data-expected-height\] 4] expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html.ini b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html.ini index f9e216a8cfc..cdd8b55f192 100644 --- a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html.ini +++ b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html.ini @@ -1,6 +1,3 @@ [block-in-inline-hittest-relpos-zindex.html] [position: relative; z-index: -1;] expected: FAIL - - [block-in-inline-hittest-relpos-zindex] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-animations/parsing/animation-range-end-computed.html.ini b/tests/wpt/metadata/css/css-animations/parsing/animation-range-end-computed.html.ini index f1c03d14e9e..1ccd2aad986 100644 --- a/tests/wpt/metadata/css/css-animations/parsing/animation-range-end-computed.html.ini +++ b/tests/wpt/metadata/css/css-animations/parsing/animation-range-end-computed.html.ini @@ -46,3 +46,15 @@ [Property animation-range-end value 'exit calc(1em + 10px)'] expected: FAIL + + [Property animation-range-end value 'exit-crossing 42%'] + expected: FAIL + + [Property animation-range-end value 'entry 42px'] + expected: FAIL + + [Property animation-range-end value 'entry-crossing 42px'] + expected: FAIL + + [Property animation-range-end value 'entry 1em'] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-animations/parsing/animation-range-end-valid.html.ini b/tests/wpt/metadata/css/css-animations/parsing/animation-range-end-valid.html.ini index ed415385323..b01b51732e5 100644 --- a/tests/wpt/metadata/css/css-animations/parsing/animation-range-end-valid.html.ini +++ b/tests/wpt/metadata/css/css-animations/parsing/animation-range-end-valid.html.ini @@ -40,3 +40,18 @@ [e.style['animation-range-end'\] = "exit calc(1em + 10px)" should set the property value] expected: FAIL + + [e.style['animation-range-end'\] = "exit-crossing 42%" should set the property value] + expected: FAIL + + [e.style['animation-range-end'\] = "entry 42px" should set the property value] + expected: FAIL + + [e.style['animation-range-end'\] = "entry-crossing 42px" should set the property value] + expected: FAIL + + [e.style['animation-range-end'\] = "entry 1em" should set the property value] + expected: FAIL + + [e.style['animation-range-end'\] = "entry 42%" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-animations/parsing/animation-range-shorthand.html.ini b/tests/wpt/metadata/css/css-animations/parsing/animation-range-shorthand.html.ini index 664f41188ff..be1849f0a5b 100644 --- a/tests/wpt/metadata/css/css-animations/parsing/animation-range-shorthand.html.ini +++ b/tests/wpt/metadata/css/css-animations/parsing/animation-range-shorthand.html.ini @@ -106,3 +106,81 @@ [e.style['animation-range'\] = "enter calc(10% + 10px) exit 20px" should not set unrelated longhands] expected: FAIL + + [e.style['animation-range'\] = "entry" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "entry-crossing" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "exit-crossing" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "entry, exit" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "entry 0% entry 100%" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "entry-crossing 0% entry-crossing 100%" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "exit-crossing 0% exit-crossing 100%" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "entry calc(10% - 10%) entry calc(50% + 50%)" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "entry 50%" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "entry-crossing 50%" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "exit-crossing 50%" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "entry 50px exit 100px" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "entry 50% exit 50%" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "cover 50% entry 50%, contain 50% exit 50%" should set the property value] + expected: FAIL + + [e.style['animation-range'\] = "entry 10% exit 20%" should set animation-range-end] + expected: FAIL + + [e.style['animation-range'\] = "entry 10% exit 20%" should set animation-range-start] + expected: FAIL + + [e.style['animation-range'\] = "entry 10% exit 20%" should not set unrelated longhands] + expected: FAIL + + [e.style['animation-range'\] = "entry calc(10% + 10px) exit 20px" should set animation-range-end] + expected: FAIL + + [e.style['animation-range'\] = "entry calc(10% + 10px) exit 20px" should set animation-range-start] + expected: FAIL + + [e.style['animation-range'\] = "entry calc(10% + 10px) exit 20px" should not set unrelated longhands] + expected: FAIL + + [e.style['animation-range'\] = "entry, exit" should set animation-range-end] + expected: FAIL + + [e.style['animation-range'\] = "entry, exit" should set animation-range-start] + expected: FAIL + + [e.style['animation-range'\] = "entry, exit" should not set unrelated longhands] + expected: FAIL + + [e.style['animation-range'\] = "entry 0%, exit" should set animation-range-end] + expected: FAIL + + [e.style['animation-range'\] = "entry 0%, exit" should set animation-range-start] + expected: FAIL + + [e.style['animation-range'\] = "entry 0%, exit" should not set unrelated longhands] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-animations/parsing/animation-range-start-computed.html.ini b/tests/wpt/metadata/css/css-animations/parsing/animation-range-start-computed.html.ini index 5c4c9fae8c4..ac4d268eec6 100644 --- a/tests/wpt/metadata/css/css-animations/parsing/animation-range-start-computed.html.ini +++ b/tests/wpt/metadata/css/css-animations/parsing/animation-range-start-computed.html.ini @@ -46,3 +46,15 @@ [Property animation-range-start value 'exit calc(1em + 10px)'] expected: FAIL + + [Property animation-range-start value 'exit-crossing 42%'] + expected: FAIL + + [Property animation-range-start value 'entry 42px'] + expected: FAIL + + [Property animation-range-start value 'entry-crossing 42px'] + expected: FAIL + + [Property animation-range-start value 'entry 1em'] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-animations/parsing/animation-range-start-valid.html.ini b/tests/wpt/metadata/css/css-animations/parsing/animation-range-start-valid.html.ini index 85296253f2a..6c35f58b361 100644 --- a/tests/wpt/metadata/css/css-animations/parsing/animation-range-start-valid.html.ini +++ b/tests/wpt/metadata/css/css-animations/parsing/animation-range-start-valid.html.ini @@ -40,3 +40,18 @@ [e.style['animation-range-start'\] = "exit calc(1em + 10px)" should set the property value] expected: FAIL + + [e.style['animation-range-start'\] = "exit-crossing 42%" should set the property value] + expected: FAIL + + [e.style['animation-range-start'\] = "entry 42px" should set the property value] + expected: FAIL + + [e.style['animation-range-start'\] = "entry-crossing 42px" should set the property value] + expected: FAIL + + [e.style['animation-range-start'\] = "entry 1em" should set the property value] + expected: FAIL + + [e.style['animation-range-start'\] = "entry 42%" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-backgrounds/background-clip/clip-text-multi-line-002.html.ini b/tests/wpt/metadata/css/css-backgrounds/background-clip/clip-text-multi-line-002.html.ini new file mode 100644 index 00000000000..96410eccd2d --- /dev/null +++ b/tests/wpt/metadata/css/css-backgrounds/background-clip/clip-text-multi-line-002.html.ini @@ -0,0 +1,2 @@ +[clip-text-multi-line-002.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-backgrounds/background-size-001.html.ini b/tests/wpt/metadata/css/css-backgrounds/background-size-001.html.ini deleted file mode 100644 index cb2d8ab83ed..00000000000 --- a/tests/wpt/metadata/css/css-backgrounds/background-size-001.html.ini +++ /dev/null @@ -1,27 +0,0 @@ -[background-size-001.html] - [background-size_length_zero] - expected: FAIL - - [background-size_length_negative_zero] - expected: FAIL - - [background-size_length_positive_zero] - expected: FAIL - - [background-size_length_normal] - expected: FAIL - - [background-size_percentage_min] - expected: FAIL - - [background-size_percentage_normal] - expected: FAIL - - [background-size_percentage_max] - expected: FAIL - - [background-size_length_auto] - expected: FAIL - - [background-size_percentage_auto] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-backgrounds/parsing/background-valid.html.ini b/tests/wpt/metadata/css/css-backgrounds/parsing/background-valid.html.ini index fb4b63cd496..206453f3c7a 100644 --- a/tests/wpt/metadata/css/css-backgrounds/parsing/background-valid.html.ini +++ b/tests/wpt/metadata/css/css-backgrounds/parsing/background-valid.html.ini @@ -2,3 +2,35 @@ [e.style['background'\] = "url(\\"https://example.com/\\") 1px 2px / 3px 4px space round local padding-box content-box, rgb(5, 6, 7) url(\\"https://example.com/\\") 1px 2px / 3px 4px space round local padding-box content-box" should set the property value] expected: FAIL + [e.style['background'\] = "none" should set background-color] + expected: FAIL + + [e.style['background'\] = "none" should set background-position] + expected: FAIL + + [e.style['background'\] = "url(\\"https://example.com/\\") 1px 2px / 3px 4px space round local padding-box content-box, rgb(5, 6, 7) url(\\"https://example.com/\\") 1px 2px / 3px 4px space round local padding-box content-box" should set background-attachment] + expected: FAIL + + [e.style['background'\] = "url(\\"https://example.com/\\") 1px 2px / 3px 4px space round local padding-box content-box, rgb(5, 6, 7) url(\\"https://example.com/\\") 1px 2px / 3px 4px space round local padding-box content-box" should set background-clip] + expected: FAIL + + [e.style['background'\] = "url(\\"https://example.com/\\") 1px 2px / 3px 4px space round local padding-box content-box, rgb(5, 6, 7) url(\\"https://example.com/\\") 1px 2px / 3px 4px space round local padding-box content-box" should set background-color] + expected: FAIL + + [e.style['background'\] = "url(\\"https://example.com/\\") 1px 2px / 3px 4px space round local padding-box content-box, rgb(5, 6, 7) url(\\"https://example.com/\\") 1px 2px / 3px 4px space round local padding-box content-box" should set background-image] + expected: FAIL + + [e.style['background'\] = "url(\\"https://example.com/\\") 1px 2px / 3px 4px space round local padding-box content-box, rgb(5, 6, 7) url(\\"https://example.com/\\") 1px 2px / 3px 4px space round local padding-box content-box" should set background-origin] + expected: FAIL + + [e.style['background'\] = "url(\\"https://example.com/\\") 1px 2px / 3px 4px space round local padding-box content-box, rgb(5, 6, 7) url(\\"https://example.com/\\") 1px 2px / 3px 4px space round local padding-box content-box" should set background-position] + expected: FAIL + + [e.style['background'\] = "url(\\"https://example.com/\\") 1px 2px / 3px 4px space round local padding-box content-box, rgb(5, 6, 7) url(\\"https://example.com/\\") 1px 2px / 3px 4px space round local padding-box content-box" should set background-repeat] + expected: FAIL + + [e.style['background'\] = "url(\\"https://example.com/\\") 1px 2px / 3px 4px space round local padding-box content-box, rgb(5, 6, 7) url(\\"https://example.com/\\") 1px 2px / 3px 4px space round local padding-box content-box" should set background-size] + expected: FAIL + + [e.style['background'\] = "url(\\"https://example.com/\\") 1px 2px / 3px 4px space round local padding-box content-box, rgb(5, 6, 7) url(\\"https://example.com/\\") 1px 2px / 3px 4px space round local padding-box content-box" should not set unrelated longhands] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-color/parsing/color-invalid-color-function.html.ini b/tests/wpt/metadata/css/css-color/parsing/color-invalid-color-function.html.ini deleted file mode 100644 index d23a84f1d48..00000000000 --- a/tests/wpt/metadata/css/css-color/parsing/color-invalid-color-function.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[color-invalid-color-function.html] - expected: ERROR diff --git a/tests/wpt/metadata/css/css-flexbox/abspos/position-absolute-013.html.ini b/tests/wpt/metadata/css/css-flexbox/abspos/position-absolute-013.html.ini index 80111fb0236..2b2e0fce8eb 100644 --- a/tests/wpt/metadata/css/css-flexbox/abspos/position-absolute-013.html.ini +++ b/tests/wpt/metadata/css/css-flexbox/abspos/position-absolute-013.html.ini @@ -1,4 +1,5 @@ [position-absolute-013.html] + expected: TIMEOUT [.flexbox 309] expected: FAIL diff --git a/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini index 90a3a786bae..c40df33181a 100644 --- a/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini +++ b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini @@ -122,9 +122,6 @@ [Matching font-style: 'oblique 21deg' should prefer 'oblique 21deg' over 'oblique 30deg 60deg'] expected: FAIL - [Matching font-style: 'oblique 0deg' should prefer 'oblique 40deg 50deg' over 'italic'] - expected: FAIL - [Matching font-style: 'italic' should prefer 'oblique 5deg 10deg' over 'oblique 5deg'] expected: FAIL @@ -134,9 +131,6 @@ [Matching font-style: 'oblique -10deg' should prefer 'italic' over 'oblique 0deg 10deg'] expected: FAIL - [Matching font-weight: '400' should prefer '400' over '450 460'] - expected: FAIL - [Matching font-style: 'oblique -20deg' should prefer 'oblique 30deg 60deg' over 'oblique 40deg 50deg'] expected: FAIL @@ -152,9 +146,6 @@ [Matching font-style: 'oblique 20deg' should prefer 'oblique 20deg' over 'oblique 30deg 60deg'] expected: FAIL - [Matching font-style: 'oblique 21deg' should prefer 'oblique 10deg' over 'italic'] - expected: FAIL - [Matching font-style: 'oblique 10deg' should prefer 'oblique 5deg' over 'oblique 15deg 20deg'] expected: FAIL @@ -248,9 +239,6 @@ [Matching font-style: 'oblique -20deg' should prefer 'italic' over 'oblique 0deg'] expected: FAIL - [Matching font-weight: '399' should prefer '200 300' over '400'] - expected: FAIL - [Matching font-style: 'oblique -21deg' should prefer 'oblique -21deg' over 'oblique -60deg -40deg'] expected: FAIL @@ -317,9 +305,6 @@ [Matching font-weight: '399' should prefer '350 399' over '340 360'] expected: FAIL - [Matching font-stretch: '110%' should prefer '110% 120%' over '115% 116%'] - expected: FAIL - [Matching font-stretch: '90%' should prefer '90% 100%' over '50% 80%'] expected: FAIL @@ -331,3 +316,6 @@ [Matching font-style: 'oblique 10deg' should prefer 'oblique 30deg 60deg' over 'oblique 40deg 50deg'] expected: FAIL + + [Matching font-style: 'italic' should prefer 'oblique 5deg' over 'normal'] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-fonts/variations/font-style-parsing.html.ini b/tests/wpt/metadata/css/css-fonts/variations/font-style-parsing.html.ini deleted file mode 100644 index 2d64367e8f5..00000000000 --- a/tests/wpt/metadata/css/css-fonts/variations/font-style-parsing.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[font-style-parsing.html] - [Font-style (computed): 'oblique' followed by calc is valid even if it mixes units (with computation)] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-images/image-set/image-set-parsing.html.ini b/tests/wpt/metadata/css/css-images/image-set/image-set-parsing.html.ini index 4b50fbdb2fa..043fd47a676 100644 --- a/tests/wpt/metadata/css/css-images/image-set/image-set-parsing.html.ini +++ b/tests/wpt/metadata/css/css-images/image-set/image-set-parsing.html.ini @@ -157,3 +157,39 @@ [e.style['content'\] = "-webkit-image-set(url(\\"example.png\\") 1dpi)" should set the property value] expected: FAIL + + [e.style['background-image'\] = "image-set(repeating-linear-gradient(red, blue 25%) 1x)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "-webkit-image-set(repeating-linear-gradient(red, blue 25%) 1x)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "image-set(radial-gradient(black, white) 1x)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "-webkit-image-set(radial-gradient(black, white) 1x)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "image-set(repeating-radial-gradient(red, blue 25%) 1x)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "-webkit-image-set(repeating-radial-gradient(red, blue 25%) 1x)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "image-set(conic-gradient(black, white) 1x)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "-webkit-image-set(conic-gradient(black, white) 1x)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "image-set(repeating-conic-gradient(red, blue 25%) 1x)" should set the property value] + expected: FAIL + + [e.style['background-image'\] = "-webkit-image-set(repeating-conic-gradient(red, blue 25%) 1x)" should set the property value] + expected: FAIL + + [e.style['content'\] = "image-set(linear-gradient(black, white) 1x, url(\\"example.png\\") 4x)" should set the property value] + expected: FAIL + + [e.style['content'\] = "-webkit-image-set(linear-gradient(black, white) 1x, url(\\"example.png\\") 4x)" should set the property value] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-images/image-set/image-set-repeating-linear-gradient-rendering.html.ini b/tests/wpt/metadata/css/css-images/image-set/image-set-repeating-linear-gradient-rendering.html.ini new file mode 100644 index 00000000000..be70642abe0 --- /dev/null +++ b/tests/wpt/metadata/css/css-images/image-set/image-set-repeating-linear-gradient-rendering.html.ini @@ -0,0 +1,2 @@ +[image-set-repeating-linear-gradient-rendering.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-images/image-set/image-set-repeating-radial-gradient-rendering.html.ini b/tests/wpt/metadata/css/css-images/image-set/image-set-repeating-radial-gradient-rendering.html.ini new file mode 100644 index 00000000000..cfb95cb1d12 --- /dev/null +++ b/tests/wpt/metadata/css/css-images/image-set/image-set-repeating-radial-gradient-rendering.html.ini @@ -0,0 +1,2 @@ +[image-set-repeating-radial-gradient-rendering.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-images/image-set/image-set-type-unsupported-rendering-2.html.ini b/tests/wpt/metadata/css/css-images/image-set/image-set-type-unsupported-rendering-2.html.ini new file mode 100644 index 00000000000..b8a6abd059e --- /dev/null +++ b/tests/wpt/metadata/css/css-images/image-set/image-set-type-unsupported-rendering-2.html.ini @@ -0,0 +1,2 @@ +[image-set-type-unsupported-rendering-2.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-images/image-set/image-set-type-unsupported-rendering.html.ini b/tests/wpt/metadata/css/css-images/image-set/image-set-type-unsupported-rendering.html.ini new file mode 100644 index 00000000000..f2b544a7d84 --- /dev/null +++ b/tests/wpt/metadata/css/css-images/image-set/image-set-type-unsupported-rendering.html.ini @@ -0,0 +1,2 @@ +[image-set-type-unsupported-rendering.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-text-decor/text-decoration-propagation-03.html.ini b/tests/wpt/metadata/css/css-text-decor/text-decoration-propagation-03.html.ini new file mode 100644 index 00000000000..81f72adf5fc --- /dev/null +++ b/tests/wpt/metadata/css/css-text-decor/text-decoration-propagation-03.html.ini @@ -0,0 +1,2 @@ +[text-decoration-propagation-03.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini index c4daffd168f..c83b87a483a 100644 --- a/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini +++ b/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini @@ -52,3 +52,276 @@ [background-position length(px) / events] expected: FAIL + + [background-color color(rgba) / values] + expected: FAIL + + [border-top-width length(pt) / values] + expected: FAIL + + [border-top-width length(pc) / values] + expected: FAIL + + [border-top-width length(px) / values] + expected: FAIL + + [border-top-width length(em) / values] + expected: FAIL + + [border-top-width length(ex) / values] + expected: FAIL + + [border-top-width length(mm) / values] + expected: FAIL + + [border-top-width length(cm) / values] + expected: FAIL + + [border-top-width length(in) / values] + expected: FAIL + + [border-right-width length(pt) / values] + expected: FAIL + + [border-right-width length(pc) / values] + expected: FAIL + + [border-right-width length(px) / values] + expected: FAIL + + [border-right-width length(em) / values] + expected: FAIL + + [border-right-width length(ex) / values] + expected: FAIL + + [border-right-width length(mm) / values] + expected: FAIL + + [border-right-width length(cm) / values] + expected: FAIL + + [border-right-width length(in) / values] + expected: FAIL + + [border-bottom-width length(pt) / values] + expected: FAIL + + [border-bottom-width length(pc) / values] + expected: FAIL + + [border-bottom-width length(px) / values] + expected: FAIL + + [border-bottom-width length(em) / values] + expected: FAIL + + [border-bottom-width length(ex) / values] + expected: FAIL + + [border-bottom-width length(mm) / values] + expected: FAIL + + [border-bottom-width length(cm) / values] + expected: FAIL + + [border-bottom-width length(in) / values] + expected: FAIL + + [border-left-width length(pt) / values] + expected: FAIL + + [border-left-width length(pc) / values] + expected: FAIL + + [border-left-width length(px) / values] + expected: FAIL + + [border-left-width length(em) / values] + expected: FAIL + + [border-left-width length(ex) / values] + expected: FAIL + + [border-left-width length(mm) / values] + expected: FAIL + + [border-left-width length(cm) / values] + expected: FAIL + + [border-left-width length(in) / values] + expected: FAIL + + [border-top-color color(rgba) / values] + expected: FAIL + + [border-right-color color(rgba) / values] + expected: FAIL + + [border-bottom-color color(rgba) / values] + expected: FAIL + + [border-left-color color(rgba) / values] + expected: FAIL + + [padding-bottom length(pt) / values] + expected: FAIL + + [padding-bottom length(pc) / values] + expected: FAIL + + [padding-bottom length(px) / values] + expected: FAIL + + [padding-bottom length(em) / values] + expected: FAIL + + [padding-bottom length(ex) / values] + expected: FAIL + + [padding-bottom length(mm) / values] + expected: FAIL + + [padding-bottom length(cm) / values] + expected: FAIL + + [padding-bottom length(in) / values] + expected: FAIL + + [padding-left length(pt) / values] + expected: FAIL + + [padding-left length(pc) / values] + expected: FAIL + + [padding-left length(px) / values] + expected: FAIL + + [padding-left length(em) / values] + expected: FAIL + + [padding-left length(ex) / values] + expected: FAIL + + [padding-left length(mm) / values] + expected: FAIL + + [padding-left length(cm) / values] + expected: FAIL + + [padding-left length(in) / values] + expected: FAIL + + [padding-right length(pt) / values] + expected: FAIL + + [padding-right length(pc) / values] + expected: FAIL + + [padding-right length(px) / values] + expected: FAIL + + [padding-right length(em) / values] + expected: FAIL + + [padding-right length(ex) / values] + expected: FAIL + + [padding-right length(mm) / values] + expected: FAIL + + [padding-right length(cm) / values] + expected: FAIL + + [padding-right length(in) / values] + expected: FAIL + + [padding-top length(pt) / values] + expected: FAIL + + [padding-top length(pc) / values] + expected: FAIL + + [padding-top length(px) / values] + expected: FAIL + + [padding-top length(em) / values] + expected: FAIL + + [padding-top length(ex) / values] + expected: FAIL + + [padding-top length(mm) / values] + expected: FAIL + + [padding-top length(cm) / values] + expected: FAIL + + [padding-top length(in) / values] + expected: FAIL + + [margin-bottom length(pt) / values] + expected: FAIL + + [margin-bottom length(pc) / values] + expected: FAIL + + [margin-bottom length(px) / values] + expected: FAIL + + [margin-bottom length(em) / values] + expected: FAIL + + [margin-bottom length(ex) / values] + expected: FAIL + + [margin-bottom length(mm) / values] + expected: FAIL + + [margin-bottom length(cm) / values] + expected: FAIL + + [margin-bottom length(in) / values] + expected: FAIL + + [margin-left length(pt) / values] + expected: FAIL + + [margin-left length(pc) / values] + expected: FAIL + + [margin-left length(px) / values] + expected: FAIL + + [margin-left length(em) / values] + expected: FAIL + + [margin-left length(ex) / values] + expected: FAIL + + [margin-left length(mm) / values] + expected: FAIL + + [margin-left length(cm) / values] + expected: FAIL + + [margin-left length(in) / values] + expected: FAIL + + [margin-right length(pt) / values] + expected: FAIL + + [margin-right length(pc) / values] + expected: FAIL + + [margin-right length(px) / values] + expected: FAIL + + [margin-right length(em) / values] + expected: FAIL + + [margin-right length(ex) / values] + expected: FAIL + + [margin-right length(mm) / values] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-002.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-002.html.ini index ce3251ad5da..d34dc5456ba 100644 --- a/tests/wpt/metadata/css/css-transitions/properties-value-002.html.ini +++ b/tests/wpt/metadata/css/css-transitions/properties-value-002.html.ini @@ -1,27 +1,3 @@ [properties-value-002.html] [vertical-align vertical(keyword) / values] expected: FAIL - - [margin-bottom percentage(%) / values] - expected: FAIL - - [margin-left percentage(%) / values] - expected: FAIL - - [margin-right percentage(%) / values] - expected: FAIL - - [margin-top percentage(%) / values] - expected: FAIL - - [padding-bottom percentage(%) / values] - expected: FAIL - - [padding-left percentage(%) / values] - expected: FAIL - - [padding-right percentage(%) / values] - expected: FAIL - - [padding-top percentage(%) / values] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini index d316d0d03ec..242ba44bbca 100644 --- a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini +++ b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini @@ -52,126 +52,3 @@ [background-position length(px) / events] expected: FAIL - - [background-color color(rgba) / values] - expected: FAIL - - [border-top-width length(pt) / values] - expected: FAIL - - [border-top-width length(pc) / values] - expected: FAIL - - [border-top-width length(px) / values] - expected: FAIL - - [border-top-width length(em) / values] - expected: FAIL - - [border-top-width length(ex) / values] - expected: FAIL - - [border-top-width length(mm) / values] - expected: FAIL - - [border-top-width length(cm) / values] - expected: FAIL - - [border-top-width length(in) / values] - expected: FAIL - - [border-right-width length(pt) / values] - expected: FAIL - - [border-right-width length(pc) / values] - expected: FAIL - - [border-right-width length(px) / values] - expected: FAIL - - [border-right-width length(em) / values] - expected: FAIL - - [border-right-width length(ex) / values] - expected: FAIL - - [border-right-width length(mm) / values] - expected: FAIL - - [border-right-width length(cm) / values] - expected: FAIL - - [border-right-width length(in) / values] - expected: FAIL - - [border-bottom-width length(pt) / values] - expected: FAIL - - [border-bottom-width length(pc) / values] - expected: FAIL - - [border-bottom-width length(px) / values] - expected: FAIL - - [border-bottom-width length(em) / values] - expected: FAIL - - [border-bottom-width length(ex) / values] - expected: FAIL - - [border-bottom-width length(mm) / values] - expected: FAIL - - [border-bottom-width length(cm) / values] - expected: FAIL - - [border-bottom-width length(in) / values] - expected: FAIL - - [border-left-width length(pt) / values] - expected: FAIL - - [border-left-width length(pc) / values] - expected: FAIL - - [border-left-width length(px) / values] - expected: FAIL - - [border-left-width length(em) / values] - expected: FAIL - - [border-left-width length(ex) / values] - expected: FAIL - - [border-left-width length(mm) / values] - expected: FAIL - - [border-left-width length(cm) / values] - expected: FAIL - - [border-left-width length(in) / values] - expected: FAIL - - [border-top-color color(rgba) / values] - expected: FAIL - - [border-right-color color(rgba) / values] - expected: FAIL - - [border-bottom-color color(rgba) / values] - expected: FAIL - - [border-left-color color(rgba) / values] - expected: FAIL - - [padding-bottom length(pt) / values] - expected: FAIL - - [padding-bottom length(pc) / values] - expected: FAIL - - [padding-bottom length(px) / values] - expected: FAIL - - [padding-bottom length(em) / values] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-ui/user-select-inheritance.html.ini b/tests/wpt/metadata/css/css-ui/user-select-inheritance.html.ini new file mode 100644 index 00000000000..9edfc566223 --- /dev/null +++ b/tests/wpt/metadata/css/css-ui/user-select-inheritance.html.ini @@ -0,0 +1,15 @@ +[user-select-inheritance.html] + [user-select:all should not be inherited.] + expected: FAIL + + [user-select:auto should not be inherited.] + expected: FAIL + + [user-select:contain should not be inherited.] + expected: FAIL + + [user-select:none should not be inherited.] + expected: FAIL + + [user-select:text should not be inherited.] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini b/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini deleted file mode 100644 index f18b8d2fcf9..00000000000 --- a/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[CaretPosition-001.html] - [Element at (400, 100)] - expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini new file mode 100644 index 00000000000..cf67b5d03dd --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini @@ -0,0 +1,3 @@ +[elementFromPoint-dynamic-anon-box.html] + [Link should be clickable after hiding a scrollbox with an anonymous table inside] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-table.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-table.html.ini new file mode 100644 index 00000000000..db065588308 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-table.html.ini @@ -0,0 +1,3 @@ +[elementFromPoint-float-in-table.html] + [float-in-div] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini index 8ae9bae3500..7050090c3dd 100644 --- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini +++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini @@ -13,3 +13,18 @@ [
  • Outside 3
  • ] expected: FAIL + + [
  • Inside 1
  • ] + expected: FAIL + + [
  • Inside 2
  • ] + expected: FAIL + + [
  • Inside 3
  • ] + expected: FAIL + + [
  • Image Inside 1
  • ] + expected: FAIL + + [
  • Image Inside 2
  • ] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-subpixel.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-subpixel.html.ini new file mode 100644 index 00000000000..8f6f663ba61 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-subpixel.html.ini @@ -0,0 +1,3 @@ +[elementFromPoint-subpixel.html] + [Hit test top left corner of box] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-visibility-hidden-resizer.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-visibility-hidden-resizer.html.ini new file mode 100644 index 00000000000..a6bca7ac372 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-visibility-hidden-resizer.html.ini @@ -0,0 +1,3 @@ +[elementFromPoint-visibility-hidden-resizer.html] + [elementFromPoint on resizer area of an element with visibility:hidden] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini index 898f39c4330..9f2a3229231 100644 --- a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini +++ b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini @@ -20,3 +20,6 @@ [test the top of layer] expected: FAIL + + [test some point of the element: top left corner] + expected: FAIL diff --git a/tests/wpt/metadata/css/mediaqueries/mq-non-matching-lazy-load.html.ini b/tests/wpt/metadata/css/mediaqueries/mq-non-matching-lazy-load.html.ini new file mode 100644 index 00000000000..e94efaed16c --- /dev/null +++ b/tests/wpt/metadata/css/mediaqueries/mq-non-matching-lazy-load.html.ini @@ -0,0 +1,3 @@ +[mq-non-matching-lazy-load.html] + [Ensure browser renders the page without waiting for non matching @import style] + expected: FAIL diff --git a/tests/wpt/metadata/fetch/api/headers/header-setcookie.any.js.ini b/tests/wpt/metadata/fetch/api/headers/header-setcookie.any.js.ini new file mode 100644 index 00000000000..7ecb3068d83 --- /dev/null +++ b/tests/wpt/metadata/fetch/api/headers/header-setcookie.any.js.ini @@ -0,0 +1,105 @@ +[header-setcookie.any.serviceworker.html] + expected: ERROR + +[header-setcookie.any.worker.html] + [Headers iterator does not combine set-cookie headers] + expected: FAIL + + [Headers iterator does not combine set-cookie & set-cookie2 headers] + expected: FAIL + + [Headers iterator preserves set-cookie ordering] + expected: FAIL + + [Headers iterator preserves per header ordering, but sorts keys alphabetically] + expected: FAIL + + [Headers iterator preserves per header ordering, but sorts keys alphabetically (and ignores value ordering)] + expected: FAIL + + [Headers iterator is correctly updated with set-cookie changes] + expected: FAIL + + [Headers.prototype.append works for set-cookie] + expected: FAIL + + [Headers.prototype.getSetCookie with no headers present] + expected: FAIL + + [Headers.prototype.getSetCookie with one header] + expected: FAIL + + [Headers.prototype.getSetCookie with one header created from an object] + expected: FAIL + + [Headers.prototype.getSetCookie with multiple headers] + expected: FAIL + + [Headers.prototype.getSetCookie with an empty header] + expected: FAIL + + [Headers.prototype.getSetCookie with two equal headers] + expected: FAIL + + [Headers.prototype.getSetCookie ignores set-cookie2 headers] + expected: FAIL + + [Headers.prototype.getSetCookie preserves header ordering] + expected: FAIL + + [Set-Cookie is a forbidden response header] + expected: FAIL + + +[header-setcookie.any.html] + [Headers iterator does not combine set-cookie headers] + expected: FAIL + + [Headers iterator does not combine set-cookie & set-cookie2 headers] + expected: FAIL + + [Headers iterator preserves set-cookie ordering] + expected: FAIL + + [Headers iterator preserves per header ordering, but sorts keys alphabetically] + expected: FAIL + + [Headers iterator preserves per header ordering, but sorts keys alphabetically (and ignores value ordering)] + expected: FAIL + + [Headers iterator is correctly updated with set-cookie changes] + expected: FAIL + + [Headers.prototype.append works for set-cookie] + expected: FAIL + + [Headers.prototype.getSetCookie with no headers present] + expected: FAIL + + [Headers.prototype.getSetCookie with one header] + expected: FAIL + + [Headers.prototype.getSetCookie with one header created from an object] + expected: FAIL + + [Headers.prototype.getSetCookie with multiple headers] + expected: FAIL + + [Headers.prototype.getSetCookie with an empty header] + expected: FAIL + + [Headers.prototype.getSetCookie with two equal headers] + expected: FAIL + + [Headers.prototype.getSetCookie ignores set-cookie2 headers] + expected: FAIL + + [Headers.prototype.getSetCookie preserves header ordering] + expected: FAIL + + [Set-Cookie is a forbidden response header] + expected: FAIL + + +[header-setcookie.any.sharedworker.html] + expected: ERROR diff --git a/tests/wpt/metadata/fetch/api/request/request-init-priority.any.js.ini b/tests/wpt/metadata/fetch/api/request/request-init-priority.any.js.ini new file mode 100644 index 00000000000..7babffcfe8e --- /dev/null +++ b/tests/wpt/metadata/fetch/api/request/request-init-priority.any.js.ini @@ -0,0 +1,14 @@ +[request-init-priority.any.worker.html] + [new Request() throws a TypeError if any of RequestInit's members' values are invalid] + expected: FAIL + + [fetch() with an invalid priority returns a rejected promise with a TypeError] + expected: FAIL + + +[request-init-priority.any.html] + [new Request() throws a TypeError if any of RequestInit's members' values are invalid] + expected: FAIL + + [fetch() with an invalid priority returns a rejected promise with a TypeError] + expected: FAIL diff --git a/tests/wpt/metadata/fetch/content-length/parsing.window.js.ini b/tests/wpt/metadata/fetch/content-length/parsing.window.js.ini index 588d6d56cdd..3285a4f15ac 100644 --- a/tests/wpt/metadata/fetch/content-length/parsing.window.js.ini +++ b/tests/wpt/metadata/fetch/content-length/parsing.window.js.ini @@ -76,9 +76,3 @@ [Input: "Content-Length: ". Expected: 42.] expected: FAIL - - [Input: "Content-Length: 30". Expected: 30.] - expected: FAIL - - [Input: "Content-Length: 42\\r\\nContent-Length: 42". Expected: 42.] - expected: FAIL diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini index 092e3da5086..736ff6130a5 100644 --- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini +++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini @@ -7,6 +7,3 @@ [X-Content-Type-Options%3A%20nosniff%0C] expected: FAIL - - [X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff] - expected: FAIL diff --git a/tests/wpt/metadata/fetch/private-network-access/worker-fetch.window.js.ini b/tests/wpt/metadata/fetch/private-network-access/worker-fetch.window.js.ini index edec336325c..47b54d2d4b9 100644 --- a/tests/wpt/metadata/fetch/private-network-access/worker-fetch.window.js.ini +++ b/tests/wpt/metadata/fetch/private-network-access/worker-fetch.window.js.ini @@ -1,3 +1,15 @@ [worker-fetch.window.html] [treat-as-public to local: failure.] expected: FAIL + + [private to local: failure.] + expected: FAIL + + [public to local: failure.] + expected: FAIL + + [public to private: failure.] + expected: FAIL + + [treat-as-public to private: failure.] + expected: FAIL diff --git a/tests/wpt/metadata/fetch/private-network-access/xhr.window.js.ini b/tests/wpt/metadata/fetch/private-network-access/xhr.window.js.ini index bc1dc6d765b..7b2213df2bc 100644 --- a/tests/wpt/metadata/fetch/private-network-access/xhr.window.js.ini +++ b/tests/wpt/metadata/fetch/private-network-access/xhr.window.js.ini @@ -1,3 +1,12 @@ [xhr.window.html] [treat-as-public-address to local: failure.] expected: FAIL + + [private to local: failure.] + expected: FAIL + + [public to local: failure.] + expected: FAIL + + [public to private: failure.] + expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini index c8a3c8f9e68..6e9f7acf151 100644 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini @@ -1,6 +1,6 @@ [scroll-restoration-fragment-scrolling-cross-origin.html] type: testharness - expected: ERROR + expected: TIMEOUT [Manual scroll restoration should take precedent over scrolling to fragment in cross origin navigation] expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini index 149bcb4ff8c..51fd557bd7f 100644 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini @@ -7,6 +7,3 @@ [load & pageshow events do not fire on contentWindow of +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/transition-in-empty-iframe.html b/tests/wpt/web-platform-tests/css/css-view-transitions/transition-in-empty-iframe.html new file mode 100644 index 00000000000..99e9f24176e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-view-transitions/transition-in-empty-iframe.html @@ -0,0 +1,45 @@ + + + + View transitions: Transition from an empty iframe + + + + + + + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/view-transition-name-on-added-element.html b/tests/wpt/web-platform-tests/css/css-view-transitions/view-transition-name-on-added-element.html deleted file mode 100644 index 643121e8185..00000000000 --- a/tests/wpt/web-platform-tests/css/css-view-transitions/view-transition-name-on-added-element.html +++ /dev/null @@ -1,37 +0,0 @@ - - -View transitions: ensures view-transition-name is tracked on element added by script - - - - - - - - -
    -
    -
    - - diff --git a/tests/wpt/web-platform-tests/css/mediaqueries/mq-non-matching-lazy-load.html b/tests/wpt/web-platform-tests/css/mediaqueries/mq-non-matching-lazy-load.html new file mode 100644 index 00000000000..e0d65e30068 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/mediaqueries/mq-non-matching-lazy-load.html @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/mediaqueries/resources/mq-non-matching-lazy-load-style.css b/tests/wpt/web-platform-tests/css/mediaqueries/resources/mq-non-matching-lazy-load-style.css new file mode 100644 index 00000000000..b128f7398e3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/mediaqueries/resources/mq-non-matching-lazy-load-style.css @@ -0,0 +1,3 @@ +body { + background-color: lightblue; +} diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-child-of-complex-selector-many-children-2-ref.html b/tests/wpt/web-platform-tests/css/selectors/nth-child-of-complex-selector-many-children-2-ref.html new file mode 100644 index 00000000000..60bf0446e63 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-child-of-complex-selector-many-children-2-ref.html @@ -0,0 +1,46 @@ + + + + nth-child(...of S) with many children, where only some match + + +

    Test passes if there is no red.

    +
    +

    +

    +

    +

    1

    +

    2

    +

    +

    +

    3

    +

    4

    +

    +

    +

    5

    +

    +

    +

    6

    +

    +

    7

    +

    +

    +

    +

    +

    8

    +

    +

    +

    +

    9

    +

    10

    +

    +

    +

    11

    +

    12

    +

    +

    +

    13

    +

    14

    +
    + + diff --git a/tests/wpt/web-platform-tests/css/selectors/nth-child-of-complex-selector-many-children-2.html b/tests/wpt/web-platform-tests/css/selectors/nth-child-of-complex-selector-many-children-2.html new file mode 100644 index 00000000000..1f4fcf24185 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/nth-child-of-complex-selector-many-children-2.html @@ -0,0 +1,52 @@ + + + + nth-child(...of S) with many children, where only some match + + + + + + +

    Test passes if there is no red.

    +
    +

    +

    +

    +

    1

    +

    2

    +

    +

    +

    3

    +

    4

    +

    +

    +

    5

    +

    +

    +

    6

    +

    +

    7

    +

    +

    +

    +

    +

    8

    +

    +

    +

    +

    9

    +

    10

    +

    +

    +

    11

    +

    12

    +

    +

    +

    13

    +

    14

    +
    + + diff --git a/tests/wpt/web-platform-tests/custom-elements/HTMLElement-constructor.html b/tests/wpt/web-platform-tests/custom-elements/HTMLElement-constructor.html index 12ceb566cb5..a387a1239a9 100644 --- a/tests/wpt/web-platform-tests/custom-elements/HTMLElement-constructor.html +++ b/tests/wpt/web-platform-tests/custom-elements/HTMLElement-constructor.html @@ -162,28 +162,6 @@ test(function() { assert_equals(instance.nodeName, undefined); }, 'HTMLElement constructor must only get .prototype once, calling proxy constructor via Reflect with no inheritance'); -test(function() { - class SomeCustomElement extends HTMLElement {}; - var getCount = 0; - var countingProxy = new Proxy(SomeCustomElement, { - get: function(target, prop, receiver) { - if (prop == "prototype") { - ++getCount; - } - return Reflect.get(target, prop, receiver); - } - }); - customElements.define("failure-counting-element-1", countingProxy, - { extends: "button" }); - // define() gets the prototype of the constructor it's passed, so - // reset the counter. - getCount = 0; - assert_throws_js(TypeError, - function () { new countingProxy() }, - "Should not be able to construct an HTMLElement named 'button'"); - assert_equals(getCount, 0, "Should never have gotten .prototype"); -}, 'HTMLElement constructor must not get .prototype until it finishes its extends sanity checks, calling proxy constructor directly'); - test(function() { class SomeCustomElement extends HTMLElement {}; var getCount = 0; diff --git a/tests/wpt/web-platform-tests/editing/data/delete.js b/tests/wpt/web-platform-tests/editing/data/delete.js index 94611e65767..bbd95e56a26 100644 --- a/tests/wpt/web-platform-tests/editing/data/delete.js +++ b/tests/wpt/web-platform-tests/editing/data/delete.js @@ -2911,4 +2911,105 @@ var browserTests = [ "foo[]bar", [true,true], {"foreColor":[false,false,"rgb(255, 0, 0)",false,false,"rgb(0, 0, 255)"]}], + +// If all list items are selected, keep one list item. +["", + [["delete",""]], + "", + [true], + {}], +["", + [["delete",""]], + "", + [true], + {}], +["", + [["delete",""]], + "", + [true], + {}], +["", + [["delete",""]], + "", + [true], + {}], +["", + [["delete",""]], + "", + [true], + {}], +["", + [["delete",""]], + "", + [true], + {}], +// Don't be confused at inner elements of the list items. +["", + [["delete",""]], + "", + [true], + {}], +["", + [["delete",""]], + "", + [true], + {}], +["", + [["delete",""]], + "", + [true], + {}], +// Don't be confused at white-spaces around first/last list items' boundaries. +["", + [["delete",""]], + "", + [true], + {}], +["", + [["delete",""]], + "", + [true], + {}], +["", + [["delete",""]], + "", + [true], + {}], +["", + [["delete",""]], + ["", + ""], + [true], + {}], +["", + [["delete",""]], + ["", + ""], + [true], + {}], +["", + [["delete",""]], + ["", + "", + "", + ""], + [true], + {}], +// Same things for non-sub-lists. +["
    1. [abc
    ", + [["delete",""]], + "
    1. {}
    ", + [true], + {}], +["
    1. [abc
    ", + [["delete",""]], + "
    1. {}
    ", + [true], + {}], +["
      \n
    1. [abc
    ", + [["delete",""]], + ["
    1. {}
    ", + "
      \n
    1. {}
    "], + [true], + {}], ] diff --git a/tests/wpt/web-platform-tests/editing/data/forwarddelete.js b/tests/wpt/web-platform-tests/editing/data/forwarddelete.js index 524d43274e5..7c1218276b2 100644 --- a/tests/wpt/web-platform-tests/editing/data/forwarddelete.js +++ b/tests/wpt/web-platform-tests/editing/data/forwarddelete.js @@ -2791,4 +2791,105 @@ var browserTests = [ "foo[]bar", [true,true], {"foreColor":[false,false,"rgb(0, 0, 255)",false,false,"rgb(0, 0, 255)"]}], + +// If all list items are selected, keep one list item. +["", + [["forwarddelete",""]], + "", + [true], + {}], +["", + [["forwarddelete",""]], + "", + [true], + {}], +["", + [["forwarddelete",""]], + "", + [true], + {}], +["", + [["forwarddelete",""]], + "", + [true], + {}], +["", + [["forwarddelete",""]], + "", + [true], + {}], +["", + [["forwarddelete",""]], + "", + [true], + {}], +// Don't be confused at inner elements of the list items. +["", + [["forwarddelete",""]], + "", + [true], + {}], +["", + [["forwarddelete",""]], + "", + [true], + {}], +["", + [["forwarddelete",""]], + "", + [true], + {}], +// Don't be confused at white-spaces around first/last list items' boundaries. +["", + [["forwarddelete",""]], + "", + [true], + {}], +["", + [["forwarddelete",""]], + "", + [true], + {}], +["", + [["forwarddelete",""]], + "", + [true], + {}], +["", + [["forwarddelete",""]], + ["", + ""], + [true], + {}], +["", + [["forwarddelete",""]], + ["", + ""], + [true], + {}], +["", + [["forwarddelete",""]], + ["", + "", + "", + ""], + [true], + {}], +// Same things for non-sub-lists. +["
    1. [abc
    ", + [["forwarddelete",""]], + "
    1. {}
    ", + [true], + {}], +["
    1. [abc
    ", + [["forwarddelete",""]], + "
    1. {}
    ", + [true], + {}], +["
      \n
    1. [abc
    ", + [["forwarddelete",""]], + ["
    1. {}
    ", + "
      \n
    1. {}
    "], + [true], + {}], ] diff --git a/tests/wpt/web-platform-tests/editing/data/insertorderedlist.js b/tests/wpt/web-platform-tests/editing/data/insertorderedlist.js index 78cdbfeb328..71aacdd9c27 100644 --- a/tests/wpt/web-platform-tests/editing/data/insertorderedlist.js +++ b/tests/wpt/web-platform-tests/editing/data/insertorderedlist.js @@ -720,4 +720,48 @@ var browserTests = [ "
    1. abc
    "], [true,true], {"insertorderedlist":[false,false,"false",false,true,"true"]}], + +// "dir" attribute should be preserved for the list element to make the +// bullets aligned correctly. +["
    a[]bc
    def
    ", + [["insertorderedlist",""]], + ["
    1. abc
    def
    ", + "
    1. abc
    def
    "], + [true], + {}], +["
    a[bc
    de]f
    ", + [["insertorderedlist",""]], + ["
    1. abc
    2. def
    ", + "
    1. abc
    2. def
    "], + [true], + {}], +// but do not copy `dir` attributes to corresponding
  • s because different +// one from the value of the parent list element causes odd looks and anyway +// the `dir` attribute does not affect the text direction. +["
    a[bc
    de]f
    ", + [["insertorderedlist",""]], + ["
    1. abc
    2. def
    ", + "
    1. abc
    2. def
    "], + [true], + {}], + +// The other attributes should be clonsed to each list item. +["
    a[bc
    de]f
    ", + [["insertorderedlist",""]], + ["
    1. abc
    2. def
    ", + "
    1. abc
    2. def
    "], + [true], + {}], +["
    a[bc
    de]f
    ", + [["insertorderedlist",""]], + ["
    1. abc
    2. def
    ", + "
    1. abc
    2. def
    "], + [true], + {}], +["
    a[bc
    de]f
    ", + [["insertorderedlist",""]], + ["
    1. abc
    2. def
    ", + "
    1. abc
    2. def
    "], + [true], + {}], ] diff --git a/tests/wpt/web-platform-tests/editing/data/insertunorderedlist.js b/tests/wpt/web-platform-tests/editing/data/insertunorderedlist.js index 6a9a9021fdf..6401e8d9675 100644 --- a/tests/wpt/web-platform-tests/editing/data/insertunorderedlist.js +++ b/tests/wpt/web-platform-tests/editing/data/insertunorderedlist.js @@ -770,4 +770,90 @@ var browserTests = [ ""], [true,true], {"insertunorderedlist":[false,false,"false",false,true,"true"]}], + +//
    version of above cases (#73-) +["
    [foo
    bar]
    baz
    ", + [["insertunorderedlist",""]], + ["
    • [foo
    • bar]
    baz
    ", + "
    baz
    "], + [true], + {}], +["
    [foo
    bar]
    baz
    ", + [["insertunorderedlist",""]], + ["
    • [foo
    • bar]
    baz
    ", + "
    baz
    "], + [true], + {}], + +// empty
    s should be converted to empty list items. +["
    [abc

    def]
    ", + [["insertunorderedlist",""]], + ["
    • [abc

    • def]
    ", + "
    • [abc

    • def]
    "], + [true], + {}], +["
    {
    abc
    def]
    ", + [["insertunorderedlist",""]], + ["
    • {
    • abc
    • def]
    ", + "
    • {
    • abc
    • def]
    "], + [true], + {}], +// but don't listify the last empty
    if only its start boundary is in the +//range. +["
    [abc
    def
    }
    ", + [["insertunorderedlist",""]], + ["
    • [abc
    • def]

    ", + "
    • [abc
    • def]

    "], + [true], + {}], +["
    [abc
    def
    ]ghi
    ", + [["insertunorderedlist",""]], + ["
    • [abc
    • def]
    ghi
    ", + "
    • [abc
    • def]
    ghi
    "], + [true], + {}], + +// "dir" attribute should be preserved for the list element to make the +// bullets aligned correctly. +["
    a[]bc
    def
    ", + [["insertunorderedlist",""]], + ["
    • abc
    def
    ", + "
    • abc
    def
    "], + [true], + {}], +["
    a[bc
    de]f
    ", + [["insertunorderedlist",""]], + ["
    • abc
    • def
    ", + "
    • abc
    • def
    "], + [true], + {}], +// but do not copy `dir` attributes to corresponding
  • s because different +// one from the value of the parent list element causes odd looks and anyway +// the `dir` attribute does not affect the text direction. +["
    a[bc
    de]f
    ", + [["insertunorderedlist",""]], + ["
    ", + ""], + [true], + {}], + +// The other attributes should be clonsed to each list item. +["
    a[bc
    de]f
    ", + [["insertunorderedlist",""]], + ["
    ", + ""], + [true], + {}], +["
    a[bc
    de]f
    ", + [["insertunorderedlist",""]], + ["
    ", + ""], + [true], + {}], +["
    a[bc
    de]f
    ", + [["insertunorderedlist",""]], + ["
    ", + ""], + [true], + {}], ] diff --git a/tests/wpt/web-platform-tests/editing/data/multitest.js b/tests/wpt/web-platform-tests/editing/data/multitest.js index 118ae4b3a41..05e353b1620 100644 --- a/tests/wpt/web-platform-tests/editing/data/multitest.js +++ b/tests/wpt/web-platform-tests/editing/data/multitest.js @@ -3017,4 +3017,123 @@ var browserTests = [ "fooA[]bar", [true,true,true], {}], + +// First style should be applied outer, that is same as applying styles to +// non-collapsed selection. +["a[]c", + [["styleWithCSS","false"],["bold",""],["italic",""],["insertText","b"]], + "abc", + [true,true,true,true], + {}], +["a[]c", + [["styleWithCSS","false"],["italic",""],["bold",""],["insertText","b"]], + "abc", + [true,true,true,true], + {}], +["a[]c", + [["styleWithCSS","false"],["bold",""],["italic",""],["insertText","b"]], + "abc", + [true,true,true,true], + {}], +["a[]c", + [["styleWithCSS","false"],["bold",""],["italic",""],["insertText","b"]], + "abc", + [true,true,true,true], + {}], +["a[]c", + [["styleWithCSS","false"],["bold",""],["italic",""],["insertText","b"]], + "abc", + [true,true,true,true], + {}], +["a[]c", + [["styleWithCSS","false"],["bold",""],["italic",""],["insertText","b"]], + "abc", + [true,true,true,true], + {}], +// but should be applied outer-most. +["a[]c", + [["styleWithCSS","false"],["foreColor","#ff0000"],["bold",""],["insertText","b"]], + "abc", + [true,true,true,true], + {}], +["a[]c", + [["styleWithCSS","false"],["bold",""],["foreColor","#ff0000"],["insertText","b"]], + "abc", + [true,true,true,true], + {}], +["a[]c", + [["styleWithCSS","false"],["fontName","monospace"],["bold",""],["insertText","b"]], + "abc", + [true,true,true,true], + {}], +["a[]c", + [["styleWithCSS","false"],["bold",""],["fontName","monospace"],["insertText","b"]], + "abc", + [true,true,true,true], + {}], +["a[]c", + [["styleWithCSS","false"],["fontSize","5"],["bold",""],["insertText","b"]], + "abc", + [true,true,true,true], + {}], +["a[]c", + [["styleWithCSS","false"],["bold",""],["fontSize","5"],["insertText","b"]], + "abc", + [true,true,true,true], + {}], +["a[]c", + [["styleWithCSS","false"],["foreColor","#ff0000"],["bold",""],["fontSize","5"],["fontName","monospace"],["insertText","b"]], + ["abc", + "abc", + "abc", + "abc", + "abc", + "abc"], + [true,true,true,true,true,true], + {}], + +// After joining paragraphs, web app may set same style explicitly again. +// Note that the font styles are not toggle. Therefore, it's important to +// keep the style for the new text. +["

    a

    []c

    ", + [["styleWithCSS","false"],["delete",""],["fontSize","5"],["insertText","b"]], + "

    ab[]c

    ", + [true,true,true,true], + {}], +["

    a

    []c

    ", + [["styleWithCSS","false"],["delete",""],["fontSize","5"],["foreColor","#ff0000"],["insertText","b"]], + "

    ab[]c

    ", + [true,true,true,true,true], + {}], +["

    a

    []c

    ", + [["styleWithCSS","false"],["delete",""],["fontSize","5"],["insertText","b"]], + "

    ab[]c

    ", + [true,true,true,true], + {}], +["

    a

    []c

    ", + [["styleWithCSS","false"],["delete",""],["fontSize","5"],["insertText","b"]], + "

    ab[]c

    ", + [true,true,true,true], + {}], +// Same tests for forwardDelete +["

    a[]

    c

    ", + [["styleWithCSS","false"],["forwardDelete",""],["fontSize","5"],["insertText","b"]], + "

    ab[]c

    ", + [true,true,true,true], + {}], +["

    a[]

    c

    ", + [["styleWithCSS","false"],["forwardDelete",""],["fontSize","5"],["foreColor","#ff0000"],["insertText","b"]], + "

    ab[]c

    ", + [true,true,true,true,true], + {}], +["

    a[]

    c

    ", + [["styleWithCSS","false"],["forwardDelete",""],["fontSize","5"],["insertText","b"]], + "

    ab[]c

    ", + [true,true,true,true], + {}], +["

    a[]

    c

    ", + [["styleWithCSS","false"],["forwardDelete",""],["fontSize","5"],["insertText","b"]], + "

    ab[]c

    ", + [true,true,true,true], + {}], ] diff --git a/tests/wpt/web-platform-tests/editing/other/inserthtml-do-not-preserve-inline-styles.html b/tests/wpt/web-platform-tests/editing/other/inserthtml-do-not-preserve-inline-styles.html new file mode 100644 index 00000000000..3483f8f9955 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/inserthtml-do-not-preserve-inline-styles.html @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + +insertHTML should not preserve inline styles at insertion point + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/editing/run/forwarddelete.html b/tests/wpt/web-platform-tests/editing/run/forwarddelete.html index 570da5a183c..177cee7c1fe 100644 --- a/tests/wpt/web-platform-tests/editing/run/forwarddelete.html +++ b/tests/wpt/web-platform-tests/editing/run/forwarddelete.html @@ -7,7 +7,8 @@ - + + forwarddelete - HTML editing conformance tests diff --git a/tests/wpt/web-platform-tests/editing/run/insertorderedlist.html b/tests/wpt/web-platform-tests/editing/run/insertorderedlist.html index 06662df7610..5c477f642f6 100644 --- a/tests/wpt/web-platform-tests/editing/run/insertorderedlist.html +++ b/tests/wpt/web-platform-tests/editing/run/insertorderedlist.html @@ -1,6 +1,8 @@ + + insertorderedlist - HTML editing conformance tests diff --git a/tests/wpt/web-platform-tests/editing/run/insertunorderedlist.html b/tests/wpt/web-platform-tests/editing/run/insertunorderedlist.html index 8df99f8dccd..1d6e774e0d4 100644 --- a/tests/wpt/web-platform-tests/editing/run/insertunorderedlist.html +++ b/tests/wpt/web-platform-tests/editing/run/insertunorderedlist.html @@ -1,6 +1,9 @@ + + + insertunorderedlist - HTML editing conformance tests diff --git a/tests/wpt/web-platform-tests/fetch/api/headers/header-setcookie.any.js b/tests/wpt/web-platform-tests/fetch/api/headers/header-setcookie.any.js new file mode 100644 index 00000000000..b8a3348f5f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/headers/header-setcookie.any.js @@ -0,0 +1,224 @@ +// META: title=Headers set-cookie special cases +// META: global=window,worker + +const headerList = [ + ["set-cookie", "foo=bar"], + ["Set-Cookie", "fizz=buzz; domain=example.com"], +]; + +const setCookie2HeaderList = [ + ["set-cookie2", "foo2=bar2"], + ["Set-Cookie2", "fizz2=buzz2; domain=example2.com"], +]; + +function assert_nested_array_equals(actual, expected) { + assert_equals(actual.length, expected.length, "Array length is not equal"); + for (let i = 0; i < expected.length; i++) { + assert_array_equals(actual[i], expected[i]); + } +} + +test(function () { + const headers = new Headers(headerList); + assert_equals( + headers.get("set-cookie"), + "foo=bar, fizz=buzz; domain=example.com", + ); +}, "Headers.prototype.get combines set-cookie headers in order"); + +test(function () { + const headers = new Headers(headerList); + const list = [...headers]; + assert_nested_array_equals(list, [ + ["set-cookie", "foo=bar"], + ["set-cookie", "fizz=buzz; domain=example.com"], + ]); +}, "Headers iterator does not combine set-cookie headers"); + +test(function () { + const headers = new Headers(setCookie2HeaderList); + const list = [...headers]; + assert_nested_array_equals(list, [ + ["set-cookie2", "foo2=bar2, fizz2=buzz2; domain=example2.com"], + ]); +}, "Headers iterator does not special case set-cookie2 headers"); + +test(function () { + const headers = new Headers([...headerList, ...setCookie2HeaderList]); + const list = [...headers]; + assert_nested_array_equals(list, [ + ["set-cookie", "foo=bar"], + ["set-cookie", "fizz=buzz; domain=example.com"], + ["set-cookie2", "foo2=bar2, fizz2=buzz2; domain=example2.com"], + ]); +}, "Headers iterator does not combine set-cookie & set-cookie2 headers"); + +test(function () { + // Values are in non alphabetic order, and the iterator should yield in the + // headers in the exact order of the input. + const headers = new Headers([ + ["set-cookie", "z=z"], + ["set-cookie", "a=a"], + ["set-cookie", "n=n"], + ]); + const list = [...headers]; + assert_nested_array_equals(list, [ + ["set-cookie", "z=z"], + ["set-cookie", "a=a"], + ["set-cookie", "n=n"], + ]); +}, "Headers iterator preserves set-cookie ordering"); + +test( + function () { + const headers = new Headers([ + ["xylophone-header", "1"], + ["best-header", "2"], + ["set-cookie", "3"], + ["a-cool-header", "4"], + ["set-cookie", "5"], + ["a-cool-header", "6"], + ["best-header", "7"], + ]); + const list = [...headers]; + assert_nested_array_equals(list, [ + ["a-cool-header", "4, 6"], + ["best-header", "2, 7"], + ["set-cookie", "3"], + ["set-cookie", "5"], + ["xylophone-header", "1"], + ]); + }, + "Headers iterator preserves per header ordering, but sorts keys alphabetically", +); + +test( + function () { + const headers = new Headers([ + ["xylophone-header", "7"], + ["best-header", "6"], + ["set-cookie", "5"], + ["a-cool-header", "4"], + ["set-cookie", "3"], + ["a-cool-header", "2"], + ["best-header", "1"], + ]); + const list = [...headers]; + assert_nested_array_equals(list, [ + ["a-cool-header", "4, 2"], + ["best-header", "6, 1"], + ["set-cookie", "5"], + ["set-cookie", "3"], + ["xylophone-header", "7"], + ]); + }, + "Headers iterator preserves per header ordering, but sorts keys alphabetically (and ignores value ordering)", +); + +test(function () { + const headers = new Headers([["fizz", "buzz"], ["X-Header", "test"]]); + const iterator = headers[Symbol.iterator](); + assert_array_equals(iterator.next().value, ["fizz", "buzz"]); + headers.append("Set-Cookie", "a=b"); + assert_array_equals(iterator.next().value, ["set-cookie", "a=b"]); + headers.append("Accept", "text/html"); + assert_array_equals(iterator.next().value, ["set-cookie", "a=b"]); + assert_array_equals(iterator.next().value, ["x-header", "test"]); + headers.append("set-cookie", "c=d"); + assert_array_equals(iterator.next().value, ["x-header", "test"]); + assert_true(iterator.next().done); +}, "Headers iterator is correctly updated with set-cookie changes"); + +test(function () { + const headers = new Headers(headerList); + assert_true(headers.has("sEt-cOoKiE")); +}, "Headers.prototype.has works for set-cookie"); + +test(function () { + const headers = new Headers(setCookie2HeaderList); + headers.append("set-Cookie", "foo=bar"); + headers.append("sEt-cOoKiE", "fizz=buzz"); + const list = [...headers]; + assert_nested_array_equals(list, [ + ["set-cookie", "foo=bar"], + ["set-cookie", "fizz=buzz"], + ["set-cookie2", "foo2=bar2, fizz2=buzz2; domain=example2.com"], + ]); +}, "Headers.prototype.append works for set-cookie"); + +test(function () { + const headers = new Headers(headerList); + headers.set("set-cookie", "foo2=bar2"); + const list = [...headers]; + assert_nested_array_equals(list, [ + ["set-cookie", "foo2=bar2"], + ]); +}, "Headers.prototype.set works for set-cookie"); + +test(function () { + const headers = new Headers(headerList); + headers.delete("set-Cookie"); + const list = [...headers]; + assert_nested_array_equals(list, []); +}, "Headers.prototype.delete works for set-cookie"); + +test(function () { + const headers = new Headers(); + assert_array_equals(headers.getSetCookie(), []); +}, "Headers.prototype.getSetCookie with no headers present"); + +test(function () { + const headers = new Headers([headerList[0]]); + assert_array_equals(headers.getSetCookie(), ["foo=bar"]); +}, "Headers.prototype.getSetCookie with one header"); + +test(function () { + const headers = new Headers({ "Set-Cookie": "foo=bar" }); + assert_array_equals(headers.getSetCookie(), ["foo=bar"]); +}, "Headers.prototype.getSetCookie with one header created from an object"); + +test(function () { + const headers = new Headers(headerList); + assert_array_equals(headers.getSetCookie(), [ + "foo=bar", + "fizz=buzz; domain=example.com", + ]); +}, "Headers.prototype.getSetCookie with multiple headers"); + +test(function () { + const headers = new Headers([["set-cookie", ""]]); + assert_array_equals(headers.getSetCookie(), [""]); +}, "Headers.prototype.getSetCookie with an empty header"); + +test(function () { + const headers = new Headers([["set-cookie", "x"], ["set-cookie", "x"]]); + assert_array_equals(headers.getSetCookie(), ["x", "x"]); +}, "Headers.prototype.getSetCookie with two equal headers"); + +test(function () { + const headers = new Headers([ + ["set-cookie2", "x"], + ["set-cookie", "y"], + ["set-cookie2", "z"], + ]); + assert_array_equals(headers.getSetCookie(), ["y"]); +}, "Headers.prototype.getSetCookie ignores set-cookie2 headers"); + +test(function () { + // Values are in non alphabetic order, and the iterator should yield in the + // headers in the exact order of the input. + const headers = new Headers([ + ["set-cookie", "z=z"], + ["set-cookie", "a=a"], + ["set-cookie", "n=n"], + ]); + assert_array_equals(headers.getSetCookie(), ["z=z", "a=a", "n=n"]); +}, "Headers.prototype.getSetCookie preserves header ordering"); + +test(function () { + const response = new Response(); + response.headers.append("Set-Cookie", "foo=bar"); + assert_array_equals(response.headers.getSetCookie(), []); + response.headers.append("sEt-cOokIe", "bar=baz"); + assert_array_equals(response.headers.getSetCookie(), []); +}, "Set-Cookie is a forbidden response header"); diff --git a/tests/wpt/web-platform-tests/fetch/api/request/request-headers.any.js b/tests/wpt/web-platform-tests/fetch/api/request/request-headers.any.js index b73b398013a..6de5dc16e96 100644 --- a/tests/wpt/web-platform-tests/fetch/api/request/request-headers.any.js +++ b/tests/wpt/web-platform-tests/fetch/api/request/request-headers.any.js @@ -59,6 +59,7 @@ var invalidRequestNoCorsHeaders = [ ["proxya", "KO"], ["sec", "KO"], ["secb", "KO"], + ["Empty-Value", ""], ]; validRequestHeaders.forEach(function(header) { diff --git a/tests/wpt/web-platform-tests/fetch/api/request/request-init-priority.any.js b/tests/wpt/web-platform-tests/fetch/api/request/request-init-priority.any.js new file mode 100644 index 00000000000..eb5073c8578 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/request/request-init-priority.any.js @@ -0,0 +1,26 @@ +var priorities = ["high", + "low", + "auto" + ]; + +for (idx in priorities) { + test(() => { + new Request("", {priority: priorities[idx]}); + }, "new Request() with a '" + priorities[idx] + "' priority does not throw an error"); +} + +test(() => { + assert_throws_js(TypeError, () => { + new Request("", {priority: 'invalid'}); + }, "a new Request() must throw a TypeError if RequestInit's priority is an invalid value"); +}, "new Request() throws a TypeError if any of RequestInit's members' values are invalid"); + +for (idx in priorities) { + promise_test(function(t) { + return fetch('hello.txt', { priority: priorities[idx] }); + }, "fetch() with a '" + priorities[idx] + "' priority completes successfully"); +} + +promise_test(function(t) { + return promise_rejects_js(t, TypeError, fetch('hello.txt', { priority: 'invalid' })); +}, "fetch() with an invalid priority returns a rejected promise with a TypeError"); diff --git a/tests/wpt/web-platform-tests/fetch/api/request/request-structure.any.js b/tests/wpt/web-platform-tests/fetch/api/request/request-structure.any.js index 3d55c70ac1e..5e785538555 100644 --- a/tests/wpt/web-platform-tests/fetch/api/request/request-structure.any.js +++ b/tests/wpt/web-platform-tests/fetch/api/request/request-structure.any.js @@ -26,7 +26,11 @@ var attributes = ["method", "duplex", //Request implements Body "bodyUsed" - ]; + ]; +var internalAttributes = ["priority", + "internalpriority", + "blocking" + ]; function isReadOnly(request, attributeToCheck) { var defaultValue = undefined; @@ -131,3 +135,9 @@ for (var idx in attributes) { isReadOnly(request, attributes[idx]); }, "Check " + attributes[idx] + " attribute"); } + +for (var idx in internalAttributes) { + test(function() { + assert_false(internalAttributes[idx] in request, "request does not expose " + internalAttributes[idx] + " attribute"); + }, "Request does not expose " + internalAttributes[idx] + " attribute"); +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/fetch/content-length/resources/content-length.py b/tests/wpt/web-platform-tests/fetch/content-length/resources/content-length.py index b4583b8da37..92cfadeb061 100644 --- a/tests/wpt/web-platform-tests/fetch/content-length/resources/content-length.py +++ b/tests/wpt/web-platform-tests/fetch/content-length/resources/content-length.py @@ -2,6 +2,7 @@ def main(request, response): response.add_required_headers = False output = b"HTTP/1.1 200 OK\r\n" output += b"Content-Type: text/plain;charset=UTF-8\r\n" + output += b"Connection: close\r\n" output += request.GET.first(b"length") + b"\r\n" output += b"\r\n" output += b"Fact: this is really forty-two bytes long." diff --git a/tests/wpt/web-platform-tests/fetch/content-type/resources/content-type.py b/tests/wpt/web-platform-tests/fetch/content-type/resources/content-type.py index 91fcd97a7cb..1f077b62899 100644 --- a/tests/wpt/web-platform-tests/fetch/content-type/resources/content-type.py +++ b/tests/wpt/web-platform-tests/fetch/content-type/resources/content-type.py @@ -11,6 +11,7 @@ def main(request, response): for value in values: output += b"Content-Type: " + value + b"\r\n" output += b"Content-Length: " + isomorphic_encode(str(len(content))) + b"\r\n" + output += b"Connection: close\r\n" output += b"\r\n" output += content response.writer.write(output) diff --git a/tests/wpt/web-platform-tests/fetch/metadata/resources/record-header.py b/tests/wpt/web-platform-tests/fetch/metadata/resources/record-header.py index a6b52e1e4b9..29ff2ed7985 100644 --- a/tests/wpt/web-platform-tests/fetch/metadata/resources/record-header.py +++ b/tests/wpt/web-platform-tests/fetch/metadata/resources/record-header.py @@ -18,6 +18,7 @@ def main(request, response): ## Handle the header retrieval request ## if b'retrieve' in request.GET: response.writer.write_status(200) + response.writer.write_header(b"Connection", b"close") response.writer.end_headers() try: header_value = request.server.stash.take(testId) diff --git a/tests/wpt/web-platform-tests/fetch/nosniff/resources/nosniff.py b/tests/wpt/web-platform-tests/fetch/nosniff/resources/nosniff.py index bc85ea0ec98..159ecfbebd9 100644 --- a/tests/wpt/web-platform-tests/fetch/nosniff/resources/nosniff.py +++ b/tests/wpt/web-platform-tests/fetch/nosniff/resources/nosniff.py @@ -2,6 +2,7 @@ def main(request, response): response.add_required_headers = False output = b"HTTP/1.1 220 YOU HAVE NO POWER HERE\r\n" output += b"Content-Length: 22\r\n" + output += b"Connection: close\r\n" output += b"Content-Type: x/x\r\n" output += request.GET.first(b"nosniff") + b"\r\n" output += b"\r\n" diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/fetch.window.js b/tests/wpt/web-platform-tests/fetch/private-network-access/fetch.window.js index d4de08e4ebf..8ee54c90562 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/fetch.window.js +++ b/tests/wpt/web-platform-tests/fetch/private-network-access/fetch.window.js @@ -43,7 +43,7 @@ promise_test(t => fetchTest(t, { target: { server: Server.HTTP_LOCAL, behavior: { - preflight: PreflightBehavior.success(token()), + preflight: PreflightBehavior.optionalSuccess(token()), response: ResponseBehavior.allowCrossOrigin(), }, }, @@ -70,7 +70,7 @@ promise_test(t => fetchTest(t, { target: { server: Server.HTTP_LOCAL, behavior: { - preflight: PreflightBehavior.success(token()), + preflight: PreflightBehavior.optionalSuccess(token()), response: ResponseBehavior.allowCrossOrigin(), }, }, @@ -82,7 +82,7 @@ promise_test(t => fetchTest(t, { target: { server: Server.HTTP_PRIVATE, behavior: { - preflight: PreflightBehavior.success(token()), + preflight: PreflightBehavior.optionalSuccess(token()), response: ResponseBehavior.allowCrossOrigin(), }, }, diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/preflight.py b/tests/wpt/web-platform-tests/fetch/private-network-access/resources/preflight.py index 41daebf08d3..4aefee6f40d 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/preflight.py +++ b/tests/wpt/web-platform-tests/fetch/private-network-access/resources/preflight.py @@ -79,6 +79,9 @@ def _get_response_headers(method, mode): def _get_expect_single_preflight(request): return request.GET.get(b"expect-single-preflight") +def _is_preflight_optional(request): + return request.GET.get(b"is-preflight-optional") + def _get_preflight_uuid(request): return request.GET.get(b"preflight-uuid") @@ -135,7 +138,8 @@ def _handle_final_request(request, response): else: uuid = _get_preflight_uuid(request) if uuid is not None: - if request.server.stash.take(uuid) is None: + if (request.server.stash.take(uuid) is None and + not _is_preflight_optional(request)): return (405, [], "no preflight received for {}".format(uuid)) request.server.stash.put(uuid, "final") diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/support.sub.js b/tests/wpt/web-platform-tests/fetch/private-network-access/resources/support.sub.js index adbafac3044..8ffdf100ee8 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/resources/support.sub.js +++ b/tests/wpt/web-platform-tests/fetch/private-network-access/resources/support.sub.js @@ -246,6 +246,12 @@ const PreflightBehavior = { "preflight-headers": "cors+pna", }), + optionalSuccess: (uuid) => ({ + "preflight-uuid": uuid, + "preflight-headers": "cors+pna", + "is-preflight-optional": true, + }), + // The preflight response should succeed and allow service-worker header. // `uuid` should be a UUID that uniquely identifies the preflight request. serviceWorkerSuccess: (uuid) => ({ diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-fetch.window.js b/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-fetch.window.js index a317608ce8e..1c772003a16 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-fetch.window.js +++ b/tests/wpt/web-platform-tests/fetch/private-network-access/shared-worker-fetch.window.js @@ -20,7 +20,7 @@ promise_test(t => sharedWorkerFetchTest(t, { target: { server: Server.HTTP_LOCAL, behavior: { - preflight: PreflightBehavior.success(token()), + preflight: PreflightBehavior.optionalSuccess(token()), response: ResponseBehavior.allowCrossOrigin(), }, }, @@ -38,7 +38,7 @@ promise_test(t => sharedWorkerFetchTest(t, { target: { server: Server.HTTP_LOCAL, behavior: { - preflight: PreflightBehavior.success(token()), + preflight: PreflightBehavior.optionalSuccess(token()), response: ResponseBehavior.allowCrossOrigin(), }, }, @@ -50,7 +50,7 @@ promise_test(t => sharedWorkerFetchTest(t, { target: { server: Server.HTTP_PRIVATE, behavior: { - preflight: PreflightBehavior.success(token()), + preflight: PreflightBehavior.optionalSuccess(token()), response: ResponseBehavior.allowCrossOrigin(), }, }, @@ -70,7 +70,7 @@ promise_test(t => sharedWorkerFetchTest(t, { }, target: { server: Server.HTTP_LOCAL, - behavior: { preflight: PreflightBehavior.success(token()) }, + behavior: { preflight: PreflightBehavior.optionalSuccess(token()) }, }, expected: WorkerFetchTestResult.FAILURE, }), "treat-as-public to local: failure."); @@ -83,7 +83,7 @@ promise_test(t => sharedWorkerFetchTest(t, { target: { server: Server.HTTP_PRIVATE, behavior: { - preflight: PreflightBehavior.success(token()), + preflight: PreflightBehavior.optionalSuccess(token()), response: ResponseBehavior.allowCrossOrigin(), }, }, diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/worker-fetch.window.js b/tests/wpt/web-platform-tests/fetch/private-network-access/worker-fetch.window.js index cf6e1ca30d5..1a57a106a65 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/worker-fetch.window.js +++ b/tests/wpt/web-platform-tests/fetch/private-network-access/worker-fetch.window.js @@ -20,7 +20,7 @@ promise_test(t => workerFetchTest(t, { target: { server: Server.HTTP_LOCAL, behavior: { - preflight: PreflightBehavior.success(token()), + preflight: PreflightBehavior.optionalSuccess(token()), response: ResponseBehavior.allowCrossOrigin(), }, }, @@ -38,7 +38,7 @@ promise_test(t => workerFetchTest(t, { target: { server: Server.HTTP_LOCAL, behavior: { - preflight: PreflightBehavior.success(token()), + preflight: PreflightBehavior.optionalSuccess(token()), response: ResponseBehavior.allowCrossOrigin(), }, }, @@ -50,7 +50,7 @@ promise_test(t => workerFetchTest(t, { target: { server: Server.HTTP_PRIVATE, behavior: { - preflight: PreflightBehavior.success(token()), + preflight: PreflightBehavior.optionalSuccess(token()), response: ResponseBehavior.allowCrossOrigin(), }, }, @@ -70,7 +70,7 @@ promise_test(t => workerFetchTest(t, { }, target: { server: Server.HTTP_LOCAL, - behavior: { preflight: PreflightBehavior.success(token()) }, + behavior: { preflight: PreflightBehavior.optionalSuccess(token()) }, }, expected: WorkerFetchTestResult.FAILURE, }), "treat-as-public to local: failure."); @@ -83,7 +83,7 @@ promise_test(t => workerFetchTest(t, { target: { server: Server.HTTP_PRIVATE, behavior: { - preflight: PreflightBehavior.success(token()), + preflight: PreflightBehavior.optionalSuccess(token()), response: ResponseBehavior.allowCrossOrigin(), }, }, diff --git a/tests/wpt/web-platform-tests/fetch/private-network-access/xhr.window.js b/tests/wpt/web-platform-tests/fetch/private-network-access/xhr.window.js index c1b5bf83371..b45f8283e93 100644 --- a/tests/wpt/web-platform-tests/fetch/private-network-access/xhr.window.js +++ b/tests/wpt/web-platform-tests/fetch/private-network-access/xhr.window.js @@ -43,7 +43,7 @@ promise_test(t => xhrTest(t, { target: { server: Server.HTTP_LOCAL, behavior: { - preflight: PreflightBehavior.success(token()), + preflight: PreflightBehavior.optionalSuccess(token()), response: ResponseBehavior.allowCrossOrigin(), }, }, @@ -70,7 +70,7 @@ promise_test(t => xhrTest(t, { target: { server: Server.HTTP_LOCAL, behavior: { - preflight: PreflightBehavior.success(token()), + preflight: PreflightBehavior.optionalSuccess(token()), response: ResponseBehavior.allowCrossOrigin(), }, }, @@ -82,7 +82,7 @@ promise_test(t => xhrTest(t, { target: { server: Server.HTTP_PRIVATE, behavior: { - preflight: PreflightBehavior.success(token()), + preflight: PreflightBehavior.optionalSuccess(token()), response: ResponseBehavior.allowCrossOrigin(), }, }, diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-options.tentative.html b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-options.tentative.html index b2eb60088a3..f3b99e84e69 100644 --- a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-options.tentative.html +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-options.tentative.html @@ -8,7 +8,7 @@ diff --git a/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.alpha.html b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.alpha.html new file mode 100644 index 00000000000..b4a87b42daa --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/element/layers/2d.layer.alpha.html @@ -0,0 +1,27 @@ + + + +Canvas test: 2d.layer.alpha +

    2d.layer.alpha

    +

    A test to make sure shadow works with layers.

    + +

    FAIL (fallback content)

    +
    + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-expected.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-expected.html deleted file mode 100644 index 03fe48a3a20..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha-expected.html +++ /dev/null @@ -1,23 +0,0 @@ -

    Test to ensure beginlayer works for alpha.

    - diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha.html deleted file mode 100644 index 7be5bdb0bb8..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/layers/layers-alpha.html +++ /dev/null @@ -1,25 +0,0 @@ - -

    Test to ensure beginlayer works for alpha.

    - diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.alpha-expected.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.alpha-expected.html new file mode 100644 index 00000000000..615aa1cb8bf --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.alpha-expected.html @@ -0,0 +1,27 @@ + + +Canvas test: 2d.layer.alpha +

    2d.layer.alpha

    +

    A test to make sure shadow works with layers.

    + +

    FAIL (fallback content)

    +
    + diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.alpha.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.alpha.html new file mode 100644 index 00000000000..90506bfb622 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.alpha.html @@ -0,0 +1,30 @@ + + + +Canvas test: 2d.layer.alpha +

    2d.layer.alpha

    +

    A test to make sure shadow works with layers.

    + +

    FAIL (fallback content)

    +
    + diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.alpha.w.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.alpha.w.html new file mode 100644 index 00000000000..bc9344217b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/layers/2d.layer.alpha.w.html @@ -0,0 +1,44 @@ + + + + +Canvas test: 2d.layer.alpha +

    2d.layer.alpha

    +

    A test to make sure shadow works with layers.

    + +

    FAIL (fallback content)

    +
    + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/gentestutils.py b/tests/wpt/web-platform-tests/html/canvas/tools/gentestutils.py index ecdc1067498..27412e40df5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/gentestutils.py +++ b/tests/wpt/web-platform-tests/html/canvas/tools/gentestutils.py @@ -304,12 +304,12 @@ def _generate_test(test: Mapping[str, str], templates: Mapping[str, str], if is_offscreen_canvas: pathlib.Path(f'{test_path}.html').write_text( - templates['w3coffscreencanvas'] % template_params, 'utf-8') + templates['offscreen'] % template_params, 'utf-8') pathlib.Path(f'{test_path}.worker.js').write_text( - templates['w3cworker'] % template_params, 'utf-8') + templates['worker'] % template_params, 'utf-8') else: pathlib.Path(f'{test_path}.html').write_text( - templates['w3ccanvas'] % template_params, 'utf-8') + templates['element'] % template_params, 'utf-8') def genTestUtils(TESTOUTPUTDIR: str, IMAGEOUTPUTDIR: str, TEMPLATEFILE: str, diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py b/tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py index 2a9c53e99ac..097bf12483d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py +++ b/tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py @@ -28,7 +28,7 @@ # # * Test the tests, add new ones to Git, remove deleted ones from Git, etc. -from typing import List, Mapping +from typing import List, Mapping, MutableMapping, Optional import re import collections @@ -38,6 +38,7 @@ import importlib import os import pathlib import sys +import textwrap try: import cairocffi as cairo # type: ignore @@ -209,6 +210,58 @@ def _get_canvas_size(test: Mapping[str, str]): return match.group('width'), match.group('height') +def _write_reference_test(templates: Mapping[str, str], + template_params: MutableMapping[str, str], + reference: str, + canvas_path: Optional[str], + offscreen_path: Optional[str]): + code = template_params['code'] + template_params['code'] = textwrap.indent(code, ' ') + if canvas_path: + pathlib.Path(f'{canvas_path}.html').write_text( + templates['element_ref_test'] % template_params, 'utf-8') + if offscreen_path: + pathlib.Path(f'{offscreen_path}.html').write_text( + templates['offscreen_ref_test'] % template_params, 'utf-8') + template_params['code'] = textwrap.indent(code, ' ') + pathlib.Path(f'{offscreen_path}.w.html').write_text( + templates['worker_ref_test'] % template_params, 'utf-8') + + template_params['code'] = textwrap.indent(reference.strip(), ' ') + template_params['links'] = '' + template_params['fuzzy'] = '' + if canvas_path: + pathlib.Path(f'{canvas_path}-expected.html').write_text( + templates['element_ref_test'] % template_params, 'utf-8') + if offscreen_path: + pathlib.Path(f'{offscreen_path}-expected.html').write_text( + templates['element_ref_test'] % template_params, 'utf-8') + + +def _write_testharness_test(templates: Mapping[str, str], + template_params: MutableMapping[str, str], + canvas_path: Optional[str], + offscreen_path: Optional[str]): + + # Create test cases for canvas and offscreencanvas. + if canvas_path: + pathlib.Path(f'{canvas_path}.html').write_text( + templates['element'] % template_params, 'utf-8') + + if offscreen_path: + code = template_params['code'] + offscreen_template = templates['offscreen'] + worker_template = templates['worker'] + if ('then(t_pass, t_fail);' in code): + offscreen_template = offscreen_template.replace('t.done();\n', '') + worker_template = worker_template.replace('t.done();\n', '') + + pathlib.Path(f'{offscreen_path}.html').write_text( + offscreen_template % template_params, 'utf-8') + pathlib.Path(f'{offscreen_path}.worker.js').write_text( + worker_template % template_params, 'utf-8') + + def _generate_test(test: Mapping[str, str], templates: Mapping[str, str], sub_dir: str, html_canvas_cfg: TestConfig, offscreen_canvas_cfg: TestConfig) -> None: @@ -261,6 +314,9 @@ def _generate_test(test: Mapping[str, str], templates: Mapping[str, str], notes = '

    %s' % test['notes'] if 'notes' in test else '' + links = f'\n' + fuzzy = ('\n' % + test['fuzzy'] if 'fuzzy' in test else '') timeout = ('\n' % test['timeout'] if 'timeout' in test else '') timeout_js = ('// META: timeout=%s\n' % test['timeout'] @@ -315,6 +371,8 @@ def _generate_test(test: Mapping[str, str], templates: Mapping[str, str], 'fonthack': fonthack, 'timeout': timeout, 'timeout_js': timeout_js, + 'fuzzy': fuzzy, + 'links': links, 'canvas': canvas, 'width': width, 'height': height, @@ -331,22 +389,17 @@ def _generate_test(test: Mapping[str, str], templates: Mapping[str, str], canvas_path += '-manual' offscreen_path += '-manual' - # Create test cases for canvas and offscreencanvas. - if html_canvas_cfg.enabled: - pathlib.Path(f'{canvas_path}.html').write_text( - templates['w3ccanvas'] % template_params, 'utf-8') - - if offscreen_canvas_cfg.enabled: - offscreen_template = templates['w3coffscreencanvas'] - worker_template = templates['w3cworker'] - if ('then(t_pass, t_fail);' in code_canvas): - offscreen_template = offscreen_template.replace('t.done();\n', '') - worker_template = worker_template.replace('t.done();\n', '') - - pathlib.Path(f'{offscreen_path}.html').write_text( - offscreen_template % template_params, 'utf-8') - pathlib.Path(f'{offscreen_path}.worker.js').write_text( - worker_template % template_params, 'utf-8') + reference = test.get('reference') + if reference is not None: + _write_reference_test( + templates, template_params, reference, + canvas_path if html_canvas_cfg.enabled else None, + offscreen_path if offscreen_canvas_cfg.enabled else None) + else: + _write_testharness_test( + templates, template_params, + canvas_path if html_canvas_cfg.enabled else None, + offscreen_path if offscreen_canvas_cfg.enabled else None) def genTestUtils_union(TEMPLATEFILE: str, NAME2DIRFILE: str) -> None: diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/name2dir.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/name2dir.yaml index 15da6f88ad5..d6871f28529 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/name2dir.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/name2dir.yaml @@ -20,6 +20,7 @@ 2d.reset: "reset" 2d.shadow: "shadows" 2d.filter: "filters" +2d.layer: "layers" 2d.text.align: "text-styles" 2d.text.baseline: "text-styles" 2d.text.font: "text-styles" diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/templates-new.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/templates-new.yaml index d8af47d2590..eaaf6efac88 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/templates-new.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/templates-new.yaml @@ -1,4 +1,4 @@ -w3coffscreencanvas: | +offscreen: | OffscreenCanvas test: %(name)s%(timeout)s @@ -28,7 +28,7 @@ w3coffscreencanvas: | -w3cworker: | +worker: | %(timeout_js)s// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. // OffscreenCanvas test in a worker:%(name)s // Description:%(desc)s @@ -54,7 +54,7 @@ w3cworker: | done(); -w3ccanvas: | +element: | Canvas test: %(name)s @@ -82,3 +82,76 @@ w3ccanvas: | }%(attributes)s); %(images)s + + +offscreen_ref_test: |- + + %(links)s%(fuzzy)s%(timeout)s + Canvas test: %(name)s +

    %(name)s

    +

    %(desc)s

    + %(fonts)s%(fonthack)s%(notes)s + %(fallback)s + + + %(images)s + + +worker_ref_test: | + + + %(links)s%(fuzzy)s%(timeout)s + Canvas test: %(name)s +

    %(name)s

    +

    %(desc)s

    + %(fonts)s%(fonthack)s%(notes)s + %(fallback)s + + + + %(images)s + + +element_ref_test: |- + + %(links)s%(fuzzy)s%(timeout)s + Canvas test: %(name)s +

    %(name)s

    +

    %(desc)s

    + %(fonts)s%(fonthack)s%(notes)s + %(fallback)s + + + %(images)s diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/templates.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/templates.yaml index 7e96e0707bc..cb11f76db62 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/templates.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/templates.yaml @@ -1,4 +1,4 @@ -w3coffscreencanvas: | +offscreen: | OffscreenCanvas test: %(name)s%(timeout)s @@ -26,7 +26,7 @@ w3coffscreencanvas: | -w3cworker: | +worker: | %(timeout_js)s// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. // OffscreenCanvas test in a worker:%(name)s // Description:%(desc)s @@ -50,7 +50,7 @@ w3cworker: | done(); -w3ccanvas: | +element: | Canvas test: %(name)s diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/layers.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/layers.yaml new file mode 100644 index 00000000000..7f9719fd505 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/layers.yaml @@ -0,0 +1,32 @@ +- name: 2d.layer.alpha + desc: A test to make sure shadow works with layers. + size: 200, 200 + code: | + ctx.fillStyle = 'rgba(0, 0, 255, 1)'; + ctx.fillRect(50, 50, 95, 70); + + ctx.globalAlpha = 0.6; + + ctx.beginLayer(); + + ctx.fillStyle = 'rgba(225, 0, 0, 1)'; + ctx.fillRect(60, 40, 75, 50); + ctx.fillStyle = 'rgba(0, 255, 0, 1)'; + ctx.fillRect(80, 60, 75, 50); + + ctx.endLayer(); + reference: | + ctx.fillStyle = 'rgba(0, 0, 255, 1)'; + ctx.fillRect(50, 50, 95, 70); + + ctx.globalAlpha = 0.6; + + canvas2 = document.createElement("canvas"); + ctx2 = canvas2.getContext("2d"); + + ctx2.fillStyle = 'rgba(225, 0, 0, 1)'; + ctx2.fillRect(60, 40, 75, 50); + ctx2.fillStyle = 'rgba(0, 255, 0, 1)'; + ctx2.fillRect(80, 60, 75, 50); + + ctx.drawImage(canvas2, 0, 0); diff --git a/tests/wpt/web-platform-tests/html/dom/elements/the-innertext-and-outertext-properties/innertext-domnoderemoved-crash.html b/tests/wpt/web-platform-tests/html/dom/elements/the-innertext-and-outertext-properties/innertext-domnoderemoved-crash.html new file mode 100644 index 00000000000..94043caf69c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/dom/elements/the-innertext-and-outertext-properties/innertext-domnoderemoved-crash.html @@ -0,0 +1,16 @@ + + + + +
    hello world
    + + diff --git a/tests/wpt/web-platform-tests/html/dom/idlharness.https.html b/tests/wpt/web-platform-tests/html/dom/idlharness.https.html index 56b4a0c0496..4e9e25fd5df 100644 --- a/tests/wpt/web-platform-tests/html/dom/idlharness.https.html +++ b/tests/wpt/web-platform-tests/html/dom/idlharness.https.html @@ -59,7 +59,10 @@ idl_test( Transferable: [], Document: ['iframe.contentDocument', 'new Document()', 'documentWithHandlers'], XMLDocument: ['document.implementation.createDocument(null, "", null)'], - HTMLElement: ['document.createElement("noscript")'], // more tests in html/semantics/interfaces.js + HTMLElement: [ + 'document.createElement("noscript")', + 'Object.assign(document.createElement("noscript"),{popover:"auto"})', + ], // more tests in html/semantics/interfaces.js HTMLUnknownElement: ['document.createElement("bgsound")'], // more tests in html/semantics/interfaces.js HTMLHtmlElement: ['document.createElement("html")'], HTMLHeadElement: ['document.createElement("head")'], @@ -125,6 +128,7 @@ idl_test( CanvasRenderingContext2D: ['document.createElement("canvas").getContext("2d")'], CanvasGradient: [], CanvasPattern: [], + ToggleEvent: ['new ToggleEvent("beforetoggle")'], TextMetrics: [], ImageData: ['new ImageData(10, 10)'], HTMLMapElement: ['document.createElement("map")'], diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/focus-dynamic-type-change-on-blur.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/focus-dynamic-type-change-on-blur.html new file mode 100644 index 00000000000..23292d3a83a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/focus-dynamic-type-change-on-blur.html @@ -0,0 +1,61 @@ + + +Input type switch on blur event should clean up properly + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/focus-dynamic-type-change.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/focus-dynamic-type-change.html index a1d3dfa2a29..982cda6c92a 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/focus-dynamic-type-change.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/focus-dynamic-type-change.html @@ -33,8 +33,12 @@ function test_from_to(fromType, toType) { input.addEventListener("blur", onBlur); input.type = toType; assert_equals(document.activeElement, input, `${fromType} input should be focused after change to ${toType}`); + assert_true(input.matches(":focus"), `${fromType} input should still match :focus`); + assert_true(input.matches(":focus-visible"), `${fromType} input should still match :focus-visible`); await tick(); assert_equals(document.activeElement, input, `${fromType} input should still be focused after change to ${toType}`); + assert_true(input.matches(":focus"), `${fromType} input should still match :focus`); + assert_true(input.matches(":focus-visible"), `${fromType} input should still match :focus-visible`); input.removeEventListener("focus", onFocus); input.removeEventListener("blur", onBlur); }, `${fromType} -> ${toType}`); diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-select-element/inserted-or-removed.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-select-element/inserted-or-removed.html index ee12316421e..0db2bf0e77a 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-select-element/inserted-or-removed.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-select-element/inserted-or-removed.html @@ -83,5 +83,21 @@ test(() => { ''; assert_equals(target.selectedOptions[0].textContent, 'Fourth'); }, 'The last selected OPTION should win; Inserted by innerHTML'); + +test (() => { + for (let insert_location = 0; insert_location < 3; ++insert_location) { + const target = document.querySelector('#by-innerHTML'); + target.innerHTML = '' + + '' + + ''; + const refNode = target.querySelectorAll('option')[insert_location]; + + const opt = document.createElement('option'); + opt.selected = true; + opt.textContent = 'B'; + target.insertBefore(opt, refNode); + assert_equals(target.selectedOptions[0].textContent, 'B'); + } +}, 'If an OPTION says it is selected, it should be selected after it is inserted.'); diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-behavior-ref.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-behavior-ref.html new file mode 100644 index 00000000000..bf468c5516c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-behavior-ref.html @@ -0,0 +1,9 @@ + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-behavior.tentative.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-behavior.tentative.html new file mode 100644 index 00000000000..799b4451141 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-behavior.tentative.html @@ -0,0 +1,8 @@ + + + + + +
    + +
    diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-part-ref.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-part-ref.html new file mode 100644 index 00000000000..744846b5511 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-part-ref.html @@ -0,0 +1,9 @@ + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-part.tentative.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-part.tentative.html new file mode 100644 index 00000000000..e41d2ddfd66 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-part.tentative.html @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-slot-ref.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-slot-ref.html new file mode 100644 index 00000000000..13205830844 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-slot-ref.html @@ -0,0 +1,14 @@ + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-slot.tentative.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-slot.tentative.html new file mode 100644 index 00000000000..9bbf2dfc06e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-slot.tentative.html @@ -0,0 +1,8 @@ + + + + + +
    new selected value
    + +
    diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-textarea-element/textarea-splittext-with-range-simple-crash.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-textarea-element/textarea-splittext-with-range-simple-crash.html new file mode 100644 index 00000000000..d3c1e7ce942 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-textarea-element/textarea-splittext-with-range-simple-crash.html @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/idlharness.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/idlharness.tentative.html deleted file mode 100644 index 1cab891261c..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/popovers/idlharness.tentative.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - -
    -
    -
    - - - - - - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/light-dismiss-event-ordering.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/light-dismiss-event-ordering.html similarity index 100% rename from tests/wpt/web-platform-tests/html/semantics/popovers/light-dismiss-event-ordering.tentative.html rename to tests/wpt/web-platform-tests/html/semantics/popovers/light-dismiss-event-ordering.html diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-change-display-ref.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-change-display-ref.html similarity index 100% rename from tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-change-display-ref.tentative.html rename to tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-change-display-ref.html diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-change-display.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-change-display.html similarity index 93% rename from tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-change-display.tentative.html rename to tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-change-display.html index a10331b2ae9..a80377441b0 100644 --- a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-change-display.tentative.html +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-change-display.html @@ -2,7 +2,7 @@ - +

    There should be a green box attached to the right side of each orange box.

    diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-display-none.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-display-none.html similarity index 100% rename from tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-display-none.tentative.html rename to tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-display-none.html diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-display-ref.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-display-ref.html similarity index 68% rename from tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-display-ref.tentative.html rename to tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-display-ref.html index b9710ee5b5e..f701810da2d 100644 --- a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-display-ref.tentative.html +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-display-ref.html @@ -6,17 +6,19 @@
    -
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-idl-property.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-idl-property.html similarity index 100% rename from tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-idl-property.tentative.html rename to tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-idl-property.html diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-multicol-display.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-multicol-display.html similarity index 100% rename from tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-multicol-display.tentative.html rename to tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-multicol-display.html diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-nested-display.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-nested-display.html similarity index 100% rename from tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-nested-display.tentative.html rename to tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-nested-display.html diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-nesting.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-nesting.html similarity index 100% rename from tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-nesting.tentative.html rename to tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-nesting.html diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-scroll-display-ref.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-scroll-display-ref.html similarity index 79% rename from tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-scroll-display-ref.tentative.html rename to tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-scroll-display-ref.html index dbaa30b047f..1bac806d111 100644 --- a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-scroll-display-ref.tentative.html +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-scroll-display-ref.html @@ -5,6 +5,8 @@

    There should be a green box attached to the right side of each orange box.

    +
    +
    diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-scroll-display.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-scroll-display.html similarity index 53% rename from tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-scroll-display.tentative.html rename to tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-scroll-display.html index 06304778129..85a05323784 100644 --- a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-scroll-display.tentative.html +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-anchor-scroll-display.html @@ -3,7 +3,7 @@ - +
    @@ -15,6 +15,22 @@
    + +
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    + + +

    This test passes if you see a green square.

    +
    + + + + + + +
    + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/spaces/mspace-width-height-001.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/spaces/mspace-width-height-001.html new file mode 100644 index 00000000000..52b3eaa190f --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/spaces/mspace-width-height-001.html @@ -0,0 +1,113 @@ + + + + +Space + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/ignored-properties-001.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/ignored-properties-001.html index 0966d96917a..34de5836ead 100644 --- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/ignored-properties-001.html +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/ignored-properties-001.html @@ -5,6 +5,7 @@ Ignored CSS properties + @@ -29,9 +30,6 @@ "align-content: end; justify-content: end;", "align-self: end; justify-self: end;", ]; - if (tag !== "mtable") { - ignoredProperties.push("width: 100px !important; height: 200px !important;"); - } ignoredProperties.forEach(ignoredStyle => { document.body.insertAdjacentHTML("beforeend", `
    \ diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/width-height-001.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/width-height-001.html index e762b0060e5..2deedc3f0b8 100644 --- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/width-height-001.html +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/width-height-001.html @@ -10,6 +10,11 @@ + + + + + + + + +
    + +
    + + + X + X + + + + + X + X + + +
    + +
    + + + X + X + + + + + X + X + + +
    + +
    + + + X + X + + + + + X + X + + +
    + +
    + + + X + X + + + + + X + X + + +
    + +
    + + + X + X + X + + + + + X + X + X + + +
    + + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/html5-tree/display-1.html b/tests/wpt/web-platform-tests/mathml/relations/html5-tree/display-1.html index e2d0c792f5d..fa92771fac5 100644 --- a/tests/wpt/web-platform-tests/mathml/relations/html5-tree/display-1.html +++ b/tests/wpt/web-platform-tests/mathml/relations/html5-tree/display-1.html @@ -63,13 +63,16 @@ var after_block_and_specified_width = getBox("after_block_and_specified_width"); test(function() { assert_true(MathMLFeatureDetection.has_mspace()); - assert_approx_equals(before_block_and_specified_width.left, content.left, 1, + let math = getBox("math_with_specified_width"); + assert_approx_equals(before_block_and_specified_width.left, math.left, 1, "content before must be left aligned"); + assert_approx_equals(math.width, 100, 1, + "math uses specified width."); assert_approx_equals((mspace_width.left + mspace_width.right) / 2, - (content.left + content.right) / 2, + (math.left + math.right) / 2, 1, "math must be centered."); - assert_approx_equals(after_block_and_specified_width.left, content.left, 1, + assert_approx_equals(after_block_and_specified_width.left, math.left, 1, "content after must be left aligned"); assert_less_than_equal(before_block_and_specified_width.bottom, mspace_width.top, "new line before math"); @@ -154,7 +157,7 @@
    - +
    diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-applyConstraints.https.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-applyConstraints.https.html index fd451f86cf4..da27b3c3572 100644 --- a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-applyConstraints.https.html +++ b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-applyConstraints.https.html @@ -25,6 +25,47 @@ })); }, 'applyConstraints rejects invalid groupID'); + promise_test(async t => { + let long_string_groupId = "2".padStart(501); + await setMediaPermission("granted", ["camera"]); + return navigator.mediaDevices.getUserMedia({ video: true }) + .then(t.step_func(stream => { + return stream.getVideoTracks()[0].applyConstraints( + { groupId: { ideal: long_string_groupId } }).then( + t.unreached_func('Accepted ideal long string groupID'), + t.step_func(e => { + assert_equals(e.name, 'OverconstrainedError'); + })); + })); + }, 'applyConstraints rejects long string ideal groupID'); + + promise_test(async t => { + let long_string_groupId = "2".padStart(501); + await setMediaPermission("granted", ["camera"]); + return navigator.mediaDevices.getUserMedia({ video: true }) + .then(t.step_func(stream => { + return stream.getVideoTracks()[0].applyConstraints( + { groupId: { exact: long_string_groupId } }).then( + t.unreached_func('Accepted exact long string groupID'), + t.step_func(e => { + assert_equals(e.name, 'OverconstrainedError'); + })); + })); + }, 'applyConstraints rejects long string groupID'); + + promise_test(async t => { + await setMediaPermission("granted", ["camera"]); + return navigator.mediaDevices.getUserMedia({ video: true }) + .then(t.step_func(stream => { + return stream.getVideoTracks()[0].applyConstraints( + { mandatory: { groupId: "INVALID" }, groupId: { exact: "INVALID" } }).then( + t.unreached_func('Accepted exact long string groupID'), + t.step_func(e => { + assert_equals(e.name, 'OverconstrainedError'); + })); + })); + }, 'applyConstraints rejects using both mandatory and specific constraints'); + promise_test(t => { return navigator.mediaDevices.getUserMedia({ video: true }) .then(t.step_func(stream => { diff --git a/tests/wpt/web-platform-tests/notifications/constructor-basic.https.html b/tests/wpt/web-platform-tests/notifications/constructor-basic.https.html index a36a8ce3047..3f704de03e3 100644 --- a/tests/wpt/web-platform-tests/notifications/constructor-basic.https.html +++ b/tests/wpt/web-platform-tests/notifications/constructor-basic.https.html @@ -7,11 +7,6 @@ + + diff --git a/tests/wpt/web-platform-tests/notifications/event-onshow.https.html b/tests/wpt/web-platform-tests/notifications/event-onshow.https.html index 7cc2be9de5b..2f7959e7d3b 100644 --- a/tests/wpt/web-platform-tests/notifications/event-onshow.https.html +++ b/tests/wpt/web-platform-tests/notifications/event-onshow.https.html @@ -5,21 +5,20 @@ + + diff --git a/tests/wpt/web-platform-tests/notifications/getnotifications-across-processes.https.window.js b/tests/wpt/web-platform-tests/notifications/getnotifications-across-processes.https.window.js new file mode 100644 index 00000000000..ad0ecf27efd --- /dev/null +++ b/tests/wpt/web-platform-tests/notifications/getnotifications-across-processes.https.window.js @@ -0,0 +1,21 @@ +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=/service-workers/service-worker/resources/test-helpers.sub.js + +// (Cannot use `global=serviceworker` because testdriver only supports window) + +navigator.serviceWorker.addEventListener("message", async ev => { + if (ev.data === "notification-create") { + // (Scope used by service_worker_test) + const scope = "scope" + window.location.pathname; + const reg = await navigator.serviceWorker.getRegistration(scope); + await reg.showNotification("Created from window"); + reg.active.postMessage("notification-created"); + } +}); + +promise_setup(() => { + return test_driver.set_permission({ name: "notifications" }, "granted"); +}); + +service_worker_test("getnotifications-sw.js", "Service worker test setup"); diff --git a/tests/wpt/web-platform-tests/notifications/getnotifications-sw.js b/tests/wpt/web-platform-tests/notifications/getnotifications-sw.js new file mode 100644 index 00000000000..331913b9935 --- /dev/null +++ b/tests/wpt/web-platform-tests/notifications/getnotifications-sw.js @@ -0,0 +1,56 @@ +importScripts("/resources/testharness.js"); + +async function cleanup() { + for (const n of await registration.getNotifications()) { + n.close(); + } +} + +async function test_notification(t, title) { + t.add_cleanup(cleanup); + + const notifications = await registration.getNotifications(); + + assert_equals( + notifications.length, + 1, + "There should be one stored notification" + ); + const notification = notifications[0]; + assert_true(notification instanceof Notification, "Should be a Notification"); + assert_equals(notification.title, title, "Title should match"); +} + +async function postAll(data) { + const clients = await self.clients.matchAll({ includeUncontrolled: true }); + assert_true(clients.length > 0, "clients.length"); + for (const client of clients) { + client.postMessage(data); + } +} + +async function untilActivate() { + if (registration.active) { + return; + } + return new Promise(resolve => { + addEventListener("activate", resolve, { once: true }); + }); +} + +promise_test(async t => { + await new Promise((resolve, reject) => { + self.addEventListener("message", ev => { + if (ev.data === "notification-created") { + resolve(); + } + }); + untilActivate().then(() => postAll("notification-create")).catch(reject); + }); + await test_notification(t, "Created from window"); +}, "Get notification created from window"); + +promise_test(async t => { + await registration.showNotification("Created here"); + await test_notification(t, "Created here"); +}, "Create and get notification within service worker"); diff --git a/tests/wpt/web-platform-tests/notifications/instance.https.html b/tests/wpt/web-platform-tests/notifications/instance.https.html index c0ebe7e6998..5ccc6cd1e3a 100644 --- a/tests/wpt/web-platform-tests/notifications/instance.https.html +++ b/tests/wpt/web-platform-tests/notifications/instance.https.html @@ -3,61 +3,58 @@ Notification instance basic tests + diff --git a/tests/wpt/web-platform-tests/notifications/resources/custom-data.js b/tests/wpt/web-platform-tests/notifications/resources/custom-data.js new file mode 100644 index 00000000000..b21d28a1bb3 --- /dev/null +++ b/tests/wpt/web-platform-tests/notifications/resources/custom-data.js @@ -0,0 +1,66 @@ +var fakeCustomData = (function() { + var buffer = new ArrayBuffer(2); + new DataView(buffer).setInt16(0, 42, true); + var canvas = document.createElement("canvas"); + canvas.width = canvas.height = 100; + var context = canvas.getContext("2d"); + + var map = new Map(); + var set = new Set(); + map.set("test", 42); + set.add(4); + set.add(2); + + return { + primitives: { + a: 123, + b: "test", + c: true, + d: [1, 2, 3], + }, + date: new Date(2013, 2, 1, 1, 10), + regexp: new RegExp("[^.]+"), + arrayBuffer: buffer, + imageData: context.createImageData(100, 100), + map, + set, + }; +})(); + +function assert_custom_data(dataObj) { + assert_equals(typeof dataObj, "object", "data should be a JS object"); + assert_equals( + JSON.stringify(dataObj.primitives), + JSON.stringify(fakeCustomData.primitives), + "data.primitives should be preserved" + ); + assert_equals( + dataObj.date.toDateString(), + fakeCustomData.date.toDateString(), + "data.date should be preserved" + ); + assert_equals( + dataObj.regexp.exec("http://www.domain.com")[0].substr(7), + "www", + "data.regexp should be preserved" + ); + assert_equals( + new Int16Array(dataObj.arrayBuffer)[0], + 42, + "data.arrayBuffer should be preserved" + ); + assert_equals( + JSON.stringify(dataObj.imageData.data), + JSON.stringify(fakeCustomData.imageData.data), + "data.imageData should be preserved" + ) + assert_equals( + dataObj.map.get("test"), + 42, + "data.map should be preserved" + ); + assert_true( + dataObj.set.has(4) && dataObj.set.has(2), + "data.set should be preserved" + ); +} diff --git a/tests/wpt/web-platform-tests/notifications/shownotification.https.window.js b/tests/wpt/web-platform-tests/notifications/shownotification.https.window.js index 5fcfccff756..4def3271815 100644 --- a/tests/wpt/web-platform-tests/notifications/shownotification.https.window.js +++ b/tests/wpt/web-platform-tests/notifications/shownotification.https.window.js @@ -1,5 +1,6 @@ // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js +// META: script=resources/custom-data.js "use strict"; @@ -15,6 +16,7 @@ function reset() { async function registerSw() { await reset(); const reg = await navigator.serviceWorker.register("noop-sw.js"); + add_completion_callback(() => reg.unregister()); await navigator.serviceWorker.ready; return reg; } @@ -70,3 +72,35 @@ promise_test(async t => { const notifications = await registration.getNotifications(); assert_equals(notifications.length, 3, "Should return three notifications"); }, "fetching multiple notifications"); + +// https://notifications.spec.whatwg.org/#dom-serviceworkerregistration-getnotifications +// Step 5.2: Let notifications be a list of all notifications in the list of +// notifications ... whose service worker registration is this ... +promise_test(async t => { + t.add_cleanup(cleanup); + const another = await navigator.serviceWorker.register("noop-sw.js", { scope: "./scope" }); + await registration.showNotification("Hello"); + const notifications = await another.getNotifications(); + assert_equals(notifications.length, 0, "Should return no notification"); +}, "fetching from another registration") + +// https://notifications.spec.whatwg.org/#non-persistent-notification +// A non-persistent notification is a notification without an associated +// service worker registration. +promise_test(async t => { + t.add_cleanup(cleanup); + const nonPersistent = new Notification("Non-persistent"); + t.add_cleanup(() => nonPersistent.close()); + await registration.showNotification("Hello"); + const notifications = await registration.getNotifications(); + assert_equals(notifications.length, 1, "Should return a notification"); + assert_equals(notifications[0].title, "Hello", "Title should match"); +}, "fetching only persistent notifications") + +promise_test(async t => { + t.add_cleanup(cleanup); + await registration.showNotification("Hello", { data: fakeCustomData }); + const notifications = await registration.getNotifications(); + assert_equals(notifications.length, 1, "Should return a notification"); + assert_custom_data(notifications[0].data); +}, "fetching a notification with custom data") diff --git a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-attributes.tentative.window.js b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-attributes.tentative.window.js index 97bf79f0ef9..047e97a7521 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-attributes.tentative.window.js +++ b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-attributes.tentative.window.js @@ -19,7 +19,7 @@ promise_test(async t => { const rc1_url = await rc1.executeScript(() => { return location.href; }); - // Add a cross-origin iframe and use BroadcastChannel. + // Add a cross-origin iframe. const rc1_child = await rc1.addIframe( /*extraConfig=*/ { origin: 'HTTP_REMOTE_ORIGIN', diff --git a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache.tentative.window.js b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache.tentative.window.js index b5ff4d7cc59..73197ef3ab3 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache.tentative.window.js +++ b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache.tentative.window.js @@ -22,6 +22,6 @@ promise_test(async t => { assert_true(await rc1.executeScript(() => { let reasons = performance.getEntriesByType('navigation')[0].notRestoredReasons; - return reasons == null; + return reasons === null; })); }); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-cross-origin-bfcache.tentative.window.js b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-cross-origin-bfcache.tentative.window.js index 64c0a89c820..bb8284bb1a9 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-cross-origin-bfcache.tentative.window.js +++ b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-cross-origin-bfcache.tentative.window.js @@ -19,7 +19,7 @@ promise_test(async t => { const rc1_url = await rc1.executeScript(() => { return location.href; }); - // Add a cross-origin iframe and use BroadcastChannel. + // Add a cross-origin iframe. const rc1_child = await rc1.addIframe( /*extraConfig=*/ { origin: 'HTTP_REMOTE_ORIGIN', diff --git a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/test-helper.js b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/test-helper.js index 03ae1df3d31..0737f719bfb 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/test-helper.js +++ b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/test-helper.js @@ -37,7 +37,11 @@ function assertReasonsStructEquals( // - /websockets/constants.sub.js in the test file and pass the domainPort // constant here. async function useWebSocket(remoteContextHelper) { - await remoteContextHelper.executeScript((domain) => { - var webSocketInNotRestoredReasonsTests = new WebSocket(domain + '/echo'); + let return_value = await remoteContextHelper.executeScript((domain) => { + return new Promise((resolve) => { + var webSocketInNotRestoredReasonsTests = new WebSocket(domain + '/echo'); + webSocketInNotRestoredReasonsTests.onopen = () => { resolve(42); }; + }); }, [SCHEME_DOMAIN_PORT]); -} + assert_equals(return_value, 42); +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/performance-timeline/tentative/with-filter-options-originA.html b/tests/wpt/web-platform-tests/performance-timeline/tentative/with-filter-options-originA.html new file mode 100644 index 00000000000..6c6643df75c --- /dev/null +++ b/tests/wpt/web-platform-tests/performance-timeline/tentative/with-filter-options-originA.html @@ -0,0 +1,26 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/priority-hints/fetch-api-request.tentative.any.js b/tests/wpt/web-platform-tests/priority-hints/fetch-api-request.tentative.any.js deleted file mode 100644 index 1b576e52da8..00000000000 --- a/tests/wpt/web-platform-tests/priority-hints/fetch-api-request.tentative.any.js +++ /dev/null @@ -1,9 +0,0 @@ -test(() => { - assert_throws_js(TypeError, () => { - new Request("", {priority: 'invalid'}); - }, "a new Request() must throw a TypeError if RequestInit's priority is an invalid value"); -}, "new Request() throws a TypeError if any of RequestInit's members' values are invalid"); - -promise_test(function(t) { - return promise_rejects_js(t, TypeError, fetch('resources/blank.html', { priority: 'invalid' })); -}, "fetch() with an invalid priority returns a rejected promise with a TypeError"); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resource-timing/no-entries-for-cross-origin-css-fetched-memory-cache.sub.html b/tests/wpt/web-platform-tests/resource-timing/no-entries-for-cross-origin-css-fetched-memory-cache.sub.html index 2cfcfc7d680..6b60305ded2 100644 --- a/tests/wpt/web-platform-tests/resource-timing/no-entries-for-cross-origin-css-fetched-memory-cache.sub.html +++ b/tests/wpt/web-platform-tests/resource-timing/no-entries-for-cross-origin-css-fetched-memory-cache.sub.html @@ -4,35 +4,50 @@ + + - - - -
      Some content
    + +
      Some content
    diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/resource-timing-content-length.py b/tests/wpt/web-platform-tests/resource-timing/resources/resource-timing-content-length.py index 6dbce047b72..687689e2726 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resources/resource-timing-content-length.py +++ b/tests/wpt/web-platform-tests/resource-timing/resources/resource-timing-content-length.py @@ -5,6 +5,7 @@ def main(request, response): output = b"HTTP/1.1 200 OK\r\n" output += b"Content-Type: text/plain;charset=UTF-8\r\n" + output += b"Connection: close\r\n" if length == b"auto" : output += b"Content-Length:" output += "{0}".format(len(content)).encode("ascii") diff --git a/tests/wpt/web-platform-tests/resources/chromium/mock-subapps.js b/tests/wpt/web-platform-tests/resources/chromium/mock-subapps.js index ddbf27649e1..b63e97b8c4d 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/mock-subapps.js +++ b/tests/wpt/web-platform-tests/resources/chromium/mock-subapps.js @@ -1,6 +1,6 @@ 'use strict'; -import {SubAppsService, SubAppsServiceReceiver, SubAppsServiceResult} from '/gen/third_party/blink/public/mojom/subapps/sub_apps_service.mojom.m.js'; +import {SubAppsService, SubAppsServiceReceiver, SubAppsServiceResultCode} from '/gen/third_party/blink/public/mojom/subapps/sub_apps_service.mojom.m.js'; self.SubAppsServiceTest = (() => { // Class that mocks SubAppsService interface defined in /third_party/blink/public/mojom/subapps/sub_apps_service.mojom @@ -29,7 +29,7 @@ self.SubAppsServiceTest = (() => { list() { return Promise.resolve({ result: { - code: testInternal.serviceResultCode, + resultCode: testInternal.serviceResultCode, subAppsList: testInternal.listCallReturnValue, } }); diff --git a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js index 452cdfa5e37..db61e1ce4d6 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js +++ b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js @@ -334,6 +334,7 @@ class MockRuntime { 'depth-sensing': vrMojom.XRSessionFeature.DEPTH, 'secondary-views': vrMojom.XRSessionFeature.SECONDARY_VIEWS, 'camera-access': vrMojom.XRSessionFeature.CAMERA_ACCESS, + 'layers': vrMojom.XRSessionFeature.LAYERS, }; static _sessionModeToMojoMap = { diff --git a/tests/wpt/web-platform-tests/screen-details/getScreenDetails.tentative.https.window.js b/tests/wpt/web-platform-tests/screen-details/getScreenDetails.tentative.https.window.js index 914c72e5b87..06f0344f3ad 100644 --- a/tests/wpt/web-platform-tests/screen-details/getScreenDetails.tentative.https.window.js +++ b/tests/wpt/web-platform-tests/screen-details/getScreenDetails.tentative.https.window.js @@ -8,7 +8,7 @@ promise_test(async t => { }, 'getScreenDetails() is present'); promise_test(async t => { - await test_driver.set_permission({name: 'window-placement'}, 'granted'); + await test_driver.set_permission({name: 'window-management'}, 'granted'); const screenDetails = await self.getScreenDetails(); assert_true(ScreenDetails.prototype.isPrototypeOf(screenDetails)); assert_true(ScreenDetailed.prototype.isPrototypeOf(screenDetails.currentScreen)); @@ -19,14 +19,14 @@ promise_test(async t => { }, 'getScreenDetails() returns the expected interface with permission granted'); promise_test(async t => { - await test_driver.set_permission({name: 'window-placement'}, 'granted'); + await test_driver.set_permission({name: 'window-management'}, 'granted'); assert_greater_than((await self.getScreenDetails()).screens.length, 0); - await test_driver.set_permission({name: 'window-placement'}, 'denied'); + await test_driver.set_permission({name: 'window-management'}, 'denied'); await promise_rejects_dom(t, 'NotAllowedError', self.getScreenDetails()); }, 'getScreenDetails() rejects the promise with permission denied'); promise_test(async t => { - await test_driver.set_permission({name: 'window-placement'}, 'granted'); + await test_driver.set_permission({name: 'window-management'}, 'granted'); let iframe = document.body.appendChild(document.createElement('iframe')); assert_greater_than((await iframe.contentWindow.getScreenDetails()).screens.length, 0); @@ -50,7 +50,7 @@ promise_test(async t => { }, 'getScreenDetails() resolves for attached iframe; rejects for detached iframe'); promise_test(async t => { - await test_driver.set_permission({name: 'window-placement'}, 'granted'); + await test_driver.set_permission({name: 'window-management'}, 'granted'); let iframe = document.body.appendChild(document.createElement('iframe')); const screenDetails = await iframe.contentWindow.getScreenDetails(); assert_greater_than(screenDetails.screens.length, 0); diff --git a/tests/wpt/web-platform-tests/screen-details/permission.https.window.js b/tests/wpt/web-platform-tests/screen-details/permission.https.window.js index 32596fac9ea..f477bd4230b 100644 --- a/tests/wpt/web-platform-tests/screen-details/permission.https.window.js +++ b/tests/wpt/web-platform-tests/screen-details/permission.https.window.js @@ -4,17 +4,17 @@ "use strict"; promise_test(async t => { - await test_driver.set_permission({ name: "window-placement" }, "denied"); + await test_driver.set_permission({ name: "window-management" }, "denied"); - const status = await navigator.permissions.query({ name:"window-placement" }); + const status = await navigator.permissions.query({ name:"window-management" }); assert_class_string(status, "PermissionStatus"); assert_equals(status.state, "denied"); }, "Deny window management permission should work."); promise_test(async t => { - await test_driver.set_permission({ name: "window-placement" }, "granted"); + await test_driver.set_permission({ name: "window-management" }, "granted"); - const status = await navigator.permissions.query({ name: "window-placement" }); + const status = await navigator.permissions.query({ name: "window-management" }); assert_class_string(status, "PermissionStatus"); assert_equals(status.state, "granted"); }, "Grant window management permission should work."); diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/animation-timeline-view-functional-notation.tentative.html b/tests/wpt/web-platform-tests/scroll-animations/css/animation-timeline-view-functional-notation.tentative.html index d93306819af..70891c6ccf8 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/css/animation-timeline-view-functional-notation.tentative.html +++ b/tests/wpt/web-platform-tests/scroll-animations/css/animation-timeline-view-functional-notation.tentative.html @@ -9,8 +9,8 @@ + +
    + + diff --git a/tests/wpt/web-platform-tests/scroll-animations/view-timelines/view-timeline-subject-size-changes.html b/tests/wpt/web-platform-tests/scroll-animations/view-timelines/view-timeline-subject-size-changes.html index a47fed8e446..9ae4b1df775 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/view-timelines/view-timeline-subject-size-changes.html +++ b/tests/wpt/web-platform-tests/scroll-animations/view-timelines/view-timeline-subject-size-changes.html @@ -37,8 +37,8 @@ promise_test(async t => { const options = { timeline: { axis: 'vertical' }, animation: { - rangeStart: { rangeName: 'enter', offset: CSS.percent(0) }, - rangeEnd: { rangeName: 'enter', offset: CSS.percent(100) }, + rangeStart: { rangeName: 'entry', offset: CSS.percent(0) }, + rangeEnd: { rangeName: 'entry', offset: CSS.percent(100) }, // Set fill to accommodate floating point precision errors at the // endpoints. fill: 'both' diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-nested-2levels.html b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-nested-2levels.html index 59f0e4f0cb7..54def5ce7e5 100644 --- a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-nested-2levels.html +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slot-nested-2levels.html @@ -19,7 +19,7 @@
    @@ -46,7 +46,7 @@ promise_test(async () => { 'i0', 'outer/outer-before', 'nested1/inner-before', - 'nested1/button', + 'nested1/inner-div', 'nested2/innermost-before', 'innermost1', 'innermost2', diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slots-in-slot.html b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slots-in-slot.html index 025a4e0f52f..5cc8abbf019 100644 --- a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slots-in-slot.html +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-navigation-slots-in-slot.html @@ -8,38 +8,38 @@

    Tests for moving focus by pressing tab key across nodes in slot scope.
    - +

    outside
    - - +
    single nested slot
    +
    single nested slot
    - +
    single nested slot
    - - +
    double nested slot
    +
    double nested slot
    - +
    single nested slot
    - +
    double nested slot
    - - +
    Triple nested slot
    +
    Triple nested slot
    - +
    double nested slot
    - +
    single nested slot
    - +
    outside
    diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-nested-slots.html b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-nested-slots.html index 747a8a1262f..5d069a5850c 100644 --- a/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-nested-slots.html +++ b/tests/wpt/web-platform-tests/shadow-dom/focus-navigation/focus-nested-slots.html @@ -10,42 +10,42 @@ - +
    one
    - - - +
    two
    +
    three
    +
    four
    - +
    five
    diff --git a/tests/wpt/web-platform-tests/soft-navigation-heuristics/multiple-paint-entries-buffered.tentative.html b/tests/wpt/web-platform-tests/soft-navigation-heuristics/multiple-paint-entries-buffered.tentative.html index f88fb953012..fcf5c023e40 100644 --- a/tests/wpt/web-platform-tests/soft-navigation-heuristics/multiple-paint-entries-buffered.tentative.html +++ b/tests/wpt/web-platform-tests/soft-navigation-heuristics/multiple-paint-entries-buffered.tentative.html @@ -26,7 +26,8 @@ extraValidations: async (entries, options)=>{ const paint_entries = await new Promise(resolve => { new PerformanceObserver(list => resolve(list.getEntries())).observe( - {type: 'paint', buffered: true}); + {type: 'paint', buffered: true, + includeSoftNavigationObservations: true}); }); assert_equals(paint_entries.length, 10); }, diff --git a/tests/wpt/web-platform-tests/soft-navigation-heuristics/resources/soft-navigation-helper.js b/tests/wpt/web-platform-tests/soft-navigation-heuristics/resources/soft-navigation-helper.js index d1a60c15ef4..c24af60274d 100644 --- a/tests/wpt/web-platform-tests/soft-navigation-heuristics/resources/soft-navigation-helper.js +++ b/tests/wpt/web-platform-tests/soft-navigation-heuristics/resources/soft-navigation-helper.js @@ -85,9 +85,14 @@ const runEntryValidations = async preClickLcp => { validatePaintEntries('first-contentful-paint'); validatePaintEntries('first-paint'); const postClickLcp = await getLcpEntries(); + const postClickLcpWithoutSoftNavs = await getLcpEntriesWithoutSoftNavs(); assert_greater_than( postClickLcp.length, preClickLcp.length, 'Soft navigation should have triggered at least an LCP entry'); + assert_equals( + postClickLcpWithoutSoftNavs.length, preClickLcp.length, + 'Soft navigation should not have triggered an LCP entry when the ' + + 'observer did not opt in'); assert_not_equals( postClickLcp[postClickLcp.length - 1].size, preClickLcp[preClickLcp.length - 1].size, @@ -172,6 +177,11 @@ const validateSoftNavigationEntry = async (clicks, extraValidations, const validatePaintEntries = async (type, entries_number = 2) => { const entries = await new Promise(resolve => { + (new PerformanceObserver(list => resolve( + list.getEntriesByName(type)))).observe( + {type: 'paint', buffered: true, includeSoftNavigationObservations: true}); + }); + const entries_without_softnavs = await new Promise(resolve => { (new PerformanceObserver(list => resolve( list.getEntriesByName(type)))).observe( {type: 'paint', buffered: true}); @@ -181,6 +191,8 @@ const validatePaintEntries = async (type, entries_number = 2) => { // required clicks, instead of counting on double rAF. assert_equals(entries.length, entries_number, `There are ${entries_number} entries for ${type}`); + assert_equals(entries_without_softnavs.length, 1, + `There is one non-softnav entry for ${type}`); if (entries_number > 1) { assert_not_equals(entries[0].startTime, entries[1].startTime, "Entries have different timestamps for " + type); @@ -188,6 +200,16 @@ const validatePaintEntries = async (type, entries_number = 2) => { }; const getLcpEntries = async () => { + const entries = await new Promise(resolve => { + (new PerformanceObserver(list => resolve( + list.getEntries()))).observe( + {type: 'largest-contentful-paint', buffered: true, + includeSoftNavigationObservations: true}); + }); + return entries; +}; + +const getLcpEntriesWithoutSoftNavs = async () => { const entries = await new Promise(resolve => { (new PerformanceObserver(list => resolve( list.getEntries()))).observe( @@ -229,6 +251,6 @@ const waitOnPaintEntriesPromise = () => { } else if (paint_entries.length > 2) { reject(); } - }).observe({type: 'paint'}); + }).observe({type: 'paint', includeSoftNavigationObservations: true}); }); }; diff --git a/tests/wpt/web-platform-tests/speculation-rules/prerender/csp-prefetch-src-allow.html b/tests/wpt/web-platform-tests/speculation-rules/prerender/csp-prefetch-src-allow.html deleted file mode 100644 index f323756ce39..00000000000 --- a/tests/wpt/web-platform-tests/speculation-rules/prerender/csp-prefetch-src-allow.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/speculation-rules/prerender/csp-prefetch-src-disallow.html b/tests/wpt/web-platform-tests/speculation-rules/prerender/csp-prefetch-src-disallow.html deleted file mode 100644 index e8ed74b4578..00000000000 --- a/tests/wpt/web-platform-tests/speculation-rules/prerender/csp-prefetch-src-disallow.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/speculation-rules/prerender/resources/csp-prefetch-src-allow.sub.html b/tests/wpt/web-platform-tests/speculation-rules/prerender/resources/csp-prefetch-src-allow.sub.html deleted file mode 100644 index bb631b3554e..00000000000 --- a/tests/wpt/web-platform-tests/speculation-rules/prerender/resources/csp-prefetch-src-allow.sub.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/speculation-rules/prerender/resources/csp-prefetch-src-disallow.sub.html b/tests/wpt/web-platform-tests/speculation-rules/prerender/resources/csp-prefetch-src-disallow.sub.html deleted file mode 100644 index 7be73c8c6f2..00000000000 --- a/tests/wpt/web-platform-tests/speculation-rules/prerender/resources/csp-prefetch-src-disallow.sub.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/speculation-rules/prerender/resources/prerender-state.html b/tests/wpt/web-platform-tests/speculation-rules/prerender/resources/prerender-state.html index 914db2a9ed9..34a59f07ee1 100644 --- a/tests/wpt/web-platform-tests/speculation-rules/prerender/resources/prerender-state.html +++ b/tests/wpt/web-platform-tests/speculation-rules/prerender/resources/prerender-state.html @@ -5,8 +5,6 @@ - - - """ % (name, value, testcase) - - return (200, response_headers, body) diff --git a/tests/wpt/web-platform-tests/storage-access-api/storage-access-permission.sub.https.window.js b/tests/wpt/web-platform-tests/storage-access-api/storage-access-permission.sub.https.window.js index 88473ce3898..d1ee7700997 100644 --- a/tests/wpt/web-platform-tests/storage-access-api/storage-access-permission.sub.https.window.js +++ b/tests/wpt/web-platform-tests/storage-access-api/storage-access-permission.sub.https.window.js @@ -27,8 +27,10 @@ assert_equals(state, "granted"); }, "Permissions grants are observable across same-origin iframes"); - // Finally run the simple tests below in a separate cross-origin iframe. - RunTestsInIFrame('https://{{domains[www]}}:{{ports[https][0]}}/storage-access-api/resources/permissions-iframe.https.html'); + promise_test(async (t) => { + // Finally run the simple tests below in a separate cross-origin iframe. + await RunTestsInIFrame('https://{{domains[www]}}:{{ports[https][0]}}/storage-access-api/resources/permissions-iframe.https.html'); + }, "IFrame tests"); return; } diff --git a/tests/wpt/web-platform-tests/storage-access-api/storageAccess.testdriver.sub.html b/tests/wpt/web-platform-tests/storage-access-api/storageAccess.testdriver.sub.html index 80108b5190b..27e00b7cd70 100644 --- a/tests/wpt/web-platform-tests/storage-access-api/storageAccess.testdriver.sub.html +++ b/tests/wpt/web-platform-tests/storage-access-api/storageAccess.testdriver.sub.html @@ -1,6 +1,7 @@ TestDriver - Set Storage Access Command Tests + @@ -11,24 +12,26 @@ diff --git a/tests/wpt/web-platform-tests/subapps/add-error.tentative.https.html b/tests/wpt/web-platform-tests/subapps/add-error.tentative.https.html index 8b83afccf2c..8598f3fa35a 100644 --- a/tests/wpt/web-platform-tests/subapps/add-error.tentative.https.html +++ b/tests/wpt/web-platform-tests/subapps/add-error.tentative.https.html @@ -40,7 +40,7 @@ promise_test(async t => { const same_origin_url = document.location.origin + '/sub-app'; let subapp = { - [same_origin_url]: { install_url: same_origin_url } + [same_origin_url]: { installURL: same_origin_url } }; await promise_rejects_dom(t, 'NotAllowedError', navigator.subApps.add(subapp)); @@ -52,7 +52,7 @@ promise_test(async t => { let add_call_params = {}; for (let i = 0; i < 8; i++) { const url = same_origin_url + i; - add_call_params[url] = { install_url: url }; + add_call_params[url] = { installURL: url }; } await test_driver.bless("installing subapps", async function () { @@ -64,7 +64,7 @@ promise_test(async t => { const full_url = document.location.origin + '/sub-app'; let add_call_params = { - [full_url]: {"install_url": full_url}, + [full_url]: { installURL: full_url }, }; await test_driver.bless("installing subapps", async function () { @@ -77,8 +77,8 @@ promise_test(async t => { const url_2 = '/sub-app-2'; let add_call_params = { - [url_1]: {"install_url": url_1}, - [url_2]: {"install_url": url_2}, + [url_1]: {installURL: url_1}, + [url_2]: {installURL: url_2}, }; let mocked_response = [ @@ -101,8 +101,8 @@ promise_test(async t => { const url_2 = '/sub-app-2'; let add_call_params = { - [url_1]: {"install_url": url_1}, - [url_2]: {"install_url": url_2}, + [url_1]: {installURL: url_1}, + [url_2]: {installURL: url_2}, }; let mocked_response = [ diff --git a/tests/wpt/web-platform-tests/subapps/add-success.tentative.https.html b/tests/wpt/web-platform-tests/subapps/add-success.tentative.https.html index b482982f28a..24c420666e9 100644 --- a/tests/wpt/web-platform-tests/subapps/add-success.tentative.https.html +++ b/tests/wpt/web-platform-tests/subapps/add-success.tentative.https.html @@ -12,7 +12,7 @@ promise_test(async t => { const install_url = '/sub-app'; let add_call_params = { - [install_url]: {"install_url": install_url} + [install_url]: {installURL: install_url} }; let mocked_response = [ @@ -33,8 +33,8 @@ promise_test(async t => { const url_2 = '/sub-app-2'; let add_call_params = { - [url_1]: {"install_url": url_1}, - [url_2]: {"install_url": url_2}, + [url_1]: {installURL: url_1}, + [url_2]: {installURL: url_2}, }; let mocked_response = [ diff --git a/tests/wpt/web-platform-tests/tools/ci/tc/tasks/test.yml b/tests/wpt/web-platform-tests/tools/ci/tc/tasks/test.yml index fd0fda9c991..fe24199cae1 100644 --- a/tests/wpt/web-platform-tests/tools/ci/tc/tasks/test.yml +++ b/tests/wpt/web-platform-tests/tools/ci/tc/tasks/test.yml @@ -111,7 +111,7 @@ components: tox-python3_6: env: TOXENV: py36 - PY_COLORS: 0 + PY_COLORS: "0" install: - python3.6 - python3.6-distutils @@ -120,7 +120,7 @@ components: tox-python3_10: env: TOXENV: py310 - PY_COLORS: 0 + PY_COLORS: "0" install: - python3.10 - python3.10-distutils diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/safari.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/safari.py index ba533f4bc3b..3e4a6c8d4dc 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/safari.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/safari.py @@ -193,15 +193,22 @@ class SafariBrowser(WebDriverBrowser): if self.kill_safari: self.logger.debug("Going to stop Safari") for proc in psutil.process_iter(attrs=["exe"]): - if (proc.info["exe"] is not None and - os.path.samefile(proc.info["exe"], self.safari_path)): - self.logger.debug("Stopping Safari %s" % proc.pid) + if proc.info["exe"] is None: + continue + + try: + if not os.path.samefile(proc.info["exe"], self.safari_path): + continue + except OSError: + continue + + self.logger.debug("Stopping Safari %s" % proc.pid) + try: + proc.terminate() try: - proc.terminate() - try: - proc.wait(10) - except psutil.TimeoutExpired: - proc.kill() - proc.wait(10) - except psutil.NoSuchProcess: - pass + proc.wait(10) + except psutil.TimeoutExpired: + proc.kill() + proc.wait(10) + except psutil.NoSuchProcess: + pass diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py index da3b63ba5b4..224a4fde4df 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py @@ -163,6 +163,7 @@ def run_test_iteration(test_status, test_loader, test_source_kwargs, test_source tests_by_type = defaultdict(list) for test_type in test_loader.test_types: tests_by_type[test_type].extend(test_loader.tests[test_type]) + tests_by_type[test_type].extend(test_loader.disabled_tests[test_type]) try: test_groups = test_source_cls.tests_by_group( diff --git a/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin-insecure.sub.window.js b/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin-insecure.sub.window.js index b4bcb2cd340..8cf72b85fa8 100644 --- a/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin-insecure.sub.window.js +++ b/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin-insecure.sub.window.js @@ -87,7 +87,7 @@ if (topLevelDocument) { // This will validate that calls to requestStorageAccessForOrigin are rejected // in non-top-level contexts. RunTestsInIFrame( - './resources/requestStorageAccessForOrigin-iframe.https.html?testCase=secure-frame-on-insecure-page&rootdocument=false'); + './resources/requestStorageAccessForOrigin-iframe.html?testCase=frame-on-insecure-page&rootdocument=false'); promise_test( async t => { diff --git a/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.https.window.js b/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.https.window.js index f7dd478a707..060501d1b00 100644 --- a/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.https.window.js +++ b/tests/wpt/web-platform-tests/top-level-storage-access-api/tentative/requestStorageAccessForOrigin.sub.https.window.js @@ -52,6 +52,15 @@ test( '[' + testPrefix + '] document.requestStorageAccessForOrigin() should be supported on the document interface'); +promise_test( + t => { + return promise_rejects_js(t, TypeError, + document.requestStorageAccessForOrigin(), + 'document.requestStorageAccessForOrigin() call without origin argument'); + }, + '[' + testPrefix + + '] document.requestStorageAccessForOrigin() should be rejected when called with no argument'); + if (topLevelDocument) { promise_test( t => { @@ -87,7 +96,7 @@ if (topLevelDocument) { // This will validate that calls to requestStorageAccessForOrigin are rejected // in non-top-level contexts. RunTestsInIFrame( - './resources/requestStorageAccessForOrigin-iframe.html?testCase=same-origin-frame&rootdocument=false'); + './resources/requestStorageAccessForOrigin-iframe.https.html?testCase=same-origin-frame&rootdocument=false'); promise_test( async t => { @@ -115,6 +124,18 @@ if (topLevelDocument) { '[' + testPrefix + '] document.requestStorageAccessForOrigin() should be rejected when called with an opaque origin'); + + promise_test( + async t => { + await test_driver.set_permission( + { name: 'top-level-storage-access', requestedOrigin: 'https://foo.com' }, 'granted'); + + await RunCallbackWithGesture( + () => document.requestStorageAccessForOrigin('https://foo.com')); + }, + '[' + testPrefix + + '] document.requestStorageAccessForOrigin() should be resolved when called properly with a user gesture'); + } else { promise_test( async t => { diff --git a/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/property-list.js b/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/property-list.js index 59866a58977..b41ca90eef4 100644 --- a/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/property-list.js +++ b/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/property-list.js @@ -747,8 +747,10 @@ const gCSSProperties2 = { types: [ 'color' ] }, 'line-height': { - // https://drafts.csswg.org/css21/visudet.html#propdef-line-height + // https://w3c.github.io/csswg-drafts/css-inline/#line-height-property types: [ + { type: 'discrete', options: [ [ 'normal', '10px' ], + [ 'normal', '10', 'normal', '100px' ] ] } ] }, 'list-style-image': { diff --git a/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/property-types.js b/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/property-types.js index 6f39020b5c8..756dbae7043 100644 --- a/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/property-types.js +++ b/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/property-types.js @@ -1,19 +1,28 @@ 'use strict'; +const expected = values => { + // Some properties, such as line-height, report computed values which differ + // from the keyframe values. To support this, we allow optional values to specify + // explicit "from" and "to" values as additional keyframe values. + const [ from, to ] = values; + return [ values[2] ?? from, values[3] ?? to ]; +}; + const discreteType = { testInterpolation: (property, setup, options) => { for (const keyframes of options) { const [ from, to ] = keyframes; + const [ expectedFrom, expectedTo ] = expected(keyframes); test(t => { const idlName = propertyToIDL(property); const target = createTestElement(t, setup); const animation = target.animate({ [idlName]: [from, to] }, { duration: 1000, fill: 'both' }); testAnimationSamples(animation, idlName, - [{ time: 0, expected: from.toLowerCase() }, - { time: 499, expected: from.toLowerCase() }, - { time: 500, expected: to.toLowerCase() }, - { time: 1000, expected: to.toLowerCase() }]); + [{ time: 0, expected: expectedFrom.toLowerCase() }, + { time: 499, expected: expectedFrom.toLowerCase() }, + { time: 500, expected: expectedTo.toLowerCase() }, + { time: 1000, expected: expectedTo.toLowerCase() }]); }, `${property} uses discrete animation when animating between` + ` "${from}" and "${to}" with linear easing`); @@ -33,9 +42,9 @@ const discreteType = { } ); testAnimationSamples(animation, idlName, - [{ time: 0, expected: from.toLowerCase() }, - { time: 940, expected: from.toLowerCase() }, - { time: 960, expected: to.toLowerCase() }]); + [{ time: 0, expected: expectedFrom.toLowerCase() }, + { time: 940, expected: expectedFrom.toLowerCase() }, + { time: 960, expected: expectedTo.toLowerCase() }]); }, `${property} uses discrete animation when animating between` + ` "${from}" and "${to}" with effect easing`); @@ -53,9 +62,9 @@ const discreteType = { { duration: 1000, fill: 'both' } ); testAnimationSamples(animation, idlName, - [{ time: 0, expected: from.toLowerCase() }, - { time: 940, expected: from.toLowerCase() }, - { time: 960, expected: to.toLowerCase() }]); + [{ time: 0, expected: expectedFrom.toLowerCase() }, + { time: 940, expected: expectedFrom.toLowerCase() }, + { time: 960, expected: expectedTo.toLowerCase() }]); }, `${property} uses discrete animation when animating between` + ` "${from}" and "${to}" with keyframe easing`); } @@ -64,6 +73,7 @@ const discreteType = { testAdditionOrAccumulation: (property, setup, options, composite) => { for (const keyframes of options) { const [ from, to ] = keyframes; + const [ expectedFrom, expectedTo ] = expected(keyframes); test(t => { const idlName = propertyToIDL(property); const target = createTestElement(t, setup); @@ -73,7 +83,7 @@ const discreteType = { { duration: 1000, composite } ); testAnimationSamples(animation, idlName, - [{ time: 0, expected: to.toLowerCase() }]); + [{ time: 0, expected: expectedTo.toLowerCase() }]); }, `${property}: "${to}" onto "${from}"`); test(t => { @@ -85,7 +95,7 @@ const discreteType = { { duration: 1000, composite } ); testAnimationSamples(animation, idlName, - [{ time: 0, expected: from.toLowerCase() }]); + [{ time: 0, expected: expectedFrom.toLowerCase() }]); }, `${property}: "${from}" onto "${to}"`); } }, diff --git a/tests/wpt/web-platform-tests/web-bundle/resources/test-helpers.js b/tests/wpt/web-platform-tests/web-bundle/resources/test-helpers.js index 5c380c88d87..27dfb4c0ec1 100644 --- a/tests/wpt/web-platform-tests/web-bundle/resources/test-helpers.js +++ b/tests/wpt/web-platform-tests/web-bundle/resources/test-helpers.js @@ -101,69 +101,22 @@ function addWebBundleElementAndWaitForError(url, resources, options) { return addElementAndWaitForError(element); } -function changeWebBundleUrlInPlace(element, new_url) { - if (window.TEST_WEB_BUNDLE_ELEMENT_TYPE != 'link') { - throw new Error( - 'Changing the URL of web bundle is not supported for : ' + - window.TEST_WEB_BUNDLE_ELEMENT_TYPE); - } - element.href= new_url; -} - -function changeWebBundleScopesInPlace(element, scopes) { - if (window.TEST_WEB_BUNDLE_ELEMENT_TYPE != 'link') { - throw new Error( - 'Changing the scopes of web bundle is not supported for : ' + - window.TEST_WEB_BUNDLE_ELEMENT_TYPE); - } - element.scopes = ''; - for (const scope of scopes) { - element.scopes.add(scope); - } -} - -function changeWebBundleResourcesInPlace(element, resources) { - if (window.TEST_WEB_BUNDLE_ELEMENT_TYPE != 'link') { - throw new Error( - 'Changing the resources of web bundle is not supported for : ' + - window.TEST_WEB_BUNDLE_ELEMENT_TYPE); - } - element.resources = ''; - for (const url of resources) { - element.resources.add(url); - } -} - // This function creates a new WebBundle element that has a rule // constructed in accordance with a JSON object |new_rule|: // 1. Copy over WebBundle rules from an existing element that are -// not present in |new_rule|, in case of API it is all -// relevant attributes: href, resources, scopes and crossOrigin; -// in case of - - - - - diff --git a/tests/wpt/web-platform-tests/web-share/feature-policy-listed.html b/tests/wpt/web-platform-tests/web-share/feature-policy-listed.html deleted file mode 100644 index 127498dde12..00000000000 --- a/tests/wpt/web-platform-tests/web-share/feature-policy-listed.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - WebShare Test: policy is listed - - - - - - - - diff --git a/tests/wpt/web-platform-tests/web-share/feature-policy-listed.tentative.html b/tests/wpt/web-platform-tests/web-share/feature-policy-listed.tentative.html new file mode 100644 index 00000000000..8f709e68e75 --- /dev/null +++ b/tests/wpt/web-platform-tests/web-share/feature-policy-listed.tentative.html @@ -0,0 +1,35 @@ + + + + + WebShare Test: policy is listed + + + + + + + + diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/active-processing.https.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/active-processing.https.html index 0fa3089a340..7b8c1295c69 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/active-processing.https.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/active-processing.https.html @@ -62,12 +62,12 @@ .then(renderedBuffer => { let output = renderedBuffer.getChannelData(0); - // Find the first time the number of channels changes to 1. - let countChangeIndex = output.findIndex(x => x == 1); + // Find the first time the number of channels changes to 0. + let countChangeIndex = output.findIndex(x => x == 0); // Verify that the count did change. If it didn't there's a bug - // in the imploementation, or it takes longer than the render - // length to change. for the latter case, increase the render + // in the implementation, or it takes longer than the render + // length to change. For the latter case, increase the render // length, but it can't be arbitrarily large. The change needs to // happen at some reasonable time after the source stops. should(countChangeIndex >= 0, 'Number of channels changed') @@ -84,11 +84,11 @@ .beConstantValueOf(numberOfChannels); // Verify that after the source has stopped, the number of - // channels is 1. + // channels is 0. should( output.slice(countChangeIndex), `Number of channels in input[${countChangeIndex}:]`) - .beConstantValueOf(1); + .beConstantValueOf(0); }) .then(() => task.done()); }); diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-channelmergernode-interface/active-processing.https.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-channelmergernode-interface/active-processing.https.html index 6136583b90f..9012526bdc6 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-channelmergernode-interface/active-processing.https.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-channelmergernode-interface/active-processing.https.html @@ -49,8 +49,8 @@ // Expected number of output channels from the merger node. We should // start with the number of inputs, because the source (oscillator) is // actively processing. When the source stops, the number of channels - // should change to 1. - const expectedValues = [numberOfInputs, 1]; + // should change to 0. + const expectedValues = [numberOfInputs, 0]; let index = 0; testerNode.port.onmessage = event => { diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/active-processing.https.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/active-processing.https.html index f0f9f771bb4..0712d6bccef 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/active-processing.https.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/active-processing.https.html @@ -49,8 +49,8 @@ // Expected number of output channels from the convolver node. We should // start with the number of inputs, because the source (oscillator) is // actively processing. When the source stops, the number of channels - // should change to 1. - const expectedValues = [2, 1]; + // should change to 0. + const expectedValues = [2, 0]; let index = 0; testerNode.port.onmessage = event => { diff --git a/tests/wpt/web-platform-tests/webcodecs/idlharness.https.any.js b/tests/wpt/web-platform-tests/webcodecs/idlharness.https.any.js index 7f5f428afa9..f1ed92a1598 100644 --- a/tests/wpt/web-platform-tests/webcodecs/idlharness.https.any.js +++ b/tests/wpt/web-platform-tests/webcodecs/idlharness.https.any.js @@ -29,29 +29,33 @@ var defaultVideoChunkInit = { data: new Uint8Array([9, 10, 11, 12]) }; -idl_test( - ['webcodecs'], - ['webidl'], - async idlArray => { - self.imageBody = await fetch('four-colors.png').then(response => response.arrayBuffer()); +idl_test(['webcodecs'], ['dom', 'html', 'webidl'], async idlArray => { + self.imageBody = + await fetch('four-colors.png').then(response => response.arrayBuffer()); - let decoder = new ImageDecoder({data: self.imageBody, type: 'image/png'}); - await decoder.tracks.ready; - self.imageTracks = decoder.tracks.selectedTrack; + let decoder = new ImageDecoder({data: self.imageBody, type: 'image/png'}); + await decoder.tracks.ready; + self.imageTracks = decoder.tracks.selectedTrack; - idlArray.add_objects({ - AudioDecoder: [`new AudioDecoder(defaultCodecInit)`], - VideoDecoder: [`new VideoDecoder(defaultCodecInit)`], - AudioEncoder: [`new AudioEncoder(defaultCodecInit)`], - VideoEncoder: [`new VideoEncoder(defaultCodecInit)`], - EncodedAudioChunk: [`new EncodedAudioChunk(defaultAudioChunkInit)`], - EncodedVideoChunk: [`new EncodedVideoChunk(defaultVideoChunkInit)`], - AudioData: [`make_audio_data(1234, 2, 8000, 100)`], - VideoFrame: [`new VideoFrame(makeImageBitmap(32,16), {timestamp:100, duration:33})`], - VideoColorSpace: [`new VideoColorSpace()`], - ImageDecoder: [`new ImageDecoder({data: self.imageBody, type: 'image/png'})`], - ImageTrackList: [`new ImageDecoder({data: self.imageBody, type: 'image/png'}).tracks`], - ImageTrack: [`self.imageTracks`], - }); - } -); + idlArray.add_objects({ + AudioDecoder: [`new AudioDecoder(defaultCodecInit)`], + VideoDecoder: [`new VideoDecoder(defaultCodecInit)`], + AudioEncoder: [`new AudioEncoder(defaultCodecInit)`], + VideoEncoder: [`new VideoEncoder(defaultCodecInit)`], + EncodedAudioChunk: [`new EncodedAudioChunk(defaultAudioChunkInit)`], + EncodedVideoChunk: [`new EncodedVideoChunk(defaultVideoChunkInit)`], + AudioData: [`make_audio_data(1234, 2, 8000, 100)`], + VideoFrame: [ + `new VideoFrame(makeImageBitmap(32, 16), {timestamp: 100, duration: 33})` + ], + VideoColorSpace: [ + `new VideoColorSpace()`, + `new VideoColorSpace({primaries: 'bt709', transfer: 'bt709', matrix: 'bt709', fullRange: true})`, + ], + ImageDecoder: + [`new ImageDecoder({data: self.imageBody, type: 'image/png'})`], + ImageTrackList: + [`new ImageDecoder({data: self.imageBody, type: 'image/png'}).tracks`], + ImageTrack: [`self.imageTracks`], + }); +}); diff --git a/tests/wpt/web-platform-tests/webcodecs/videoDecoder-codec-specific.https.any.js b/tests/wpt/web-platform-tests/webcodecs/videoDecoder-codec-specific.https.any.js index 2a4ad6d6934..e78ac15cfac 100644 --- a/tests/wpt/web-platform-tests/webcodecs/videoDecoder-codec-specific.https.any.js +++ b/tests/wpt/web-platform-tests/webcodecs/videoDecoder-codec-specific.https.any.js @@ -214,9 +214,9 @@ promise_test(async t => { assert_equals(support.config.displayAspectWidth, config.displayAspectWidth, 'displayAspectWidth'); assert_equals(support.config.displayAspectHeight, config.displayAspectHeight, 'displayAspectHeight'); assert_equals(support.config.colorSpace.primaries, config.colorSpace.primaries, 'color primaries'); - assert_equals(support.config.colorSpace.transfer, undefined, 'color transfer'); - assert_equals(support.config.colorSpace.matrix, undefined, 'color matrix'); - assert_equals(support.config.colorSpace.fullRange, undefined, 'color range'); + assert_equals(support.config.colorSpace.transfer, null, 'color transfer'); + assert_equals(support.config.colorSpace.matrix, null, 'color matrix'); + assert_equals(support.config.colorSpace.fullRange, null, 'color range'); assert_false(support.config.hasOwnProperty('futureConfigFeature'), 'futureConfigFeature'); if (config.description) { diff --git a/tests/wpt/web-platform-tests/webdriver/tests/element_clear/clear.py b/tests/wpt/web-platform-tests/webdriver/tests/element_clear/clear.py index 6f4f31ffa40..fa96ed3a58a 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/element_clear/clear.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/element_clear/clear.py @@ -72,6 +72,15 @@ def test_no_such_element_with_invalid_value(session): assert_error(response, "no such element") +def test_no_such_element_with_shadow_root(session, get_test_page): + session.url = get_test_page() + + element = session.find.css("custom-element", all=False) + + result = element_clear(session, element.shadow_root) + assert_error(result, "no such element") + + @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

    ") @@ -89,25 +98,26 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, url, closed): - session.url = url("/webdriver/tests/support/html/subframe.html") +def test_no_such_element_from_other_frame(session, get_test_page, closed): + session.url = get_test_page(as_frame=True) - frame = session.find.css("#delete-frame", all=False) + frame = session.find.css("iframe", all=False) session.switch_frame(frame) - button = session.find.css("#remove-parent", all=False) - if closed: - button.click() + element = session.find.css("div", all=False) session.switch_frame("parent") - response = element_clear(session, button) + if closed: + session.execute_script("arguments[0].remove();", args=[frame]) + + response = element_clear(session, element) assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("", "input", as_frame=as_frame) + element = stale_element("input#text", as_frame=as_frame) response = element_clear(session, element) assert_error(response, "stale element reference") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/element_click/click.py b/tests/wpt/web-platform-tests/webdriver/tests/element_click/click.py index d2015445d4c..79be957d1b2 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/element_click/click.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/element_click/click.py @@ -48,6 +48,15 @@ def test_no_such_element_with_invalid_value(session): assert_error(response, "no such element") +def test_no_such_element_with_shadow_root(session, get_test_page): + session.url = get_test_page() + + element = session.find.css("custom-element", all=False) + + result = element_click(session, element.shadow_root) + assert_error(result, "no such element") + + @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

    ") @@ -65,25 +74,26 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, url, closed): - session.url = url("/webdriver/tests/support/html/subframe.html") +def test_no_such_element_from_other_frame(session, get_test_page, closed): + session.url = get_test_page(as_frame=True) - frame = session.find.css("#delete-frame", all=False) + frame = session.find.css("iframe", all=False) session.switch_frame(frame) - button = session.find.css("#remove-parent", all=False) - if closed: - button.click() + element = session.find.css("input#text", all=False) session.switch_frame("parent") - response = element_click(session, button) + if closed: + session.execute_script("arguments[0].remove();", args=[frame]) + + response = element_click(session, element) assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("

    ", "div", as_frame=as_frame) + element = stale_element("input#text", as_frame=as_frame) response = element_click(session, element) assert_error(response, "stale element reference") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/element_click/shadow_dom.py b/tests/wpt/web-platform-tests/webdriver/tests/element_click/shadow_dom.py index 45493b730d6..18768a60b29 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/element_click/shadow_dom.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/element_click/shadow_dom.py @@ -9,93 +9,45 @@ def element_click(session, element): element_id=element.id)) -@pytest.fixture -def get_checkbox_dom(inline): - return inline(""" - - - """) +@pytest.mark.parametrize("click_on", ["host_element", "checkbox_element"]) +def test_shadow_element_click(session, get_test_page, click_on): + session.url = get_test_page() + host_element = session.find.css("custom-element", all=False) + checkbox_element = session.execute_script(""" + return arguments[0].shadowRoot.querySelector("input") + """, args=(host_element,)) -@pytest.mark.parametrize("click_on", ["custom_element", "checkbox_element"]) -def test_shadow_element_click(session, get_checkbox_dom, click_on): - session.url = get_checkbox_dom - custom_element = session.find.css("custom-checkbox-element", all=False) - checkbox_element = session.execute_script("return arguments[0].shadowRoot.querySelector('input')", - args=(custom_element,)) - is_pre_checked = session.execute_script("return arguments[0].checked", - args=(checkbox_element,)) + is_pre_checked = session.execute_script(""" + return arguments[0].checked + """, args=(checkbox_element,)) assert is_pre_checked == False + response = element_click(session, locals()[click_on]) assert_success(response) - is_post_checked = session.execute_script("return arguments[0].checked", - args=(checkbox_element,)) + + is_post_checked = session.execute_script(""" + return arguments[0].checked + """, args=(checkbox_element,)) assert is_post_checked == True -@pytest.fixture -def get_nested_shadow_checkbox_dom(inline): - return inline(""" - - - """) +@pytest.mark.parametrize("click_on", ["outer_element", "inner_element", "checkbox"]) +def test_nested_shadow_element_click(session, get_test_page, click_on): + session.url = get_test_page(nested_shadow_dom=True) + outer_element = session.find.css("custom-element", all=False) + inner_element = session.execute_script(""" + return arguments[0].shadowRoot.querySelector("inner-custom-element") + """, args=(outer_element,)) + checkbox = session.execute_script(""" + return arguments[0].shadowRoot.querySelector("input") + """, args=(inner_element,)) -@pytest.mark.parametrize("click_on", ["outer_element", "inner_element", "checkbox_element"]) -def test_nested_shadow_element_click(session, get_nested_shadow_checkbox_dom, click_on): - session.url = get_nested_shadow_checkbox_dom - outer_element = session.find.css("custom-nesting-element", all=False) - inner_element = session.execute_script("return arguments[0].shadowRoot.querySelector('custom-checkbox-element')", - args=(outer_element,)) - checkbox_element = session.execute_script("return arguments[0].shadowRoot.querySelector('input')", - args=(inner_element,)) - is_pre_checked = session.execute_script("return arguments[0].checked", - args=(checkbox_element,)) + is_pre_checked = session.execute_script("return arguments[0].checked", args=(checkbox,)) assert is_pre_checked == False + click_response = element_click(session, locals()[click_on]) assert_success(click_response) - is_post_checked = session.execute_script("return arguments[0].checked", - args=(checkbox_element,)) + is_post_checked = session.execute_script("return arguments[0].checked", args=(checkbox,)) assert is_post_checked == True diff --git a/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py b/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py index 36b27b92f93..854d2af42cc 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py @@ -61,6 +61,15 @@ def test_no_such_element_with_invalid_value(session): assert_error(response, "no such element") +def test_no_such_element_with_shadow_root(session, get_test_page): + session.url = get_test_page() + + element = session.find.css("custom-element", all=False) + + result = element_send_keys(session, element.shadow_root, "foo") + assert_error(result, "no such element") + + @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

    ") @@ -78,25 +87,26 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, url, closed): - session.url = url("/webdriver/tests/support/html/subframe.html") +def test_no_such_element_from_other_frame(session, get_test_page, closed): + session.url = get_test_page(as_frame=True) - frame = session.find.css("#delete-frame", all=False) + frame = session.find.css("iframe", all=False) session.switch_frame(frame) - button = session.find.css("#remove-parent", all=False) - if closed: - button.click() + element = session.find.css("input#text", all=False) session.switch_frame("parent") - response = element_send_keys(session, button, "foo") + if closed: + session.execute_script("arguments[0].remove();", args=[frame]) + + response = element_send_keys(session, element, "foo") assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("", "input", as_frame=as_frame) + element = stale_element("input#text", as_frame=as_frame) response = element_send_keys(session, element, "foo") assert_error(response, "stale element reference") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/arguments.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/arguments.py index 9d281cd1a58..55fd9527aea 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/arguments.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/arguments.py @@ -54,9 +54,106 @@ def test_object(session): assert actual[1] == value +def test_no_such_element_with_invalid_value(session): + element = Element("foo", session) + + result = execute_async_script(session, """ + arguments[1](true); + """, args=[element]) + assert_error(result, "no such element") + + +@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) +def test_no_such_element_from_other_window_handle(session, inline, closed): + session.url = inline("

    ") + element = session.find.css("#parent", all=False) + + new_handle = session.new_window() + + if closed: + session.window.close() + + session.window_handle = new_handle + + result = execute_async_script(session, """ + arguments[1](true); + """, args=[element]) + assert_error(result, "no such element") + + +@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) +def test_no_such_element_from_other_frame(session, get_test_page, closed): + session.url = get_test_page(as_frame=True) + + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + + element = session.find.css("div", all=False) + + session.switch_frame("parent") + + if closed: + session.execute_script("arguments[0].remove();", args=[frame]) + + result = execute_async_script(session, """ + arguments[1](true); + """, args=[element]) + assert_error(result, "no such element") + + +def test_no_such_shadow_root_with_unknown_shadow_root(session): + shadow_root = ShadowRoot(session, "foo") + + result = execute_async_script(session, """ + arguments[1](true); + """, args=[shadow_root]) + assert_error(result, "no such shadow root") + + +@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) +def test_no_such_shadow_root_from_other_window_handle(session, get_test_page, closed): + session.url = get_test_page() + + element = session.find.css("custom-element", all=False) + shadow_root = element.shadow_root + + new_handle = session.new_window() + + if closed: + session.window.close() + + session.window_handle = new_handle + + result = execute_async_script(session, """ + arguments[1](true); + """, args=[shadow_root]) + assert_error(result, "no such shadow root") + + +@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) +def test_no_such_shadow_root_from_other_frame(session, get_test_page, closed): + session.url = get_test_page(as_frame=True) + + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + + element = session.find.css("custom-element", all=False) + shadow_root = element.shadow_root + + session.switch_frame("parent") + + if closed: + session.execute_script("arguments[0].remove();", args=[frame]) + + result = execute_async_script(session, """ + arguments[1](true); + """, args=[shadow_root]) + assert_error(result, "no such shadow root") + + @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("

    ", "div", as_frame=as_frame) + element = stale_element("input#text", as_frame=as_frame) result = execute_async_script(session, "arguments[1](1);", args=[element]) assert_error(result, "stale element reference") @@ -64,31 +161,12 @@ def test_stale_element_reference(session, stale_element, as_frame): @pytest.mark.parametrize("expression, expected_type, expected_class", [ ("window.frames[0]", Frame, "Frame"), - ("document.getElementById('foo')", Element, "HTMLDivElement"), - ("document.getElementById('checkbox').shadowRoot", ShadowRoot, "ShadowRoot"), + ("document.querySelector('div')", Element, "HTMLDivElement"), + ("document.querySelector('custom-element').shadowRoot", ShadowRoot, "ShadowRoot"), ("window", Window, "Window") ], ids=["frame", "node", "shadow-root", "window"]) -def test_element_reference(session, iframe, inline, expression, expected_type, expected_class): - session.url = inline(f""" - - - -
    - {iframe("

    ")}""") +def test_element_reference(session, get_test_page, expression, expected_type, expected_class): + session.url = get_test_page(as_frame=False) result = execute_async_script(session, f"arguments[0]({expression})") reference = assert_success(result) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/execute_async.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/execute_async.py index 2292aecce19..d0b9daee415 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/execute_async.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/execute_async.py @@ -25,52 +25,6 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") -def test_no_such_element_with_invalid_value(session): - element = Element("foo", session) - - result = execute_async_script(session, """ - arguments[1](true); - """, args=[element]) - assert_error(result, "no such element") - - -@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_window_handle(session, inline, closed): - session.url = inline("

    ") - element = session.find.css("#parent", all=False) - - new_handle = session.new_window() - - if closed: - session.window.close() - - session.window_handle = new_handle - - result = execute_async_script(session, """ - arguments[1](true); - """, args=[element]) - assert_error(result, "no such element") - - -@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, url, closed): - session.url = url("/webdriver/tests/support/html/subframe.html") - - frame = session.find.css("#delete-frame", all=False) - session.switch_frame(frame) - - button = session.find.css("#remove-parent", all=False) - if closed: - button.click() - - session.switch_frame("parent") - - result = execute_async_script(session, """ - arguments[1](true); - """, args=[button]) - assert_error(result, "no such element") - - @pytest.mark.parametrize("dialog_type", ["alert", "confirm", "prompt"]) def test_abort_by_user_prompt(session, dialog_type): response = execute_async_script( diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/node.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/node.py index 1b204df33ec..53abda4b300 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/node.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/node.py @@ -20,13 +20,33 @@ PAGE_DATA = """ @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) -def test_stale_element_reference(session, iframe, inline, as_frame): +def test_detached_shadow_root(session, get_test_page, as_frame): + session.url = get_test_page(as_frame) + + if as_frame: + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + + element = session.find.css("custom-element", all=False) + + # Retrieve shadow root to add it to the node cache + shadow_root = element.shadow_root + + result = execute_async_script(session, """ + const [elem, shadowRoot, resolve] = arguments; + elem.remove(); + resolve(shadowRoot); + """, args=[element, shadow_root]) + assert_error(result, "detached shadow root") + + +@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) +def test_stale_element(session, get_test_page, as_frame): + session.url = get_test_page(as_frame=as_frame) + if as_frame: - session.url = inline(iframe("

    ")) frame = session.find.css("iframe", all=False) session.switch_frame(frame) - else: - session.url = inline("
    ") element = session.find.css("div", all=False) @@ -40,31 +60,12 @@ def test_stale_element_reference(session, iframe, inline, as_frame): @pytest.mark.parametrize("expression, expected_type", [ ("window.frames[0]", Frame), - ("document.getElementById('foo')", Element), - ("document.getElementById('checkbox').shadowRoot", ShadowRoot), + ("document.querySelector('div')", Element), + ("document.querySelector('custom-element').shadowRoot", ShadowRoot), ("window", Window), ], ids=["frame", "node", "shadow-root", "window"]) -def test_element_reference(session, iframe, inline, expression, expected_type): - session.url = inline(f""" - - - -
    - {iframe("

    ")}""") +def test_element_reference(session, get_test_page, expression, expected_type): + session.url = get_test_page() result = execute_async_script(session, f"arguments[0]({expression})") reference = assert_success(result) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/arguments.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/arguments.py index 5024eacf3fb..53c49aaa689 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/arguments.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/arguments.py @@ -46,9 +46,102 @@ def test_object(session): assert actual[1] == value +def test_no_such_element_with_invalid_value(session): + element = Element("foo", session) + + result = execute_script(session, "return true;", args=[element]) + assert_error(result, "no such element") + + +@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) +def test_no_such_element_from_other_window_handle(session, inline, closed): + session.url = inline("

    ") + element = session.find.css("#parent", all=False) + + new_handle = session.new_window() + + if closed: + session.window.close() + + session.window_handle = new_handle + + result = execute_script(session, "return true;", args=[element]) + assert_error(result, "no such element") + + +@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) +def test_no_such_element_from_other_frame(session, get_test_page, closed): + session.url = get_test_page(as_frame=True) + + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + + element = session.find.css("div", all=False) + + session.switch_frame("parent") + + if closed: + session.execute_script("arguments[0].remove();", args=[frame]) + + result = execute_script(session, "return true;", args=[element]) + assert_error(result, "no such element") + + +def test_no_such_shadow_root_with_unknown_shadow_root(session): + shadow_root = ShadowRoot(session, "foo") + + result = execute_script(session, "return true;", args=[shadow_root]) + assert_error(result, "no such shadow root") + + +@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) +def test_no_such_shadow_root_from_other_window_handle(session, get_test_page, closed): + session.url = get_test_page() + + element = session.find.css("custom-element", all=False) + shadow_root = element.shadow_root + + new_handle = session.new_window() + + if closed: + session.window.close() + + session.window_handle = new_handle + + result = execute_script(session, "return true;", args=[shadow_root]) + assert_error(result, "no such shadow root") + + +@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) +def test_no_such_shadow_root_from_other_frame(session, get_test_page, closed): + session.url = get_test_page(as_frame=True) + + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + + element = session.find.css("custom-element", all=False) + shadow_root = element.shadow_root + + session.switch_frame("parent") + + if closed: + execute_script(session, "arguments[0].remove();", args=[frame]) + + result = execute_script(session, "return true;", args=[shadow_root]) + assert_error(result, "no such shadow root") + + +@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) +def test_detached_shadow_root_reference(session, stale_element, as_frame): + shadow_root = stale_element("custom-element", as_frame=as_frame, want_shadow_root=True) + + result = execute_script(session, "return 1;", args=[shadow_root]) + assert_error(result, "detached shadow root") + + @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("

    ", "div", as_frame=as_frame) + element = stale_element("input#text", as_frame=as_frame) result = execute_script(session, "return 1;", args=[element]) assert_error(result, "stale element reference") @@ -56,31 +149,12 @@ def test_stale_element_reference(session, stale_element, as_frame): @pytest.mark.parametrize("expression, expected_type, expected_class", [ ("window.frames[0]", Frame, "Frame"), - ("document.getElementById('foo')", Element, "HTMLDivElement"), - ("document.getElementById('checkbox').shadowRoot", ShadowRoot, "ShadowRoot"), + ("document.querySelector('div')", Element, "HTMLDivElement"), + ("document.querySelector('custom-element').shadowRoot", ShadowRoot, "ShadowRoot"), ("window", Window, "Window") ], ids=["frame", "node", "shadow-root", "window"]) -def test_element_reference(session, iframe, inline, expression, expected_type, expected_class): - session.url = inline(f""" - - - -
    - {iframe("

    ")}""") +def test_element_reference(session, get_test_page, expression, expected_type, expected_class): + session.url = get_test_page(as_frame=False) result = execute_script(session, f"return {expression}") reference = assert_success(result) @@ -88,4 +162,3 @@ def test_element_reference(session, iframe, inline, expression, expected_type, e result = execute_script(session, "return arguments[0].constructor.name", [reference]) assert_success(result, expected_class) - diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/execute.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/execute.py index 8804daf59fc..adfd2836f32 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/execute.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/execute.py @@ -25,46 +25,6 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") -def test_no_such_element_with_invalid_value(session): - element = Element("foo", session) - - result = execute_script(session, "return true;", args=[element]) - assert_error(result, "no such element") - - -@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_window_handle(session, inline, closed): - session.url = inline("

    ") - element = session.find.css("#parent", all=False) - - new_handle = session.new_window() - - if closed: - session.window.close() - - session.window_handle = new_handle - - result = execute_script(session, "return true;", args=[element]) - assert_error(result, "no such element") - - -@pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, url, closed): - session.url = url("/webdriver/tests/support/html/subframe.html") - - frame = session.find.css("#delete-frame", all=False) - session.switch_frame(frame) - - button = session.find.css("#remove-parent", all=False) - if closed: - button.click() - - session.switch_frame("parent") - - result = execute_script(session, "return true;", args=[button]) - assert_error(result, "no such element") - - def test_opening_new_window_keeps_current_window_handle(session, inline): original_handle = session.window_handle original_handles = session.handles diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/node.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/node.py index 83061222b0f..caf85988f15 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/node.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/node.py @@ -19,13 +19,33 @@ PAGE_DATA = """ @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) -def test_stale_element_reference(session, iframe, inline, as_frame): +def test_detached_shadow_root(session, get_test_page, as_frame): + session.url = get_test_page(as_frame) + + if as_frame: + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + + element = session.find.css("custom-element", all=False) + + # Retrieve shadow root to add it to the node cache + shadow_root = element.shadow_root + + result = execute_script(session, """ + const [elem, shadowRoot] = arguments; + elem.remove(); + return shadowRoot; + """, args=[element, shadow_root]) + assert_error(result, "detached shadow root") + + +@pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) +def test_stale_element(session, get_test_page, as_frame): + session.url = get_test_page(as_frame) + if as_frame: - session.url = inline(iframe("

    ")) frame = session.find.css("iframe", all=False) session.switch_frame(frame) - else: - session.url = inline("
    ") element = session.find.css("div", all=False) @@ -39,31 +59,12 @@ def test_stale_element_reference(session, iframe, inline, as_frame): @pytest.mark.parametrize("expression, expected_type", [ ("window.frames[0]", Frame), - ("document.getElementById('foo')", Element), - ("document.getElementById('checkbox').shadowRoot", ShadowRoot), + ("document.querySelector('div')", Element), + ("document.querySelector('custom-element').shadowRoot", ShadowRoot), ("window", Window), ], ids=["frame", "node", "shadow-root", "window"]) -def test_element_reference(session, iframe, inline, expression, expected_type): - session.url = inline(f""" - - - -
    - {iframe("

    ")}""") +def test_element_reference(session, get_test_page, expression, expected_type): + session.url = get_test_page() result = execute_script(session, f"return {expression}") reference = assert_success(result) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/find_element/find.py b/tests/wpt/web-platform-tests/webdriver/tests/find_element/find.py index d16372d025c..50de92554bc 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/find_element/find.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/find_element/find.py @@ -28,35 +28,14 @@ def test_no_browsing_context(session, closed_frame): @pytest.mark.parametrize( - "value", - ["#same1", "#frame", "#shadow"], - ids=["not-existent", "existent-other-frame", "existent-shadow-dom"], + "selector", + ["#same1", "#in-frame", "#in-shadow-root"], + ids=["not-existent", "existent-other-frame", "existent-inside-shadow-root"], ) -def test_no_such_element_with_invalid_value(session, iframe, inline, value): - session.url = inline(f""" - - -

    -
    - {iframe("
    ")} - -
    """) +def test_no_such_element_with_unknown_selector(session, get_test_page, selector): + session.url = get_test_page() - response = find_element(session, "css selector", value) + response = find_element(session, "css selector", selector) assert_error(response, "no such element") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_element/find.py b/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_element/find.py index 811971aeae9..102704cd8e3 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_element/find.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_element/find.py @@ -33,37 +33,25 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") -@pytest.mark.parametrize( - "value", - ["#doesNotExist", "#frame", "#shadow"], - ids=["not-existent", "existent-other-frame", "existent-shadow-dom"], -) -def test_no_such_element_with_invalid_value(session, iframe, inline, value): - session.url = inline(f""" - - -
    -
    - {iframe("
    ")} - -
    """) +def test_no_such_element_with_shadow_root(session, get_test_page): + session.url = get_test_page() - from_element = session.find.css("#top", all=False) - response = find_element(session, from_element.id, "css selector", value) + element = session.find.css("custom-element", all=False) + + result = find_element(session, element.shadow_root.id, "css selector", "#in-shadow-dom") + assert_error(result, "no such element") + + +@pytest.mark.parametrize( + "selector", + ["#same1", "#in-frame", "#in-shadow-dom"], + ids=["not-existent", "existent-other-frame", "existent-inside-shadow-root"], +) +def test_no_such_element_with_unknown_selector(session, get_test_page, selector): + session.url = get_test_page() + + from_element = session.find.css(":root", all=False) + response = find_element(session, from_element.id, "css selector", selector) assert_error(response, "no such element") @@ -91,7 +79,7 @@ def test_no_such_element_with_startnode_from_other_frame(session, iframe, inline @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("

    foo

    ", "div", as_frame=as_frame) + element = stale_element("div#with-children", as_frame=as_frame) response = find_element(session, element.id, "css selector", "p") assert_error(response, "stale element reference") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/conftest.py b/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/conftest.py deleted file mode 100644 index 5fd5f8a065c..00000000000 --- a/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/conftest.py +++ /dev/null @@ -1,19 +0,0 @@ -import pytest - -@pytest.fixture -def get_shadow_page(): - def get_shadow_page(shadow_content): - return """ - - """.format(shadow_content) - return get_shadow_page diff --git a/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/find.py b/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/find.py index 833291da72f..3d125a0f215 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/find.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/find.py @@ -1,4 +1,5 @@ import pytest +from webdriver.client import ShadowRoot from webdriver.transport import Response from tests.support.asserts import assert_error, assert_same_element, assert_success @@ -12,10 +13,11 @@ def find_element(session, shadow_id, using, value): {"using": using, "value": value}) -def test_null_parameter_value(session, http, inline, get_shadow_page): - session.url = inline(get_shadow_page("")) - custom_element = session.find.css("custom-shadow-element", all=False) - shadow_root = custom_element.shadow_root +def test_null_parameter_value(session, http, get_test_page): + session.url = get_test_page() + + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root path = "/session/{session_id}/shadow/{shadow_id}/element".format( session_id=session.session_id, shadow_id=shadow_root.id) @@ -33,103 +35,114 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") -def test_no_such_element_with_unknown_shadow_root(session, inline, get_shadow_page): - session.url = inline(get_shadow_page("
    ")) - custom_element = session.find.css("custom-shadow-element", all=False) - shadow_root = custom_element.shadow_root +def test_no_such_shadow_root_with_element(session, get_test_page): + session.url = get_test_page() - session.url = inline("

    ") + host = session.find.css("custom-element", all=False) + + result = find_element(session, host.id, "css selector", "input") + assert_error(result, "no such shadow root") + + +def test_no_such_shadow_root_with_unknown_shadow_root(session): + shadow_root = ShadowRoot(session, "foo") result = find_element(session, shadow_root.id, "css selector", "input") - assert_error(result, "no such element") + assert_error(result, "no such shadow root") -@pytest.mark.parametrize( - "value", - ["#doesNotExist", "#inner"], - ids=["not-existent", "existent-inner-shadow-dom"], -) -def test_no_such_element_with_invalid_value( - session, iframe, inline, get_shadow_page, value +def test_no_such_shadow_root_with_shadow_root_from_other_window_handle( + session, get_test_page ): - session.url = inline(get_shadow_page(f""" -

    - {get_shadow_page("
    ")} - """)) + session.url = get_test_page() - custom_element = session.find.css("custom-shadow-element", all=False) - shadow_root = custom_element.shadow_root - - response = find_element(session, shadow_root.id, "css selector", value) - assert_error(response, "no such element") - - -def test_no_such_element_with_shadow_root_from_other_window_handle( - session, inline, get_shadow_page -): - session.url = inline(get_shadow_page("
    ")) - custom_element = session.find.css("custom-shadow-element", all=False) - shadow_root = custom_element.shadow_root + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root new_handle = session.new_window() session.window_handle = new_handle response = find_element(session, shadow_root.id, "css selector", "div") - assert_error(response, "no such element") + assert_error(response, "no such shadow root") -def test_no_such_element_with_shadow_root_from_other_frame( - session, iframe, inline, get_shadow_page +def test_no_such_shadow_root_with_shadow_root_from_other_frame( + session, get_test_page ): - session.url = inline(iframe(get_shadow_page("
    "))) - + session.url = get_test_page(as_frame=True) session.switch_frame(0) - custom_element = session.find.css("custom-shadow-element", all=False) - shadow_root = custom_element.shadow_root + + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root + session.switch_frame("parent") response = find_element(session, shadow_root.id, "css selector", "div") - assert_error(response, "no such element") + assert_error(response, "no such shadow root") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) -def test_detached_shadow_root(session, iframe, inline, get_shadow_page, as_frame): - page = get_shadow_page("
    ") +def test_detached_shadow_root(session, get_test_page, as_frame): + session.url = get_test_page(as_frame=as_frame) if as_frame: - session.url = inline(iframe(page)) frame = session.find.css("iframe", all=False) session.switch_frame(frame) - else: - session.url = inline(page) - custom_element = session.find.css("custom-shadow-element", all=False) - shadow_root = custom_element.shadow_root + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root - session.execute_script("arguments[0].remove();", args=[custom_element]) + session.execute_script("arguments[0].remove();", args=[host]) response = find_element(session, shadow_root.id, "css selector", "input") assert_error(response, "detached shadow root") +@pytest.mark.parametrize( + "selector", + ["#same1", "#in-frame", "#with-children"], + ids=["not-existent", "existent-other-frame", "existent-outside-shadow-root"], +) +def test_no_such_element_with_unknown_selector(session, get_test_page, selector): + session.url = get_test_page() + + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root + + response = find_element(session, shadow_root.id, "css selector", selector) + assert_error(response, "no such element") + + @pytest.mark.parametrize("using", ["a", True, None, 1, [], {}]) -def test_invalid_using_argument(session, using): - response = find_element(session, "notReal", using, "value") +def test_invalid_using_argument(session, get_test_page, using): + session.url = get_test_page() + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root + + response = find_element(session, shadow_root.id, using, "input") assert_error(response, "invalid argument") @pytest.mark.parametrize("value", [None, [], {}]) -def test_invalid_selector_argument(session, value): - response = find_element(session, "notReal", "css selector", value) +def test_invalid_selector_argument(session, get_test_page, value): + session.url = get_test_page() + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root + + response = find_element(session, shadow_root.id, "css selector", value) assert_error(response, "invalid argument") -def test_found_element_equivalence(session, inline, get_shadow_page): - session.url = inline(get_shadow_page("
    ")) - custom_element = session.find.css("custom-shadow-element", all=False) - expected = session.execute_script("return arguments[0].shadowRoot.querySelector('input')", - args=(custom_element,)) - shadow_root = custom_element.shadow_root +def test_found_element_equivalence(session, get_test_page): + session.url = get_test_page() + + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root + + expected = session.execute_script(""" + return arguments[0].shadowRoot.querySelector('input') + """, args=(host,)) + response = find_element(session, shadow_root.id, "css selector", "input") value = assert_success(response) assert_same_element(session, value, expected) @@ -141,12 +154,16 @@ def test_found_element_equivalence(session, inline, get_shadow_page): ("partial link text", "link text"), ("tag name", "a"), ("xpath", "//a")]) -def test_find_element(session, inline, get_shadow_page, using, value): - session.url = inline(get_shadow_page("")) - custom_element = session.find.css("custom-shadow-element", all=False) - expected = session.execute_script("return arguments[0].shadowRoot.querySelector('#linkText')", - args=(custom_element,)) - shadow_root = custom_element.shadow_root +def test_find_element(session, get_test_page, using, value): + session.url = get_test_page(shadow_doc="") + + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root + + expected = session.execute_script(""" + return arguments[0].shadowRoot.querySelector('#linkText') + """, args=(host,)) + response = find_element(session, shadow_root.id, using, value) value = assert_success(response) assert_same_element(session, value, expected) @@ -160,12 +177,15 @@ def test_find_element(session, inline, get_shadow_page, using, value): ("LINK TEXT", "LINK TEXT"), ("link text", "LINK TEXT"), ]) -def test_find_element_link_text(session, inline, get_shadow_page, document, value): - session.url = inline(get_shadow_page("
    {0}
    ".format(document))) - custom_element = session.find.css("custom-shadow-element", all=False) - expected = session.execute_script("return arguments[0].shadowRoot.querySelectorAll('a')[0]", - args=(custom_element,)) - shadow_root = custom_element.shadow_root +def test_find_element_link_text(session, get_test_page, document, value): + session.url = get_test_page(shadow_doc=f"
    {document}
    ") + + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root + + expected = session.execute_script(""" + return arguments[0].shadowRoot.querySelectorAll('a')[0] + """, args=(host,)) response = find_element(session, shadow_root.id, "link text", value) value = assert_success(response) @@ -181,12 +201,15 @@ def test_find_element_link_text(session, inline, get_shadow_page, document, valu ("PARTIAL LINK TEXT", "LINK"), ("partial link text", "LINK"), ]) -def test_find_element_partial_link_text(session, inline, get_shadow_page, document, value): - session.url = inline(get_shadow_page("
    {0}
    ".format(document))) - custom_element = session.find.css("custom-shadow-element", all=False) - expected = session.execute_script("return arguments[0].shadowRoot.querySelectorAll('a')[0]", - args=(custom_element,)) - shadow_root = custom_element.shadow_root +def test_find_element_partial_link_text(session, get_test_page, document, value): + session.url = get_test_page(shadow_doc=f"
    {document}
    ") + + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root + + expected = session.execute_script(""" + return arguments[0].shadowRoot.querySelectorAll('a')[0] + """, args=(host,)) response = find_element(session, shadow_root.id, "partial link text", value) value = assert_success(response) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/user_prompts.py b/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/user_prompts.py index ee79ed79f47..3e3381e7853 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/user_prompts.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_shadow_root/user_prompts.py @@ -19,17 +19,20 @@ def find_element(session, shadow_id, using, value): @pytest.fixture -def check_user_prompt_closed_without_exception(session, create_dialog, inline, get_shadow_page): +def check_user_prompt_closed_without_exception(session, create_dialog, get_test_page): def check_user_prompt_closed_without_exception(dialog_type, retval): - session.url = inline(get_shadow_page("

    bar

    ")) - outer_element = session.find.css("custom-shadow-element", all=False) - shadow_root = outer_element.shadow_root - inner_element = session.execute_script("return arguments[0].shadowRoot.querySelector('p')", - args=(outer_element,)) + session.url = get_test_page() + + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root + + inner_element = session.execute_script(""" + return arguments[0].shadowRoot.querySelector('input') + """, args=(host,)) create_dialog(dialog_type, text=dialog_type) - response = find_element(session, shadow_root.id, "css selector", "p") + response = find_element(session, shadow_root.id, "css selector", "input") value = assert_success(response) assert_dialog_handled(session, expected_text=dialog_type, expected_retval=retval) @@ -40,15 +43,16 @@ def check_user_prompt_closed_without_exception(session, create_dialog, inline, g @pytest.fixture -def check_user_prompt_closed_with_exception(session, create_dialog, inline, get_shadow_page): +def check_user_prompt_closed_with_exception(session, create_dialog, get_test_page): def check_user_prompt_closed_with_exception(dialog_type, retval): - session.url = inline(get_shadow_page("

    bar

    ")) - outer_element = session.find.css("custom-shadow-element", all=False) - shadow_root = outer_element.shadow_root + session.url = get_test_page() + + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root create_dialog(dialog_type, text=dialog_type) - response = find_element(session, shadow_root.id, "css selector", "p") + response = find_element(session, shadow_root.id, "css selector", "input") assert_error(response, "unexpected alert open") assert_dialog_handled(session, expected_text=dialog_type, expected_retval=retval) @@ -57,15 +61,16 @@ def check_user_prompt_closed_with_exception(session, create_dialog, inline, get_ @pytest.fixture -def check_user_prompt_not_closed_but_exception(session, create_dialog, inline, get_shadow_page): +def check_user_prompt_not_closed_but_exception(session, create_dialog, get_test_page): def check_user_prompt_not_closed_but_exception(dialog_type): - session.url = inline(get_shadow_page("

    bar

    ")) - outer_element = session.find.css("custom-shadow-element", all=False) - shadow_root = outer_element.shadow_root + session.url = get_test_page() + + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root create_dialog(dialog_type, text=dialog_type) - response = find_element(session, shadow_root.id, "css selector", "p") + response = find_element(session, shadow_root.id, "css selector", "input") assert_error(response, "unexpected alert open") assert session.alert.text == dialog_type diff --git a/tests/wpt/web-platform-tests/webdriver/tests/find_elements/find.py b/tests/wpt/web-platform-tests/webdriver/tests/find_elements/find.py index 6f1283bf351..0d9ce21186c 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/find_elements/find.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/find_elements/find.py @@ -28,37 +28,16 @@ def test_no_browsing_context(session, closed_frame): @pytest.mark.parametrize( - "value", - ["#same1", "#frame", "#shadow"], - ids=["not-existent", "existent-other-frame", "existent-shadow-dom"], + "selector", + ["#same1", "#in-frame", "#in-shadow-dom"], + ids=["not-existent", "existent-other-frame", "existent-inside-shadow-root"], ) -def test_no_such_element_with_invalid_value(session, iframe, inline, value): - session.url = inline(f""" - - -
    -
    - {iframe("
    ")} - -
    """) +def test_no_elements_with_unknown_selector(session, get_test_page,selector): + session.url = get_test_page() - response = find_elements(session, "css selector", value) - assert_success(response) - assert response.body["value"] == [] + response = find_elements(session, "css selector", selector) + elements = assert_success(response) + assert elements == [] @pytest.mark.parametrize("using", ["a", True, None, 1, [], {}]) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_element/find.py b/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_element/find.py index 0e3bf2fd11c..fc898bc95af 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_element/find.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_element/find.py @@ -33,38 +33,27 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") -@pytest.mark.parametrize( - "value", - ["#same1", "#frame", "#shadow"], - ids=["not-existent", "existent-other-frame", "existent-shadow-dom"], -) -def test_no_such_element_with_invalid_value(session, iframe, inline, value): - session.url = inline(f""" - - -
    -
    - {iframe("
    ")} - -
    """) +def test_no_such_element_with_shadow_root(session, get_test_page): + session.url = get_test_page() - element = session.find.css("#top", all=False) - response = find_elements(session, element.id, "css selector", value) - assert response.body["value"] == [] + element = session.find.css("custom-element", all=False) + + result = find_elements(session, element.shadow_root.id, "css selector", "#in-shadow-dom") + assert_error(result, "no such element") + + +@pytest.mark.parametrize( + "selector", + ["#same1", "#in-frame", "#in-shadow-dom"], + ids=["not-existent", "existent-other-frame", "existent-inside-shadow-root"], +) +def test_no_elements_with_unknown_selector(session, get_test_page,selector): + session.url = get_test_page() + + element = session.find.css(":root", all=False) + response = find_elements(session, element.id, "css selector", selector) + elements = assert_success(response) + assert elements == [] def test_no_such_element_with_startnode_from_other_window_handle(session, inline): @@ -91,7 +80,7 @@ def test_no_such_element_with_startnode_from_other_frame(session, iframe, inline @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("

    foo

    ", "div", as_frame=as_frame) + element = stale_element("div#with-children", as_frame=as_frame) response = find_elements(session, element.id, "css selector", "p") assert_error(response, "stale element reference") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/conftest.py b/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/conftest.py deleted file mode 100644 index 5fd5f8a065c..00000000000 --- a/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/conftest.py +++ /dev/null @@ -1,19 +0,0 @@ -import pytest - -@pytest.fixture -def get_shadow_page(): - def get_shadow_page(shadow_content): - return """ - - """.format(shadow_content) - return get_shadow_page diff --git a/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/find.py b/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/find.py index c21f0811258..7f2685b3b55 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/find.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/find.py @@ -1,4 +1,5 @@ import pytest +from webdriver.client import ShadowRoot from webdriver.transport import Response from tests.support.asserts import assert_error, assert_same_element, assert_success @@ -12,10 +13,11 @@ def find_elements(session, shadow_id, using, value): {"using": using, "value": value}) -def test_null_parameter_value(session, http, get_shadow_page): - session.url = get_shadow_page("") - custom_element = session.find.css("custom-shadow-element", all=False) - shadow_root = custom_element.shadow_root +def test_null_parameter_value(session, http, get_test_page): + session.url = get_test_page() + + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root path = "/session/{session_id}/shadow/{shadow_id}/elements".format( session_id=session.session_id, shadow_id=shadow_root.id) @@ -33,104 +35,116 @@ def test_no_browsing_context(session, closed_frame): assert_error(response, "no such window") -def test_no_such_element_with_unknown_shadow_root(session, inline, get_shadow_page): - session.url = inline(get_shadow_page("
    ")) - custom_element = session.find.css("custom-shadow-element", all=False) - shadow_root = custom_element.shadow_root +def test_no_such_shadow_root_with_element(session, get_test_page): + session.url = get_test_page() - session.url = inline("

    ") + host = session.find.css("custom-element", all=False) + + result = find_elements(session, host.id, "css selector", "input") + assert_error(result, "no such shadow root") + + +def test_no_such_shadow_root_with_unknown_shadow_root(session): + shadow_root = ShadowRoot(session, "foo") result = find_elements(session, shadow_root.id, "css selector", "input") - assert_error(result, "no such element") + assert_error(result, "no such shadow root") -@pytest.mark.parametrize( - "value", - ["#doesNotExist", "#inner"], - ids=["not-existent", "existent-inner-shadow-dom"], -) -def test_no_such_element_with_invalid_value( - session, iframe, inline, get_shadow_page, value +def test_no_such_shadow_root_with_shadow_root_from_other_window_handle( + session, get_test_page ): - session.url = inline(get_shadow_page(f""" -

    - {get_shadow_page("
    ")} - """)) + session.url = get_test_page() - custom_element = session.find.css("custom-shadow-element", all=False) - shadow_root = custom_element.shadow_root - - response = find_elements(session, shadow_root.id, "css selector", value) - assert_error(response, "no such element") - - -def test_no_such_element_with_shadow_root_from_other_window_handle( - session, inline, get_shadow_page -): - session.url = inline(get_shadow_page("
    ")) - custom_element = session.find.css("custom-shadow-element", all=False) - shadow_root = custom_element.shadow_root + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root new_handle = session.new_window() session.window_handle = new_handle response = find_elements(session, shadow_root.id, "css selector", "div") - assert_error(response, "no such element") + assert_error(response, "no such shadow root") -def test_no_such_element_with_shadow_root_from_other_frame( - session, iframe, inline, get_shadow_page +def test_no_such_shadow_root_with_shadow_root_from_other_frame( + session, get_test_page ): - session.url = inline(iframe(get_shadow_page("
    "))) - + session.url = get_test_page(as_frame=True) session.switch_frame(0) - custom_element = session.find.css("custom-shadow-element", all=False) - shadow_root = custom_element.shadow_root + + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root + session.switch_frame("parent") response = find_elements(session, shadow_root.id, "css selector", "div") - assert_error(response, "no such element") + assert_error(response, "no such shadow root") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) -def test_detached_shadow_root(session, iframe, inline, get_shadow_page, as_frame): - page = get_shadow_page("
    ") +def test_detached_shadow_root(session, get_test_page, as_frame): + session.url = get_test_page(as_frame=as_frame) if as_frame: - session.url = inline(iframe(page)) frame = session.find.css("iframe", all=False) session.switch_frame(frame) - else: - session.url = inline(page) - custom_element = session.find.css("custom-shadow-element", all=False) - shadow_root = custom_element.shadow_root + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root - session.execute_script("arguments[0].remove();", args=[custom_element]) + session.execute_script("arguments[0].remove();", args=[host]) response = find_elements(session, shadow_root.id, "css selector", "input") assert_error(response, "detached shadow root") +@pytest.mark.parametrize( + "selector", + ["#same1", "#in-frame", "#with-children"], + ids=["not-existent", "existent-other-frame", "existent-outside-shadow-root"], +) +def test_no_elements_with_unknown_selector(session, get_test_page,selector): + session.url = get_test_page() + + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root + + response = find_elements(session, shadow_root.id, "css selector", selector) + elements = assert_success(response) + assert elements == [] + + @pytest.mark.parametrize("using", [("a"), (True), (None), (1), ([]), ({})]) -def test_invalid_using_argument(session, using): - # Step 1 - 2 - response = find_elements(session, "notReal", using, "value") +def test_invalid_using_argument(session, get_test_page, using): + session.url = get_test_page() + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root + + response = find_elements(session, shadow_root.id, using, "input") assert_error(response, "invalid argument") @pytest.mark.parametrize("value", [None, [], {}]) -def test_invalid_selector_argument(session, value): - # Step 3 - 4 - response = find_elements(session, "notReal", "css selector", value) +def test_invalid_selector_argument(session, get_test_page, value): + session.url = get_test_page() + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root + + response = find_elements(session, shadow_root.id, "css selector", value) assert_error(response, "invalid argument") -def test_find_elements_equivalence(session, inline, get_shadow_page): - session.url = inline(get_shadow_page( - "
    ")) - custom_element = session.find.css("custom-shadow-element", all=False) - shadow_root = custom_element.shadow_root +def test_find_elements_equivalence(session, get_test_page): + session.url = get_test_page( + shadow_doc="
    ") + + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root + + expected = session.execute_script(""" + return arguments[0].shadowRoot.querySelector('input') + """, args=(host,)) + response = find_elements(session, shadow_root.id, "css selector", "input") assert_success(response) @@ -141,11 +155,12 @@ def test_find_elements_equivalence(session, inline, get_shadow_page): ("partial link text", "link text"), ("tag name", "a"), ("xpath", "//a")]) -def test_find_elements(session, inline, get_shadow_page, using, value): - # Step 8 - 9 - session.url = inline(get_shadow_page("")) - custom_element = session.find.css("custom-shadow-element", all=False) - shadow_root = custom_element.shadow_root +def test_find_elements(session, get_test_page, using, value): + session.url = get_test_page(shadow_doc="") + + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root + response = find_elements(session, shadow_root.id, using, value) assert_success(response) @@ -158,22 +173,22 @@ def test_find_elements(session, inline, get_shadow_page, using, value): ("LINK TEXT", "LINK TEXT"), ("link text", "LINK TEXT"), ]) -def test_find_elements_link_text(session, inline, get_shadow_page, document, value): - # Step 8 - 9 - session.url = inline(get_shadow_page( - "".format(document))) - custom_element = session.find.css("custom-shadow-element", all=False) - shadow_root = custom_element.shadow_root - expected = session.execute_script("return arguments[0].shadowRoot.querySelectorAll('a')[1]", - args=(custom_element,)) +def test_find_elements_link_text(session, get_test_page, document, value): + session.url = get_test_page(shadow_doc=f"
    not wanted
    {document}
    ") + + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root + + expected = session.execute_script(""" + return arguments[0].shadowRoot.querySelectorAll('a')[1] + """, args=(host,)) response = find_elements(session, shadow_root.id, "link text", value) value = assert_success(response) assert isinstance(value, list) assert len(value) == 1 - found_element = value[0] - assert_same_element(session, found_element, expected) + assert_same_element(session, value[0], expected) @pytest.mark.parametrize("document,value", [ @@ -185,19 +200,19 @@ def test_find_elements_link_text(session, inline, get_shadow_page, document, val ("PARTIAL LINK TEXT", "LINK"), ("partial link text", "LINK"), ]) -def test_find_elements_partial_link_text(session, inline, get_shadow_page, document, value): - # Step 8 - 9 - session.url = inline(get_shadow_page( - "".format(document))) - custom_element = session.find.css("custom-shadow-element", all=False) - shadow_root = custom_element.shadow_root - expected = session.execute_script("return arguments[0].shadowRoot.querySelectorAll('a')[1]", - args=(custom_element,)) +def test_find_elements_partial_link_text(session, get_test_page, document, value): + session.url = get_test_page(shadow_doc=f"
    not wanted
    {document}
    ") + + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root + + expected = session.execute_script(""" + return arguments[0].shadowRoot.querySelectorAll('a')[1] + """, args=(host,)) response = find_elements(session, shadow_root.id, "partial link text", value) value = assert_success(response) assert isinstance(value, list) assert len(value) == 1 - found_element = value[0] - assert_same_element(session, found_element, expected) + assert_same_element(session, value[0], expected) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/user_prompts.py b/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/user_prompts.py index 8ec381b3870..45986ad6dab 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/user_prompts.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_shadow_root/user_prompts.py @@ -19,17 +19,19 @@ def find_elements(session, shadow_id, using, value): @pytest.fixture -def check_user_prompt_closed_without_exception(session, create_dialog, inline, get_shadow_page): +def check_user_prompt_closed_without_exception(session, create_dialog, get_test_page): def check_user_prompt_closed_without_exception(dialog_type, retval): - session.url = inline(get_shadow_page("

    bar

    ")) - outer_element = session.find.css("custom-shadow-element", all=False) - shadow_root = outer_element.shadow_root - inner_element = session.execute_script("return arguments[0].shadowRoot.querySelector('p')", - args=(outer_element,)) + session.url = get_test_page() + + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root + inner_element = session.execute_script(""" + return arguments[0].shadowRoot.querySelector("input") + """, args=(host,)) create_dialog(dialog_type, text=dialog_type) - response = find_elements(session, shadow_root.id, "css selector", "p") + response = find_elements(session, shadow_root.id, "css selector", "input") value = assert_success(response) assert isinstance(value, list) assert len(value) == 1 @@ -42,15 +44,16 @@ def check_user_prompt_closed_without_exception(session, create_dialog, inline, g @pytest.fixture -def check_user_prompt_closed_with_exception(session, create_dialog, inline, get_shadow_page): +def check_user_prompt_closed_with_exception(session, create_dialog, get_test_page): def check_user_prompt_closed_with_exception(dialog_type, retval): - session.url = inline(get_shadow_page("

    bar

    ")) - outer_element = session.find.css("custom-shadow-element", all=False) - shadow_root = outer_element.shadow_root + session.url = get_test_page() + + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root create_dialog(dialog_type, text=dialog_type) - response = find_elements(session, shadow_root.id, "css selector", "p") + response = find_elements(session, shadow_root.id, "css selector", "input") assert_error(response, "unexpected alert open") assert_dialog_handled(session, expected_text=dialog_type, expected_retval=retval) @@ -59,15 +62,16 @@ def check_user_prompt_closed_with_exception(session, create_dialog, inline, get_ @pytest.fixture -def check_user_prompt_not_closed_but_exception(session, create_dialog, inline, get_shadow_page): +def check_user_prompt_not_closed_but_exception(session, create_dialog, get_test_page): def check_user_prompt_not_closed_but_exception(dialog_type): - session.url = inline(get_shadow_page("

    bar

    ")) - outer_element = session.find.css("custom-shadow-element", all=False) - shadow_root = outer_element.shadow_root + session.url = get_test_page() + + host = session.find.css("custom-element", all=False) + shadow_root = host.shadow_root create_dialog(dialog_type, text=dialog_type) - response = find_elements(session, shadow_root.id, "css selector", "p") + response = find_elements(session, shadow_root.id, "css selector", "input") assert_error(response, "unexpected alert open") assert session.alert.text == dialog_type diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_computed_label/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_computed_label/get.py index 32b4ce33bbe..8124fee0c9d 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_computed_label/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_computed_label/get.py @@ -25,6 +25,15 @@ def test_no_such_element_with_invalid_value(session): assert_error(result, "no such element") +def test_no_such_element_with_shadow_root(session, get_test_page): + session.url = get_test_page() + + element = session.find.css("custom-element", all=False) + + result = get_computed_label(session, element.shadow_root.id) + assert_error(result, "no such element") + + @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

    ") @@ -42,25 +51,26 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, url, closed): - session.url = url("/webdriver/tests/support/html/subframe.html") +def test_no_such_element_from_other_frame(session, get_test_page, closed): + session.url = get_test_page(as_frame=True) - frame = session.find.css("#delete-frame", all=False) + frame = session.find.css("iframe", all=False) session.switch_frame(frame) - button = session.find.css("#remove-parent", all=False) - if closed: - button.click() + element = session.find.css("div", all=False) session.switch_frame("parent") - result = get_computed_label(session, button.id) + if closed: + session.execute_script("arguments[0].remove();", args=[frame]) + + result = get_computed_label(session, element.id) assert_error(result, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("", "input", as_frame=as_frame) + element = stale_element("input#text", as_frame=as_frame) response = get_computed_label(session, element.id) assert_error(response, "stale element reference") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_computed_role/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_computed_role/get.py index 1e61799dc94..dcfe753f0dc 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_computed_role/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_computed_role/get.py @@ -25,6 +25,15 @@ def test_no_such_element_with_invalid_value(session): assert_error(result, "no such element") +def test_no_such_element_with_shadow_root(session, get_test_page): + session.url = get_test_page() + + element = session.find.css("custom-element", all=False) + + result = get_computed_role(session, element.shadow_root.id) + assert_error(result, "no such element") + + @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

    ") @@ -42,25 +51,26 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, url, closed): - session.url = url("/webdriver/tests/support/html/subframe.html") +def test_no_such_element_from_other_frame(session, get_test_page, closed): + session.url = get_test_page(as_frame=True) - frame = session.find.css("#delete-frame", all=False) + frame = session.find.css("iframe", all=False) session.switch_frame(frame) - button = session.find.css("#remove-parent", all=False) - if closed: - button.click() + element = session.find.css("div", all=False) session.switch_frame("parent") - result = get_computed_role(session, button.id) + if closed: + session.execute_script("arguments[0].remove();", args=[frame]) + + result = get_computed_role(session, element.id) assert_error(result, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("", "input", as_frame=as_frame) + element = stale_element("input#text", as_frame=as_frame) response = get_computed_role(session, element.id) assert_error(response, "stale element reference") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_attribute/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_attribute/get.py index 87fd5f3333c..e23d7e4d5ab 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_attribute/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_attribute/get.py @@ -5,11 +5,11 @@ from webdriver import Element from tests.support.asserts import assert_error, assert_success -def get_element_attribute(session, element, attr): +def get_element_attribute(session, element_id, attr): return session.transport.send( "GET", "session/{session_id}/element/{element_id}/attribute/{attr}".format( session_id=session.session_id, - element_id=element, + element_id=element_id, attr=attr)) @@ -36,6 +36,15 @@ def test_no_such_element_with_invalid_value(session): assert_error(response, "no such element") +def test_no_such_element_with_shadow_root(session, get_test_page): + session.url = get_test_page() + + element = session.find.css("custom-element", all=False) + + result = get_element_attribute(session, element.shadow_root.id, "id") + assert_error(result, "no such element") + + @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

    ") @@ -53,24 +62,26 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, url, closed): - session.url = url("/webdriver/tests/support/html/subframe.html") +def test_no_such_element_from_other_frame(session, get_test_page, closed): + session.url = get_test_page(as_frame=True) - frame = session.find.css("#delete-frame", all=False) + frame = session.find.css("iframe", all=False) session.switch_frame(frame) - button = session.find.css("#remove-parent", all=False) - if closed: - button.click() + element = session.find.css("div", all=False) session.switch_frame("parent") - response = get_element_attribute(session, button.id, "id") + + if closed: + session.execute_script("arguments[0].remove();", args=[frame]) + + response = get_element_attribute(session, element.id, "id") assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("", "input", as_frame=as_frame) + element = stale_element("input#text", as_frame=as_frame) result = get_element_attribute(session, element.id, "id") assert_error(result, "stale element reference") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py index d178fc25f18..f9797c2cff5 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py @@ -40,6 +40,15 @@ def test_no_such_element_with_invalid_value(session): assert_error(response, "no such element") +def test_no_such_element_with_shadow_root(session, get_test_page): + session.url = get_test_page() + + element = session.find.css("custom-element", all=False) + + result = get_element_css_value(session, element.shadow_root.id, "display") + assert_error(result, "no such element") + + @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

    ") @@ -57,25 +66,26 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, url, closed): - session.url = url("/webdriver/tests/support/html/subframe.html") +def test_no_such_element_from_other_frame(session, get_test_page, closed): + session.url = get_test_page(as_frame=True) - frame = session.find.css("#delete-frame", all=False) + frame = session.find.css("iframe", all=False) session.switch_frame(frame) - button = session.find.css("#remove-parent", all=False) - if closed: - button.click() + element = session.find.css("div", all=False) session.switch_frame("parent") - response = get_element_css_value(session, button.id, "display") + if closed: + session.execute_script("arguments[0].remove();", args=[frame]) + + response = get_element_css_value(session, element.id, "display") assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("", "input", as_frame=as_frame) + element = stale_element("input#text", as_frame=as_frame) result = get_element_css_value(session, element.id, "display") assert_error(result, "stale element reference") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_property/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_property/get.py index 7d9d7083acc..072375804e8 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_property/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_property/get.py @@ -37,6 +37,15 @@ def test_no_such_element_with_invalid_value(session): assert_error(response, "no such element") +def test_no_such_element_with_shadow_root(session, get_test_page): + session.url = get_test_page() + + element = session.find.css("custom-element", all=False) + + result = get_element_property(session, element.shadow_root.id, "id") + assert_error(result, "no such element") + + @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

    ") @@ -54,25 +63,26 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, url, closed): - session.url = url("/webdriver/tests/support/html/subframe.html") +def test_no_such_element_from_other_frame(session, get_test_page, closed): + session.url = get_test_page(as_frame=True) - frame = session.find.css("#delete-frame", all=False) + frame = session.find.css("iframe", all=False) session.switch_frame(frame) - button = session.find.css("#remove-parent", all=False) - if closed: - button.click() + element = session.find.css("div", all=False) session.switch_frame("parent") - response = get_element_property(session, button.id, "id") + if closed: + session.execute_script("arguments[0].remove();", args=[frame]) + + response = get_element_property(session, element.id, "id") assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("", "input", as_frame=as_frame) + element = stale_element("input#text", as_frame=as_frame) result = get_element_property(session, element.id, "id") assert_error(result, "stale element reference") @@ -150,32 +160,18 @@ def test_primitives_set_by_execute_script(session, inline, js_primitive, py_prim ("shadowRoot", ShadowRoot), ("window", Window), ]) -def test_web_reference(session, inline, js_web_reference, py_web_reference): - session.url = inline(""" -

    -

    - - +def test_web_reference(session, get_test_page, js_web_reference, py_web_reference): + session.url = get_test_page() - + session.execute_script(""" + const parent = document.querySelector("body"); + parent.__element = document.querySelector("div"); + parent.__frame = document.querySelector("iframe").contentWindow; + parent.__shadowRoot = document.querySelector("custom-element").shadowRoot; + parent.__window = document.defaultView; """) - elem = session.find.css("#parent", all=False) + elem = session.find.css("body", all=False) response = get_element_property(session, elem.id, "__{}".format(js_web_reference)) value = assert_success(response) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py index 113bc838383..7f87b44e7e9 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py @@ -40,6 +40,15 @@ def test_no_such_element_with_invalid_value(session): assert_error(response, "no such element") +def test_no_such_element_with_shadow_root(session, get_test_page): + session.url = get_test_page() + + element = session.find.css("custom-element", all=False) + + result = get_element_rect(session, element.shadow_root.id) + assert_error(result, "no such element") + + @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

    ") @@ -57,25 +66,26 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, url, closed): - session.url = url("/webdriver/tests/support/html/subframe.html") +def test_no_such_element_from_other_frame(session, get_test_page, closed): + session.url = get_test_page(as_frame=True) - frame = session.find.css("#delete-frame", all=False) + frame = session.find.css("iframe", all=False) session.switch_frame(frame) - button = session.find.css("#remove-parent", all=False) - if closed: - button.click() + element = session.find.css("div", all=False) session.switch_frame("parent") - response = get_element_rect(session, button.id) + if closed: + session.execute_script("arguments[0].remove();", args=[frame]) + + response = get_element_rect(session, element.id) assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("", "input", as_frame=as_frame) + element = stale_element("input#text", as_frame=as_frame) result = get_element_rect(session, element.id) assert_error(result, "stale element reference") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/conftest.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/conftest.py deleted file mode 100644 index 4ca71025d69..00000000000 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/conftest.py +++ /dev/null @@ -1,22 +0,0 @@ -import pytest - -@pytest.fixture -def checkbox_dom(inline): - return """ - - - """ diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/get.py index 55b2089a670..61d0d008100 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/get.py @@ -53,40 +53,46 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, url, closed): - session.url = url("/webdriver/tests/support/html/subframe.html") +def test_no_such_element_from_other_frame(session, get_test_page, closed): + session.url = get_test_page(as_frame=True) - frame = session.find.css("#delete-frame", all=False) + frame = session.find.css("iframe", all=False) session.switch_frame(frame) - button = session.find.css("#remove-parent", all=False) - if closed: - button.click() + element = session.find.css("div", all=False) session.switch_frame("parent") - response = get_shadow_root(session, button.id) + if closed: + session.execute_script("arguments[0].remove();", args=[frame]) + + response = get_shadow_root(session, element.id) assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) -def test_stale_element_reference(session, stale_element, checkbox_dom, as_frame): - element = stale_element(checkbox_dom, "custom-checkbox-element", as_frame=as_frame) +def test_stale_element_reference(session, stale_element, as_frame): + element = stale_element("custom-element", as_frame=as_frame) result = get_shadow_root(session, element.id) assert_error(result, "stale element reference") -def test_get_shadow_root(session, inline, checkbox_dom): - session.url = inline(checkbox_dom) - expected = session.execute_script( - "return document.querySelector('custom-checkbox-element').shadowRoot.host") - custom_element = session.find.css("custom-checkbox-element", all=False) - response = get_shadow_root(session, custom_element.id) +def test_get_shadow_root(session, get_test_page): + session.url = get_test_page() + + host_element = session.find.css("custom-element", all=False) + + response = get_shadow_root(session, host_element.id) value = assert_success(response) assert isinstance(value, dict) assert "shadow-6066-11e4-a52e-4f735466cecf" in value - assert_same_element(session, custom_element, expected) + + expected_host = session.execute_script(""" + return arguments[0].shadowRoot.host + """, args=(host_element,)) + + assert_same_element(session, host_element, expected_host) def test_no_shadow_root(session, inline): diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/user_prompts.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/user_prompts.py index b94650a6f0b..5b991bac26b 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/user_prompts.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_shadow_root/user_prompts.py @@ -13,10 +13,10 @@ def get_shadow_root(session, element_id): @pytest.fixture -def check_user_prompt_closed_without_exception(session, create_dialog, inline, checkbox_dom): +def check_user_prompt_closed_without_exception(session, create_dialog, get_test_page): def check_user_prompt_closed_without_exception(dialog_type, retval): - session.url = inline(checkbox_dom) - element = session.find.css("custom-checkbox-element", all=False) + session.url = get_test_page() + element = session.find.css("custom-element", all=False) create_dialog(dialog_type, text=dialog_type) @@ -30,10 +30,10 @@ def check_user_prompt_closed_without_exception(session, create_dialog, inline, c @pytest.fixture -def check_user_prompt_closed_with_exception(session, create_dialog, inline, checkbox_dom): +def check_user_prompt_closed_with_exception(session, create_dialog, get_test_page): def check_user_prompt_closed_with_exception(dialog_type, retval): - session.url = inline(checkbox_dom) - element = session.find.css("custom-checkbox-element", all=False) + session.url = get_test_page() + element = session.find.css("custom-element", all=False) create_dialog(dialog_type, text=dialog_type) @@ -46,10 +46,10 @@ def check_user_prompt_closed_with_exception(session, create_dialog, inline, chec @pytest.fixture -def check_user_prompt_not_closed_but_exception(session, create_dialog, inline, checkbox_dom): +def check_user_prompt_not_closed_but_exception(session, create_dialog, get_test_page): def check_user_prompt_not_closed_but_exception(dialog_type): - session.url = inline(checkbox_dom) - element = session.find.css("custom-checkbox-element", all=False) + session.url = get_test_page() + element = session.find.css("custom-element", all=False) create_dialog(dialog_type, text=dialog_type) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_tag_name/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_tag_name/get.py index bdfebc2ce79..1bf19309e45 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_tag_name/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_tag_name/get.py @@ -36,6 +36,15 @@ def test_no_such_element_with_invalid_value(session): assert_error(response, "no such element") +def test_no_such_element_with_shadow_root(session, get_test_page): + session.url = get_test_page() + + element = session.find.css("custom-element", all=False) + + result = get_element_tag_name(session, element.shadow_root.id) + assert_error(result, "no such element") + + @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

    ") @@ -53,25 +62,26 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, url, closed): - session.url = url("/webdriver/tests/support/html/subframe.html") +def test_no_such_element_from_other_frame(session, get_test_page, closed): + session.url = get_test_page(as_frame=True) - frame = session.find.css("#delete-frame", all=False) + frame = session.find.css("iframe", all=False) session.switch_frame(frame) - button = session.find.css("#remove-parent", all=False) - if closed: - button.click() + element = session.find.css("div", all=False) session.switch_frame("parent") - response = get_element_tag_name(session, button.id) + if closed: + session.execute_script("arguments[0].remove();", args=[frame]) + + response = get_element_tag_name(session, element.id) assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("", "input", as_frame=as_frame) + element = stale_element("input#text", as_frame=as_frame) result = get_element_tag_name(session, element.id) assert_error(result, "stale element reference") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_text/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_text/get.py index b2c8a09f8c4..aa36c487c80 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_text/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_text/get.py @@ -36,6 +36,15 @@ def test_no_such_element_with_invalid_value(session): assert_error(response, "no such element") +def test_no_such_element_with_shadow_root(session, get_test_page): + session.url = get_test_page() + + element = session.find.css("custom-element", all=False) + + result = get_element_text(session, element.shadow_root.id) + assert_error(result, "no such element") + + @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

    ") @@ -53,25 +62,26 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, url, closed): - session.url = url("/webdriver/tests/support/html/subframe.html") +def test_no_such_element_from_other_frame(session, get_test_page, closed): + session.url = get_test_page(as_frame=True) - frame = session.find.css("#delete-frame", all=False) + frame = session.find.css("iframe", all=False) session.switch_frame(frame) - button = session.find.css("#remove-parent", all=False) - if closed: - button.click() + element = session.find.css("div", all=False) session.switch_frame("parent") - response = get_element_text(session, button.id) + if closed: + session.execute_script("arguments[0].remove();", args=[frame]) + + response = get_element_text(session, element.id) assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("", "input", as_frame=as_frame) + element = stale_element("input#text", as_frame=as_frame) response = get_element_text(session, element.id) assert_error(response, "stale element reference") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py b/tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py index ef9106cce86..34e5cce4197 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py @@ -39,6 +39,15 @@ def test_no_such_element_with_invalid_value(session): assert_error(response, "no such element") +def test_no_such_element_with_shadow_root(session, get_test_page): + session.url = get_test_page() + + element = session.find.css("custom-element", all=False) + + result = is_element_enabled(session, element.shadow_root.id) + assert_error(result, "no such element") + + @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

    ") @@ -56,25 +65,26 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, url, closed): - session.url = url("/webdriver/tests/support/html/subframe.html") +def test_no_such_element_from_other_frame(session, get_test_page, closed): + session.url = get_test_page(as_frame=True) - frame = session.find.css("#delete-frame", all=False) + frame = session.find.css("iframe", all=False) session.switch_frame(frame) - button = session.find.css("#remove-parent", all=False) - if closed: - button.click() + element = session.find.css("input#text", all=False) session.switch_frame("parent") - response = is_element_enabled(session, button.id) + if closed: + session.execute_script("arguments[0].remove();", args=[frame]) + + response = is_element_enabled(session, element.id) assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("", "input", as_frame=as_frame) + element = stale_element("input#text", as_frame=as_frame) result = is_element_enabled(session, element.id) assert_error(result, "stale element reference") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/is_element_selected/selected.py b/tests/wpt/web-platform-tests/webdriver/tests/is_element_selected/selected.py index a57737590c5..b119705e7dd 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/is_element_selected/selected.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/is_element_selected/selected.py @@ -55,6 +55,15 @@ def test_no_such_element_with_invalid_value(session): assert_error(response, "no such element") +def test_no_such_element_with_shadow_root(session, get_test_page): + session.url = get_test_page() + + element = session.find.css("custom-element", all=False) + + result = is_element_selected(session, element.shadow_root.id) + assert_error(result, "no such element") + + @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

    ") @@ -72,25 +81,26 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, url, closed): - session.url = url("/webdriver/tests/support/html/subframe.html") +def test_no_such_element_from_other_frame(session, get_test_page, closed): + session.url = get_test_page(as_frame=True) - frame = session.find.css("#delete-frame", all=False) + frame = session.find.css("iframe", all=False) session.switch_frame(frame) - button = session.find.css("#remove-parent", all=False) - if closed: - button.click() + element = session.find.css("input#text", all=False) session.switch_frame("parent") - response = is_element_selected(session, button.id) + if closed: + session.execute_script("arguments[0].remove();", args=[frame]) + + response = is_element_selected(session, element.id) assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, check_doc, as_frame): - element = stale_element(check_doc, "#checked", as_frame=as_frame) + element = stale_element("input#checkbox", as_frame=as_frame) result = is_element_selected(session, element.id) assert_error(result, "stale element reference") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/pointer_mouse.py b/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/pointer_mouse.py index bbf2dde993b..1b739a75aa0 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/pointer_mouse.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/pointer_mouse.py @@ -28,7 +28,7 @@ def test_no_browsing_context(session, closed_frame, mouse_chain): @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, mouse_chain, as_frame): - element = stale_element("", "input", as_frame=as_frame) + element = stale_element("input#text", as_frame=as_frame) with pytest.raises(StaleElementReferenceException): mouse_chain.click(element=element).perform() diff --git a/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/pointer_pen.py b/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/pointer_pen.py index 6637f031531..29d40276b25 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/pointer_pen.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/pointer_pen.py @@ -25,7 +25,7 @@ def test_no_browsing_context(session, closed_frame, pen_chain): @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, pen_chain, as_frame): - element = stale_element("", "input", as_frame=as_frame) + element = stale_element("input#text", as_frame=as_frame) with pytest.raises(StaleElementReferenceException): pen_chain.click(element=element).perform() diff --git a/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/pointer_touch.py b/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/pointer_touch.py index 9e76273cbbb..03f32af2b48 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/pointer_touch.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/perform_actions/pointer_touch.py @@ -24,7 +24,7 @@ def test_no_browsing_context(session, closed_frame, touch_chain): @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, touch_chain, as_frame): - element = stale_element("", "input", as_frame=as_frame) + element = stale_element("input#text", as_frame=as_frame) with pytest.raises(StaleElementReferenceException): touch_chain.click(element=element).perform() diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures_http.py b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures_http.py index 42a74ba41fb..748fe214a2b 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures_http.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures_http.py @@ -153,24 +153,114 @@ def create_frame(session): @pytest.fixture -def stale_element(current_session, iframe, inline): +def stale_element(current_session, get_test_page): """Create a stale element reference - The given document will be loaded in the top-level or child browsing context. - Before the requested element is returned it is removed from the document's DOM. + The document will be loaded in the top-level or child browsing context. + Before the requested element or its shadow root is returned the element + is removed from the document's DOM. """ - def stale_element(doc, css_value, as_frame=False): + def stale_element(css_value, as_frame=False, want_shadow_root=False): + current_session.url = get_test_page(as_frame=as_frame) + if as_frame: - current_session.url = inline(iframe(doc)) frame = current_session.find.css("iframe", all=False) current_session.switch_frame(frame) - else: - current_session.url = inline(doc) element = current_session.find.css(css_value, all=False) + shadow_root = element.shadow_root if want_shadow_root else None current_session.execute_script("arguments[0].remove();", args=[element]) - return element + return shadow_root if want_shadow_root else element return stale_element + + +@pytest.fixture +def get_test_page(iframe, inline): + def get_test_page( + as_frame=False, + frame_doc=None, + shadow_doc=None, + nested_shadow_dom=False + ): + if frame_doc is None: + frame_doc = """

    """ + + if shadow_doc is None: + shadow_doc = """ +
    + +
    + """ + + definition_inner_shadow_dom = "" + if nested_shadow_dom: + definition_inner_shadow_dom = f""" + customElements.define('inner-custom-element', + class extends HTMLElement {{ + constructor() {{ + super(); + this.attachShadow({{mode: "open"}}).innerHTML = ` + {shadow_doc} + `; + }} + }} + ); + """ + shadow_doc = """ + +
    + +
    + """ + + page_data = f""" + +


    +
    Lorem
    +
    + + + + + + + + {iframe(frame_doc)} + + + + + """ + + if as_frame: + return inline(iframe(page_data)) + else: + return inline(page_data) + + return get_test_page diff --git a/tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/switch.py b/tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/switch.py index 9ccab2c6c96..b9cccb3ecc0 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/switch.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/switch.py @@ -75,6 +75,15 @@ def test_frame_id_invalid_types(session, value): assert_error(response, "invalid argument") +def test_frame_id_shadow_root(session, get_test_page): + session.url = get_test_page() + + element = session.find.css("custom-element", all=False) + + result = switch_to_frame(session, element.shadow_root) + assert_error(result, "invalid argument") + + def test_frame_id_null(session, inline, iframe): session.url = inline(iframe("{}
    foo".format(iframe("

    bar")))) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/switch_webelement.py b/tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/switch_webelement.py index 5b571862054..ceadccd8121 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/switch_webelement.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/switch_webelement.py @@ -28,8 +28,8 @@ def test_frame_id_webelement_no_such_element(session, iframe, inline): @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) -def test_frame_id_webelement_stale_element_reference(session, iframe, stale_element, as_frame): - frame = stale_element(iframe("

    "), "iframe", as_frame=as_frame) +def test_frame_id_webelement_stale_element_reference(session, stale_element, as_frame): + frame = stale_element("iframe", as_frame=as_frame) result = switch_to_frame(session, frame) assert_error(result, "stale element reference") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py index a1fcfac5f44..deea9514ed4 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py @@ -39,6 +39,15 @@ def test_no_such_element_with_invalid_value(session): assert_error(response, "no such element") +def test_no_such_element_with_shadow_root(session, get_test_page): + session.url = get_test_page() + + element = session.find.css("custom-element", all=False) + + result = take_element_screenshot(session, element.shadow_root.id) + assert_error(result, "no such element") + + @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) def test_no_such_element_from_other_window_handle(session, inline, closed): session.url = inline("

    ") @@ -56,25 +65,26 @@ def test_no_such_element_from_other_window_handle(session, inline, closed): @pytest.mark.parametrize("closed", [False, True], ids=["open", "closed"]) -def test_no_such_element_from_other_frame(session, url, closed): - session.url = url("/webdriver/tests/support/html/subframe.html") +def test_no_such_element_from_other_frame(session, get_test_page, closed): + session.url = get_test_page(as_frame=True) - frame = session.find.css("#delete-frame", all=False) + frame = session.find.css("iframe", all=False) session.switch_frame(frame) - button = session.find.css("#remove-parent", all=False) - if closed: - button.click() + element = session.find.css("div", all=False) session.switch_frame("parent") - response = take_element_screenshot(session, button.id) + if closed: + session.execute_script("arguments[0].remove();", args=[frame]) + + response = take_element_screenshot(session, element.id) assert_error(response, "no such element") @pytest.mark.parametrize("as_frame", [False, True], ids=["top_context", "child_context"]) def test_stale_element_reference(session, stale_element, as_frame): - element = stale_element("", "input", as_frame=as_frame) + element = stale_element("input#text", as_frame=as_frame) result = take_element_screenshot(session, element.id) assert_error(result, "stale element reference") diff --git a/tests/wpt/web-platform-tests/webnn/idlharness.https.any.js b/tests/wpt/web-platform-tests/webnn/idlharness.https.any.js index 6122134268c..a443fa14b91 100644 --- a/tests/wpt/web-platform-tests/webnn/idlharness.https.any.js +++ b/tests/wpt/web-platform-tests/webnn/idlharness.https.any.js @@ -23,7 +23,7 @@ idl_test( ML: ['navigator.ml'], MLContext: ['context'], MLOperand: ['input', 'filter', 'output'], - MLOperator: ['relu'], + MLActivation: ['relu'], MLGraphBuilder: ['builder'], MLGraph: ['graph'] }); diff --git a/tests/wpt/web-platform-tests/webnn/resources/test_data/gemm.json b/tests/wpt/web-platform-tests/webnn/resources/test_data/gemm.json index 909b8e31cea..1323dcbdd8d 100644 --- a/tests/wpt/web-platform-tests/webnn/resources/test_data/gemm.json +++ b/tests/wpt/web-platform-tests/webnn/resources/test_data/gemm.json @@ -1,5 +1,76 @@ { "tests": [ + { + "name": "gemm two float32 2D tensors (b is non-constant) default options", + "inputs": { + "a": { + "shape": [3, 4], + "data": [ + -56.58740007894356, + -8.463693021275105, + -33.60814840979707, + -69.9345819964675, + -31.754871657825674, + -69.0880694716634, + -44.633812635599845, + 37.83359091108284, + 39.85443764279378, + 87.53626229197283, + -58.61979797511165, + 86.17968956956639 + ], + "type": "float32" + }, + "b": { + "shape": [4, 5], + "data": [ + 74.15699999092428, + -82.68551467440881, + 82.79218983203177, + -56.619649349016356, + -29.919301737430843, + 52.72523586750535, + 40.38894562832144, + -86.1538796254429, + 49.70186032210458, + -88.36174898219937, + 32.96952501732156, + -75.39375464830265, + -83.54552683809598, + -16.832533476778934, + -64.06752294643567, + 88.49965844336901, + -51.5503195367836, + -17.789968243371447, + -3.978486562449305, + 44.284669635083674 + ], + "type": "float32" + } + }, + "expected": { + "name": "output", + "shape": [3, 5], + "data": [ + -11939.8330078125, + 10476.11328125, + 96.12957763671875, + 3627.241455078125, + 1497.0828857421875, + -4120.826171875, + 1250.050537109375, + 6379.04638671875, + -1035.075927734375, + 11589.8515625, + 13265.0615234375, + 217.088623046875, + -877.6643676757812, + 2738.025634765625, + -1355.2103271484375 + ], + "type": "float32" + } + }, { "name": "gemm two float32 2D tensors default options", "inputs": { @@ -45,7 +116,8 @@ -3.978486562449305, 44.284669635083674 ], - "type": "float32" + "type": "float32", + "constant": true } }, "expected": { @@ -117,7 +189,8 @@ -3.978486562449305, 44.284669635083674 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -211,7 +284,8 @@ -3.978486562449305, 44.284669635083674 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -295,7 +369,8 @@ -3.978486562449305, 44.284669635083674 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -377,7 +452,8 @@ -3.978486562449305, 44.284669635083674 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -455,7 +531,8 @@ -3.978486562449305, 44.284669635083674 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -533,7 +610,8 @@ -3.978486562449305, 44.284669635083674 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -607,7 +685,8 @@ -3.978486562449305, 44.284669635083674 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -681,7 +760,8 @@ -3.978486562449305, 44.284669635083674 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -755,7 +835,8 @@ -3.978486562449305, 44.284669635083674 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -850,7 +931,8 @@ -3.978486562449305, 44.284669635083674 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -924,7 +1006,8 @@ -3.978486562449305, 44.284669635083674 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -998,7 +1081,8 @@ -64.06752294643567, 44.284669635083674 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -1072,7 +1156,8 @@ -3.978486562449305, 44.284669635083674 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { @@ -1146,7 +1231,8 @@ -64.06752294643567, 44.284669635083674 ], - "type": "float32" + "type": "float32", + "constant": true } }, "options": { diff --git a/tests/wpt/web-platform-tests/webrtc-encoded-transform/set-metadata.https.html b/tests/wpt/web-platform-tests/webrtc-encoded-transform/set-metadata.https.html index ad346c12e44..712971a6261 100644 --- a/tests/wpt/web-platform-tests/webrtc-encoded-transform/set-metadata.https.html +++ b/tests/wpt/web-platform-tests/webrtc-encoded-transform/set-metadata.https.html @@ -75,11 +75,9 @@ promise_test(async t => { // webrtc struct for all metadata? assert_equals(cloneMetadata.synchronizationSource, metadata.synchronizationSource, 'synchronizationSource'); - // TODO(https://crbug.com/webrtc/14709): This property is not cloned either. - // When clone() is refactored on to of setMetadata() and all properties are - // set, also expect `contributingSources` to match. - // assert_array_equals(cloneMetadata.contributingSources, - // metadata.contributingSources, 'contributingSources'); + assert_array_equals(cloneMetadata.contributingSources, + metadata.contributingSources, 'contributingSources'); assert_equals(cloneMetadata.payloadType, metadata.payloadType, 'payloadType'); }, "[VP8] setMetadata() carries over codec-specific properties"); + diff --git a/tests/wpt/web-platform-tests/webrtc-extensions/RTCRtpTransceiver-headerExtensionControl.html b/tests/wpt/web-platform-tests/webrtc-extensions/RTCRtpTransceiver-headerExtensionControl.html index e823bd830c6..4925850ff03 100644 --- a/tests/wpt/web-platform-tests/webrtc-extensions/RTCRtpTransceiver-headerExtensionControl.html +++ b/tests/wpt/web-platform-tests/webrtc-extensions/RTCRtpTransceiver-headerExtensionControl.html @@ -5,6 +5,7 @@ + diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-GC.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-GC.https.html new file mode 100644 index 00000000000..76ae3087e4b --- /dev/null +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-GC.https.html @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-encodings.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-encodings.html index b68347cbaf9..22abbb3718a 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-encodings.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpParameters-encodings.html @@ -422,6 +422,32 @@ sender.setParameters(param)); }, `sender.setParameters() with encodings unset should reject with TypeError`); + promise_test(async t => { + const pc = new RTCPeerConnection(); + t.add_cleanup(() => pc.close()); + const { sender } = pc.addTransceiver('video'); + + const param = sender.getParameters(); + + param.encodings = []; + + return promise_rejects_dom(t, 'InvalidModificationError', + sender.setParameters(param)); + }, `sender.setParameters() with empty encodings should reject with InvalidModificationError (video)`); + + promise_test(async t => { + const pc = new RTCPeerConnection(); + t.add_cleanup(() => pc.close()); + const { sender } = pc.addTransceiver('audio'); + + const param = sender.getParameters(); + + param.encodings = []; + + return promise_rejects_dom(t, 'InvalidModificationError', + sender.setParameters(param)); + }, `sender.setParameters() with empty encodings should reject with InvalidModificationError (audio)`); + promise_test(async t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); diff --git a/tests/wpt/web-platform-tests/webrtc/protocol/rtp-headerextensions.html b/tests/wpt/web-platform-tests/webrtc/protocol/rtp-headerextensions.html new file mode 100644 index 00000000000..677813742fe --- /dev/null +++ b/tests/wpt/web-platform-tests/webrtc/protocol/rtp-headerextensions.html @@ -0,0 +1,79 @@ + + +payload type handling (assuming rtcp-mux) + + + + diff --git a/tests/wpt/web-platform-tests/webxr/layers/xrSession_updateRenderState.https.html b/tests/wpt/web-platform-tests/webxr/layers/xrSession_updateRenderState.https.html new file mode 100644 index 00000000000..52f4b087bc7 --- /dev/null +++ b/tests/wpt/web-platform-tests/webxr/layers/xrSession_updateRenderState.https.html @@ -0,0 +1,65 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js b/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js index 1a0d7bddad5..d0d4fa27474 100644 --- a/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js +++ b/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js @@ -142,6 +142,7 @@ const ALL_FEATURES = [ 'depth-sensing', 'secondary-views', 'camera-access', + 'layers' ]; const TRACKED_IMMERSIVE_DEVICE = { diff --git a/tests/wpt/web-platform-tests/window-placement/resources/helpers.js b/tests/wpt/web-platform-tests/window-placement/resources/helpers.js index f6acb54c267..92442f91332 100644 --- a/tests/wpt/web-platform-tests/window-placement/resources/helpers.js +++ b/tests/wpt/web-platform-tests/window-placement/resources/helpers.js @@ -28,7 +28,7 @@ async function setUpWindowManagement(setUpTest, setUpButton) { log(`WARNING: Run via 'wpt serve'; file URLs lack permission support`); try { // Support manual testing where test_driver is not running. - await test_driver.set_permission({ name: 'window-placement' }, 'granted'); + await test_driver.set_permission({ name: 'window-management' }, 'granted'); } catch { } const setUpWatcher = new EventWatcher(setUpTest, setUpButton, ['click']); diff --git a/tests/wpt/web-platform-tests/workers/importscripts_mime.any.js b/tests/wpt/web-platform-tests/workers/importscripts_mime.any.js index 950edb28d16..bfdfc191fd3 100644 --- a/tests/wpt/web-platform-tests/workers/importscripts_mime.any.js +++ b/tests/wpt/web-platform-tests/workers/importscripts_mime.any.js @@ -40,13 +40,13 @@ let test_cases = [ ["TEXT/HTML", false], ]; -for (var test_case of test_cases) { +for (const [mimeType, isScriptType] of test_cases) { test(t => { - let import_url = "/workers/support/imported_script.py?mime=" + test_case[0]; - if (test_case[1]) { + let import_url = "/workers/support/imported_script.py?mime=" + mimeType; + if (isScriptType) { assert_equals(undefined, importScripts(import_url)); } else { assert_throws_dom("NetworkError", _ => { importScripts(import_url) }) } - }, "importScripts() requires scripty MIME types: " + test_case[0] + " is " + (test_case[1] ? "allowed" : "blocked") + "."); + }, "importScripts() requires scripty MIME types: " + mimeType + " is " + (isScriptType ? "allowed" : "blocked") + "."); } diff --git a/tests/wpt/web-platform-tests/workers/importscripts_mime_local.any.js b/tests/wpt/web-platform-tests/workers/importscripts_mime_local.any.js new file mode 100644 index 00000000000..62d690d8af0 --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/importscripts_mime_local.any.js @@ -0,0 +1,66 @@ +// META: global=dedicatedworker,sharedworker +// +// Tests for https://github.com/whatwg/html/issues/8869 + +importScripts("/resources/testharness.js"); + +let test_cases = [ + // Supported mimetypes: + ["text/javascript", true], + ["application/javascript", true], + ["text/ecmascript", true], + + // Blocked mimetpyes: + ["image/png", false], + ["text/csv", false], + ["video/mpeg", false], + + // Legacy mimetypes: + ["text/html", false], + ["text/plain", false], + ["application/xml", false], + ["application/octet-stream", false], + + // Potato mimetypes: + ["text/potato", false], + ["potato/text", false], + ["aaa/aaa", false], + ["zzz/zzz", false], + + // Parameterized mime types: + ["text/javascript; charset=utf-8", true], + ["text/javascript;charset=utf-8", true], + ["text/javascript;bla;bla", true], + ["text/csv; charset=utf-8", false], + ["text/csv;charset=utf-8", false], + ["text/csv;bla;bla", false], + + // Funky capitalization: + ["Text/html", false], + ["text/Html", false], + ["TeXt/HtMl", false], + ["TEXT/HTML", false], +]; + +for (const [mimeType, isScriptType] of test_cases) { + test(t => { + let import_url = `data:${ mimeType },`; + if (isScriptType) { + assert_equals(undefined, importScripts(import_url)); + } else { + assert_throws_dom("NetworkError", _ => { importScripts(import_url) }) + } + }, "importScripts() requires scripty MIME types for data: URLs: " + mimeType + " is " + (isScriptType ? "allowed" : "blocked") + "."); +} + +for (const [mimeType, isScriptType] of test_cases) { + test(t => { + let import_url = URL.createObjectURL(new Blob([""], { type: mimeType })); + if (isScriptType) { + assert_equals(undefined, importScripts(import_url)); + } else { + assert_throws_dom("NetworkError", _ => { importScripts(import_url) }) + } + }, "importScripts() requires scripty MIME types for blob: URLs: " + mimeType + " is " + (isScriptType ? "allowed" : "blocked") + "."); +} +done(); diff --git a/tests/wpt/web-platform-tests/xhr/formdata/constructor-submitter.html b/tests/wpt/web-platform-tests/xhr/formdata/constructor-submitter.html index fd4ec862387..542357df34d 100644 --- a/tests/wpt/web-platform-tests/xhr/formdata/constructor-submitter.html +++ b/tests/wpt/web-platform-tests/xhr/formdata/constructor-submitter.html @@ -41,6 +41,14 @@ test(() => { ); }, 'FormData construction should allow a null submitter'); // the use case here is so web developers can avoid null checks, e.g. `new FormData(e.target, e.submitter)` +test(() => { + assertFormDataEntries(new FormData(undefined, undefined), []); +}, 'FormData construction should allow an undefined form and an undefined submitter'); + +test(() => { + assertFormDataEntries(new FormData(undefined, null), []); +}, 'FormData construction should allow an undefined form and a null submitter'); + test(() => { assert_throws_js(TypeError, () => new FormData(form, document.querySelector('[name=n1]'))); }, 'FormData construction should throw a TypeError if a non-null submitter is not a submit button'); diff --git a/tests/wpt/web-platform-tests/xhr/resources/bad-chunk-encoding.py b/tests/wpt/web-platform-tests/xhr/resources/bad-chunk-encoding.py index c34c5fa1de2..7ed0ad4ae11 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/bad-chunk-encoding.py +++ b/tests/wpt/web-platform-tests/xhr/resources/bad-chunk-encoding.py @@ -7,6 +7,7 @@ def main(request, response): response.headers.set(b"Transfer-Encoding", b"chunked") response.headers.set(b"Content-Type", b"text/plain") response.headers.set(b"X-Content-Type-Options", b"nosniff") + response.headers.set(b"Connection", b"close") response.close_connection = True response.write_status_headers() time.sleep(delay) diff --git a/tests/wpt/web-platform-tests/xhr/resources/echo-content-type.py b/tests/wpt/web-platform-tests/xhr/resources/echo-content-type.py index 53e1de5b32d..595c88f32a7 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/echo-content-type.py +++ b/tests/wpt/web-platform-tests/xhr/resources/echo-content-type.py @@ -1,5 +1,6 @@ def main(request, response): response.headers.set(b"Content-Type", b"text/plain") + response.headers.set(b"Connection", b"close") response.status = 200 response.content = request.headers.get(b"Content-Type") response.close_connection = True diff --git a/tests/wpt/web-platform-tests/xhr/resources/echo-headers.py b/tests/wpt/web-platform-tests/xhr/resources/echo-headers.py index 1c5bd46709d..58a7ed5637f 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/echo-headers.py +++ b/tests/wpt/web-platform-tests/xhr/resources/echo-headers.py @@ -1,6 +1,7 @@ def main(request, response): response.writer.write_status(200) response.writer.write_header(b"Content-Type", b"text/plain") + response.writer.write_header(b"Connection", b"close") response.writer.end_headers() response.writer.write(str(request.raw_headers)) response.close_connection = True