diff --git a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini index 3a3d15b8406..947e223fb28 100644 --- a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini +++ b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini @@ -14,9 +14,6 @@ [Revoke blob URL after creating Request, will fetch] expected: FAIL - [Revoke blob URL after calling fetch, fetch should succeed] - expected: FAIL - [url-with-fetch.any.html] [Untitled] @@ -37,6 +34,3 @@ [Revoke blob URL after creating Request, will fetch] expected: FAIL - [Revoke blob URL after calling fetch, fetch should succeed] - expected: FAIL - diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 25b0730d62d..988d579088a 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -19177,6 +19177,12 @@ {} ] ], + "web-nfc/NFCReader-manual.https.html": [ + [ + "web-nfc/NFCReader-manual.https.html", + {} + ] + ], "web-nfc/nfc_hw_disabled-manual.https.html": [ [ "web-nfc/nfc_hw_disabled-manual.https.html", @@ -19502,7 +19508,7 @@ "/acid/acid2/reftest.html", [ [ - "/acid/acid2/reference.html", + "/acid/acid2/px-reference.html", "==" ] ], @@ -137721,6 +137727,18 @@ {} ] ], + "css/css-sizing/range-percent-intrinsic-size-2a.html": [ + [ + "/css/css-sizing/range-percent-intrinsic-size-2a.html", + [ + [ + "/css/css-sizing/range-percent-intrinsic-size-2a-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-sizing/whitespace-and-break.html": [ [ "/css/css-sizing/whitespace-and-break.html", @@ -138429,6 +138447,18 @@ {} ] ], + "css/css-text-decor/text-decoration-propagation-shadow.html": [ + [ + "/css/css-text-decor/text-decoration-propagation-shadow.html", + [ + [ + "/css/css-text-decor/reference/text-decoration-underline-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-text-decor/text-decoration-style-multiple.html": [ [ "/css/css-text-decor/text-decoration-style-multiple.html", @@ -172505,6 +172535,378 @@ {} ] ], + "css/filter-effects/tainting-feblend-001.html": [ + [ + "/css/filter-effects/tainting-feblend-001.html", + [ + [ + "/css/filter-effects/reference/green-blue-stripe-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-feblend-002.html": [ + [ + "/css/filter-effects/tainting-feblend-002.html", + [ + [ + "/css/filter-effects/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-fecomponenttransfer-001.html": [ + [ + "/css/filter-effects/tainting-fecomponenttransfer-001.html", + [ + [ + "/css/filter-effects/reference/green-blue-stripe-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-fecomponenttransfer-002.html": [ + [ + "/css/filter-effects/tainting-fecomponenttransfer-002.html", + [ + [ + "/css/filter-effects/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-fecomposite-001.html": [ + [ + "/css/filter-effects/tainting-fecomposite-001.html", + [ + [ + "/css/filter-effects/reference/green-blue-stripe-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-fecomposite-002.html": [ + [ + "/css/filter-effects/tainting-fecomposite-002.html", + [ + [ + "/css/filter-effects/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-feconvolvematrix-001.html": [ + [ + "/css/filter-effects/tainting-feconvolvematrix-001.html", + [ + [ + "/css/filter-effects/reference/green-blue-stripe-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-feconvolvematrix-002.html": [ + [ + "/css/filter-effects/tainting-feconvolvematrix-002.html", + [ + [ + "/css/filter-effects/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-fediffuselighting-001.html": [ + [ + "/css/filter-effects/tainting-fediffuselighting-001.html", + [ + [ + "/css/filter-effects/reference/green-blue-stripe-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-fediffuselighting-002.html": [ + [ + "/css/filter-effects/tainting-fediffuselighting-002.html", + [ + [ + "/css/filter-effects/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-fediffuselighting-003.html": [ + [ + "/css/filter-effects/tainting-fediffuselighting-003.html", + [ + [ + "/css/filter-effects/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-fediffuselighting-dynamic.html": [ + [ + "/css/filter-effects/tainting-fediffuselighting-dynamic.html", + [ + [ + "/css/filter-effects/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-fedisplacementmap-001.html": [ + [ + "/css/filter-effects/tainting-fedisplacementmap-001.html", + [ + [ + "/css/filter-effects/reference/green-blue-stripe-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-fedisplacementmap-002.html": [ + [ + "/css/filter-effects/tainting-fedisplacementmap-002.html", + [ + [ + "/css/filter-effects/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-fedropshadow-001.html": [ + [ + "/css/filter-effects/tainting-fedropshadow-001.html", + [ + [ + "/css/filter-effects/reference/green-blue-stripe-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-fedropshadow-002.html": [ + [ + "/css/filter-effects/tainting-fedropshadow-002.html", + [ + [ + "/css/filter-effects/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-fedropshadow-003.html": [ + [ + "/css/filter-effects/tainting-fedropshadow-003.html", + [ + [ + "/css/filter-effects/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-feflood-001.html": [ + [ + "/css/filter-effects/tainting-feflood-001.html", + [ + [ + "/css/filter-effects/reference/green-blue-stripe-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-feflood-002.html": [ + [ + "/css/filter-effects/tainting-feflood-002.html", + [ + [ + "/css/filter-effects/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-feflood-dynamic.html": [ + [ + "/css/filter-effects/tainting-feflood-dynamic.html", + [ + [ + "/css/filter-effects/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-fegaussianblur-001.html": [ + [ + "/css/filter-effects/tainting-fegaussianblur-001.html", + [ + [ + "/css/filter-effects/reference/green-blue-stripe-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-fegaussianblur-002.html": [ + [ + "/css/filter-effects/tainting-fegaussianblur-002.html", + [ + [ + "/css/filter-effects/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-femorphology-001.html": [ + [ + "/css/filter-effects/tainting-femorphology-001.html", + [ + [ + "/css/filter-effects/reference/green-blue-stripe-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-femorphology-002.html": [ + [ + "/css/filter-effects/tainting-femorphology-002.html", + [ + [ + "/css/filter-effects/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-feoffset-001.html": [ + [ + "/css/filter-effects/tainting-feoffset-001.html", + [ + [ + "/css/filter-effects/reference/green-blue-stripe-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-feoffset-002.html": [ + [ + "/css/filter-effects/tainting-feoffset-002.html", + [ + [ + "/css/filter-effects/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-fespecularlighting-001.html": [ + [ + "/css/filter-effects/tainting-fespecularlighting-001.html", + [ + [ + "/css/filter-effects/reference/green-blue-stripe-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-fespecularlighting-002.html": [ + [ + "/css/filter-effects/tainting-fespecularlighting-002.html", + [ + [ + "/css/filter-effects/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-fespecularlighting-003.html": [ + [ + "/css/filter-effects/tainting-fespecularlighting-003.html", + [ + [ + "/css/filter-effects/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-fetile-001.html": [ + [ + "/css/filter-effects/tainting-fetile-001.html", + [ + [ + "/css/filter-effects/reference/green-blue-stripe-100x100.html", + "==" + ] + ], + {} + ] + ], + "css/filter-effects/tainting-fetile-002.html": [ + [ + "/css/filter-effects/tainting-fetile-002.html", + [ + [ + "/css/filter-effects/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], "css/mediaqueries/aspect-ratio-001.html": [ [ "/css/mediaqueries/aspect-ratio-001.html", @@ -193817,6 +194219,18 @@ {} ] ], + "html/semantics/embedded-content/the-img-element/img-with-containment-and-size.html": [ + [ + "/html/semantics/embedded-content/the-img-element/img-with-containment-and-size.html", + [ + [ + "/html/semantics/embedded-content/the-img-element/img-with-containment-and-size-ref.html", + "==" + ] + ], + {} + ] + ], "html/semantics/embedded-content/the-img-element/sizes/sizes-dynamic-001.html": [ [ "/html/semantics/embedded-content/the-img-element/sizes/sizes-dynamic-001.html", @@ -194741,6 +195155,70 @@ {} ] ], + "infrastructure/reftest/reftest_fuzzy.html": [ + [ + "/infrastructure/reftest/reftest_fuzzy.html", + [ + [ + "/infrastructure/reftest/fuzzy-ref-1.html", + "==" + ] + ], + { + "fuzzy": [ + [ + [ + "/infrastructure/reftest/reftest_fuzzy.html", + "/infrastructure/reftest/fuzzy-ref-1.html", + "==" + ], + [ + [ + 128, + 128 + ], + [ + 100, + 100 + ] + ] + ] + ] + } + ] + ], + "infrastructure/reftest/reftest_fuzzy_1.html": [ + [ + "/infrastructure/reftest/reftest_fuzzy_1.html", + [ + [ + "/infrastructure/reftest/fuzzy-ref-1.html", + "==" + ] + ], + { + "fuzzy": [ + [ + [ + "/infrastructure/reftest/reftest_fuzzy_1.html", + "/infrastructure/reftest/fuzzy-ref-1.html", + "==" + ], + [ + [ + 255, + 255 + ], + [ + 100, + 100 + ] + ] + ] + ] + } + ] + ], "infrastructure/reftest/reftest_match.html": [ [ "/infrastructure/reftest/reftest_match.html", @@ -195561,18 +196039,6 @@ {} ] ], - "shadow-dom/untriaged/shadow-trees/text-decoration-001.html": [ - [ - "/shadow-dom/untriaged/shadow-trees/text-decoration-001.html", - [ - [ - "/shadow-dom/untriaged/shadow-trees/text-decoration-001-ref.html", - "==" - ] - ], - {} - ] - ], "shadow-dom/untriaged/styles/not-apply-in-shadow-root-001.html": [ [ "/shadow-dom/untriaged/styles/not-apply-in-shadow-root-001.html", @@ -203139,6 +203605,11 @@ {} ] ], + "acid/acid2/px-reference.html": [ + [ + {} + ] + ], "acid/acid2/reference.html": [ [ {} @@ -271124,6 +271595,11 @@ {} ] ], + "css/css-sizing/range-percent-intrinsic-size-2a-ref.html": [ + [ + {} + ] + ], "css/css-sizing/support/dynamic-available-size-iframe.html": [ [ {} @@ -271654,6 +272130,11 @@ {} ] ], + "css/css-text-decor/reference/text-decoration-underline-ref.html": [ + [ + {} + ] + ], "css/css-text-decor/reference/text-emphasis-color-001-ref.xht": [ [ {} @@ -281239,6 +281720,11 @@ {} ] ], + "css/filter-effects/reference/green-blue-stripe-100x100.html": [ + [ + {} + ] + ], "css/filter-effects/reference/svg-feflood-ref.html": [ [ {} @@ -290719,6 +291205,11 @@ {} ] ], + "fetch/stale-while-revalidate/sw-intercept.js": [ + [ + {} + ] + ], "fonts/AD.woff": [ [ {} @@ -292964,6 +293455,11 @@ {} ] ], + "html/browsers/the-window-object/support/closed.html": [ + [ + {} + ] + ], "html/browsers/the-window-object/support/noopener-target.html": [ [ {} @@ -299949,6 +300445,11 @@ {} ] ], + "html/semantics/embedded-content/the-img-element/img-with-containment-and-size-ref.html": [ + [ + {} + ] + ], "html/semantics/embedded-content/the-img-element/intrinsicsize/intrinsicsize-without-unsized-media.tentative.https.sub.html.headers": [ [ {} @@ -302629,6 +303130,11 @@ {} ] ], + "infrastructure/metadata/infrastructure/reftest/reftest_fuzzy.html.ini": [ + [ + {} + ] + ], "infrastructure/metadata/infrastructure/reftest/reftest_match_fail.html.ini": [ [ {} @@ -302709,6 +303215,11 @@ {} ] ], + "infrastructure/reftest/fuzzy-ref-1.html": [ + [ + {} + ] + ], "infrastructure/reftest/green.html": [ [ {} @@ -314469,11 +314980,6 @@ {} ] ], - "shadow-dom/untriaged/shadow-trees/text-decoration-001-ref.html": [ - [ - {} - ] - ], "shadow-dom/untriaged/styles/not-apply-in-shadow-root-001-ref.html": [ [ {} @@ -322529,6 +323035,11 @@ {} ] ], + "tools/wptrunner/wptrunner/tests/test_manifestexpected.py": [ + [ + {} + ] + ], "tools/wptrunner/wptrunner/tests/test_products.py": [ [ {} @@ -381129,6 +381640,12 @@ {} ] ], + "fetch/stale-while-revalidate/fetch-sw.https.tentative.html": [ + [ + "fetch/stale-while-revalidate/fetch-sw.https.tentative.html", + {} + ] + ], "fetch/stale-while-revalidate/fetch.tentative.html": [ [ "fetch/stale-while-revalidate/fetch.tentative.html", @@ -383279,6 +383796,19 @@ } ] ], + "html/browsers/the-window-object/closed-attribute.window.js": [ + [ + "html/browsers/the-window-object/closed-attribute.window.html", + { + "script_metadata": [ + [ + "script", + "/common/get-host-info.sub.js" + ] + ] + } + ] + ], "html/browsers/the-window-object/focus.window.js": [ [ "html/browsers/the-window-object/focus.window.html", @@ -426730,7 +427260,9 @@ "service-workers/service-worker/registration-mime-types.https.html": [ [ "service-workers/service-worker/registration-mime-types.https.html", - {} + { + "timeout": "long" + } ] ], "service-workers/service-worker/registration-scope.https.html": [ @@ -439925,6 +440457,12 @@ {} ] ], + "web-nfc/NFCReader.html": [ + [ + "web-nfc/NFCReader.html", + {} + ] + ], "web-nfc/NFCReadingEvent_constructor.https.html": [ [ "web-nfc/NFCReadingEvent_constructor.https.html", @@ -439960,12 +440498,6 @@ {} ] ], - "web-nfc/nfc_watch.https.html": [ - [ - "web-nfc/nfc_watch.https.html", - {} - ] - ], "web-share/canShare-files.https.html": [ [ "web-share/canShare-files.https.html", @@ -479721,6 +480253,10 @@ "a17f4ecb85ab33ffce52d20e9cc8b1c7c109b0af", "support" ], + "acid/acid2/px-reference.html": [ + "5a350033e3c974c08f58db8c444ff9e2953de480", + "support" + ], "acid/acid2/reference.html": [ "66eed5ae3553c879af28cf8d4b479dac7adfd0f3", "support" @@ -479730,7 +480266,7 @@ "support" ], "acid/acid2/reftest.html": [ - "0f9b9ac023535183a534608e8df4a709ed269b11", + "80220cee7699343206378306a9e4c3fc0d048093", "reftest" ], "acid/acid2/test.html": [ @@ -566626,7 +567162,7 @@ "testharness" ], "css/css-animations/KeyframeEffect-getKeyframes.tentative.html": [ - "81b0d18946440a34ed80e064ba9c9dd322d10f69", + "efb26e9502471983ef246eaafaaf7a49fd438c67", "testharness" ], "css/css-animations/KeyframeEffect-target.tentative.html": [ @@ -598526,11 +599062,11 @@ "testharness" ], "css/css-sizing/range-percent-intrinsic-size-1-ref.html": [ - "a4419eab319e0732ae9d2ca1422a8154fdf2a781", + "9a68590b6389eb9c1fefc2dc37f42b2a60b3b41a", "support" ], "css/css-sizing/range-percent-intrinsic-size-1.html": [ - "87399578988a1c09c5d031c9090cdce7ba34c783", + "018129aae3a7fcdc127c757d9b4ddba558115d3c", "reftest" ], "css/css-sizing/range-percent-intrinsic-size-2-ref.html": [ @@ -598541,6 +599077,14 @@ "e11e2955891f251409e8519abd48f10fb2dd89e9", "reftest" ], + "css/css-sizing/range-percent-intrinsic-size-2a-ref.html": [ + "815b0a1021cb9113c39fad85b5052429dc74533f", + "support" + ], + "css/css-sizing/range-percent-intrinsic-size-2a.html": [ + "f2c2431978b1596078f48727da0953f23e1f0d3e", + "reftest" + ], "css/css-sizing/support/dynamic-available-size-iframe.html": [ "8b61c876389e1fbd0792dd58763e3e2a3d4ef133", "support" @@ -599685,6 +600229,10 @@ "8c0bee6720355c6216ce6f11d27e2f1fb4d4b401", "support" ], + "css/css-text-decor/reference/text-decoration-underline-ref.html": [ + "2370054a8fbd5cb8c00bfb95401129d01de38d00", + "support" + ], "css/css-text-decor/reference/text-emphasis-color-001-ref.xht": [ "8380c197b326fa184369094e75c7748fff209ee2", "support" @@ -599809,6 +600357,10 @@ "ea6a0c86c19bb3bb27b04cc0c49d2bdf433c5dbf", "reftest" ], + "css/css-text-decor/text-decoration-propagation-shadow.html": [ + "ac365ee046666c7e2945d1e76622b38f723cf6a4", + "reftest" + ], "css/css-text-decor/text-decoration-serialization.tentative.html": [ "2f7b2f55fea63bbb2c752c4c79e4e3415f1578be", "testharness" @@ -606318,7 +606870,7 @@ "testharness" ], "css/css-transforms/parsing/transform-valid.html": [ - "fbde8eaf2d23306b34125eeeafc66a692eaad301", + "e6f10154cb6a1d8b5c9eddbb8f1e7c3b2756554e", "testharness" ], "css/css-transforms/parsing/translate-parsing-invalid.html": [ @@ -624461,6 +625013,10 @@ "f718ea6abfbab54333ba674ff0dcd320d8672bcd", "support" ], + "css/filter-effects/reference/green-blue-stripe-100x100.html": [ + "01546f115d112aa27495b3fd45347b22e30fe7ee", + "support" + ], "css/filter-effects/reference/svg-feflood-ref.html": [ "5623b08ecd71b292e698ee249a79b59d0046300f", "support" @@ -624689,6 +625245,130 @@ "8c9e3ea05805a5030b8034a7a01e53d4984a39dc", "testharness" ], + "css/filter-effects/tainting-feblend-001.html": [ + "416f57849a479e01e2f70a489b92fc4f8bf0ecff", + "reftest" + ], + "css/filter-effects/tainting-feblend-002.html": [ + "3d753413a6cdf44d39d832f3171a8aceb0f6fb6b", + "reftest" + ], + "css/filter-effects/tainting-fecomponenttransfer-001.html": [ + "89c60ba9688b6d680dfa77924531f1ab738e6f65", + "reftest" + ], + "css/filter-effects/tainting-fecomponenttransfer-002.html": [ + "6f29b35ba3144fda4a6fbdce9dee5eaadfca83b5", + "reftest" + ], + "css/filter-effects/tainting-fecomposite-001.html": [ + "ddaa53e1e24c02bba47919dadd572bcb1e146173", + "reftest" + ], + "css/filter-effects/tainting-fecomposite-002.html": [ + "1e68378ac6cc2d6bd5444ea48c12768437ceea1c", + "reftest" + ], + "css/filter-effects/tainting-feconvolvematrix-001.html": [ + "eda1d7e2fc80346191af68a8b780ada1a70dea99", + "reftest" + ], + "css/filter-effects/tainting-feconvolvematrix-002.html": [ + "e7ec038fbdd249541af70caa704997f0c8c765f5", + "reftest" + ], + "css/filter-effects/tainting-fediffuselighting-001.html": [ + "bce3a291819a7273ae1926bfe8dd08314ece3a79", + "reftest" + ], + "css/filter-effects/tainting-fediffuselighting-002.html": [ + "773c25bf029940c84f2f9f8d50445a079755a34e", + "reftest" + ], + "css/filter-effects/tainting-fediffuselighting-003.html": [ + "0b7bb4d19af286e29cf7a64c5cc9c5ea89f5c908", + "reftest" + ], + "css/filter-effects/tainting-fediffuselighting-dynamic.html": [ + "89674095a0cab68653690b543b70c3385c69d0fe", + "reftest" + ], + "css/filter-effects/tainting-fedisplacementmap-001.html": [ + "2c99cc4981e71434bef0786e540945d20fec243a", + "reftest" + ], + "css/filter-effects/tainting-fedisplacementmap-002.html": [ + "9648b54bf3dfd90c40a7142f2ce5f4fc04e74608", + "reftest" + ], + "css/filter-effects/tainting-fedropshadow-001.html": [ + "1b3dbb497ce6a1dde712941ed2d0ca0628a55578", + "reftest" + ], + "css/filter-effects/tainting-fedropshadow-002.html": [ + "26fc687d88a08557c279f71db254e3f1acd55c36", + "reftest" + ], + "css/filter-effects/tainting-fedropshadow-003.html": [ + "d42102aa6c58204da2ed37352851428310403206", + "reftest" + ], + "css/filter-effects/tainting-feflood-001.html": [ + "714e6b992fbd91816366246b3970d4b612f0b339", + "reftest" + ], + "css/filter-effects/tainting-feflood-002.html": [ + "79ea8dac522df16c3532f620e68b6db8b5216b23", + "reftest" + ], + "css/filter-effects/tainting-feflood-dynamic.html": [ + "fc9b3354fab77cdcccb10a42e9dac73a35236587", + "reftest" + ], + "css/filter-effects/tainting-fegaussianblur-001.html": [ + "a938c7494fec6fd7024109338b8a31f6cf13dea1", + "reftest" + ], + "css/filter-effects/tainting-fegaussianblur-002.html": [ + "55dabbbdbb34d8f23f78c776f2080f6dd4656a58", + "reftest" + ], + "css/filter-effects/tainting-femorphology-001.html": [ + "9af566410d2f1aad93efea604280ef4ff680f708", + "reftest" + ], + "css/filter-effects/tainting-femorphology-002.html": [ + "2c097202ee888444a0b7dcf37564744dcd986771", + "reftest" + ], + "css/filter-effects/tainting-feoffset-001.html": [ + "8704b693e812388c44eff46a812718fc504dc1ba", + "reftest" + ], + "css/filter-effects/tainting-feoffset-002.html": [ + "3c04268f5cbedb46a26381ac8f5cdf9e4577e785", + "reftest" + ], + "css/filter-effects/tainting-fespecularlighting-001.html": [ + "c2825258a571c975f0cb6ea64966c2417f763fa7", + "reftest" + ], + "css/filter-effects/tainting-fespecularlighting-002.html": [ + "773b0c7065caffe13462982d7e30dc38c7706ec1", + "reftest" + ], + "css/filter-effects/tainting-fespecularlighting-003.html": [ + "173ed2da9f5ad935ea56ee8649c3a8a87c21eb46", + "reftest" + ], + "css/filter-effects/tainting-fetile-001.html": [ + "c5b955eef85246434a9e884d41e3b0c143608708", + "reftest" + ], + "css/filter-effects/tainting-fetile-002.html": [ + "ed77301d2ef6675662a5f3b121e2489e699cec10", + "reftest" + ], "css/geometry/DOMMatrix-001.html": [ "a8a357bff606925aaa95dce6c4642b81bd8c88ea", "testharness" @@ -637118,7 +637798,7 @@ "support" ], "docs/_writing-tests/reftests.md": [ - "f56a84af3a7915f66f82594f21b5dec2481a9e07", + "51016541365e3a4e658a61004b83fcdeecfc680e", "support" ], "docs/_writing-tests/rendering.md": [ @@ -644333,12 +645013,16 @@ "20d307e9188405dcec011042487aa2c7354930bf", "support" ], + "fetch/stale-while-revalidate/fetch-sw.https.tentative.html": [ + "2286739ecf27966d1efedad7c4d4031475693988", + "testharness" + ], "fetch/stale-while-revalidate/fetch.tentative.html": [ - "5b9b2dc5de2835d1f4a9f49cc63e0b3f03317698", + "33d844fd08f3352bff1677cabf0c1dd06177e40a", "testharness" ], "fetch/stale-while-revalidate/stale-css.py": [ - "425c889ac5ec58527e63ab25a4f70558b7daeef3", + "9566833e507603a35aadd4de622f388d4f77307f", "support" ], "fetch/stale-while-revalidate/stale-css.tentative.html": [ @@ -644346,7 +645030,7 @@ "testharness" ], "fetch/stale-while-revalidate/stale-image.py": [ - "ce7f0fc782613e0a36e3d0aba0521e45f1ca6bf0", + "e0cf94bcd0abc3e2f3aba3ad4448d5f519312335", "support" ], "fetch/stale-while-revalidate/stale-image.tentative.html": [ @@ -644354,13 +645038,17 @@ "testharness" ], "fetch/stale-while-revalidate/stale-script.py": [ - "0f91a9b83486678eabd600ecb6336695e5dd6970", + "5ea5987db3dd707b7ab77d11d883c0217705aaf6", "support" ], "fetch/stale-while-revalidate/stale-script.tentative.html": [ "8cbb54b7dab3bc9b9e8763c5358a9232d24c1e7f", "testharness" ], + "fetch/stale-while-revalidate/sw-intercept.js": [ + "dca7de51b0b8c5518276e70ae219b7bc8f869a95", + "support" + ], "fonts/AD.woff": [ "3df8ea8efdabd11bc45fdcc6d4f3fec771be6650", "support" @@ -647849,6 +648537,10 @@ "a9d42e26dea16afa9743d31aa7b72f3f09e46e68", "support" ], + "html/browsers/the-window-object/closed-attribute.window.js": [ + "88a3beba6f10b80b0b90acdc0b0f957e1a17cefc", + "testharness" + ], "html/browsers/the-window-object/focus.window.js": [ "6ec7feee281e756ae6452e0f9b17d9b93032d010", "testharness" @@ -647961,6 +648653,10 @@ "1fb0ed7c1e62da55b890c6434bee6e46637e0209", "testharness" ], + "html/browsers/the-window-object/support/closed.html": [ + "3b70598e34d0e9b46a8ba2150a1589fecfb90ea8", + "support" + ], "html/browsers/the-window-object/support/noopener-target.html": [ "41e197a74630ac70cb34ab2bf164b188767f7218", "support" @@ -648254,7 +648950,7 @@ "testharness" ], "html/browsers/windows/embedded-opener-remove-frame.html": [ - "9bce93f0888ea25d713944efc9c8a4fdcc371da0", + "a66f52e5f649a1c473822d58182ee042a862d974", "testharness" ], "html/browsers/windows/embedded-opener.html": [ @@ -658389,6 +659085,14 @@ "d26878c9f22d53bb44be515fa9f0ffbb90a71cbd", "support" ], + "html/semantics/embedded-content/the-img-element/img-with-containment-and-size-ref.html": [ + "56176c4b71eb4960f3e11fd323cc09964ce3f3a9", + "support" + ], + "html/semantics/embedded-content/the-img-element/img-with-containment-and-size.html": [ + "a095adc7cf6775e9c9b63832c0c5c9df23756b6c", + "reftest" + ], "html/semantics/embedded-content/the-img-element/img.complete.html": [ "42113cdd2ff15255292f1ad705355f732a4f137c", "testharness" @@ -665038,7 +665742,7 @@ "support" ], "import-maps/resources/resolving.js": [ - "ec2645e599119ab64949c016076164b40277006c", + "0409962e4d7904bd9ddbe8601b7328d8d0ad6d11", "support" ], "import-maps/resources/test-helper.js": [ @@ -665205,6 +665909,10 @@ "472b33f7764bde6e2aea7bc2ccd8bf3739babad2", "support" ], + "infrastructure/metadata/infrastructure/reftest/reftest_fuzzy.html.ini": [ + "1ab2d770afef92b0af4eaf9153ce5344bbbdc964", + "support" + ], "infrastructure/metadata/infrastructure/reftest/reftest_match_fail.html.ini": [ "f3dc3362fac41bbe8ded44589e898ef589cb1a89", "support" @@ -665273,6 +665981,10 @@ "c2e9986ad85dde0483a553459964a0345399a782", "reftest" ], + "infrastructure/reftest/fuzzy-ref-1.html": [ + "e50fc11ef6ea80754e702becfbf675feebe3dbb9", + "support" + ], "infrastructure/reftest/green-ref.html": [ "0e145d60b55b3502639d15f10d4d63a6b0f79b7d", "reftest" @@ -665329,6 +666041,14 @@ "c8e548c462255638a32c474a177759ff6d7cceaf", "reftest_node" ], + "infrastructure/reftest/reftest_fuzzy.html": [ + "7429025798151b620dd72db71a46070aafe6c070", + "reftest" + ], + "infrastructure/reftest/reftest_fuzzy_1.html": [ + "1930fe0ae8fb1aee30e91e691fe6a73ccfc87d0e", + "reftest" + ], "infrastructure/reftest/reftest_match.html": [ "333cc6c1ecdf2000e4b118565661761b876a7299", "reftest" @@ -666006,7 +666726,7 @@ "support" ], "interfaces/web-nfc.idl": [ - "11a36cde6eb7d2d287310635e867f2fe65f4a4fa", + "a5709161bdb45f7a02bdd9b78f73febd8d21e222", "support" ], "interfaces/web-share.idl": [ @@ -691934,7 +692654,7 @@ "support" ], "service-workers/cache-storage/script-tests/cache-match.js": [ - "b2b731cc6546529770c20a0bb5a30168d60b0ec6", + "8bf7fda30967fbb4ed25325d49e0cd99fc16df55", "support" ], "service-workers/cache-storage/script-tests/cache-matchAll.js": [ @@ -692862,7 +693582,7 @@ "testharness" ], "service-workers/service-worker/registration-mime-types.https.html": [ - "9ae5f0956fbaff5c2d94c27e3efd5d402acac36a", + "1d39ecfb086c4dd665f3350468e892381c44d15a", "testharness" ], "service-workers/service-worker/registration-scope.https.html": [ @@ -694881,14 +695601,6 @@ "24d5d016b91a50f1b794c62b81e6ace1d8dd04ba", "reftest" ], - "shadow-dom/untriaged/shadow-trees/text-decoration-001-ref.html": [ - "8c10d251557cfecbdd2bbb1228db284f0fd4b971", - "support" - ], - "shadow-dom/untriaged/shadow-trees/text-decoration-001.html": [ - "d8def126d64a6c0c9b50677fba0b38e486cef479", - "reftest" - ], "shadow-dom/untriaged/shadow-trees/upper-boundary-encapsulation/dom-tree-accessors-001.html": [ "71421481e0739e566ea71e1cf59ba8457ce90197", "testharness" @@ -700274,7 +700986,7 @@ "support" ], "tools/manifest/item.py": [ - "c06daee3e24f07fbe83ab82c916e175832f386ed", + "c6363a707013e83e6ece724eee8069078a3413f4", "support" ], "tools/manifest/log.py": [ @@ -700282,11 +700994,11 @@ "support" ], "tools/manifest/manifest.py": [ - "cec777a30c65532441acc33c92d9244657e973ea", + "159bed2e747f4b425f246639fb5947ce2d319a98", "support" ], "tools/manifest/sourcefile.py": [ - "b5d7cdf8799c98d5b7e00452a54fcd63ccd3e17b", + "78843b089b87c111efe24762e7bee55cf44f55ec", "support" ], "tools/manifest/tests/__init__.py": [ @@ -700306,7 +701018,7 @@ "support" ], "tools/manifest/tests/test_sourcefile.py": [ - "7c368a5311838cc9ee3986ccc17fea5f161d003f", + "18aa55a63a2695b3f3581e1b7eee5042f5cea051", "support" ], "tools/manifest/tests/test_vcs.py": [ @@ -704874,7 +705586,7 @@ "support" ], "tools/wptrunner/docs/expectation.rst": [ - "6a0c77684a3b83aba88436e84b399fd8fb64e325", + "7fe89d943ebdd0cf521d201bff40645fb9b663f7", "support" ], "tools/wptrunner/docs/index.rst": [ @@ -704890,7 +705602,7 @@ "support" ], "tools/wptrunner/requirements.txt": [ - "24a7d3d7e0341472dd032c71d7abfd1f10425ca8", + "37f4fde47869bd0c1f30ab12ef96cb5d625b8c9d", "support" ], "tools/wptrunner/requirements_chrome.txt": [ @@ -705138,7 +705850,7 @@ "support" ], "tools/wptrunner/wptrunner/environment.py": [ - "493d3c43fc06ff1e0bc2105a2c86fb851b3f4de9", + "6563721caee8288047ac84ef62456ce0723738bc", "support" ], "tools/wptrunner/wptrunner/executors/__init__.py": [ @@ -705146,7 +705858,7 @@ "support" ], "tools/wptrunner/wptrunner/executors/base.py": [ - "8958ecfc3bb240ebda2999098f04951d14c90b6e", + "5fa30563890cc1d95bc7cd1843c0aeca4dd3e197", "support" ], "tools/wptrunner/wptrunner/executors/executorchrome.py": [ @@ -705162,7 +705874,7 @@ "support" ], "tools/wptrunner/wptrunner/executors/executormarionette.py": [ - "b70f0ed0b0c2dc9d7dd0fe24934818c0a25f2d3b", + "f9fd97b6ba8b88907db2115157407d153b443a82", "support" ], "tools/wptrunner/wptrunner/executors/executoropera.py": [ @@ -705186,7 +705898,7 @@ "support" ], "tools/wptrunner/wptrunner/executors/executorwebdriver.py": [ - "73f5fcf84a8e742ea74a4d96760547671d593252", + "563252ce2bbfee5a3a92fd39d8c171d8aacdeb18", "support" ], "tools/wptrunner/wptrunner/executors/executorwebkit.py": [ @@ -705254,7 +705966,7 @@ "support" ], "tools/wptrunner/wptrunner/manifestexpected.py": [ - "80284bd8a215e73a1140239a9aec1f312d8cacb5", + "fb3ef627d94dc643f2e64fb0c7203621214e4267", "support" ], "tools/wptrunner/wptrunner/manifestinclude.py": [ @@ -705266,7 +705978,7 @@ "support" ], "tools/wptrunner/wptrunner/metadata.py": [ - "27d053ce9b62c893ddab37c063c18feeaea10351", + "b951ea5b9b43b27d2cf37ccbe17686c780cbd326", "support" ], "tools/wptrunner/wptrunner/products.py": [ @@ -705329,6 +706041,10 @@ "37ede150ef0dc81f97da86c638714cab2a8992e2", "support" ], + "tools/wptrunner/wptrunner/tests/test_manifestexpected.py": [ + "93557108fc7a429b7f0b035e839492538cbf5300", + "support" + ], "tools/wptrunner/wptrunner/tests/test_products.py": [ "c3454a0dd8f5590c96d1be450a94fd3452ac8f4c", "support" @@ -705346,7 +706062,7 @@ "support" ], "tools/wptrunner/wptrunner/tests/test_wpttest.py": [ - "f463dd73f2b8ecab628ae27224ff370834fd5575", + "6daa59b584738e6366ad6a51298746a235253b66", "support" ], "tools/wptrunner/wptrunner/update/__init__.py": [ @@ -705402,7 +706118,7 @@ "support" ], "tools/wptrunner/wptrunner/wptmanifest/backends/conditional.py": [ - "4eb292efb7508a0aac72f392c1af0e88e07fe5fc", + "7ad35756d0c6c34282f3d1a278a40b98a882ae9d", "support" ], "tools/wptrunner/wptrunner/wptmanifest/backends/static.py": [ @@ -705450,7 +706166,7 @@ "support" ], "tools/wptrunner/wptrunner/wpttest.py": [ - "dc1c6b63aefef5ab225bef70e6c3f09e379f60e2", + "6a4fa4fdf82dca14e44d8e3c6d63ce2c7e2b56b2", "support" ], "tools/wptserve/.gitignore": [ @@ -708945,6 +709661,14 @@ "8a08fe0a70edaebb542a4d2ec3f033476fc8b865", "testharness" ], + "web-nfc/NFCReader-manual.https.html": [ + "a3171c3544e4640ca35d2a6de451d05cf8aa008c", + "manual" + ], + "web-nfc/NFCReader.html": [ + "5a0e88433f23d0ca8f71df8d9fcd0c7ebe036345", + "testharness" + ], "web-nfc/NFCReadingEvent_constructor.https.html": [ "6cfcc0d3bddae2430152504fce839d1b96b12ce0", "testharness" @@ -708993,10 +709717,6 @@ "4168898ad47eca829f173a34f7aa430da7b5e48f", "manual" ], - "web-nfc/nfc_watch.https.html": [ - "455b6437a8e1a16dc790adb0956fe72bf909af2c", - "testharness" - ], "web-nfc/resources/nfc_help.js": [ "52d2710fd8173be6f6541b93ae8fa6d9251620f7", "support" @@ -709370,7 +710090,7 @@ "testharness" ], "webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html": [ - "3a11074a41c0918343291505526eaf08a01117a3", + "bee1aa835bf64ef31e7bc61e4bc8e9e8d0c43ec3", "testharness" ], "webaudio/the-audio-api/the-audiodestinationnode-interface/.gitkeep": [ diff --git a/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini b/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini index 8e2ceeddfbe..bcd187f508c 100644 --- a/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini +++ b/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini @@ -6,6 +6,3 @@ [Instant scrolling while doing history navigation.] expected: FAIL - [Smooth scrolling while doing history navigation.] - expected: FAIL - diff --git a/tests/wpt/metadata/css/filter-effects/tainting-feblend-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-feblend-001.html.ini new file mode 100644 index 00000000000..9166e3a6c14 --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-feblend-001.html.ini @@ -0,0 +1,2 @@ +[tainting-feblend-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-feblend-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-feblend-002.html.ini new file mode 100644 index 00000000000..63ccc99a8df --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-feblend-002.html.ini @@ -0,0 +1,2 @@ +[tainting-feblend-002.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fecomponenttransfer-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fecomponenttransfer-001.html.ini new file mode 100644 index 00000000000..1694e02d5c9 --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-fecomponenttransfer-001.html.ini @@ -0,0 +1,2 @@ +[tainting-fecomponenttransfer-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fecomponenttransfer-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fecomponenttransfer-002.html.ini new file mode 100644 index 00000000000..04397518199 --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-fecomponenttransfer-002.html.ini @@ -0,0 +1,2 @@ +[tainting-fecomponenttransfer-002.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fecomposite-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fecomposite-001.html.ini new file mode 100644 index 00000000000..3c58a0f32ff --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-fecomposite-001.html.ini @@ -0,0 +1,2 @@ +[tainting-fecomposite-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fecomposite-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fecomposite-002.html.ini new file mode 100644 index 00000000000..7c4d29d8ad7 --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-fecomposite-002.html.ini @@ -0,0 +1,2 @@ +[tainting-fecomposite-002.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-feconvolvematrix-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-feconvolvematrix-001.html.ini new file mode 100644 index 00000000000..3fa2cd4e419 --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-feconvolvematrix-001.html.ini @@ -0,0 +1,2 @@ +[tainting-feconvolvematrix-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-feconvolvematrix-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-feconvolvematrix-002.html.ini new file mode 100644 index 00000000000..c1860185de0 --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-feconvolvematrix-002.html.ini @@ -0,0 +1,2 @@ +[tainting-feconvolvematrix-002.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-001.html.ini new file mode 100644 index 00000000000..215d4b1de8f --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-001.html.ini @@ -0,0 +1,2 @@ +[tainting-fediffuselighting-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-002.html.ini new file mode 100644 index 00000000000..bfb1a4daf01 --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-002.html.ini @@ -0,0 +1,2 @@ +[tainting-fediffuselighting-002.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-003.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-003.html.ini new file mode 100644 index 00000000000..7cefa8e7b3d --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-003.html.ini @@ -0,0 +1,2 @@ +[tainting-fediffuselighting-003.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-dynamic.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-dynamic.html.ini new file mode 100644 index 00000000000..267277ae17e --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-dynamic.html.ini @@ -0,0 +1,2 @@ +[tainting-fediffuselighting-dynamic.html] + expected: TIMEOUT diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fedisplacementmap-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fedisplacementmap-001.html.ini new file mode 100644 index 00000000000..c78e0ede09d --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-fedisplacementmap-001.html.ini @@ -0,0 +1,2 @@ +[tainting-fedisplacementmap-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fedisplacementmap-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fedisplacementmap-002.html.ini new file mode 100644 index 00000000000..9afe3cfb3d7 --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-fedisplacementmap-002.html.ini @@ -0,0 +1,2 @@ +[tainting-fedisplacementmap-002.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fedropshadow-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fedropshadow-001.html.ini new file mode 100644 index 00000000000..3abe70d200f --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-fedropshadow-001.html.ini @@ -0,0 +1,2 @@ +[tainting-fedropshadow-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fedropshadow-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fedropshadow-002.html.ini new file mode 100644 index 00000000000..a88aa8d2f47 --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-fedropshadow-002.html.ini @@ -0,0 +1,2 @@ +[tainting-fedropshadow-002.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fedropshadow-003.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fedropshadow-003.html.ini new file mode 100644 index 00000000000..7a45c77aa6a --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-fedropshadow-003.html.ini @@ -0,0 +1,2 @@ +[tainting-fedropshadow-003.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-feflood-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-feflood-001.html.ini new file mode 100644 index 00000000000..09f596d8c9c --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-feflood-001.html.ini @@ -0,0 +1,2 @@ +[tainting-feflood-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-feflood-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-feflood-002.html.ini new file mode 100644 index 00000000000..03fb3655f0d --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-feflood-002.html.ini @@ -0,0 +1,2 @@ +[tainting-feflood-002.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-feflood-dynamic.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-feflood-dynamic.html.ini new file mode 100644 index 00000000000..ecd011d67f6 --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-feflood-dynamic.html.ini @@ -0,0 +1,2 @@ +[tainting-feflood-dynamic.html] + expected: TIMEOUT diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fegaussianblur-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fegaussianblur-001.html.ini new file mode 100644 index 00000000000..0c7408acab8 --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-fegaussianblur-001.html.ini @@ -0,0 +1,2 @@ +[tainting-fegaussianblur-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fegaussianblur-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fegaussianblur-002.html.ini new file mode 100644 index 00000000000..463594ee34d --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-fegaussianblur-002.html.ini @@ -0,0 +1,2 @@ +[tainting-fegaussianblur-002.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-femorphology-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-femorphology-001.html.ini new file mode 100644 index 00000000000..c109f64e2d2 --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-femorphology-001.html.ini @@ -0,0 +1,2 @@ +[tainting-femorphology-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-femorphology-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-femorphology-002.html.ini new file mode 100644 index 00000000000..ff7222639f6 --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-femorphology-002.html.ini @@ -0,0 +1,2 @@ +[tainting-femorphology-002.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-feoffset-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-feoffset-001.html.ini new file mode 100644 index 00000000000..8339cbb3a7c --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-feoffset-001.html.ini @@ -0,0 +1,2 @@ +[tainting-feoffset-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-feoffset-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-feoffset-002.html.ini new file mode 100644 index 00000000000..c58d4a90afa --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-feoffset-002.html.ini @@ -0,0 +1,2 @@ +[tainting-feoffset-002.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fespecularlighting-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fespecularlighting-001.html.ini new file mode 100644 index 00000000000..20a6eb30ba6 --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-fespecularlighting-001.html.ini @@ -0,0 +1,2 @@ +[tainting-fespecularlighting-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fespecularlighting-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fespecularlighting-002.html.ini new file mode 100644 index 00000000000..8147dca9a8b --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-fespecularlighting-002.html.ini @@ -0,0 +1,2 @@ +[tainting-fespecularlighting-002.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fespecularlighting-003.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fespecularlighting-003.html.ini new file mode 100644 index 00000000000..190a5559ffc --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-fespecularlighting-003.html.ini @@ -0,0 +1,2 @@ +[tainting-fespecularlighting-003.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fetile-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fetile-001.html.ini new file mode 100644 index 00000000000..a3c27a8772c --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-fetile-001.html.ini @@ -0,0 +1,2 @@ +[tainting-fetile-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fetile-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fetile-002.html.ini new file mode 100644 index 00000000000..033c30d252b --- /dev/null +++ b/tests/wpt/metadata/css/filter-effects/tainting-fetile-002.html.ini @@ -0,0 +1,2 @@ +[tainting-fetile-002.html] + expected: FAIL diff --git a/tests/wpt/metadata/encoding/single-byte-decoder.html.ini b/tests/wpt/metadata/encoding/single-byte-decoder.html.ini index 381fcd872fa..7c5a3721677 100644 --- a/tests/wpt/metadata/encoding/single-byte-decoder.html.ini +++ b/tests/wpt/metadata/encoding/single-byte-decoder.html.ini @@ -32,7 +32,7 @@ [single-byte-decoder.html?XMLHttpRequest] - expected: CRASH + expected: TIMEOUT [ISO-8859-2: iso_8859-2:1987 (XMLHttpRequest)] expected: FAIL @@ -84,12 +84,6 @@ [windows-1255: cp1255 (XMLHttpRequest)] expected: TIMEOUT - [windows-1254: iso88599 (XMLHttpRequest)] - expected: TIMEOUT - - [windows-1254: iso8859-9 (XMLHttpRequest)] - expected: TIMEOUT - [windows-1255: windows-1255 (XMLHttpRequest)] expected: TIMEOUT @@ -111,21 +105,9 @@ [windows-1256: cp1256 (XMLHttpRequest)] expected: TIMEOUT - [windows-1254: iso-8859-9 (XMLHttpRequest)] - expected: TIMEOUT - - [windows-1254: csisolatin5 (XMLHttpRequest)] - expected: TIMEOUT - [windows-1257: x-cp1257 (XMLHttpRequest)] expected: TIMEOUT - [windows-1254: iso-ir-148 (XMLHttpRequest)] - expected: TIMEOUT - - [windows-1256: windows-1256 (XMLHttpRequest)] - expected: TIMEOUT - [windows-1254: iso_8859-9 (XMLHttpRequest)] expected: TIMEOUT diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini index 18f786d4963..75eee535970 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -312,3 +312,9 @@ [ + + diff --git a/tests/wpt/web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html b/tests/wpt/web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html index 81b0d189464..efb26e95024 100644 --- a/tests/wpt/web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html @@ -679,7 +679,7 @@ test(t => { { offset: 0, computedOffset: 0, easing: "ease", composite: "auto", transform: "none" }, { offset: 1, computedOffset: 1, easing: "ease", composite: "auto", - transform: "translate(100px, 0px)" }, + transform: "translate(100px)" }, ]; for (let i = 0; i < frames.length; i++) { assert_frames_equal(frames[i], expected[i], "ComputedKeyframe #" + i); @@ -743,7 +743,7 @@ test(t => { const expected = [ { offset: 0, computedOffset: 0, easing: "ease", composite: "auto", - transform: "translate(100px, 0px)" }, + transform: "translate(100px)" }, { offset: 1, computedOffset: 1, easing: "ease", composite: "auto", transform: "none" }, ]; diff --git a/tests/wpt/web-platform-tests/css/css-sizing/range-percent-intrinsic-size-1-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/range-percent-intrinsic-size-1-ref.html index a4419eab319..9a68590b638 100644 --- a/tests/wpt/web-platform-tests/css/css-sizing/range-percent-intrinsic-size-1-ref.html +++ b/tests/wpt/web-platform-tests/css/css-sizing/range-percent-intrinsic-size-1-ref.html @@ -69,10 +69,6 @@ div { -
- -
-
@@ -89,10 +85,6 @@ div { -
- -
-
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/range-percent-intrinsic-size-1.html b/tests/wpt/web-platform-tests/css/css-sizing/range-percent-intrinsic-size-1.html index 87399578988..018129aae3a 100644 --- a/tests/wpt/web-platform-tests/css/css-sizing/range-percent-intrinsic-size-1.html +++ b/tests/wpt/web-platform-tests/css/css-sizing/range-percent-intrinsic-size-1.html @@ -77,10 +77,6 @@ div { -
- -
-
@@ -97,10 +93,6 @@ div { -
- -
-
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/range-percent-intrinsic-size-2a-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/range-percent-intrinsic-size-2a-ref.html new file mode 100644 index 00000000000..815b0a1021c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/range-percent-intrinsic-size-2a-ref.html @@ -0,0 +1,86 @@ + + + + + Reference: INPUT type=range percent intrinsic block-size + + + +
+ +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + diff --git a/tests/wpt/web-platform-tests/css/css-sizing/range-percent-intrinsic-size-2a.html b/tests/wpt/web-platform-tests/css/css-sizing/range-percent-intrinsic-size-2a.html new file mode 100644 index 00000000000..f2c2431978b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-sizing/range-percent-intrinsic-size-2a.html @@ -0,0 +1,94 @@ + + + + + Test: INPUT type=range percent intrinsic block-size + + + + + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-underline-ref.html b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-underline-ref.html new file mode 100644 index 00000000000..2370054a8fb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-underline-ref.html @@ -0,0 +1,2 @@ + +

This text should be underlined.

diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-propagation-shadow.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-propagation-shadow.html new file mode 100644 index 00000000000..ac365ee0466 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-propagation-shadow.html @@ -0,0 +1,16 @@ + +CSS Test: text-decoration propagation into shadow DOM boxes + + + +

+

+ This text should be underlined. +
+

+ diff --git a/tests/wpt/web-platform-tests/css/css-transforms/parsing/transform-valid.html b/tests/wpt/web-platform-tests/css/css-transforms/parsing/transform-valid.html index fbde8eaf2d2..e6f10154cb6 100644 --- a/tests/wpt/web-platform-tests/css/css-transforms/parsing/transform-valid.html +++ b/tests/wpt/web-platform-tests/css/css-transforms/parsing/transform-valid.html @@ -39,7 +39,7 @@ test_valid_value("transform", "rotate(90deg)"); test_valid_value("transform", "skew(0)", "skew(0deg)"); test_valid_value("transform", "skew(90deg)"); test_valid_value("transform", "skew(0, -90deg)", "skew(0deg, -90deg)"); -test_valid_value("transform", "skew(90deg, 0)", "skew(90deg, 0deg)"); +test_valid_value("transform", "skew(90deg, 0)", ["skew(90deg)", "skew(90deg, 0deg)"]); test_valid_value("transform", "skewX(0)", "skewX(0deg)"); test_valid_value("transform", "skewX(90deg)"); diff --git a/tests/wpt/web-platform-tests/css/filter-effects/reference/green-blue-stripe-100x100.html b/tests/wpt/web-platform-tests/css/filter-effects/reference/green-blue-stripe-100x100.html new file mode 100644 index 00000000000..01546f115d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/reference/green-blue-stripe-100x100.html @@ -0,0 +1,2 @@ + +
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-feblend-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feblend-001.html new file mode 100644 index 00000000000..416f57849a4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feblend-001.html @@ -0,0 +1,24 @@ + +feBlend: does not taint the filter chain + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-feblend-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feblend-002.html new file mode 100644 index 00000000000..3d753413a6c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feblend-002.html @@ -0,0 +1,18 @@ + +feBlend: propagates tainting from tainted input primitive + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomponenttransfer-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomponenttransfer-001.html new file mode 100644 index 00000000000..89c60ba9688 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomponenttransfer-001.html @@ -0,0 +1,24 @@ + +feComponentTransfer: does not taint the filter chain + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomponenttransfer-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomponenttransfer-002.html new file mode 100644 index 00000000000..6f29b35ba31 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomponenttransfer-002.html @@ -0,0 +1,18 @@ + +feComponentTransfer: propagates tainting from tainted input primitive + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomposite-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomposite-001.html new file mode 100644 index 00000000000..ddaa53e1e24 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomposite-001.html @@ -0,0 +1,24 @@ + +feComposite: does not taint the filter chain + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomposite-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomposite-002.html new file mode 100644 index 00000000000..1e68378ac6c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomposite-002.html @@ -0,0 +1,18 @@ + +feComposite: propagates tainting from tainted input primitive + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-feconvolvematrix-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feconvolvematrix-001.html new file mode 100644 index 00000000000..eda1d7e2fc8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feconvolvematrix-001.html @@ -0,0 +1,24 @@ + +feConvolveMatrix: does not taint the filter chain + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-feconvolvematrix-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feconvolvematrix-002.html new file mode 100644 index 00000000000..e7ec038fbdd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feconvolvematrix-002.html @@ -0,0 +1,18 @@ + +feConvolveMatrix: propagates tainting from tainted input primitive + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-001.html new file mode 100644 index 00000000000..bce3a291819 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-001.html @@ -0,0 +1,25 @@ + +feDiffuseLighting: no tainting with regular <color> lighting-color + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-002.html new file mode 100644 index 00000000000..773c25bf029 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-002.html @@ -0,0 +1,21 @@ + +feDiffuseLighting: 'currentcolor' lighting-color taints the primitive + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-003.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-003.html new file mode 100644 index 00000000000..0b7bb4d19af --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-003.html @@ -0,0 +1,20 @@ + +feDiffuseLighting: propagates tainting from tainted input primitive + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-dynamic.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-dynamic.html new file mode 100644 index 00000000000..89674095a0c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-dynamic.html @@ -0,0 +1,30 @@ + + +feDiffuseLighting: tainting state changes dynamically + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedisplacementmap-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedisplacementmap-001.html new file mode 100644 index 00000000000..2c99cc4981e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedisplacementmap-001.html @@ -0,0 +1,25 @@ + +feDisplacementMap: does not taint the filter chain + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedisplacementmap-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedisplacementmap-002.html new file mode 100644 index 00000000000..9648b54bf3d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedisplacementmap-002.html @@ -0,0 +1,19 @@ + +feDisplacementMap: propagates tainting from tainted input primitive + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedropshadow-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedropshadow-001.html new file mode 100644 index 00000000000..1b3dbb497ce --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedropshadow-001.html @@ -0,0 +1,25 @@ + +feDropShadow: no tainting with regular <color> flood-color + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedropshadow-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedropshadow-002.html new file mode 100644 index 00000000000..26fc687d88a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedropshadow-002.html @@ -0,0 +1,20 @@ + +feDropShadow: 'currentcolor' flood-color taints the primitive + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedropshadow-003.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedropshadow-003.html new file mode 100644 index 00000000000..d42102aa6c5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedropshadow-003.html @@ -0,0 +1,21 @@ + +feDropShadow: propagates tainting from tainted input primitive + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-feflood-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feflood-001.html new file mode 100644 index 00000000000..714e6b992fb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feflood-001.html @@ -0,0 +1,21 @@ + +feFlood: no tainting with regular <color> flood-color + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-feflood-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feflood-002.html new file mode 100644 index 00000000000..79ea8dac522 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feflood-002.html @@ -0,0 +1,16 @@ + +feFlood: 'currentcolor' flood-color taints the primitive + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-feflood-dynamic.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feflood-dynamic.html new file mode 100644 index 00000000000..fc9b3354fab --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feflood-dynamic.html @@ -0,0 +1,25 @@ + + +feFlood: tainting state changes dynamically + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fegaussianblur-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fegaussianblur-001.html new file mode 100644 index 00000000000..a938c7494fe --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fegaussianblur-001.html @@ -0,0 +1,24 @@ + +feGaussianBlur: does not taint the filter chain + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fegaussianblur-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fegaussianblur-002.html new file mode 100644 index 00000000000..55dabbbdbb3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fegaussianblur-002.html @@ -0,0 +1,18 @@ + +feGaussianBlur: propagates tainting from tainted input primitive + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-femorphology-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-femorphology-001.html new file mode 100644 index 00000000000..9af566410d2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-femorphology-001.html @@ -0,0 +1,24 @@ + +feMorphology: does not taint the filter chain + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-femorphology-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-femorphology-002.html new file mode 100644 index 00000000000..2c097202ee8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-femorphology-002.html @@ -0,0 +1,18 @@ + +feMorphology: propagates tainting from tainted input primitive + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-feoffset-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feoffset-001.html new file mode 100644 index 00000000000..8704b693e81 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feoffset-001.html @@ -0,0 +1,24 @@ + +feOffset: does not taint the filter chain + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-feoffset-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feoffset-002.html new file mode 100644 index 00000000000..3c04268f5cb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feoffset-002.html @@ -0,0 +1,18 @@ + +feOffset: propagates tainting from tainted input primitive + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fespecularlighting-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fespecularlighting-001.html new file mode 100644 index 00000000000..c2825258a57 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fespecularlighting-001.html @@ -0,0 +1,26 @@ + +feSpecularLighting: no tainting with regular <color> lighting-color + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fespecularlighting-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fespecularlighting-002.html new file mode 100644 index 00000000000..773b0c7065c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fespecularlighting-002.html @@ -0,0 +1,21 @@ + +feSpecularLighting: 'currentcolor' lighting-color taints the primitive + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fespecularlighting-003.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fespecularlighting-003.html new file mode 100644 index 00000000000..173ed2da9f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fespecularlighting-003.html @@ -0,0 +1,20 @@ + +feSpecularLighting: propagates tainting from tainted input primitive + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fetile-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fetile-001.html new file mode 100644 index 00000000000..c5b955eef85 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fetile-001.html @@ -0,0 +1,24 @@ + +feTile: does not taint the filter chain + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fetile-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fetile-002.html new file mode 100644 index 00000000000..ed77301d2ef --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fetile-002.html @@ -0,0 +1,18 @@ + +feTile: propagates tainting from tainted input primitive + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/docs/_writing-tests/reftests.md b/tests/wpt/web-platform-tests/docs/_writing-tests/reftests.md index f56a84af3a7..51016541365 100644 --- a/tests/wpt/web-platform-tests/docs/_writing-tests/reftests.md +++ b/tests/wpt/web-platform-tests/docs/_writing-tests/reftests.md @@ -112,10 +112,67 @@ only guaranteed to be after those events. ## Fuzzy Matching In some situations a test may have subtle differences in rendering -compared to the reference due to, e.g., anti-aliasing. This may cause -the test to pass on some platforms but fail on others. In this case -some affordance for subtle discrepancies is desirable. However no -mechanism to allow this has yet been standardized. +compared to the reference due to, e.g., anti-aliasing. To allow for +these small differences, we allow tests to specify a fuzziness +characterised by two parameters, both of which must be specified: + + * A maximum difference in the per-channel color value for any pixel. + * A number of total pixels that may be different. + +The maximum difference in the per pixel color value is formally +defined as follows: let Tx,y,c be the value of +colour channel `c` at pixel coordinates `x`, `y` in the test image and +Rx,y,c be the corresponding value in the +reference image, and let width and height be +the dimensions of the image in pixels. Then maxDifference = +maxx=[0,width) y=[0,height), c={r,g,b}(|Tx,y,c - +Rx,y,c|). + +To specify the fuzziness in the test file one may add a `` element (or, in the case of more complex tests, to any +page containing the `` elements). In the simplest +case this has a `content` attribute containing the parameters above, +separated by a colon e.g. + +``` + +``` + +would allow for a difference of exactly 15 / 255 on any color channel +and 300 exactly pixels total difference. The argument names are optional +and may be elided; the above is the same as: + +``` + +``` + +The values may also be given as ranges e.g. + +``` + +``` + +or + +``` + +``` + +In this case the maximum pixel difference must be in the range +`10-15` and the total number of different pixels must be in the range +`200-300`. + +In cases where a single test has multiple possible refs and the +fuzziness is not the same for all refs, a ref may be specified by +prefixing the `content` value with the relative url for the ref e.g. + +``` + +``` + +One meta element is required per reference requiring a unique +fuzziness value, but any unprefixed value will automatically be +applied to any ref that doesn't have a more specific value. ## Limitations diff --git a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/fetch-sw.https.tentative.html b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/fetch-sw.https.tentative.html new file mode 100644 index 00000000000..2286739ecf2 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/fetch-sw.https.tentative.html @@ -0,0 +1,63 @@ + + + + + + Stale Revalidation Requests don't get sent to service worker + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/fetch.tentative.html b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/fetch.tentative.html index 5b9b2dc5de2..33d844fd08f 100644 --- a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/fetch.tentative.html +++ b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/fetch.tentative.html @@ -9,12 +9,28 @@ https://github.com/whatwg/fetch/pull/853 diff --git a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-css.py b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-css.py index 425c889ac5e..9566833e507 100644 --- a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-css.py +++ b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-css.py @@ -8,6 +8,8 @@ def main(request, response): if request.GET.first("query", None) != None: headers = [("Count", count)] content = "" + if count < 2: + request.server.stash.put(token, count) return 200, headers, content else: count = count + 1 diff --git a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-image.py b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-image.py index ce7f0fc7826..e0cf94bcd0a 100644 --- a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-image.py +++ b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-image.py @@ -10,6 +10,8 @@ def main(request, response): if request.GET.first("query", None) != None: headers = [("Count", count)] content = "" + if count < 2: + request.server.stash.put(token, count) return 200, headers, content else: count = count + 1 diff --git a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-script.py b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-script.py index 0f91a9b8348..5ea5987db3d 100644 --- a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-script.py +++ b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-script.py @@ -13,6 +13,8 @@ def main(request, response): if request.GET.first("query", None) != None: headers = [("Count", count)] content = "" + if count < 2: + request.server.stash.put(token, count) return 200, headers, content else: count = count + 1 diff --git a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/sw-intercept.js b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/sw-intercept.js new file mode 100644 index 00000000000..dca7de51b0b --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/sw-intercept.js @@ -0,0 +1,14 @@ +async function broadcast(msg) { + for (const client of await clients.matchAll()) { + client.postMessage(msg); + } +} + +self.addEventListener('fetch', event => { + event.waitUntil(broadcast(event.request.url)); + event.respondWith(fetch(event.request)); +}); + +self.addEventListener('activate', event => { + self.clients.claim(); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/closed-attribute.window.js b/tests/wpt/web-platform-tests/html/browsers/the-window-object/closed-attribute.window.js new file mode 100644 index 00000000000..88a3beba6f1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/the-window-object/closed-attribute.window.js @@ -0,0 +1,69 @@ +// META: script=/common/get-host-info.sub.js + +function closedTest(newWindow, closeNewWindowsBrowsingContext) { + assert_equals(newWindow.closed, false); + closeNewWindowsBrowsingContext(); + assert_equals(newWindow.closed, true); +} + +test(() => { + const frame = document.body.appendChild(document.createElement("iframe")); + closedTest(frame.contentWindow, () => frame.remove()); +}, "closed and same-origin nested browsing context"); + +test(() => { + const openee = window.open(); + closedTest(openee, () => openee.close()); + + // close() is a no-op once "is closing" is set + openee.close(); + assert_equals(openee.closed, true); +}, "closed/close() and same-origin auxiliary browsing context"); + +const support = new URL("support/closed.html", location.href).pathname; +[ + { + type: "cross-origin", + url: `${get_host_info().HTTP_REMOTE_ORIGIN}${support}` + }, + { + type: "cross-site", + url: `${get_host_info().HTTP_NOTSAMESITE_ORIGIN}${support}` + } +].forEach(val => { + async_test(t => { + const frame = document.createElement("iframe"), + ident = `${val.type}-nested-bc`; + frame.src = `${val.url}?window=parent&ident=${ident}`; + const listener = t.step_func(e => { + if (e.data === ident) { + closedTest(frame.contentWindow, () => frame.remove()); + self.removeEventListener("message", listener); + t.done(); + } + }); + // Use a message event rather than onload for consistency with auxiliary browsing contexts. + self.addEventListener("message", listener); + document.body.append(frame); + }, `closed and ${val.type} nested browsing context`); + + async_test(t => { + const ident = `${val.type}-auxiliary-bc`, + support = new URL("support/closed.html", location.href).pathname, + openee = window.open(`${val.url}?window=opener&ident=${ident}`), + listener = t.step_func(e => { + if (e.data === ident) { + closedTest(openee, () => openee.close()); + + // close() is a no-op once "is closing" is set + openee.close(); + assert_equals(openee.closed, true); + + self.removeEventListener("message", listener); + t.done(); + } + }); + // As there's no cross-origin onload, use a message event. + self.addEventListener("message", listener); + }, `closed/close() and ${val.type} auxiliary browsing context`); +}); diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/support/closed.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/support/closed.html new file mode 100644 index 00000000000..3b70598e34d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/the-window-object/support/closed.html @@ -0,0 +1,12 @@ + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/embedded-opener-remove-frame.html b/tests/wpt/web-platform-tests/html/browsers/windows/embedded-opener-remove-frame.html index 9bce93f0888..a66f52e5f64 100644 --- a/tests/wpt/web-platform-tests/html/browsers/windows/embedded-opener-remove-frame.html +++ b/tests/wpt/web-platform-tests/html/browsers/windows/embedded-opener-remove-frame.html @@ -1,10 +1,48 @@ -opener and "removed" embedded documents +opener and discarded browsing contexts
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img-with-containment-and-size-ref.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img-with-containment-and-size-ref.html new file mode 100644 index 00000000000..56176c4b71e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img-with-containment-and-size-ref.html @@ -0,0 +1,8 @@ + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img-with-containment-and-size.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img-with-containment-and-size.html new file mode 100644 index 00000000000..a095adc7cf6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img-with-containment-and-size.html @@ -0,0 +1,22 @@ + + +Ensure images with containment and size are rendered properly + + + + + diff --git a/tests/wpt/web-platform-tests/import-maps/resources/resolving.js b/tests/wpt/web-platform-tests/import-maps/resources/resolving.js index ec2645e5991..0409962e4d7 100644 --- a/tests/wpt/web-platform-tests/import-maps/resources/resolving.js +++ b/tests/wpt/web-platform-tests/import-maps/resources/resolving.js @@ -1,4 +1,9 @@ 'use strict'; + +// Imported from: +// https://github.com/WICG/import-maps/blob/master/reference-implementation/__tests__/resolving.js +// TODO: Upstream local changes. + const { URL } = require('url'); const { parseFromString } = require('../lib/parser.js'); const { resolve } = require('../lib/resolver.js'); @@ -203,4 +208,23 @@ describe('Mapped using the "imports" key only (no scopes)', () => { expect(resolveUnderTest('/test')).toMatchURL('https://example.com/lib/test2.mjs'); }); }); + + describe('overlapping entries with trailing slashes', () => { + const resolveUnderTest = makeResolveUnderTest(`{ + "imports": { + "a": "/1", + "a/": "/2/", + "a/b": "/3", + "a/b/": "/4/" + } + }`); + + it('most-specific wins', () => { + expect(resolveUnderTest('a')).toMatchURL('https://example.com/1'); + expect(resolveUnderTest('a/')).toMatchURL('https://example.com/2/'); + expect(resolveUnderTest('a/b')).toMatchURL('https://example.com/3'); + expect(resolveUnderTest('a/b/')).toMatchURL('https://example.com/4/'); + expect(resolveUnderTest('a/b/c')).toMatchURL('https://example.com/4/c'); + }); + }); }); diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy.html.ini new file mode 100644 index 00000000000..1ab2d770afe --- /dev/null +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy.html.ini @@ -0,0 +1,2 @@ +[reftest_fuzzy.html] + fuzzy: fuzzy-ref-1.html:maxDifference=255;100-100 diff --git a/tests/wpt/web-platform-tests/infrastructure/reftest/fuzzy-ref-1.html b/tests/wpt/web-platform-tests/infrastructure/reftest/fuzzy-ref-1.html new file mode 100644 index 00000000000..e50fc11ef6e --- /dev/null +++ b/tests/wpt/web-platform-tests/infrastructure/reftest/fuzzy-ref-1.html @@ -0,0 +1,9 @@ + + +
diff --git a/tests/wpt/web-platform-tests/infrastructure/reftest/reftest_fuzzy.html b/tests/wpt/web-platform-tests/infrastructure/reftest/reftest_fuzzy.html new file mode 100644 index 00000000000..74290257981 --- /dev/null +++ b/tests/wpt/web-platform-tests/infrastructure/reftest/reftest_fuzzy.html @@ -0,0 +1,13 @@ + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/infrastructure/reftest/reftest_fuzzy_1.html b/tests/wpt/web-platform-tests/infrastructure/reftest/reftest_fuzzy_1.html new file mode 100644 index 00000000000..1930fe0ae8f --- /dev/null +++ b/tests/wpt/web-platform-tests/infrastructure/reftest/reftest_fuzzy_1.html @@ -0,0 +1,12 @@ + + + + +
+ diff --git a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl index 11a36cde6eb..a5709161bdb 100644 --- a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl +++ b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl @@ -4,6 +4,7 @@ // Source: Web NFC API (https://w3c.github.io/web-nfc/) dictionary NDEFMessage { + DOMString? serialNumber; sequence records; USVString url; }; diff --git a/tests/wpt/web-platform-tests/service-workers/cache-storage/script-tests/cache-match.js b/tests/wpt/web-platform-tests/service-workers/cache-storage/script-tests/cache-match.js index b2b731cc654..8bf7fda3096 100644 --- a/tests/wpt/web-platform-tests/service-workers/cache-storage/script-tests/cache-match.js +++ b/tests/wpt/web-platform-tests/service-workers/cache-storage/script-tests/cache-match.js @@ -356,4 +356,62 @@ cache_test(async (cache) => { assert_equals(headers.get('set-cookie'), null); }, 'cors-exposed header should be stored correctly.'); +cache_test(async (cache) => { + // A URL that should load a resource with a known mime type. + const url = '/service-workers/cache-storage/resources/blank.html'; + const expected_mime_type = 'text/html'; + + // Verify we get the expected mime type from the network. Note, + // we cannot use an exact match here since some browsers append + // character encoding information to the blob.type value. + const net_response = await fetch(url); + const net_mime_type = (await net_response.blob()).type; + assert_true(net_mime_type.includes(expected_mime_type), + 'network response should include the expected mime type'); + + // Verify we get the exact same mime type when reading the same + // URL resource back out of the cache. + await cache.add(url); + const cache_response = await cache.match(url); + const cache_mime_type = (await cache_response.blob()).type; + assert_equals(cache_mime_type, net_mime_type, + 'network and cache response mime types should match'); + }, 'MIME type should be set from content-header correctly.'); + +cache_test(async (cache) => { + const url = '/dummy'; + const original_type = 'text/html'; + const init_with_headers = { + headers: { + 'content-type': original_type + } + } + + // Verify constructing a synthetic response with a content-type header + // gets the correct mime type. + const response = new Response('hello world', init_with_headers); + const original_response_type = (await response.blob()).type; + assert_true(original_response_type.includes(original_type), + 'original response should include the expected mime type'); + + // Verify overwriting the content-type header does not change the mime + // type. It should be fixed at Response construction time. + const overwritten_response = new Response('hello world', init_with_headers); + overwritten_response.headers.set('content-type', 'text/plain'); + const overwritten_response_type = (await overwritten_response.blob()).type; + assert_equals(overwritten_response_type, original_response_type, + 'original and overwritten response mime types should match'); + + // Verify the Response read from Cache uses the original mime type + // computed when it was first constructed. + const tmp = new Response('hello world', init_with_headers); + tmp.headers.set('content-type', 'text/plain'); + await cache.put(url, tmp); + const cache_response = await cache.match(url); + const cache_mime_type = (await cache_response.blob()).type; + assert_equals(cache_mime_type, original_response_type, + 'original and cached overwritten response mime types ' + + 'should match'); + }, 'MIME type should be frozen at response construction.'); + done(); diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/registration-mime-types.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/registration-mime-types.https.html index 9ae5f0956fb..1d39ecfb086 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/registration-mime-types.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/registration-mime-types.https.html @@ -1,5 +1,6 @@ Service Worker: Registration (MIME types) + diff --git a/tests/wpt/web-platform-tests/shadow-dom/untriaged/shadow-trees/text-decoration-001-ref.html b/tests/wpt/web-platform-tests/shadow-dom/untriaged/shadow-trees/text-decoration-001-ref.html deleted file mode 100644 index 8c10d251557..00000000000 --- a/tests/wpt/web-platform-tests/shadow-dom/untriaged/shadow-trees/text-decoration-001-ref.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - Shadow DOM Test - - - - - if NOT underlined, it is success. - - - diff --git a/tests/wpt/web-platform-tests/shadow-dom/untriaged/shadow-trees/text-decoration-001.html b/tests/wpt/web-platform-tests/shadow-dom/untriaged/shadow-trees/text-decoration-001.html deleted file mode 100644 index d8def126d64..00000000000 --- a/tests/wpt/web-platform-tests/shadow-dom/untriaged/shadow-trees/text-decoration-001.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Text Decoration Under Line Test - - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/tools/manifest/item.py b/tests/wpt/web-platform-tests/tools/manifest/item.py index c06daee3e24..c6363a70701 100644 --- a/tests/wpt/web-platform-tests/tools/manifest/item.py +++ b/tests/wpt/web-platform-tests/tools/manifest/item.py @@ -1,5 +1,5 @@ from copy import copy - +from six import iteritems from six.moves.urllib.parse import urljoin, urlparse from abc import ABCMeta, abstractproperty @@ -169,6 +169,14 @@ class RefTestBase(URLManifestItem): def dpi(self): return self._extras.get("dpi") + @property + def fuzzy(self): + rv = self._extras.get("fuzzy", []) + if isinstance(rv, list): + return {tuple(item[0]): item[1] + for item in self._extras.get("fuzzy", [])} + return rv + def meta_key(self): return (self.timeout, self.viewport_size, self.dpi) @@ -181,6 +189,8 @@ class RefTestBase(URLManifestItem): extras["viewport_size"] = self.viewport_size if self.dpi is not None: extras["dpi"] = self.dpi + if self.fuzzy: + extras["fuzzy"] = list(iteritems(self.fuzzy)) return rv @classmethod diff --git a/tests/wpt/web-platform-tests/tools/manifest/manifest.py b/tests/wpt/web-platform-tests/tools/manifest/manifest.py index cec777a30c6..159bed2e747 100644 --- a/tests/wpt/web-platform-tests/tools/manifest/manifest.py +++ b/tests/wpt/web-platform-tests/tools/manifest/manifest.py @@ -4,7 +4,7 @@ from collections import defaultdict from six import iteritems, iterkeys, itervalues, string_types from . import vcs -from .item import (ManualTest, WebDriverSpecTest, Stub, RefTestNode, RefTest, RefTestBase, +from .item import (ManualTest, WebDriverSpecTest, Stub, RefTestNode, RefTest, TestharnessTest, SupportFile, ConformanceCheckerTest, VisualTest) from .log import get_logger from .utils import from_os_path, to_os_path @@ -37,7 +37,6 @@ def iterfilter(filters, iter): item_classes = {"testharness": TestharnessTest, "reftest": RefTest, "reftest_node": RefTestNode, - "reftest_base": RefTestBase, "manual": ManualTest, "stub": Stub, "wdspec": WebDriverSpecTest, diff --git a/tests/wpt/web-platform-tests/tools/manifest/sourcefile.py b/tests/wpt/web-platform-tests/tools/manifest/sourcefile.py index b5d7cdf8799..78843b089b8 100644 --- a/tests/wpt/web-platform-tests/tools/manifest/sourcefile.py +++ b/tests/wpt/web-platform-tests/tools/manifest/sourcefile.py @@ -1,6 +1,7 @@ import hashlib import re import os +from collections import deque from six import binary_type from six.moves.urllib.parse import urljoin from fnmatch import fnmatch @@ -452,6 +453,79 @@ class SourceFile(object): return self.dpi_nodes[0].attrib.get("content", None) + @cached_property + def fuzzy_nodes(self): + """List of ElementTree Elements corresponding to nodes in a test that + specify reftest fuzziness""" + return self.root.findall(".//{http://www.w3.org/1999/xhtml}meta[@name='fuzzy']") + + @cached_property + def fuzzy(self): + rv = {} + if self.root is None: + return rv + + if not self.fuzzy_nodes: + return rv + + args = ["maxDifference", "totalPixels"] + + for node in self.fuzzy_nodes: + item = node.attrib.get("content", "") + + parts = item.rsplit(":", 1) + if len(parts) == 1: + key = None + value = parts[0] + else: + key = urljoin(self.url, parts[0]) + reftype = None + for ref in self.references: + if ref[0] == key: + reftype = ref[1] + break + if reftype not in ("==", "!="): + raise ValueError("Fuzzy key %s doesn't correspond to a references" % key) + key = (self.url, key, reftype) + value = parts[1] + ranges = value.split(";") + if len(ranges) != 2: + raise ValueError("Malformed fuzzy value %s" % item) + arg_values = {None: deque()} + for range_str_value in ranges: + if "=" in range_str_value: + name, range_str_value = [part.strip() + for part in range_str_value.split("=", 1)] + if name not in args: + raise ValueError("%s is not a valid fuzzy property" % name) + if arg_values.get(name): + raise ValueError("Got multiple values for argument %s" % name) + else: + name = None + if "-" in range_str_value: + range_min, range_max = range_str_value.split("-") + else: + range_min = range_str_value + range_max = range_str_value + try: + range_value = [int(x.strip()) for x in (range_min, range_max)] + except ValueError: + raise ValueError("Fuzzy value %s must be a range of integers" % + range_str_value) + if name is None: + arg_values[None].append(range_value) + else: + arg_values[name] = range_value + rv[key] = [] + for arg_name in args: + if arg_values.get(arg_name): + value = arg_values.pop(arg_name) + else: + value = arg_values[None].popleft() + rv[key].append(value) + assert list(arg_values.keys()) == [None] and len(arg_values[None]) == 0 + return rv + @cached_property def testharness_nodes(self): """List of ElementTree Elements corresponding to nodes representing a @@ -749,7 +823,8 @@ class SourceFile(object): references=self.references, timeout=self.timeout, viewport_size=self.viewport_size, - dpi=self.dpi + dpi=self.dpi, + fuzzy=self.fuzzy )] elif self.content_is_css_visual and not self.name_is_reference: diff --git a/tests/wpt/web-platform-tests/tools/manifest/tests/test_sourcefile.py b/tests/wpt/web-platform-tests/tools/manifest/tests/test_sourcefile.py index 7c368a53118..18aa55a63a2 100644 --- a/tests/wpt/web-platform-tests/tools/manifest/tests/test_sourcefile.py +++ b/tests/wpt/web-platform-tests/tools/manifest/tests/test_sourcefile.py @@ -789,3 +789,41 @@ test()""" u'/_fake_base/html/test.any.worker.html?wss'] assert items[0].url_base == "/_fake_base/" + + +@pytest.mark.parametrize("fuzzy, expected", [ + (b"ref.html:1;200", {("/foo/test.html", "/foo/ref.html", "=="): [[1, 1], [200, 200]]}), + (b"ref.html:0-1;100-200", {("/foo/test.html", "/foo/ref.html", "=="): [[0, 1], [100, 200]]}), + (b"0-1;100-200", {None: [[0,1], [100, 200]]}), + (b"maxDifference=1;totalPixels=200", {None: [[1, 1], [200, 200]]}), + (b"totalPixels=200;maxDifference=1", {None: [[1, 1], [200, 200]]}), + (b"totalPixels=200;1", {None: [[1, 1], [200, 200]]}), + (b"maxDifference=1;200", {None: [[1, 1], [200, 200]]}),]) +def test_reftest_fuzzy(fuzzy, expected): + content = b""" + +""" % fuzzy + + s = create("foo/test.html", content) + + assert s.content_is_ref_node + assert s.fuzzy == expected + + +@pytest.mark.parametrize("fuzzy, expected", [ + ([b"1;200"], {None: [[1, 1], [200, 200]]}), + ([b"ref-2.html:0-1;100-200"], {("/foo/test.html", "/foo/ref-2.html", "=="): [[0, 1], [100, 200]]}), + ([b"1;200", b"ref-2.html:0-1;100-200"], + {None: [[1, 1], [200, 200]], + ("/foo/test.html", "/foo/ref-2.html", "=="): [[0,1], [100, 200]]})]) +def test_reftest_fuzzy_multi(fuzzy, expected): + content = b""" + +""" + for item in fuzzy: + content += b'\n' % item + + s = create("foo/test.html", content) + + assert s.content_is_ref_node + assert s.fuzzy == expected diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst b/tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst index 6a0c77684a3..7fe89d943eb 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst +++ b/tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst @@ -190,13 +190,6 @@ When used for expectation data, manifests have the following format: * A subsection per subtest, with the heading being the title of the subtest. - * A key ``type`` indicating the test type. This takes the values - ``testharness`` and ``reftest``. - - * For reftests, keys ``reftype`` indicating the reference type - (``==`` or ``!=``) and ``refurl`` indicating the URL of the - reference. - * A key ``expected`` giving the expectation value of each (sub)test. * A key ``disabled`` which can be set to any value to indicate that @@ -207,6 +200,19 @@ When used for expectation data, manifests have the following format: the runner should restart the browser after running this test (e.g. to clear out unwanted state). + * A key ``fuzzy`` that is used for reftests. This is interpreted as a + list containing entries like ```` content value, + which consists of an optional reference identifier followed by a + colon, then a range indicating the maximum permitted pixel + difference per channel, then semicolon, then a range indicating the + maximum permitted total number of differing pixels. The reference + identifier is either a single relative URL, resolved against the + base test URL, in which case the fuzziness applies to any + comparison with that URL, or takes the form lhs url, comparison, + rhs url, in which case the fuzziness only applies for any + comparison involving that specifc pair of URLs. Some illustrative + examples are given below. + * Variables ``debug``, ``os``, ``version``, ``processor`` and ``bits`` that describe the configuration of the browser under test. ``debug`` is a boolean indicating whether a build is a debug @@ -246,3 +252,18 @@ A more complex manifest with conditional properties might be:: Note that ``PASS`` in the above works, but is unnecessary; ``PASS`` (or ``OK``) is always the default expectation for (sub)tests. + +A manifest with fuzzy reftest values might be:: + + [reftest.html] + fuzzy: [10;200, ref1.html:20;200-300, subtest1.html==ref2.html:10-15;20] + +In this case the default fuzziness for any comparison would be to +require a maximum difference per channel of less than or equal to 10 +and less than or equal to 200 total pixels different. For any +comparison involving ref1.html on the right hand side, the limits +would instead be a difference per channel not more than 20 and a total +difference count of not less than 200 and not more than 300. For the +specific comparison subtest1.html == ref2.html (both resolved against +the test URL) these limits would instead be 10 to 15 and 0 to 20, +respectively. diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt index 24a7d3d7e03..37f4fde4786 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt +++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt @@ -2,4 +2,6 @@ html5lib == 1.0.1 mozinfo == 0.10 mozlog==4.0 mozdebug==0.1.1 +pillow == 5.2.0 urllib3[secure]==1.24.1 + diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py index 493d3c43fc0..6563721caee 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py @@ -202,11 +202,13 @@ class TestEnvironment(object): def ensure_started(self): # Pause for a while to ensure that the server has a chance to start - for _ in xrange(60): + total_sleep_secs = 30 + each_sleep_secs = 0.01 + for _ in xrange(int(total_sleep_secs / each_sleep_secs)): failed = self.test_servers() if not failed: return - time.sleep(0.5) + time.sleep(each_sleep_secs) raise EnvironmentError("Servers failed to start: %s" % ", ".join("%s:%s" % item for item in failed)) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py index 8958ecfc3bb..5fa30563890 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py @@ -1,6 +1,7 @@ import base64 import hashlib import httplib +import io import os import threading import traceback @@ -8,6 +9,8 @@ import socket import urlparse from abc import ABCMeta, abstractmethod +from PIL import Image, ImageChops, ImageStat + from ..testrunner import Stop from protocol import Protocol, BaseProtocolPart @@ -286,8 +289,7 @@ class RefTestImplementation(object): screenshot = data hash_value = hash_screenshot(data) - - self.screenshot_cache[key] = (hash_value, None) + self.screenshot_cache[key] = (hash_value, screenshot) rv = (hash_value, screenshot) else: @@ -299,11 +301,32 @@ class RefTestImplementation(object): def reset(self): self.screenshot_cache.clear() - def is_pass(self, lhs_hash, rhs_hash, relation): + def is_pass(self, hashes, screenshots, relation, fuzzy): assert relation in ("==", "!=") - self.message.append("Testing %s %s %s" % (lhs_hash, relation, rhs_hash)) - return ((relation == "==" and lhs_hash == rhs_hash) or - (relation == "!=" and lhs_hash != rhs_hash)) + if not fuzzy or fuzzy == ((0,0), (0,0)): + equal = hashes[0] == hashes[1] + else: + max_per_channel, pixels_different = self.get_differences(screenshots) + allowed_per_channel, allowed_different = fuzzy + self.logger.info("Allowed %s pixels different, maximum difference per channel %s" % + ("-".join(str(item) for item in allowed_different), + "-".join(str(item) for item in allowed_per_channel))) + equal = (allowed_per_channel[0] <= max_per_channel <= allowed_per_channel[1] and + allowed_different[0] <= pixels_different <= allowed_different[1]) + return equal if relation == "==" else not equal + + def get_differences(self, screenshots): + lhs = Image.open(io.BytesIO(base64.b64decode(screenshots[0]))).convert("RGB") + rhs = Image.open(io.BytesIO(base64.b64decode(screenshots[1]))).convert("RGB") + diff = ImageChops.difference(lhs, rhs) + minimal_diff = diff.crop(diff.getbbox()) + mask = minimal_diff.convert("L", dither=None) + stat = ImageStat.Stat(minimal_diff, mask) + per_channel = max(item[1] for item in stat.extrema) + count = stat.count[0] + self.logger.info("Found %s pixels different, maximum difference per channel %s" % + (count, per_channel)) + return per_channel, count def run_test(self, test): viewport_size = test.viewport_size @@ -319,6 +342,7 @@ class RefTestImplementation(object): screenshots = [None, None] nodes, relation = stack.pop() + fuzzy = self.get_fuzzy(test, nodes, relation) for i, node in enumerate(nodes): success, data = self.get_hash(node, viewport_size, dpi) @@ -327,7 +351,8 @@ class RefTestImplementation(object): hashes[i], screenshots[i] = data - if self.is_pass(hashes[0], hashes[1], relation): + if self.is_pass(hashes, screenshots, relation, fuzzy): + fuzzy = self.get_fuzzy(test, nodes, relation) if nodes[1].references: stack.extend(list(((nodes[1], item[0]), item[1]) for item in reversed(nodes[1].references))) else: @@ -352,6 +377,25 @@ class RefTestImplementation(object): "message": "\n".join(self.message), "extra": {"reftest_screenshots": log_data}} + def get_fuzzy(self, root_test, test_nodes, relation): + full_key = tuple([item.url for item in test_nodes] + [relation]) + ref_only_key = test_nodes[1].url + + fuzzy_override = root_test.fuzzy_override + fuzzy = test_nodes[0].fuzzy + + sources = [fuzzy_override, fuzzy] + keys = [full_key, ref_only_key, None] + value = None + for source in sources: + for key in keys: + if key in source: + value = source[key] + break + if value: + break + return value + def retake_screenshot(self, node, viewport_size, dpi): success, data = self.executor.screenshot(node, viewport_size, dpi) if not success: diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py index b70f0ed0b0c..f9fd97b6ba8 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py @@ -846,7 +846,7 @@ class MarionetteRefTestExecutor(RefTestExecutor): return screenshot -class InternalRefTestImplementation(object): +class InternalRefTestImplementation(RefTestImplementation): def __init__(self, executor): self.timeout_multiplier = executor.timeout_multiplier self.executor = executor @@ -870,7 +870,7 @@ class InternalRefTestImplementation(object): pass def run_test(self, test): - references = self.get_references(test) + references = self.get_references(test, test) timeout = (test.timeout * 1000) * self.timeout_multiplier rv = self.executor.protocol.marionette._send_message("reftest:run", {"test": self.executor.test_url(test), @@ -881,10 +881,11 @@ class InternalRefTestImplementation(object): "height": 600})["value"] return rv - def get_references(self, node): + def get_references(self, root_test, node): rv = [] for item, relation in node.references: - rv.append([self.executor.test_url(item), self.get_references(item), relation]) + rv.append([self.executor.test_url(item), self.get_references(root_test, item), relation, + {"fuzzy": self.get_fuzzy(root_test, [node, item], relation)}]) return rv def teardown(self): diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py index 73f5fcf84a8..563252ce2bb 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py @@ -416,7 +416,11 @@ class WebDriverRefTestExecutor(RefTestExecutor): """return [window.outerWidth - window.innerWidth, window.outerHeight - window.innerHeight];""" ) - self.protocol.webdriver.window.position = (0, 0) + try: + self.protocol.webdriver.window.position = (0, 0) + except client.InvalidArgumentException: + # Safari 12 throws with 0 or 1, treating them as bools; fixed in STP + self.protocol.webdriver.window.position = (2, 2) self.protocol.webdriver.window.size = (800 + width_offset, 600 + height_offset) result = self.implementation.run_test(test) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestexpected.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestexpected.py index 80284bd8a21..fb3ef627d94 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestexpected.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestexpected.py @@ -1,5 +1,6 @@ import os import urlparse +from collections import deque from wptmanifest.backends import static from wptmanifest.backends.static import ManifestItem @@ -97,6 +98,105 @@ def leak_threshold(node): return rv +def fuzzy_prop(node): + """Fuzzy reftest match + + This can either be a list of strings or a single string. When a list is + supplied, the format of each item matches the description below. + + The general format is + fuzzy = [key ":"] ";" + key = [reftype ] + reftype = "==" | "!=" + prop = [propName "=" ] range + propName = "maxDifferences" | "totalPixels" + range = ["-" ] + + So for example: + maxDifferences=10;totalPixels=10-20 + + specifies that for any test/ref pair for which no other rule is supplied, + there must be a maximum pixel difference of exactly 10, and betwen 10 and + 20 total pixels different. + + test.html==ref.htm:10;20 + + specifies that for a equality comparison between test.html and ref.htm, + resolved relative to the test path, there can be a maximum difference + of 10 in the pixel value for any channel and 20 pixels total difference. + + ref.html:10;20 + + is just like the above but applies to any comparison involving ref.html + on the right hand side. + + The return format is [(key, (maxDifferenceRange, totalPixelsRange))], where + the key is either None where no specific reference is specified, the reference + name where there is only one component or a tuple (test, ref, reftype) when the + exact comparison is specified. maxDifferenceRange and totalPixelsRange are tuples + of integers indicating the inclusive range of allowed values. +""" + rv = [] + args = ["maxDifference", "totalPixels"] + try: + value = node.get("fuzzy") + except KeyError: + return rv + if not isinstance(value, list): + value = [value] + for item in value: + if not isinstance(item, (str, unicode)): + rv.append(item) + continue + parts = item.rsplit(":", 1) + if len(parts) == 1: + key = None + fuzzy_values = parts[0] + else: + key, fuzzy_values = parts + for reftype in ["==", "!="]: + if reftype in key: + key = key.split(reftype) + key.append(reftype) + key = tuple(key) + ranges = fuzzy_values.split(";") + if len(ranges) != 2: + raise ValueError("Malformed fuzzy value %s" % item) + arg_values = {None: deque()} + for range_str_value in ranges: + if "=" in range_str_value: + name, range_str_value = [part.strip() + for part in range_str_value.split("=", 1)] + if name not in args: + raise ValueError("%s is not a valid fuzzy property" % name) + if arg_values.get(name): + raise ValueError("Got multiple values for argument %s" % name) + else: + name = None + if "-" in range_str_value: + range_min, range_max = range_str_value.split("-") + else: + range_min = range_str_value + range_max = range_str_value + try: + range_value = tuple(int(item.strip()) for item in (range_min, range_max)) + except ValueError: + raise ValueError("Fuzzy value %s must be a range of integers" % range_str_value) + if name is None: + arg_values[None].append(range_value) + else: + arg_values[name] = range_value + range_values = [] + for arg_name in args: + if arg_values.get(arg_name): + value = arg_values.pop(arg_name) + else: + value = arg_values[None].popleft() + range_values.append(value) + rv.append((key, tuple(range_values))) + return rv + + class ExpectedManifest(ManifestItem): def __init__(self, name, test_path, url_base): """Object representing all the tests in a particular manifest @@ -183,6 +283,10 @@ class ExpectedManifest(ManifestItem): def lsan_max_stack_depth(self): return int_prop("lsan-max-stack-depth", self) + @property + def fuzzy(self): + return fuzzy_prop(self) + class DirectoryManifest(ManifestItem): @property @@ -229,6 +333,11 @@ class DirectoryManifest(ManifestItem): def lsan_max_stack_depth(self): return int_prop("lsan-max-stack-depth", self) + @property + def fuzzy(self): + return fuzzy_prop(self) + + class TestNode(ManifestItem): def __init__(self, name): """Tree node associated with a particular test in a manifest @@ -301,6 +410,10 @@ class TestNode(ManifestItem): def lsan_max_stack_depth(self): return int_prop("lsan-max-stack-depth", self) + @property + def fuzzy(self): + return fuzzy_prop(self) + def append(self, node): """Add a subtest to the current test diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/metadata.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/metadata.py index 27d053ce9b6..b951ea5b9b4 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/metadata.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/metadata.py @@ -445,7 +445,7 @@ def create_test_tree(metadata_path, test_manifest): """ do_delayed_imports() id_test_map = {} - exclude_types = frozenset(["stub", "helper", "manual", "support", "conformancechecker"]) + exclude_types = frozenset(["stub", "helper", "manual", "support", "conformancechecker", "reftest_base"]) all_types = manifestitem.item_types.keys() include_types = set(all_types) - exclude_types for item_type, test_path, tests in test_manifest.itertypes(*include_types): diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_manifestexpected.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_manifestexpected.py new file mode 100644 index 00000000000..93557108fc7 --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_manifestexpected.py @@ -0,0 +1,38 @@ +import os +import sys +from io import BytesIO + +import pytest + +sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", "..")) + +from wptrunner import manifestexpected + + +@pytest.mark.parametrize("fuzzy, expected", [ + (b"ref.html:1;200", [("ref.html", ((1, 1), (200, 200)))]), + (b"ref.html:0-1;100-200", [("ref.html", ((0, 1), (100, 200)))]), + (b"0-1;100-200", [(None, ((0, 1), (100, 200)))]), + (b"maxDifference=1;totalPixels=200", [(None, ((1, 1), (200, 200)))]), + (b"totalPixels=200;maxDifference=1", [(None, ((1, 1), (200, 200)))]), + (b"totalPixels=200;1", [(None, ((1, 1), (200, 200)))]), + (b"maxDifference=1;200", [(None, ((1, 1), (200, 200)))]), + (b"test.html==ref.html:maxDifference=1;totalPixels=200", + [((u"test.html", u"ref.html", "=="), ((1, 1), (200, 200)))]), + (b"test.html!=ref.html:maxDifference=1;totalPixels=200", + [((u"test.html", u"ref.html", "!="), ((1, 1), (200, 200)))]), + (b"[test.html!=ref.html:maxDifference=1;totalPixels=200, test.html==ref1.html:maxDifference=5-10;100]", + [((u"test.html", u"ref.html", "!="), ((1, 1), (200, 200))), + ((u"test.html", u"ref1.html", "=="), ((5,10), (100, 100)))]), +]) +def test_fuzzy(fuzzy, expected): + data = """ +[test.html] + fuzzy: %s""" % fuzzy + f = BytesIO(data) + manifest = manifestexpected.static.compile(f, + {}, + data_cls_getter=manifestexpected.data_cls_getter, + test_path="test/test.html", + url_base="/") + assert manifest.get_test("/test/test.html").fuzzy == expected diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_wpttest.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_wpttest.py index f463dd73f2b..6daa59b5847 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_wpttest.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_wpttest.py @@ -6,6 +6,7 @@ from mock import Mock sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..")) +from manifest import manifest as wptmanifest from manifest.item import TestharnessTest from wptrunner import manifestexpected, wpttest @@ -44,6 +45,11 @@ test_2 = """\ lsan-max-stack-depth: 42 """ +test_fuzzy = """\ +[fuzzy.html] + fuzzy: fuzzy-ref.html:1;200 +""" + testharness_test = """ """ @@ -139,3 +145,26 @@ def test_metadata_lsan_stack_depth(): test_obj = wpttest.from_manifest(tests, test, inherit_metadata, test_metadata.get_test(test.id)) assert test_obj.lsan_max_stack_depth == 42 + + +def test_metadata_fuzzy(): + manifest_data = { + "items": {"reftest": {"a/fuzzy.html": [["/a/fuzzy.html", + [["/a/fuzzy-ref.html", "=="]], + {"fuzzy": [[["/a/fuzzy.html", '/a/fuzzy-ref.html', '=='], + [[2, 3], [10, 15]]]]}]]}}, + "paths": {"a/fuzzy.html": ["0"*40, "reftest"]}, + "version": wptmanifest.CURRENT_VERSION, + "url_base": "/"} + manifest = wptmanifest.Manifest.from_json(".", manifest_data) + test_metadata = manifestexpected.static.compile(BytesIO(test_fuzzy), + {}, + data_cls_getter=manifestexpected.data_cls_getter, + test_path="a/fuzzy.html", + url_base="/") + + test = manifest.iterpath("a/fuzzy.html").next() + test_obj = wpttest.from_manifest(manifest, test, [], test_metadata.get_test(test.id)) + + assert test_obj.fuzzy == {('/a/fuzzy.html', '/a/fuzzy-ref.html', '=='): [[2, 3], [10, 15]]} + assert test_obj.fuzzy_override == {'/a/fuzzy-ref.html': ((1, 1), (200, 200))} diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/backends/conditional.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/backends/conditional.py index 4eb292efb75..7ad35756d0c 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/backends/conditional.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/backends/conditional.py @@ -341,6 +341,8 @@ class ManifestItem(object): yield item def remove_value(self, key, value): + if key not in self._data: + return try: self._data[key].remove(value) except ValueError: diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py index dc1c6b63aef..6a4fa4fdf82 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py @@ -1,5 +1,6 @@ import os import subprocess +import urlparse from collections import defaultdict from wptmanifest.parser import atoms @@ -279,12 +280,12 @@ class Test(object): @property def prefs(self): prefs = {} - for meta in self.itermeta(): + for meta in reversed(list(self.itermeta())): meta_prefs = meta.prefs - prefs.update(meta_prefs) if atom_reset in meta_prefs: - del prefs[atom_reset] - break + del meta_prefs[atom_reset] + prefs = {} + prefs.update(meta_prefs) return prefs def expected(self, subtest=None): @@ -359,7 +360,7 @@ class ReftestTest(Test): test_type = "reftest" def __init__(self, tests_root, url, inherit_metadata, test_metadata, references, - timeout=None, path=None, viewport_size=None, dpi=None, protocol="http"): + timeout=None, path=None, viewport_size=None, dpi=None, fuzzy=None, protocol="http"): Test.__init__(self, tests_root, url, inherit_metadata, test_metadata, timeout, path, protocol) @@ -370,6 +371,7 @@ class ReftestTest(Test): self.references = references self.viewport_size = viewport_size self.dpi = dpi + self._fuzzy = fuzzy or {} @classmethod def from_manifest(cls, @@ -398,7 +400,8 @@ class ReftestTest(Test): path=manifest_test.path, viewport_size=manifest_test.viewport_size, dpi=manifest_test.dpi, - protocol="https" if hasattr(manifest_test, "https") and manifest_test.https else "http") + protocol="https" if hasattr(manifest_test, "https") and manifest_test.https else "http", + fuzzy=manifest_test.fuzzy) nodes[url] = node @@ -454,6 +457,30 @@ class ReftestTest(Test): def keys(self): return ("reftype", "refurl") + @property + def fuzzy(self): + return self._fuzzy + + @property + def fuzzy_override(self): + values = {} + for meta in reversed(list(self.itermeta(None))): + value = meta.fuzzy + if not value: + continue + if atom_reset in value: + value.remove(atom_reset) + values = {} + for key, data in value: + if len(key) == 3: + key[0] = urlparse.urljoin(self.url, key[0]) + key[1] = urlparse.urljoin(self.url, key[1]) + else: + # Key is just a relative url to a ref + key = urlparse.urljoin(self.url, key) + values[key] = data + return values + class WdspecTest(Test): diff --git a/tests/wpt/web-platform-tests/web-nfc/NFCReader-manual.https.html b/tests/wpt/web-platform-tests/web-nfc/NFCReader-manual.https.html new file mode 100644 index 00000000000..a3171c3544e --- /dev/null +++ b/tests/wpt/web-platform-tests/web-nfc/NFCReader-manual.https.html @@ -0,0 +1,64 @@ + + +Web NFC: NFCReader tests + + + + + + + +

Tap an NFC tag to the test device with NFC support.

+ +

Note: All the actions need to be done in 60 seconds, otherwise it will get TIMEOUT.

+ +
+ + diff --git a/tests/wpt/web-platform-tests/web-nfc/NFCReader.html b/tests/wpt/web-platform-tests/web-nfc/NFCReader.html new file mode 100644 index 00000000000..5a0e88433f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/web-nfc/NFCReader.html @@ -0,0 +1,39 @@ + + +Web NFC: NFCReader tests + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/web-nfc/nfc_watch.https.html b/tests/wpt/web-platform-tests/web-nfc/nfc_watch.https.html deleted file mode 100644 index 455b6437a8e..00000000000 --- a/tests/wpt/web-platform-tests/web-nfc/nfc_watch.https.html +++ /dev/null @@ -1,73 +0,0 @@ - - -Web NFC: nfc.watch tests - - - - - - -
- - diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html index 3a11074a41c..bee1aa835bf 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html @@ -156,6 +156,45 @@ }); }); + audit.define( + { + label: 'test-audiocontextoptions-sampleRate', + description: + 'Test creating contexts with non-default sampleRate values.' + }, + function(task, should) { + // A sampleRate of 1 is unlikely to be supported on any browser, + // test that this rate is rejected. + should( + () => { + context = new AudioContext({sampleRate: 1}) + }, + 'context = new AudioContext({sampleRate: 1})') + .throw(DOMException); + + // A sampleRate of 1,000,000 is unlikely to be supported on any + // browser, test that this rate is also rejected. + should( + () => { + context = new AudioContext({sampleRate: 1000000}) + }, + 'context = new AudioContext({sampleRate: 1000000})') + .throw(DOMException); + + should( + () => { + context = new AudioContext({sampleRate: 24000}) + }, + 'context = new AudioContext({sampleRate: 24000})') + .notThrow(); + should( + context.sampleRate, 'sampleRate inrange') + .beEqualTo(24000); + + context.close(); + task.done(); + }); + audit.run();