diff options
author | WPT Sync Bot <josh+wptsync@joshmatthews.net> | 2020-01-10 08:22:32 +0000 |
---|---|---|
committer | WPT Sync Bot <josh+wptsync@joshmatthews.net> | 2020-01-10 10:58:32 +0000 |
commit | 41b281893fbffb7b4013a43575a2d84c74963f8b (patch) | |
tree | 3f98945488f2265868f7a7a3d09ff537232c7dd0 | |
parent | c6192dc286ce0496b76998c900b48cdf7cdabdfe (diff) | |
download | servo-41b281893fbffb7b4013a43575a2d84c74963f8b.tar.gz servo-41b281893fbffb7b4013a43575a2d84c74963f8b.zip |
Update web-platform-tests to revision 2a73e37c60b18846d9d2798c845242f209d74644
62 files changed, 2230 insertions, 174 deletions
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 abf0d50aff3..4c1aa18e695 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 @@ -2,6 +2,9 @@ [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] [Revoke blob URL after creating Request, will fetch] diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index be1d74a725a..99bd02de024 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -20399,6 +20399,42 @@ {} ] ], + "compat/webkit-box-horizontal-reverse-variants.html": [ + [ + "compat/webkit-box-horizontal-reverse-variants.html", + [ + [ + "/compat/webkit-box-horizontal-reverse-variants-ref.html", + "==" + ] + ], + {} + ] + ], + "compat/webkit-box-horizontal-rtl-variants.html": [ + [ + "compat/webkit-box-horizontal-rtl-variants.html", + [ + [ + "/compat/webkit-box-horizontal-rtl-variants-ref.html", + "==" + ] + ], + {} + ] + ], + "compat/webkit-box-rtl-flex.html": [ + [ + "compat/webkit-box-rtl-flex.html", + [ + [ + "/compat/webkit-box-rtl-flex-ref.html", + "==" + ] + ], + {} + ] + ], "compat/webkit-linear-gradient-diff-unprefixed.html": [ [ "compat/webkit-linear-gradient-diff-unprefixed.html", @@ -206867,6 +206903,18 @@ {} ] ], + "html/rendering/the-details-element/summary-display-list-item.html": [ + [ + "html/rendering/the-details-element/summary-display-list-item.html", + [ + [ + "/html/rendering/the-details-element/summary-display-list-item-ref.html", + "==" + ] + ], + {} + ] + ], "html/rendering/widgets/button-layout/anonymous-button-content-box.html": [ [ "html/rendering/widgets/button-layout/anonymous-button-content-box.html", @@ -218528,6 +218576,15 @@ "compat/webkit-box-fieldset-ref.html": [ [] ], + "compat/webkit-box-horizontal-reverse-variants-ref.html": [ + [] + ], + "compat/webkit-box-horizontal-rtl-variants-ref.html": [ + [] + ], + "compat/webkit-box-rtl-flex-ref.html": [ + [] + ], "compat/webkit-linear-gradient-diff-unprefixed-ref.html": [ [] ], @@ -247355,6 +247412,9 @@ "css/css-animations/animationevent-interface.js": [ [] ], + "css/css-animations/support/empty-sheet.css": [ + [] + ], "css/css-animations/support/testcommon.js": [ [] ], @@ -276905,6 +276965,9 @@ "html/rendering/the-details-element/single-summary.html": [ [] ], + "html/rendering/the-details-element/summary-display-list-item-ref.html": [ + [] + ], "html/rendering/widgets/button-layout/anonymous-button-content-box-ref.html": [ [] ], @@ -284861,6 +284924,9 @@ "resources/test/tests/functional/api-tests-3.html": [ [] ], + "resources/test/tests/functional/assert-array-equals.html": [ + [] + ], "resources/test/tests/functional/force_timeout.html": [ [] ], @@ -321851,6 +321917,12 @@ {} ] ], + "css/css-animations/animation-before-initial-box-construction-001.html": [ + [ + "css/css-animations/animation-before-initial-box-construction-001.html", + {} + ] + ], "css/css-animations/animation-iteration-count-calc.html": [ [ "css/css-animations/animation-iteration-count-calc.html", @@ -325407,6 +325479,24 @@ {} ] ], + "css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html": [ + [ + "css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html", + {} + ] + ], + "css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html": [ + [ + "css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html", + {} + ] + ], + "css/css-grid/alignment/grid-align-content-distribution.html": [ + [ + "css/css-grid/alignment/grid-align-content-distribution.html", + {} + ] + ], "css/css-grid/alignment/grid-align-content.html": [ [ "css/css-grid/alignment/grid-align-content.html", @@ -361856,6 +361946,14 @@ {} ] ], + "html/cross-origin-opener-policy/coop-navigated-history-popup.https.html": [ + [ + "html/cross-origin-opener-policy/coop-navigated-history-popup.https.html", + { + "timeout": "long" + } + ] + ], "html/cross-origin-opener-policy/coop-navigated-popup.https.html": [ [ "html/cross-origin-opener-policy/coop-navigated-popup.https.html", @@ -467883,7 +467981,7 @@ "testharness" ], "2dcontext/imagebitmap/canvas-createImageBitmap-video-resize.html": [ - "94fc0d1c57ac6cab4e5f637584d5e1d9db7e1a5c", + "0a4f91d085d60523d49b190d3064aad222cc56d3", "testharness" ], "2dcontext/imagebitmap/common.sub.js": [ @@ -476926,6 +477024,22 @@ "c3a2e64c114ef78507213ab95f5cde91cac3bbbe", "reftest" ], + "compat/webkit-box-horizontal-reverse-variants-ref.html": [ + "72d0b2c6f6851764453f79cf71fc19be73bcb0e8", + "support" + ], + "compat/webkit-box-horizontal-reverse-variants.html": [ + "09dba694f260c6e5536663cac6151427a49d6dc5", + "reftest" + ], + "compat/webkit-box-horizontal-rtl-variants-ref.html": [ + "42321c506979b2ec08814cf024dc95da24f3d6d2", + "support" + ], + "compat/webkit-box-horizontal-rtl-variants.html": [ + "085a5899bc8e78214d57e691b0e5c3b3fc2904aa", + "reftest" + ], "compat/webkit-box-ignore-box-pack.html": [ "80b52fbf1fe13a7c9ec5288f301194e40a381430", "testharness" @@ -476934,6 +477048,14 @@ "30c243b301fbafc55a03aae0286ba4c2b1983da1", "testharness" ], + "compat/webkit-box-rtl-flex-ref.html": [ + "10b9eb73fd9017746116e55d42df434ba33fec1e", + "support" + ], + "compat/webkit-box-rtl-flex.html": [ + "d20b3a0a9dbab237a799f62504b9b1ea7b90a564", + "reftest" + ], "compat/webkit-box-vertically-centered.html": [ "4932274e906172f37ceed65067141817aa1b26ab", "testharness" @@ -497883,7 +498005,7 @@ "testharness" ], "cookies/http-state/general-tests.html": [ - "d80527f9b0aa22c0611edff546d5663198a412bb", + "f563bf7c68d662be8182ade0b4fd1629295df754", "testharness" ], "cookies/http-state/mozilla-tests.html": [ @@ -497951,7 +498073,7 @@ "support" ], "cookies/http-state/resources/test-files/0004-expected": [ - "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + "5ab27668fdbdd021d29abbda3acd08e94aa92b0b", "support" ], "cookies/http-state/resources/test-files/0004-test": [ @@ -498087,7 +498209,7 @@ "support" ], "cookies/http-state/resources/test-files/0021-expected": [ - "a43cb004436a02f18cda39625fc2126f373dd7ae", + "445a5929e81e05151a90913c6ef2597a1aafd3e8", "support" ], "cookies/http-state/resources/test-files/0021-test": [ @@ -498103,7 +498225,7 @@ "support" ], "cookies/http-state/resources/test-files/0023-expected": [ - "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + "5ab27668fdbdd021d29abbda3acd08e94aa92b0b", "support" ], "cookies/http-state/resources/test-files/0023-test": [ @@ -498111,7 +498233,7 @@ "support" ], "cookies/http-state/resources/test-files/0024-expected": [ - "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + "5ab27668fdbdd021d29abbda3acd08e94aa92b0b", "support" ], "cookies/http-state/resources/test-files/0024-test": [ @@ -498119,7 +498241,7 @@ "support" ], "cookies/http-state/resources/test-files/0025-expected": [ - "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + "5ab27668fdbdd021d29abbda3acd08e94aa92b0b", "support" ], "cookies/http-state/resources/test-files/0025-test": [ @@ -498127,7 +498249,7 @@ "support" ], "cookies/http-state/resources/test-files/0026-expected": [ - "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + "5ab27668fdbdd021d29abbda3acd08e94aa92b0b", "support" ], "cookies/http-state/resources/test-files/0026-test": [ @@ -498135,7 +498257,7 @@ "support" ], "cookies/http-state/resources/test-files/0027-expected": [ - "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + "973d3847c04c2243d89086aa490a5e54f2d41f10", "support" ], "cookies/http-state/resources/test-files/0027-test": [ @@ -498143,7 +498265,7 @@ "support" ], "cookies/http-state/resources/test-files/0028-expected": [ - "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + "5ab27668fdbdd021d29abbda3acd08e94aa92b0b", "support" ], "cookies/http-state/resources/test-files/0028-test": [ @@ -560922,6 +561044,10 @@ "3ef19970007d4bb6a889f9601bc7c910f619f841", "support" ], + "css/css-animations/animation-before-initial-box-construction-001.html": [ + "558c5ea18699f3856c7d34b976f920b1fd7fd5b0", + "testharness" + ], "css/css-animations/animation-common-ref.html": [ "ddc7da67ddf5fed83e653d1130a65f5c1e3a6dec", "support" @@ -561410,6 +561536,10 @@ "792fda33ed8b0bacf355e62066ec05d54cc5c729", "testharness" ], + "css/css-animations/support/empty-sheet.css": [ + "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + "support" + ], "css/css-animations/support/testcommon.js": [ "b4fde4b967de2eb67cb3e0819c3a896375e861f9", "support" @@ -582706,6 +582836,18 @@ "d45df4bc2231cbda5dee1bafc3f386f008024d79", "support" ], + "css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html": [ + "8217f4dd2c3cfd031aece87d54a78d5bcec640ca", + "testharness" + ], + "css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html": [ + "096e3fd6910a09ba5097b66acdb1dcf8a6d5326e", + "testharness" + ], + "css/css-grid/alignment/grid-align-content-distribution.html": [ + "7b66ddb995191c67278d861aa6cb6a637bc6adaf", + "testharness" + ], "css/css-grid/alignment/grid-align-content.html": [ "fb3f7007ee19189a09de9c1f786176c317b7ee14", "testharness" @@ -654318,6 +654460,10 @@ "63b60e490f47f4db77d33d7a4ca2f5b9a4181de8", "support" ], + "html/cross-origin-opener-policy/coop-navigated-history-popup.https.html": [ + "bd1cabafd4164e51804b0760dbf45885f3df3520", + "testharness" + ], "html/cross-origin-opener-policy/coop-navigated-popup.https.html": [ "3c6019ace0b308562cca08d6d6bfd6484882e1db", "testharness" @@ -654519,11 +654665,11 @@ "support" ], "html/cross-origin-opener-policy/resources/common.js": [ - "53b80bb6e998e6f93a46176b58be4c016275ce0f", + "477bc6c948f29cc18dc987e828eb5799b4a946ab", "support" ], "html/cross-origin-opener-policy/resources/coop-coep.py": [ - "8691e1b59d3134ef210259ed9501d123c002f88c", + "e6f655ab728107e4bac31cd7748711f719b01bd3", "support" ], "html/cross-origin-opener-policy/resources/postback.html": [ @@ -661522,6 +661668,14 @@ "1f09e7e75f9126982a07902ae0693f9ea2fd5823", "support" ], + "html/rendering/the-details-element/summary-display-list-item-ref.html": [ + "31e98d3fdca8fff9fe88929c8075643fca3abb40", + "support" + ], + "html/rendering/the-details-element/summary-display-list-item.html": [ + "c2e96e987ea943e29626e0cfd013ef6d6cae3bbc", + "reftest" + ], "html/rendering/unmapped-attributes.html": [ "3f457eb492f0b72b2a9c5891e8784d0b69958b38", "testharness" @@ -673435,7 +673589,7 @@ "support" ], "interfaces/reporting.idl": [ - "f5370e8f1e656acf7409dbda907ee9672d5e8ed1", + "d42f0bac59c2fa6d8f94402f7b6e1e29de379123", "support" ], "interfaces/requestidlecallback.idl": [ @@ -673551,7 +673705,7 @@ "support" ], "interfaces/webauthn.idl": [ - "29025f35eecb5c82b33ffcc7039c4a99f081f4e3", + "56c2856b19a76d85a0b0495d620c025247ad3f42", "support" ], "interfaces/webdriver.idl": [ @@ -673583,7 +673737,7 @@ "support" ], "interfaces/webrtc.idl": [ - "badbe4df1dccd4113cb76e47f4a842f20d0d8963", + "053afdcb13587543e7da6140e72101f3892a05a0", "support" ], "interfaces/webusb.idl": [ @@ -674371,7 +674525,7 @@ "testharness" ], "lint.whitelist": [ - "353922a456c4dbeacd2ab6d651b64be00c9a4903", + "425730feea72429b66926298d3716b8164648211", "support" ], "loading/lazyload/META.yml": [ @@ -702511,7 +702665,7 @@ "support" ], "resources/test/conftest.py": [ - "4caa7943fb7ba125e5c51437e7a70aecbd3989dd", + "857f1b41bcb11c422d6603e79d8c98a6b1dfbb07", "support" ], "resources/test/harness.html": [ @@ -702582,6 +702736,10 @@ "d32b4d8bc7ddfef398d769f73478e0f3f075f871", "support" ], + "resources/test/tests/functional/assert-array-equals.html": [ + "d56419d1f313f34674d778236c5f6e74b5260def", + "support" + ], "resources/test/tests/functional/force_timeout.html": [ "a43759530ad8cd7e6bc61fe367db34bbf7a32e15", "support" @@ -702851,7 +703009,7 @@ "support" ], "resources/test/variants.js": [ - "eebac6f7d14c2f8ee4b4eead727081a5e494cee4", + "c40085a329f7ad5fbb34ed842542db29c2bc3734", "support" ], "resources/test/wptserver.py": [ @@ -702879,7 +703037,7 @@ "support" ], "resources/testharness.js": [ - "f289e7797201d7d9fa569c2864649571bd50b54c", + "2c3664dfa6ab5518019dc6f2c27e275bb6a62a16", "support" ], "resources/testharness.js.headers": [ @@ -713459,7 +713617,7 @@ "support" ], "tools/ci/azure/install_chrome.yml": [ - "6bd5c2334ad4e3e4d5d6faaf8005f4e0b44cf1fe", + "fd650e80aaad309c8e983274d2b823bba91b1fb1", "support" ], "tools/ci/azure/install_edge.yml": [ @@ -713487,7 +713645,7 @@ "support" ], "tools/ci/azure/safari-technology-preview.rb": [ - "a3772b75e462194eb0de5ea2c7532a8248ec3d79", + "2d4912abbff674291e4e9497b0a37b6c6a9989c8", "support" ], "tools/ci/azure/system_info.yml": [ @@ -718351,7 +718509,7 @@ "support" ], "tools/webdriver/webdriver/client.py": [ - "0c5bbff5629868fdc48a1a41cf882fabe5617c1b", + "cf4c5fd35fd98bb54ba248d1c1c31590310727ed", "support" ], "tools/webdriver/webdriver/error.py": [ @@ -727775,15 +727933,15 @@ "wdspec" ], "webdriver/tests/take_element_screenshot/__init__.py": [ - "9de8792460797f4a31ee50d112c7132a2c2714ad", + "9a82cc48eab7993dcd6588d89b5aae9ed4ebfc82", "support" ], "webdriver/tests/take_element_screenshot/iframe.py": [ - "242122f0b5e7359c364a8aa1da345fc3da15acf1", + "83f55deff753a4525839d3c0675acfb459f64395", "wdspec" ], "webdriver/tests/take_element_screenshot/screenshot.py": [ - "fd460b656ae307a289174f9180ecc9ed23f0da07", + "50d33a266db75f0fc918ac5fa6d1edc6e548385f", "wdspec" ], "webdriver/tests/take_element_screenshot/user_prompts.py": [ @@ -727791,11 +727949,11 @@ "wdspec" ], "webdriver/tests/take_screenshot/__init__.py": [ - "c07f8d167030d03abbb263ef08d8846bb7a71eba", + "f3001d946df56e58c4e3fa1319db12bf29f3e341", "support" ], "webdriver/tests/take_screenshot/iframe.py": [ - "66df6ec94935554340f916e4c2d9bb88012de1b5", + "601c039d56de0aa2937ac73675ba59792cbdcd17", "wdspec" ], "webdriver/tests/take_screenshot/screenshot.py": [ diff --git a/tests/wpt/metadata/css/CSS2/ui/outline-width-013.xht.ini b/tests/wpt/metadata/css/CSS2/ui/outline-width-013.xht.ini new file mode 100644 index 00000000000..ea59bb35dd5 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/ui/outline-width-013.xht.ini @@ -0,0 +1,2 @@ +[outline-width-013.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-animations/animation-before-initial-box-construction-001.html.ini b/tests/wpt/metadata/css/css-animations/animation-before-initial-box-construction-001.html.ini new file mode 100644 index 00000000000..695b6eadc72 --- /dev/null +++ b/tests/wpt/metadata/css/css-animations/animation-before-initial-box-construction-001.html.ini @@ -0,0 +1,5 @@ +[animation-before-initial-box-construction-001.html] + expected: ERROR + [animations started before initial-containing-block creation properly function] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini b/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini index 628b1fab770..c884dc82eab 100644 --- a/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini +++ b/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini @@ -2,3 +2,6 @@ [listeners are called when <iframe> is resized] expected: FAIL + [listeners are called correct number of times] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-iframes.html.ini b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-iframes.html.ini index 6ef8bb1049f..171592fc08f 100644 --- a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-iframes.html.ini +++ b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-iframes.html.ini @@ -2,6 +2,3 @@ [elementsFromPoint on the root document for points in iframe elements] expected: FAIL - [elementsFromPoint on inner documents] - expected: FAIL - 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 8c8f83c357c..07769384006 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -321,6 +321,15 @@ [<iframe>: combined response Content-Type: text/html */*;charset=gbk] expected: FAIL - [<iframe>: combined response Content-Type: text/html;x=" text/plain] + [<iframe>: separate response Content-Type: text/html */*;charset=gbk] + expected: FAIL + + [<iframe>: separate response Content-Type: text/plain */*] + expected: FAIL + + [<iframe>: separate response Content-Type: text/html;" \\" text/plain] + expected: FAIL + + [<iframe>: separate response Content-Type: text/plain */*;charset=gbk] expected: FAIL diff --git a/tests/wpt/metadata/fetch/content-type/script.window.js.ini b/tests/wpt/metadata/fetch/content-type/script.window.js.ini index d2df9b78483..b2ffc8abf78 100644 --- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini @@ -56,3 +56,6 @@ [separate text/javascript x/x] expected: FAIL + [separate text/javascript error] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini index b7052af5b5c..87c807a49ff 100644 --- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini +++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini @@ -11,6 +11,3 @@ [X-Content-Type-Options%3A%20nosniff%0C] expected: FAIL - [X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff] - expected: FAIL - diff --git a/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini b/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini index 26e02f24468..62068b05a2f 100644 --- a/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini +++ b/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini @@ -5,7 +5,7 @@ expected: FAIL [Embedded credentials are treated as network errors in frames.] - expected: TIMEOUT + expected: FAIL [Embedded credentials are treated as network errors in new windows.] expected: FAIL @@ -13,9 +13,3 @@ [Embedded credentials matching the top-level are treated as network errors for cross-origin URLs.] expected: TIMEOUT - [Embedded credentials matching the top-level are not treated as network errors for relative URLs.] - expected: TIMEOUT - - [Embedded credentials matching the top-level are not treated as network errors for same-origin URLs.] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini deleted file mode 100644 index 87b07c3e670..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_1.html] - [Multiple history traversals from the same task] - expected: FAIL - diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini index 6852d7663de..c12c0f8ae48 100644 --- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini +++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini @@ -1,8 +1,4 @@ [skip-document-with-fragment.html] - expected: TIMEOUT [Autofocus elements in iframed documents with URL fragments should be skipped.] expected: FAIL - [Autofocus elements in top-level browsing context's documents with URI fragments should be skipped.] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/html/rendering/the-details-element/summary-display-list-item.html.ini b/tests/wpt/metadata/html/rendering/the-details-element/summary-display-list-item.html.ini new file mode 100644 index 00000000000..2d53b7836aa --- /dev/null +++ b/tests/wpt/metadata/html/rendering/the-details-element/summary-display-list-item.html.ini @@ -0,0 +1,2 @@ +[summary-display-list-item.html] + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini index e440b1e38c6..dc856a3d5a3 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini @@ -1,6 +1,5 @@ [iframe_sandbox_popups_nonescaping-3.html] type: testharness - expected: TIMEOUT [Check that popups from a sandboxed iframe do not escape the sandbox] - expected: NOTRUN + expected: FAIL diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html.ini new file mode 100644 index 00000000000..6cf9d13975c --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html.ini @@ -0,0 +1,4 @@ +[iframe_005.html] + [document.write external script into iframe write back into parent] + expected: FAIL + diff --git a/tests/wpt/metadata/resource-timing/crossorigin-sandwich-TAO.sub.html.ini b/tests/wpt/metadata/resource-timing/crossorigin-sandwich-TAO.sub.html.ini index b4090ef9fe2..1c7ec9ce1db 100644 --- a/tests/wpt/metadata/resource-timing/crossorigin-sandwich-TAO.sub.html.ini +++ b/tests/wpt/metadata/resource-timing/crossorigin-sandwich-TAO.sub.html.ini @@ -1,5 +1,4 @@ [crossorigin-sandwich-TAO.sub.html] - expected: ERROR [There should be one entry.] expected: FAIL diff --git a/tests/wpt/metadata/webdriver/tests/take_element_screenshot/iframe.py.ini b/tests/wpt/metadata/webdriver/tests/take_element_screenshot/iframe.py.ini index 6a671eb554c..2d6c14f5351 100644 --- a/tests/wpt/metadata/webdriver/tests/take_element_screenshot/iframe.py.ini +++ b/tests/wpt/metadata/webdriver/tests/take_element_screenshot/iframe.py.ini @@ -5,3 +5,6 @@ [test_source_origin[same_origin\]] expected: FAIL + [test_frame_element] + expected: FAIL + diff --git a/tests/wpt/metadata/webdriver/tests/take_screenshot/iframe.py.ini b/tests/wpt/metadata/webdriver/tests/take_screenshot/iframe.py.ini new file mode 100644 index 00000000000..6a671eb554c --- /dev/null +++ b/tests/wpt/metadata/webdriver/tests/take_screenshot/iframe.py.ini @@ -0,0 +1,7 @@ +[iframe.py] + [test_source_origin[cross_origin\]] + expected: FAIL + + [test_source_origin[same_origin\]] + expected: FAIL + diff --git a/tests/wpt/metadata/webmessaging/with-ports/018.html.ini b/tests/wpt/metadata/webmessaging/with-ports/018.html.ini deleted file mode 100644 index 663a1f8fa30..00000000000 --- a/tests/wpt/metadata/webmessaging/with-ports/018.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[018.html] - expected: TIMEOUT - [origin of the script that invoked the method, javascript:] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini index 268949ced5c..f584fce5df1 100644 --- a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini +++ b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini @@ -1,4 +1,5 @@ [005.html] + expected: ERROR [dedicated worker in shared worker in dedicated worker] expected: FAIL diff --git a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/canvas-createImageBitmap-video-resize.html b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/canvas-createImageBitmap-video-resize.html index 94fc0d1c57a..0a4f91d085d 100644 --- a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/canvas-createImageBitmap-video-resize.html +++ b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/canvas-createImageBitmap-video-resize.html @@ -55,5 +55,5 @@ video.preload = "auto"; video.oncanplaythrough = t.step_func(function() { return generateTest(); }); -video.src = "/media/video.ogv"; +video.src = '/media/counting.' + (video.canPlayType('video/ogg') ? 'ogv' : 'mp4'); </script> diff --git a/tests/wpt/web-platform-tests/compat/webkit-box-horizontal-reverse-variants-ref.html b/tests/wpt/web-platform-tests/compat/webkit-box-horizontal-reverse-variants-ref.html new file mode 100644 index 00000000000..72d0b2c6f68 --- /dev/null +++ b/tests/wpt/web-platform-tests/compat/webkit-box-horizontal-reverse-variants-ref.html @@ -0,0 +1,73 @@ +<!DOCTYPE html> +<style> +.flexbox { + width: 300px; + display: flex; + border-style: solid; + border-width: 1px 2px 1px 4px; +} + +.reverse { + flex-direction: row-reverse; +} + +.redbox { + background: red; + width: 100px; + flex-shrink: 0; +} + +.greenbox { + background: green; + width: 100px; + flex-shrink: 0; +} + +</style> +<p>Exercises -webkit-box with various box-pack settings when direction is + reverse. In all cases the order of letters in the boxes should be + alphabetized left to right. +<p>Start. Boxes should be aligned to left side. +<div class="flexbox reverse" style="justify-content: flex-end;"> + <div class="redbox">B</div> + <div class="greenbox">A</div> +</div> + +<p>Centered. Boxes should be centered. +<div class="flexbox reverse" style="justify-content: center;"> + <div class="redbox">B</div> + <div class="greenbox">A</div> +</div> + +<p>End. Boxes should be aligned to right side. +<div class="flexbox reverse"> + <div class="redbox">B</div> + <div class="greenbox">A</div> +</div> + +<p>Start, content too big. Boxes should start at left edge and extend + outside border. +<div class="flexbox"> + <div class="greenbox">A</div> + <div class="redbox">B</div> + <div class="greenbox">C</div> + <div class="redbox">D</div> +</div> + +<p>Center, content too big. Boxes should start at left edge and extend + outside border. +<div class="flexbox"> + <div class="greenbox">A</div> + <div class="redbox">B</div> + <div class="greenbox">C</div> + <div class="redbox">D</div> +</div> + +<p>End, content too big. Boxes should start at left edge and extend + outside border. +<div class="flexbox"> + <div class="greenbox">A</div> + <div class="redbox">B</div> + <div class="greenbox">C</div> + <div class="redbox">D</div> +</div> diff --git a/tests/wpt/web-platform-tests/compat/webkit-box-horizontal-reverse-variants.html b/tests/wpt/web-platform-tests/compat/webkit-box-horizontal-reverse-variants.html new file mode 100644 index 00000000000..09dba694f26 --- /dev/null +++ b/tests/wpt/web-platform-tests/compat/webkit-box-horizontal-reverse-variants.html @@ -0,0 +1,70 @@ +<!DOCTYPE html> +<link rel="help" href="https://crbug.com/1034461"> +<link rel="match" href="webkit-box-horizontal-reverse-variants-ref.html"> +<style> +.webkitbox { + width: 300px; + display: -webkit-box; + -webkit-box-direction: reverse; + border-style: solid; + border-width: 1px 2px 1px 4px; +} + +.redbox { + background: red; + width: 100px; +} + +.greenbox { + background: green; + width: 100px; +} + +</style> +<p>Exercises -webkit-box with various box-pack settings when direction is + reverse. In all cases the order of letters in the boxes should be + alphabetized left to right. +<p>Start. Boxes should be aligned to left side. +<div class="webkitbox"> + <div class="redbox">B</div> + <div class="greenbox">A</div> +</div> + +<p>Centered. Boxes should be centered. +<div class="webkitbox" style="-webkit-box-pack: center"> + <div class="redbox">B</div> + <div class="greenbox">A</div> +</div> + +<p>End. Boxes should be aligned to right side. +<div class="webkitbox" style="-webkit-box-pack: end"> + <div class="redbox">B</div> + <div class="greenbox">A</div> +</div> + +<p>Start, content too big. Boxes should start at left edge and extend + outside border. +<div class="webkitbox"> + <div class="redbox">D</div> + <div class="greenbox">C</div> + <div class="redbox">B</div> + <div class="greenbox">A</div> +</div> + +<p>Center, content too big. Boxes should start at left edge and extend + outside border. +<div class="webkitbox" style="-webkit-box-pack: center"> + <div class="redbox">D</div> + <div class="greenbox">C</div> + <div class="redbox">B</div> + <div class="greenbox">A</div> +</div> + +<p>End, content too big. Boxes should start at left edge and extend + outside border. +<div class="webkitbox" style="-webkit-box-pack: end"> + <div class="redbox">D</div> + <div class="greenbox">C</div> + <div class="redbox">B</div> + <div class="greenbox">A</div> +</div> diff --git a/tests/wpt/web-platform-tests/compat/webkit-box-horizontal-rtl-variants-ref.html b/tests/wpt/web-platform-tests/compat/webkit-box-horizontal-rtl-variants-ref.html new file mode 100644 index 00000000000..42321c50697 --- /dev/null +++ b/tests/wpt/web-platform-tests/compat/webkit-box-horizontal-rtl-variants-ref.html @@ -0,0 +1,72 @@ +<!DOCTYPE html> +<style> +.flexbox { + width: 300px; + display: flex; + border-style: solid; + border-width: 1px 2px 1px 4px; +} + +.rtl { + direction: rtl; +} + +.redbox { + background: red; + width: 100px; + flex-shrink: 0; +} + +.greenbox { + background: green; + width: 100px; + flex-shrink: 0; +} + +</style> +<p>Exercises -webkit-box with various box-pack settings when rtl. In all cases + the order of letters in the boxes should be alphabetized left to right. +<p>Start. Boxes should be aligned to right side. +<div class="flexbox rtl"> + <div class="redbox">B</div> + <div class="greenbox">A</div> +</div> + +<p>Centered. Boxes should be centered. +<div class="flexbox rtl" style="justify-content: center;"> + <div class="redbox">B</div> + <div class="greenbox">A</div> +</div> + +<p>End. Boxes should be aligned to left side. +<div class="flexbox rtl" style="justify-content: flex-end;"> + <div class="redbox">B</div> + <div class="greenbox">A</div> +</div> + +<p>Start, content too big. Boxes should start at left edge and extend + outside border. +<div class="flexbox"> + <div class="greenbox rtl">A</div> + <div class="redbox rtl">B</div> + <div class="greenbox rtl">C</div> + <div class="redbox rtl">D</div> +</div> + +<p>Center, content too big. Boxes should start at left edge and extend + outside border. +<div class="flexbox"> + <div class="greenbox rtl">A</div> + <div class="redbox rtl">B</div> + <div class="greenbox rtl">C</div> + <div class="redbox rtl">D</div> +</div> + +<p>End, content too big. Boxes should start at left edge and extend + outside border. +<div class="flexbox"> + <div class="greenbox rtl">A</div> + <div class="redbox rtl">B</div> + <div class="greenbox rtl">C</div> + <div class="redbox rtl">D</div> +</div> diff --git a/tests/wpt/web-platform-tests/compat/webkit-box-horizontal-rtl-variants.html b/tests/wpt/web-platform-tests/compat/webkit-box-horizontal-rtl-variants.html new file mode 100644 index 00000000000..085a5899bc8 --- /dev/null +++ b/tests/wpt/web-platform-tests/compat/webkit-box-horizontal-rtl-variants.html @@ -0,0 +1,69 @@ +<!DOCTYPE html> +<link rel="help" href="https://crbug.com/1034461"> +<link rel="match" href="webkit-box-horizontal-rtl-variants-ref.html"> +<style> +.webkitbox { + width: 300px; + display: -webkit-box; + direction: rtl; + border-style: solid; + border-width: 1px 2px 1px 4px; +} + +.redbox { + background: red; + width: 100px; +} + +.greenbox { + background: green; + width: 100px; +} + +</style> +<p>Exercises -webkit-box with various box-pack settings when rtl. In all cases + the order of letters in the boxes should be alphabetized left to right. +<p>Start. Boxes should be aligned to right side. +<div class="webkitbox"> + <div class="redbox">B</div> + <div class="greenbox">A</div> +</div> + +<p>Centered. Boxes should be centered. +<div class="webkitbox" style="-webkit-box-pack: center"> + <div class="redbox">B</div> + <div class="greenbox">A</div> +</div> + +<p>End. Boxes should be aligned to left side. +<div class="webkitbox" style="-webkit-box-pack: end"> + <div class="redbox">B</div> + <div class="greenbox">A</div> +</div> + +<p>Start, content too big. Boxes should start at left edge and extend + outside border. +<div class="webkitbox"> + <div class="redbox">D</div> + <div class="greenbox">C</div> + <div class="redbox">B</div> + <div class="greenbox">A</div> +</div> + +<p>Center, content too big. Boxes should start at left edge and extend + outside border. +<div class="webkitbox" style="-webkit-box-pack: center"> + <div class="redbox">D</div> + <div class="greenbox">C</div> + <div class="redbox">B</div> + <div class="greenbox">A</div> +</div> + +<p>End, content too big. Boxes should start at left edge and extend + outside border. +<div class="webkitbox" style="-webkit-box-pack: end"> + <div class="redbox">D</div> + <div class="greenbox">C</div> + <div class="redbox">B</div> + <div class="greenbox">A</div> +</div> diff --git a/tests/wpt/web-platform-tests/compat/webkit-box-rtl-flex-ref.html b/tests/wpt/web-platform-tests/compat/webkit-box-rtl-flex-ref.html new file mode 100644 index 00000000000..10b9eb73fd9 --- /dev/null +++ b/tests/wpt/web-platform-tests/compat/webkit-box-rtl-flex-ref.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<style> +#flexbox { + width: 500px; + display: flex; + direction: rtl; +} + +#redbox { + background: red; + flex: 1; +} + +#greenbox { + background: green; + flex: 1; +} + +</style> +<p>There should be a green box followed by a red box, both on the same line. +<div id="flexbox"> + <div id="redbox">A</div> + <div id="greenbox">B</div> +</div> diff --git a/tests/wpt/web-platform-tests/compat/webkit-box-rtl-flex.html b/tests/wpt/web-platform-tests/compat/webkit-box-rtl-flex.html new file mode 100644 index 00000000000..d20b3a0a9db --- /dev/null +++ b/tests/wpt/web-platform-tests/compat/webkit-box-rtl-flex.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<link rel="help" href="https://crbug.com/1034461"> +<link rel="match" href="webkit-box-rtl-flex-ref.html"> +<style> +#webkitbox { + width: 500px; + display: -webkit-box; + direction: rtl; +} + +#redbox { + background: red; + -webkit-box-flex: 1; +} + +#greenbox { + background: green; + -webkit-box-flex: 1; +} + +</style> +<p>There should be a green box followed by a red box, both on the same line. +<div id="webkitbox"> + <div id="redbox">A</div> + <div id="greenbox">B</div> +</div> diff --git a/tests/wpt/web-platform-tests/cookies/http-state/general-tests.html b/tests/wpt/web-platform-tests/cookies/http-state/general-tests.html index d80527f9b0a..f563bf7c68d 100644 --- a/tests/wpt/web-platform-tests/cookies/http-state/general-tests.html +++ b/tests/wpt/web-platform-tests/cookies/http-state/general-tests.html @@ -24,7 +24,7 @@ {file: "0001", name: "Set cookie."}, {file: "0002", name: "Set cookie with future expiration."}, {file: "0003", name: "Set expired cookie along with valid cookie."}, - {file: "0004", name: "Ignore cookie without key."}, + {file: "0004", name: "Set nameless cookie."}, {file: "0005", name: "Set cookie with age."}, {file: "0006", name: "Set no cookie with max-age=0."}, {file: "0007", name: "Set cookie with version=1."}, @@ -41,15 +41,15 @@ {file: "0017", name: "Keep order if comma-separated."}, {file: "0018", name: "Ignore keys after semicolon."}, {file: "0019", name: "Ignore attributes after semicolon."}, - {file: "0020", name: "Ignore cookies without key and value."}, - {file: "0021", name: "Ignore cookie without key in all 'Set-Cookie'."}, - {file: "0022", name: "Set cookie without value in all 'Set-Cookie'."}, - {file: "0023", name: "Ignore cookies without '=' in all 'Set-Cookie'."}, - {file: "0024", name: "Ignore malformed cookies in all 'Set-Cookie'."}, - {file: "0025", name: "Ignore cookies with ';' in all 'Set-Cookie'."}, - {file: "0026", name: "Ignore malformed cookies in all 'Set-Cookie' v2."}, - {file: "0027", name: "Ignore malformed cookies in all 'Set-Cookie' v3."}, - {file: "0028", name: "Ignore malformed cookies in all 'Set-Cookie' v4."}, + {file: "0020", name: "Ignore `Set-Cookie: =`."}, + {file: "0021", name: "Set nameless cookie, given `Set-Cookie: =x`"}, + {file: "0022", name: "Set valueless cookie, given `Set-Cookie: x=`"}, + {file: "0023", name: "Ignore empty cookie string."}, + {file: "0024", name: "Ignore `Set-Cookie: =` with other `Set-Cookie` headers."}, + {file: "0025", name: "Ignore name- and value-less `Set-Cookie: ; bar`."}, + {file: "0026", name: "Ignore name- and value-less `Set-Cookie: `."}, + {file: "0027", name: "Overwrite nameless cookie."}, + {file: "0028", name: "Ignore name- and value-less `Set-Cookie: \t"}, ]; for (const i in TEST_CASES) { diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0004-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0004-expected index e69de29bb2d..5ab27668fdb 100644 --- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0004-expected +++ b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0004-expected @@ -0,0 +1 @@ +Cookie: foo diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0021-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0021-expected index a43cb004436..445a5929e81 100644 --- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0021-expected +++ b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0021-expected @@ -1 +1 @@ -Cookie: a=b; c=d +Cookie: a=b; x; c=d diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0023-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0023-expected index e69de29bb2d..5ab27668fdb 100644 --- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0023-expected +++ b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0023-expected @@ -0,0 +1 @@ +Cookie: foo diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0024-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0024-expected index e69de29bb2d..5ab27668fdb 100644 --- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0024-expected +++ b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0024-expected @@ -0,0 +1 @@ +Cookie: foo diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0025-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0025-expected index e69de29bb2d..5ab27668fdb 100644 --- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0025-expected +++ b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0025-expected @@ -0,0 +1 @@ +Cookie: foo diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0026-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0026-expected index e69de29bb2d..5ab27668fdb 100644 --- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0026-expected +++ b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0026-expected @@ -0,0 +1 @@ +Cookie: foo diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0027-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0027-expected index e69de29bb2d..973d3847c04 100644 --- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0027-expected +++ b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0027-expected @@ -0,0 +1 @@ +Cookie: bar diff --git a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0028-expected b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0028-expected index e69de29bb2d..5ab27668fdb 100644 --- a/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0028-expected +++ b/tests/wpt/web-platform-tests/cookies/http-state/resources/test-files/0028-expected @@ -0,0 +1 @@ +Cookie: foo diff --git a/tests/wpt/web-platform-tests/css/css-animations/animation-before-initial-box-construction-001.html b/tests/wpt/web-platform-tests/css/css-animations/animation-before-initial-box-construction-001.html new file mode 100644 index 00000000000..558c5ea1869 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/animation-before-initial-box-construction-001.html @@ -0,0 +1,53 @@ +<!doctype html> +<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez"> +<link rel="author" href="mailto:https://mozilla.org" title="Mozilla"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1605610"> +<link rel="help" href="https://drafts.csswg.org/web-animations/#extensions-to-the-element-interface"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> +let t = async_test("animations started before initial-containing-block creation properly function"); +let loaded = false; +let finished = false; +let span; + +function check() { + if (!loaded || !finished) + return; + + assert_equals(getComputedStyle(span).opacity, "1", "Animation should be properly finished"); + t.done(); +} + +document.addEventListener("DOMContentLoaded", function() { + span = document.createElement("span"); + span.id = "myspan"; + span.innerHTML = `Some content`; + document.body.appendChild(span); + + let anim = span.animate([ + { + opacity: "0", + }, + { + opacity: "1", + }, + ], { + duration: 300, + }); + + anim.finished.then(t.step_func(function() { + finished = true; + check(); + })); +}); + +window.addEventListener("load", t.step_func(function() { + loaded = true; + check(); +})); +</script> +<!-- It is important that there are no more script after this stylesheet --> +<link rel="stylesheet" href="empty-sheet.css?pipe=trickle(d2)"> +<body> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-animations/support/empty-sheet.css b/tests/wpt/web-platform-tests/css/css-animations/support/empty-sheet.css new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-animations/support/empty-sheet.css diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html new file mode 100644 index 00000000000..8217f4dd2c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html @@ -0,0 +1,358 @@ +<meta charset="utf-8"> +<title>CSS Grid Layout Test: aligned content distribution for vertical lr</title> +<link rel="author" title="Rossana Monteriso" href="mailto:rmonteriso@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-align-3/#distribution-values"> +<meta name="assert" content="This test checks that the align-content property is applied correctly when using content-distribution values for the vertical-lr writing mode."> +<meta name="flags" content="ahem"> +<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> +<link rel="stylesheet" href="/css/support/grid.css"> + +<style> + +.grid { + grid-auto-columns: 20px; + grid-auto-rows: 40px; + position: relative; + width: 400px; + height: 300px; +} + +.stretchedGrid { + grid-auto-rows: auto; +} + +.thirdRowFirstColumn { + background-color: green; + grid-column: 1; + grid-row: 3; +} + +.fourthRowFirstColumn { + background-color: deepskyblue; + grid-column: 1; + grid-row: 4; +} + +.fourthRowSecondColumn { + background-color: maroon; + grid-column: 2; + grid-row: 4; +} + +.thirdRowFirstColumn { + background-color: green; + grid-column: 1; + grid-row: 3; +} + +.fourthRowFirstColumn { + background-color: deepskyblue; + grid-column: 1; + grid-row: 4; +} + +.fourthRowSecondColumn { + background-color: maroon; + grid-column: 2; + grid-row: 4; +} + +</style> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/check-layout-th.js"></script> + +<body onload="checkLayout('.grid')"> + +<p>This test checks that the align-content property is applied correctly when using content-distribution values in vertical-lr writing mode.</p> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-between'</p> + <div class="grid alignContentSpaceBetween verticalLR" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="360" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="360" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-around'</p> + <div class="grid alignContentSpaceAround verticalLR" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="80" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="80" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="280" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="280" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-evenly'</p> + <div class="grid alignContentSpaceEvenly verticalLR" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="107" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="107" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="253" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="253" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'stretch'</p> + <div class="grid stretchedGrid alignContentStretch verticalLR" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="200" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="200" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="200" data-offset-y="0" data-expected-width="200" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="200" data-offset-y="20" data-expected-width="200" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-between'</p> + <div class="grid alignContentSpaceBetween verticalLR" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="360" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="360" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-around'</p> + <div class="grid alignContentSpaceAround verticalLR" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="47" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="47" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="313" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="313" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-evenly'</p> + <div class="grid alignContentSpaceEvenly verticalLR" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="70" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="70" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="290" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="290" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'stretch'</p> + <div class="grid stretchedGrid alignContentStretch verticalLR" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="133" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="133" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="267" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="267" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-between'</p> + <div class="grid alignContentSpaceBetween verticalLR" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="120" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="120" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="240" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="240" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowFirstColumn" data-offset-x="360" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowSecondColumn" data-offset-x="360" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-around'</p> + <div class="grid alignContentSpaceAround verticalLR" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="30" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="30" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="130" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="130" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="230" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="230" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowFirstColumn" data-offset-x="330" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowSecondColumn" data-offset-x="330" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-evenly'</p> + <div class="grid alignContentSpaceEvenly verticalLR" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="48" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="48" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="136" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="136" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="224" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="224" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowFirstColumn" data-offset-x="312" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowSecondColumn" data-offset-x="312" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'stretch'</p> + <div class="grid stretchedGrid alignContentStretch verticalLR" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="100" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="100" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="200" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="200" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div> + <div class="fourthRowFirstColumn" data-offset-x="300" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div> + <div class="fourthRowSecondColumn" data-offset-x="300" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div> + </div> +</div> + +<!-- RTL direction. --> +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-between'</p> + <div class="grid alignContentSpaceBetween verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="360" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="360" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-around'</p> + <div class="grid alignContentSpaceAround verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="80" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="80" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="280" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="280" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-evenly'</p> + <div class="grid alignContentSpaceEvenly verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="107" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="107" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="253" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="253" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'stretch'</p> + <div class="grid stretchedGrid alignContentStretch verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="200" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="200" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="200" data-offset-y="280" data-expected-width="200" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="200" data-offset-y="260" data-expected-width="200" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-between'</p> + <div class="grid alignContentSpaceBetween verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="360" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="360" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-around'</p> + <div class="grid alignContentSpaceAround verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="47" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="47" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="313" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="313" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-evenly'</p> + <div class="grid alignContentSpaceEvenly verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="70" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="70" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="290" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="290" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'stretch'</p> + <div class="grid stretchedGrid alignContentStretch verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="133" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="133" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="267" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="267" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-between'</p> + <div class="grid alignContentSpaceBetween verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="120" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="120" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="240" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="240" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowFirstColumn" data-offset-x="360" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowSecondColumn" data-offset-x="360" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-around'</p> + <div class="grid alignContentSpaceAround verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="30" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="30" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="130" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="130" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="230" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="230" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowFirstColumn" data-offset-x="330" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowSecondColumn" data-offset-x="330" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-evenly'</p> + <div class="grid alignContentSpaceEvenly verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="48" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="48" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="136" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="136" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="224" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="224" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowFirstColumn" data-offset-x="312" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowSecondColumn" data-offset-x="312" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'stretch'</p> + <div class="grid stretchedGrid alignContentStretch verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="100" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="100" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="200" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="200" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div> + <div class="fourthRowFirstColumn" data-offset-x="300" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div> + <div class="fourthRowSecondColumn" data-offset-x="300" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div> + </div> +</div> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html new file mode 100644 index 00000000000..096e3fd6910 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html @@ -0,0 +1,358 @@ +<meta charset="utf-8"> +<title>CSS Grid Layout Test: aligned content distribution for vertical rl</title> +<link rel="author" title="Rossana Monteriso" href="mailto:rmonteriso@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-align-3/#distribution-values"> +<meta name="assert" content="This test checks that the align-content property is applied correctly when using content-distribution values for the vertical-rl writing mode."> +<meta name="flags" content="ahem"> +<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> +<link rel="stylesheet" href="/css/support/grid.css"> + +<style> + +.grid { + grid-auto-columns: 20px; + grid-auto-rows: 40px; + position: relative; + width: 400px; + height: 300px; +} + +.stretchedGrid { + grid-auto-rows: auto; +} + +.thirdRowFirstColumn { + background-color: green; + grid-column: 1; + grid-row: 3; +} + +.fourthRowFirstColumn { + background-color: deepskyblue; + grid-column: 1; + grid-row: 4; +} + +.fourthRowSecondColumn { + background-color: maroon; + grid-column: 2; + grid-row: 4; +} + +.thirdRowFirstColumn { + background-color: green; + grid-column: 1; + grid-row: 3; +} + +.fourthRowFirstColumn { + background-color: deepskyblue; + grid-column: 1; + grid-row: 4; +} + +.fourthRowSecondColumn { + background-color: maroon; + grid-column: 2; + grid-row: 4; +} + +</style> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/check-layout-th.js"></script> + +<body onload="checkLayout('.grid')"> + +<p>This test checks that the align-content property is applied correctly when using content-distribution values for vertical-rl mode.</p> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-between'</p> + <div class="grid alignContentSpaceBetween verticalRL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="360" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="360" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-around'</p> + <div class="grid alignContentSpaceAround verticalRL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="280" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="280" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="80" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="80" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-evenly'</p> + <div class="grid alignContentSpaceEvenly verticalRL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="253" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="253" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="107" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="107" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'stretch'</p> + <div class="grid stretchedGrid alignContentStretch verticalRL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="200" data-offset-y="0" data-expected-width="200" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="200" data-offset-y="20" data-expected-width="200" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="200" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="200" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-between'</p> + <div class="grid alignContentSpaceBetween verticalRL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="360" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="360" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-around'</p> + <div class="grid alignContentSpaceAround verticalRL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="313" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="313" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="47" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="47" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-evenly'</p> + <div class="grid alignContentSpaceEvenly verticalRL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="290" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="290" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="70" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="70" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'stretch'</p> + <div class="grid stretchedGrid alignContentStretch verticalRL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="267" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="267" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="133" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="133" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-between'</p> + <div class="grid alignContentSpaceBetween verticalRL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="360" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="360" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="240" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="240" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="120" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="120" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-around'</p> + <div class="grid alignContentSpaceAround verticalRL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="330" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="330" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="230" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="230" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="130" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="130" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowFirstColumn" data-offset-x="30" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowSecondColumn" data-offset-x="30" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-evenly'</p> + <div class="grid alignContentSpaceEvenly verticalRL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="312" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="312" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="224" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="224" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="136" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="136" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowFirstColumn" data-offset-x="48" data-offset-y="0" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowSecondColumn" data-offset-x="48" data-offset-y="20" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'stretch'</p> + <div class="grid stretchedGrid alignContentStretch verticalRL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="300" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="300" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="200" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="200" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="100" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="100" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div> + <div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div> + <div class="fourthRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div> + </div> +</div> + +<!-- RTL direction. --> +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-between'</p> + <div class="grid alignContentSpaceBetween verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="360" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="360" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-around'</p> + <div class="grid alignContentSpaceAround verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="280" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="280" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="80" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="80" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-evenly'</p> + <div class="grid alignContentSpaceEvenly verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="253" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="253" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="107" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="107" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'stretch'</p> + <div class="grid stretchedGrid alignContentStretch verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="200" data-offset-y="280" data-expected-width="200" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="200" data-offset-y="260" data-expected-width="200" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="200" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="200" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-between'</p> + <div class="grid alignContentSpaceBetween verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="360" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="360" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-around'</p> + <div class="grid alignContentSpaceAround verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="313" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="313" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="47" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="47" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-evenly'</p> + <div class="grid alignContentSpaceEvenly verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="290" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="290" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="180" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="70" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="70" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'stretch'</p> + <div class="grid stretchedGrid alignContentStretch verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="267" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="267" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="133" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="133" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-between'</p> + <div class="grid alignContentSpaceBetween verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="360" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="360" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="240" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="240" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="120" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="120" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-around'</p> + <div class="grid alignContentSpaceAround verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="330" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="330" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="230" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="230" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="130" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="130" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowFirstColumn" data-offset-x="30" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowSecondColumn" data-offset-x="30" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-evenly'</p> + <div class="grid alignContentSpaceEvenly verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="312" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="312" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="224" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="224" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="136" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="136" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowFirstColumn" data-offset-x="48" data-offset-y="280" data-expected-width="40" data-expected-height="20"></div> + <div class="fourthRowSecondColumn" data-offset-x="48" data-offset-y="260" data-expected-width="40" data-expected-height="20"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'stretch'</p> + <div class="grid stretchedGrid alignContentStretch verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="300" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="300" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="200" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="200" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="100" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="100" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div> + <div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="100" data-expected-height="20"></div> + <div class="fourthRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="100" data-expected-height="20"></div> + </div> +</div> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution.html new file mode 100644 index 00000000000..7b66ddb9951 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution.html @@ -0,0 +1,358 @@ +<meta charset="utf-8"> +<title>CSS Grid Layout Test: aligned content distribution</title> +<link rel="author" title="Rossana Monteriso" href="mailto:rmonteriso@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-align-3/#distribution-values"> +<meta name="assert" content="This test checks that the align-content property is applied correctly when using content-distribution values."> +<meta name="flags" content="ahem"> +<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> +<link rel="stylesheet" href="/css/support/grid.css"> + +<style> + +.grid { + grid-auto-columns: 20px; + grid-auto-rows: 40px; + position: relative; + width: 200px; + height: 300px; +} + +.stretchedGrid { + grid-auto-rows: auto; +} + +.thirdRowFirstColumn { + background-color: green; + grid-column: 1; + grid-row: 3; +} + +.fourthRowFirstColumn { + background-color: deepskyblue; + grid-column: 1; + grid-row: 4; +} + +.fourthRowSecondColumn { + background-color: maroon; + grid-column: 2; + grid-row: 4; +} + +.thirdRowFirstColumn { + background-color: green; + grid-column: 1; + grid-row: 3; +} + +.fourthRowFirstColumn { + background-color: deepskyblue; + grid-column: 1; + grid-row: 4; +} + +.fourthRowSecondColumn { + background-color: maroon; + grid-column: 2; + grid-row: 4; +} + +</style> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/check-layout-th.js"></script> + +<body onload="checkLayout('.grid')"> + +<p>This test checks that the align-content property is applied correctly when using content-distribution values.</p> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-between'</p> + <div class="grid alignContentSpaceBetween" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> + <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-around'</p> + <div class="grid alignContentSpaceAround" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="55" data-expected-width="20" data-expected-height="40"></div> + <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="55" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="205" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="205" data-expected-width="20" data-expected-height="40"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-evenly'</p> + <div class="grid alignContentSpaceEvenly" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="73" data-expected-width="20" data-expected-height="40"></div> + <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="73" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="187" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="187" data-expected-width="20" data-expected-height="40"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'stretch'</p> + <div class="grid stretchedGrid alignContentStretch" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="150"></div> + <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="0" data-expected-width="20" data-expected-height="150"></div> + <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="150" data-expected-width="20" data-expected-height="150"></div> + <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="150" data-expected-width="20" data-expected-height="150"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-between'</p> + <div class="grid alignContentSpaceBetween" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> + <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-around'</p> + <div class="grid alignContentSpaceAround" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="30" data-expected-width="20" data-expected-height="40"></div> + <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="30" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="230" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="230" data-expected-width="20" data-expected-height="40"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-evenly'</p> + <div class="grid alignContentSpaceEvenly" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="45" data-expected-width="20" data-expected-height="40"></div> + <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="45" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="215" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="215" data-expected-width="20" data-expected-height="40"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'stretch'</p> + <div class="grid stretchedGrid alignContentStretch" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="100"></div> + <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="0" data-expected-width="20" data-expected-height="100"></div> + <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="100" data-expected-width="20" data-expected-height="100"></div> + <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="100" data-expected-width="20" data-expected-height="100"></div> + <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="200" data-expected-width="20" data-expected-height="100"></div> + <div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="200" data-expected-width="20" data-expected-height="100"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-between'</p> + <div class="grid alignContentSpaceBetween" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> + <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="87" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="87" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="173" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="173" data-expected-width="20" data-expected-height="40"></div> + <div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> + <div class="fourthRowSecondColumn" data-offset-x="20" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-around'</p> + <div class="grid alignContentSpaceAround" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="18" data-expected-width="20" data-expected-height="40"></div> + <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="18" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="93" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="93" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="168" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="168" data-expected-width="20" data-expected-height="40"></div> + <div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="243" data-expected-width="20" data-expected-height="40"></div> + <div class="fourthRowSecondColumn" data-offset-x="20" data-offset-y="243" data-expected-width="20" data-expected-height="40"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'space-evenly'</p> + <div class="grid alignContentSpaceEvenly" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="28" data-expected-width="20" data-expected-height="40"></div> + <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="28" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="96" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="96" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="164" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="164" data-expected-width="20" data-expected-height="40"></div> + <div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="232" data-expected-width="20" data-expected-height="40"></div> + <div class="fourthRowSecondColumn" data-offset-x="20" data-offset-y="232" data-expected-width="20" data-expected-height="40"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: LTR | align-content: 'stretch'</p> + <div class="grid stretchedGrid alignContentStretch" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="75"></div> + <div class="firstRowSecondColumn" data-offset-x="20" data-offset-y="0" data-expected-width="20" data-expected-height="75"></div> + <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="75" data-expected-width="20" data-expected-height="75"></div> + <div class="secondRowSecondColumn" data-offset-x="20" data-offset-y="75" data-expected-width="20" data-expected-height="75"></div> + <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="150" data-expected-width="20" data-expected-height="75"></div> + <div class="thirdRowSecondColumn" data-offset-x="20" data-offset-y="150" data-expected-width="20" data-expected-height="75"></div> + <div class="fourthRowFirstColumn" data-offset-x="0" data-offset-y="225" data-expected-width="20" data-expected-height="75"></div> + <div class="fourthRowSecondColumn" data-offset-x="20" data-offset-y="225" data-expected-width="20" data-expected-height="75"></div> + </div> +</div> + +<!-- RTL direction. --> +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-between'</p> + <div class="grid alignContentSpaceBetween directionRTL" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> + <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-around'</p> + <div class="grid alignContentSpaceAround directionRTL" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="55" data-expected-width="20" data-expected-height="40"></div> + <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="55" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="205" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="205" data-expected-width="20" data-expected-height="40"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-evenly'</p> + <div class="grid alignContentSpaceEvenly directionRTL" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="73" data-expected-width="20" data-expected-height="40"></div> + <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="73" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="187" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="187" data-expected-width="20" data-expected-height="40"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'stretch'</p> + <div class="grid stretchedGrid alignContentStretch directionRTL" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="20" data-expected-height="150"></div> + <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="0" data-expected-width="20" data-expected-height="150"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="150" data-expected-width="20" data-expected-height="150"></div> + <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="150" data-expected-width="20" data-expected-height="150"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-between'</p> + <div class="grid alignContentSpaceBetween directionRTL" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> + <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-around'</p> + <div class="grid alignContentSpaceAround directionRTL" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="30" data-expected-width="20" data-expected-height="40"></div> + <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="30" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="230" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="230" data-expected-width="20" data-expected-height="40"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-evenly'</p> + <div class="grid alignContentSpaceEvenly directionRTL" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="45" data-expected-width="20" data-expected-height="40"></div> + <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="45" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="130" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="215" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="215" data-expected-width="20" data-expected-height="40"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'stretch'</p> + <div class="grid stretchedGrid alignContentStretch directionRTL" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="20" data-expected-height="100"></div> + <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="0" data-expected-width="20" data-expected-height="100"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="100" data-expected-width="20" data-expected-height="100"></div> + <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="100" data-expected-width="20" data-expected-height="100"></div> + <div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="200" data-expected-width="20" data-expected-height="100"></div> + <div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="200" data-expected-width="20" data-expected-height="100"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-between'</p> + <div class="grid alignContentSpaceBetween directionRTL" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> + <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="0" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="87" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="87" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="173" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="173" data-expected-width="20" data-expected-height="40"></div> + <div class="fourthRowFirstColumn" data-offset-x="180" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> + <div class="fourthRowSecondColumn" data-offset-x="160" data-offset-y="260" data-expected-width="20" data-expected-height="40"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-around'</p> + <div class="grid alignContentSpaceAround directionRTL" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="18" data-expected-width="20" data-expected-height="40"></div> + <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="18" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="93" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="93" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="168" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="168" data-expected-width="20" data-expected-height="40"></div> + <div class="fourthRowFirstColumn" data-offset-x="180" data-offset-y="243" data-expected-width="20" data-expected-height="40"></div> + <div class="fourthRowSecondColumn" data-offset-x="160" data-offset-y="243" data-expected-width="20" data-expected-height="40"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'space-evenly'</p> + <div class="grid alignContentSpaceEvenly directionRTL" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="28" data-expected-width="20" data-expected-height="40"></div> + <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="28" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="96" data-expected-width="20" data-expected-height="40"></div> + <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="96" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="164" data-expected-width="20" data-expected-height="40"></div> + <div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="164" data-expected-width="20" data-expected-height="40"></div> + <div class="fourthRowFirstColumn" data-offset-x="180" data-offset-y="232" data-expected-width="20" data-expected-height="40"></div> + <div class="fourthRowSecondColumn" data-offset-x="160" data-offset-y="232" data-expected-width="20" data-expected-height="40"></div> + </div> +</div> + +<div style="position: relative"> + <p>direction: RTL | align-content: 'stretch'</p> + <div class="grid stretchedGrid alignContentStretch directionRTL" data-expected-width="200" data-expected-height="300"> + <div class="firstRowFirstColumn" data-offset-x="180" data-offset-y="0" data-expected-width="20" data-expected-height="75"></div> + <div class="firstRowSecondColumn" data-offset-x="160" data-offset-y="0" data-expected-width="20" data-expected-height="75"></div> + <div class="secondRowFirstColumn" data-offset-x="180" data-offset-y="75" data-expected-width="20" data-expected-height="75"></div> + <div class="secondRowSecondColumn" data-offset-x="160" data-offset-y="75" data-expected-width="20" data-expected-height="75"></div> + <div class="thirdRowFirstColumn" data-offset-x="180" data-offset-y="150" data-expected-width="20" data-expected-height="75"></div> + <div class="thirdRowSecondColumn" data-offset-x="160" data-offset-y="150" data-expected-width="20" data-expected-height="75"></div> + <div class="fourthRowFirstColumn" data-offset-x="180" data-offset-y="225" data-expected-width="20" data-expected-height="75"></div> + <div class="fourthRowSecondColumn" data-offset-x="160" data-offset-y="225" data-expected-width="20" data-expected-height="75"></div> + </div> +</div> +</body> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-navigated-history-popup.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-navigated-history-popup.https.html new file mode 100644 index 00000000000..bd1cabafd41 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-navigated-history-popup.https.html @@ -0,0 +1,18 @@ +<!doctype html> +<title>Cross-Origin-Opener-Policy: a navigating popup that then goes back in history</title> +<meta name="timeout" content="long"> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/common.js"></script> +<script> +const title = `Popup navigating to other origin with COOP: same-origin and back in history`; +const channel = title.replace(/ /g,"-"); +const opener = false; +const openerDOMAccess = false; +const navigateURL = `${CROSS_ORIGIN.origin}/html/cross-origin-opener-policy/resources/coop-coep.py?coop=same-origin&coep=&navHistory=-1`; + +async_test(t => { + url_test(t, `${SAME_ORIGIN.origin}/html/cross-origin-opener-policy/resources/coop-coep.py?coop=&coep=&navigate=${encodeURIComponent(navigateURL)}&avoidBackAndForth=1&channel=${channel}`, channel, opener, openerDOMAccess); +}, title); +</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/common.js b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/common.js index 53b80bb6e99..477bc6c948f 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/common.js +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/common.js @@ -2,12 +2,16 @@ const SAME_ORIGIN = {origin: get_host_info().HTTPS_ORIGIN, name: "SAME_ORIGIN"}; const SAME_SITE = {origin: get_host_info().HTTPS_REMOTE_ORIGIN, name: "SAME_SITE"}; const CROSS_ORIGIN = {origin: get_host_info().HTTPS_NOTSAMESITE_ORIGIN, name: "CROSS_ORIGIN"} -function url_test(t, url, channelName, hasOpener) { +function url_test(t, url, channelName, hasOpener, openerDOMAccess) { const bc = new BroadcastChannel(channelName); bc.onmessage = t.step_func_done(event => { const payload = event.data; - assert_equals(payload.name, hasOpener ? channelName : ""); - assert_equals(payload.opener, hasOpener); + assert_equals(payload.name, hasOpener ? channelName : "", 'name'); + assert_equals(payload.opener, hasOpener, 'opener'); + // TODO(zcorpan): add openerDOMAccess expectations to all tests + if (openerDOMAccess !== undefined) { + assert_equals(payload.openerDOMAccess, openerDOMAccess, 'openerDOMAccess'); + } }); const w = window.open(url, channelName); @@ -17,8 +21,8 @@ function url_test(t, url, channelName, hasOpener) { t.add_cleanup(() => w.close()); } -function coop_coep_test(t, host, coop, coep, channelName, hasOpener) { - url_test(t, `${host.origin}/html/cross-origin-opener-policy/resources/coop-coep.py?coop=${encodeURIComponent(coop)}&coep=${coep}&channel=${channelName}`, channelName, hasOpener); +function coop_coep_test(t, host, coop, coep, channelName, hasOpener, openerDOMAccess) { + url_test(t, `${host.origin}/html/cross-origin-opener-policy/resources/coop-coep.py?coop=${encodeURIComponent(coop)}&coep=${coep}&channel=${channelName}`, channelName, hasOpener, openerDOMAccess); } function coop_test(t, host, coop, channelName, hasOpener) { diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/coop-coep.py b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/coop-coep.py index 8691e1b59d3..e6f655ab728 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/coop-coep.py +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/coop-coep.py @@ -21,13 +21,38 @@ def main(request, response): <script src="/common/get-host-info.sub.js"></script> <iframe></iframe> <script> - const navigate = new URL(location).searchParams.get("navigate"); - if (navigate !== null) { - self.location = navigate; + const params = new URL(location).searchParams; + const navHistory = params.get("navHistory"); + const avoidBackAndForth = params.get("avoidBackAndForth"); + const navigate = params.get("navigate"); + // Need to wait until the page is fully loaded before navigating + // so that it creates a history entry properly. + const fullyLoaded = new Promise((resolve, reject) => { + addEventListener('load', () => { + requestAnimationFrame(() => { + requestAnimationFrame(() => { + resolve(); + }); + }); + }); + }); + if (navHistory !== null) { + fullyLoaded.then(() => { + history.go(Number(navHistory)); + }); + } else if (navigate !== null && (history.length === 1 || !avoidBackAndForth)) { + fullyLoaded.then(() => { + self.location = navigate; + }); } else { + let openerDOMAccessAllowed = false; + try { + openerDOMAccessAllowed = !!self.opener.document.URL; + } catch(ex) { + } const iframe = document.querySelector("iframe"); iframe.onload = () => { - const payload = { name: self.name, opener: !!self.opener }; + const payload = { name: self.name, opener: !!self.opener, openerDOMAccess: openerDOMAccessAllowed }; iframe.contentWindow.postMessage(payload, "*"); }; const channelName = new URL(location).searchParams.get("channel"); diff --git a/tests/wpt/web-platform-tests/html/rendering/the-details-element/summary-display-list-item-ref.html b/tests/wpt/web-platform-tests/html/rendering/the-details-element/summary-display-list-item-ref.html new file mode 100644 index 00000000000..31e98d3fdca --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/the-details-element/summary-display-list-item-ref.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Reference: summary with 'display: list-item'</title> +<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com"> +<style> +details { + margin-left: 50px; +} +.inside { + list-style-position: inside; +} +</style> +<details> + <summary>summary</summary> + content +</details> +<details> + <summary class="inside">summary</summary> + content +</details> +<details open> + <summary>summary</summary> + content +</details> +<details open> + <summary class="inside">summary</summary> + content +</details> diff --git a/tests/wpt/web-platform-tests/html/rendering/the-details-element/summary-display-list-item.html b/tests/wpt/web-platform-tests/html/rendering/the-details-element/summary-display-list-item.html new file mode 100644 index 00000000000..c2e96e987ea --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/the-details-element/summary-display-list-item.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Test: summary with 'display: list-item'</title> +<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com"> +<link rel="match" href="summary-display-list-item-ref.html"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/rendering.html#the-details-and-summary-elements"> +<meta name="assert" content="Checks that styling a <summary> with 'display: list-item' has no effect since it should already be a list item by default."> +<style> +summary { + display: list-item; +} +details { + margin-left: 50px; +} +.inside { + list-style-position: inside; +} +</style> +<details> + <summary>summary</summary> + content +</details> +<details> + <summary class="inside">summary</summary> + content +</details> +<details open> + <summary>summary</summary> + content +</details> +<details open> + <summary class="inside">summary</summary> + content +</details> diff --git a/tests/wpt/web-platform-tests/interfaces/reporting.idl b/tests/wpt/web-platform-tests/interfaces/reporting.idl index f5370e8f1e6..d42f0bac59c 100644 --- a/tests/wpt/web-platform-tests/interfaces/reporting.idl +++ b/tests/wpt/web-platform-tests/interfaces/reporting.idl @@ -33,33 +33,6 @@ dictionary ReportingObserverOptions { typedef sequence<Report> ReportList; -[Exposed=(Window,Worker)] -interface DeprecationReportBody : ReportBody { - [Default] object toJSON(); - readonly attribute DOMString id; - readonly attribute Date? anticipatedRemoval; - readonly attribute DOMString message; - readonly attribute DOMString? sourceFile; - readonly attribute unsigned long? lineNumber; - readonly attribute unsigned long? columnNumber; -}; - -[Exposed=(Window,Worker)] -interface InterventionReportBody : ReportBody { - [Default] object toJSON(); - readonly attribute DOMString id; - readonly attribute DOMString message; - readonly attribute DOMString? sourceFile; - readonly attribute unsigned long? lineNumber; - readonly attribute unsigned long? columnNumber; -}; - -[Exposed=(Window,Worker)] -interface CrashReportBody : ReportBody { - [Default] object toJSON(); - readonly attribute DOMString? reason; -}; - dictionary GenerateTestReportParameters { required DOMString message; DOMString group = "default"; diff --git a/tests/wpt/web-platform-tests/interfaces/webauthn.idl b/tests/wpt/web-platform-tests/interfaces/webauthn.idl index 29025f35eec..56c2856b19a 100644 --- a/tests/wpt/web-platform-tests/interfaces/webauthn.idl +++ b/tests/wpt/web-platform-tests/interfaces/webauthn.idl @@ -236,10 +236,10 @@ partial dictionary AuthenticationExtensionsClientOutputs { UvmEntries uvm; }; -dictionary authenticatorBiometricPerfBounds{ +dictionary AuthenticatorBiometricPerfBounds { float FAR; float FRR; - }; +}; partial dictionary AuthenticationExtensionsClientInputs { boolean credProps; diff --git a/tests/wpt/web-platform-tests/interfaces/webrtc.idl b/tests/wpt/web-platform-tests/interfaces/webrtc.idl index badbe4df1dc..053afdcb135 100644 --- a/tests/wpt/web-platform-tests/interfaces/webrtc.idl +++ b/tests/wpt/web-platform-tests/interfaces/webrtc.idl @@ -588,7 +588,6 @@ interface RTCError : DOMException { constructor(RTCErrorInit init, optional DOMString message = ""); readonly attribute RTCErrorDetailType errorDetail; readonly attribute long? sdpLineNumber; - readonly attribute long? httpRequestStatusCode; readonly attribute long? sctpCauseCode; readonly attribute unsigned long? receivedAlert; readonly attribute unsigned long? sentAlert; @@ -597,7 +596,6 @@ interface RTCError : DOMException { dictionary RTCErrorInit { required RTCErrorDetailType errorDetail; long sdpLineNumber; - long httpRequestStatusCode; long sctpCauseCode; unsigned long receivedAlert; unsigned long sentAlert; diff --git a/tests/wpt/web-platform-tests/lint.whitelist b/tests/wpt/web-platform-tests/lint.whitelist index 353922a456c..425730feea7 100644 --- a/tests/wpt/web-platform-tests/lint.whitelist +++ b/tests/wpt/web-platform-tests/lint.whitelist @@ -99,6 +99,7 @@ TRAILING WHITESPACE: cookies/http-state/resources/test-files/* # Intentional use of print statements PRINT STATEMENT: dom/nodes/Document-createElement-namespace-tests/generate.py PRINT STATEMENT: encrypted-media/polyfill/make-polyfill-tests.py +PRINT STATEMENT: resources/test/conftest.py PRINT STATEMENT: webdriver/tests/support/helpers.py # semi-legitimate use of console.* diff --git a/tests/wpt/web-platform-tests/resources/test/conftest.py b/tests/wpt/web-platform-tests/resources/test/conftest.py index 4caa7943fb7..857f1b41bcb 100644 --- a/tests/wpt/web-platform-tests/resources/test/conftest.py +++ b/tests/wpt/web-platform-tests/resources/test/conftest.py @@ -1,4 +1,4 @@ -import io +import copy import json import os import ssl @@ -16,6 +16,7 @@ HERE = os.path.dirname(os.path.abspath(__file__)) WPT_ROOT = os.path.normpath(os.path.join(HERE, '..', '..')) HARNESS = os.path.join(HERE, 'harness.html') TEST_TYPES = ('functional', 'unit') +DEFAULT_VARIANTS = ["?default"] def pytest_addoption(parser): @@ -108,14 +109,15 @@ class HTMLItem(pytest.Item, pytest.Collector): raise ValueError('Could not resolve path "%s" from %s' % (src, filename)) if not name: - raise ValueError('No name found in file: %s' % filename) + raise ValueError('No name found in %s add a <title> element' % filename) elif self.type == 'functional': if not self.expected: raise ValueError('Functional tests must specify expected report data') if not includes_variants_script: - raise ValueError('No variants script found in file: %s' % filename) + raise ValueError('No variants script found in file %s add ' + '\'<script src="../../variants.js"></script>\'' % filename) if len(self.variants) == 0: - raise ValueError('No test variants specified in file %s' % filename) + self.variants = DEFAULT_VARIANTS elif self.type == 'unit' and self.expected: raise ValueError('Unit tests must not specify expected report data') @@ -153,7 +155,9 @@ class HTMLItem(pytest.Item, pytest.Collector): 'runTest("%s", "foo", arguments[0])' % self.url ) - summarized = self._summarize(actual) + summarized = self._summarize(copy.deepcopy(actual)) + + print(json.dumps(summarized, indent=2)) assert summarized[u'summarized_status'][u'status_string'] == u'OK', summarized[u'summarized_status'][u'message'] for test in summarized[u'summarized_tests']: @@ -173,12 +177,15 @@ class HTMLItem(pytest.Item, pytest.Collector): test_url = self.url + variant actual = driver.execute_async_script('runTest("%s", "foo", arguments[0])' % test_url) + summarized = self._summarize(copy.deepcopy(actual)) + + print(json.dumps(summarized, indent=2)) + # Test object ordering is not guaranteed. This weak assertion verifies # that the indices are unique and sequential indices = [test_obj.get('index') for test_obj in actual['tests']] self._assert_sequence(indices) - summarized = self._summarize(actual) self.expected[u'summarized_tests'].sort(key=lambda test_obj: test_obj.get('name')) assert summarized == self.expected diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/assert-array-equals.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/assert-array-equals.html new file mode 100644 index 00000000000..d56419d1f31 --- /dev/null +++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/assert-array-equals.html @@ -0,0 +1,163 @@ +<!DOCTYPE HTML> +<title>assert_array_equals</title> +<script src="../../variants.js"></script> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="log"></div> +<script> +test(() => { + assert_array_equals([], []); +}, "empty and equal"); +test(() => { + assert_array_equals([1], [1]); +}, "non-empty and equal"); +test(() => { + assert_array_equals([], [1]); +}, "length differs"); +test(() => { + assert_array_equals([1], [,]); +}, "property is present"); +test(() => { + assert_array_equals([,], [1]); +}, "property is missing"); +test(() => { + assert_array_equals([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20], ["x",1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]); +}, "property 0 differs"); +test(() => { + assert_array_equals([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20], [0,1,2,3,4,"x",6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]); +}, "property 5 differs"); +test(() => { + assert_array_equals([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21], [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]); +}, "lengths differ and input array beyond display limit"); +test(() => { + assert_array_equals([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21], [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]); +}, "lengths differ and expected array beyond display limit"); +test(() => { + assert_array_equals([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21], [,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]); +}, "property 0 is present and arrays are beyond display limit"); +test(() => { + assert_array_equals([,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21], [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]); +}, "property 0 is missing and arrays are beyond display limit"); +test(() => { + assert_array_equals([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21], [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,,19,20,21]); +}, "property 18 is present and arrays are beyond display limit"); +test(() => { + assert_array_equals([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,,19,20,21], [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]); +}, "property 18 is missing and arrays are beyond display limit"); +test(() => { + assert_array_equals([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21], ["x",1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]); +}, "property 0 differs and arrays are beyond display limit"); +test(() => { + assert_array_equals([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21], [0,1,2,3,4,"x",6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]); +}, "property 5 differs and arrays are beyond display limit"); +test(() => { + assert_array_equals([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26], [0,1,2,3,4,5,6,7,8,9,10,11,"x",13,14,15,16,17,18,19,20,21,22,23,24,25,26]); +}, "property 5 differs and arrays are beyond display limit on both sides"); +</script> +<script type="text/json" id="expected"> +{ + "type": "complete", + "summarized_status": { + "message": null, + "status_string": "OK" + }, + "summarized_tests": [ + { + "name": "empty and equal", + "message": null, + "properties": {}, + "status_string": "PASS" + }, + { + "name": "length differs", + "message": "assert_array_equals: lengths differ, expected array [1] length 1, got [] length 0", + "properties": {}, + "status_string": "FAIL" + }, + { + "name": "lengths differ and expected array beyond display limit", + "message": "assert_array_equals: lengths differ, expected array [\u2026, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21] length 22, got [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21] length 21", + "properties": {}, + "status_string": "FAIL" + }, + { + "name": "lengths differ and input array beyond display limit", + "message": "assert_array_equals: lengths differ, expected array [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21] length 21, got [\u2026, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21] length 22", + "properties": {}, + "status_string": "FAIL" + }, + { + "name": "non-empty and equal", + "message": null, + "properties": {}, + "status_string": "PASS" + }, + { + "name": "property 0 differs", + "message": "assert_array_equals: expected property 0 to be \"x\" but got 0 (expected array [\"x\", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] got [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])", + "properties": {}, + "status_string": "FAIL" + }, + { + "name": "property 0 differs and arrays are beyond display limit", + "message": "assert_array_equals: expected property 0 to be \"x\" but got 0 (expected array [\"x\", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, \u2026] got [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, \u2026])", + "properties": {}, + "status_string": "FAIL" + }, + { + "name": "property 0 is missing and arrays are beyond display limit", + "message": "assert_array_equals: expected property 0 to be \"present\" but was \"missing\" (expected array [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, \u2026] got [, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, \u2026])", + "properties": {}, + "status_string": "FAIL" + }, + { + "name": "property 0 is present and arrays are beyond display limit", + "message": "assert_array_equals: expected property 0 to be \"missing\" but was \"present\" (expected array [, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, \u2026] got [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, \u2026])", + "properties": {}, + "status_string": "FAIL" + }, + { + "name": "property 18 is missing and arrays are beyond display limit", + "message": "assert_array_equals: expected property 18 to be \"present\" but was \"missing\" (expected array [\u2026, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21] got [\u2026, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, , 19, 20, 21])", + "properties": {}, + "status_string": "FAIL" + }, + { + "name": "property 18 is present and arrays are beyond display limit", + "message": "assert_array_equals: expected property 18 to be \"missing\" but was \"present\" (expected array [\u2026, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, , 19, 20, 21] got [\u2026, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21])", + "properties": {}, + "status_string": "FAIL" + }, + { + "name": "property 5 differs", + "message": "assert_array_equals: expected property 5 to be \"x\" but got 5 (expected array [0, 1, 2, 3, 4, \"x\", 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] got [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])", + "properties": {}, + "status_string": "FAIL" + }, + { + "name": "property 5 differs and arrays are beyond display limit", + "message": "assert_array_equals: expected property 5 to be \"x\" but got 5 (expected array [0, 1, 2, 3, 4, \"x\", 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, \u2026] got [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, \u2026])", + "properties": {}, + "status_string": "FAIL" + }, + { + "name": "property 5 differs and arrays are beyond display limit on both sides", + "message": "assert_array_equals: expected property 12 to be \"x\" but got 12 (expected array [\u2026, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, \"x\", 13, 14, 15, 16, 17, 18, 19, 20, 21, \u2026] got [\u2026, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, \u2026])", + "properties": {}, + "status_string": "FAIL" + }, + { + "name": "property is missing", + "message": "assert_array_equals: expected property 0 to be \"present\" but was \"missing\" (expected array [1] got [])", + "properties": {}, + "status_string": "FAIL" + }, + { + "name": "property is present", + "message": "assert_array_equals: expected property 0 to be \"missing\" but was \"present\" (expected array [] got [1])", + "properties": {}, + "status_string": "FAIL" + } + ] +} +</script> diff --git a/tests/wpt/web-platform-tests/resources/test/variants.js b/tests/wpt/web-platform-tests/resources/test/variants.js index eebac6f7d14..c40085a329f 100644 --- a/tests/wpt/web-platform-tests/resources/test/variants.js +++ b/tests/wpt/web-platform-tests/resources/test/variants.js @@ -1,5 +1,7 @@ (function() { 'use strict'; + // NOTE: When new default variants are added DEFAULT_VARIANTS in conftest.py + // must also be updated var variants = { /** * Tests are executed in the absence of the global Promise constructor by diff --git a/tests/wpt/web-platform-tests/resources/testharness.js b/tests/wpt/web-platform-tests/resources/testharness.js index f289e779720..2c3664dfa6a 100644 --- a/tests/wpt/web-platform-tests/resources/testharness.js +++ b/tests/wpt/web-platform-tests/resources/testharness.js @@ -1006,7 +1006,15 @@ policies and contribution forms [3]. seen.push(val); } if (Array.isArray(val)) { - return "[" + val.map(function(x) {return format_value(x, seen);}).join(", ") + "]"; + let output = "["; + if (val.beginEllipsis !== undefined) { + output += "…, "; + } + output += val.map(function(x) {return format_value(x, seen);}).join(", "); + if (val.endEllipsis !== undefined) { + output += ", …"; + } + return output + "]"; } switch (typeof val) { @@ -1178,25 +1186,57 @@ policies and contribution forms [3]. function assert_array_equals(actual, expected, description) { + const max_array_length = 20; + function shorten_array(arr, offset = 0) { + // Make ", …" only show up when it would likely reduce the length, not accounting for + // fonts. + if (arr.length < max_array_length + 2) { + return arr; + } + // By default we want half the elements after the offset and half before + // But if that takes us past the end of the array, we have more before, and + // if it takes us before the start we have more after. + const length_after_offset = Math.floor(max_array_length / 2); + let upper_bound = Math.min(length_after_offset + offset, arr.length); + const lower_bound = Math.max(upper_bound - max_array_length, 0); + + if (lower_bound === 0) { + upper_bound = max_array_length; + } + + const output = arr.slice(lower_bound, upper_bound); + if (lower_bound > 0) { + output.beginEllipsis = true; + } + if (upper_bound < arr.length) { + output.endEllipsis = true; + } + return output; + } + assert(typeof actual === "object" && actual !== null && "length" in actual, "assert_array_equals", description, "value is ${actual}, expected array", {actual:actual}); assert(actual.length === expected.length, "assert_array_equals", description, - "lengths differ, expected ${expected} got ${actual}", - {expected:expected.length, actual:actual.length}); + "lengths differ, expected array ${expected} length ${expectedLength}, got ${actual} length ${actualLength}", + {expected:shorten_array(expected, expected.length - 1), expectedLength:expected.length, + actual:shorten_array(actual, actual.length - 1), actualLength:actual.length + }); for (var i = 0; i < actual.length; i++) { assert(actual.hasOwnProperty(i) === expected.hasOwnProperty(i), "assert_array_equals", description, - "property ${i}, property expected to be ${expected} but was ${actual}", + "expected property ${i} to be ${expected} but was ${actual} (expected array ${arrayExpected} got ${arrayActual})", {i:i, expected:expected.hasOwnProperty(i) ? "present" : "missing", - actual:actual.hasOwnProperty(i) ? "present" : "missing"}); + actual:actual.hasOwnProperty(i) ? "present" : "missing", + arrayExpected:shorten_array(expected, i), arrayActual:shorten_array(actual, i)}); assert(same_value(expected[i], actual[i]), "assert_array_equals", description, - "property ${i}, expected ${expected} but got ${actual}", - {i:i, expected:expected[i], actual:actual[i]}); + "expected property ${i} to be ${expected} but got ${actual} (expected array ${arrayExpected} got ${arrayActual})", + {i:i, expected:expected[i], actual:actual[i], + arrayExpected:shorten_array(expected, i), arrayActual:shorten_array(actual, i)}); } } expose(assert_array_equals, "assert_array_equals"); @@ -1216,7 +1256,7 @@ policies and contribution forms [3]. "assert_array_approx_equals", description, "property ${i}, property expected to be ${expected} but was ${actual}", {i:i, expected:expected.hasOwnProperty(i) ? "present" : "missing", - actual:actual.hasOwnProperty(i) ? "present" : "missing"}); + actual:actual.hasOwnProperty(i) ? "present" : "missing"}); assert(typeof actual[i] === "number", "assert_array_approx_equals", description, "property ${i}, expected a number but got a ${type_actual}", diff --git a/tests/wpt/web-platform-tests/tools/ci/azure/install_chrome.yml b/tests/wpt/web-platform-tests/tools/ci/azure/install_chrome.yml index 6bd5c2334ad..fd650e80aaa 100644 --- a/tests/wpt/web-platform-tests/tools/ci/azure/install_chrome.yml +++ b/tests/wpt/web-platform-tests/tools/ci/azure/install_chrome.yml @@ -1,6 +1,9 @@ steps: -# This is equivalent to `Homebrew/homebrew-cask-versions/google-chrome-dev`, -# but the raw URL is used to bypass caching. -- script: HOMEBREW_NO_AUTO_UPDATE=1 brew cask install https://raw.githubusercontent.com/Homebrew/homebrew-cask-versions/master/Casks/google-chrome-dev.rb +# The conflicting google-chrome and chromedriver casks are first uninstalled. +# The raw google-chrome-dev cask URL is used to bypass caching. +- script: | + HOMEBREW_NO_AUTO_UPDATE=1 brew cask uninstall google-chrome || true + HOMEBREW_NO_AUTO_UPDATE=1 brew cask uninstall chromedriver || true + HOMEBREW_NO_AUTO_UPDATE=1 brew cask install https://raw.githubusercontent.com/Homebrew/homebrew-cask-versions/master/Casks/google-chrome-dev.rb displayName: 'Install Chrome Dev' condition: and(succeeded(), eq(variables['Agent.OS'], 'Darwin')) diff --git a/tests/wpt/web-platform-tests/tools/ci/azure/safari-technology-preview.rb b/tests/wpt/web-platform-tests/tools/ci/azure/safari-technology-preview.rb index a3772b75e46..2d4912abbff 100644 --- a/tests/wpt/web-platform-tests/tools/ci/azure/safari-technology-preview.rb +++ b/tests/wpt/web-platform-tests/tools/ci/azure/safari-technology-preview.rb @@ -1,10 +1,10 @@ cask 'safari-technology-preview' do if MacOS.version <= :mojave - version '97,061-62396-20191217-bcf15e6a-ba77-4912-bd7a-5c136c6a9bb0' - sha256 '75678852258e1869daf69e853b345556fea05adcd5d71530501c3be584212830' + version '98,061-66319-20200108-e9d7f579-fba9-46c9-97fc-9445bed56df0' + sha256 '860305b6e60915a71a15fa6267c549e635a415db66c220d1deee6e482a50299c' else - version '97,061-62395-20191217-fd754f32-1f09-4449-8aab-ebb9ba1ab1c4' - sha256 'bfce6e57c4aad6b0423cabc54176de1e3115c656496a5a28dd91a7b78e16bf58' + version '98,061-66316-20200108-559ee008-6ff9-4219-8256-3c0464bbe29b' + sha256 '9bac3e5e278adfe817db69b976d4be0903d9903ae48d3d7d3744626b5c178f03' end url "https://secure-appldnld.apple.com/STP/#{version.after_comma}/SafariTechnologyPreview.dmg" diff --git a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py index 0c5bbff5629..cf4c5fd35fd 100644 --- a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py +++ b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py @@ -738,6 +738,10 @@ class Element(object): return self.send_element_command("GET", "selected") @command + def screenshot(self): + return self.send_element_command("GET", "screenshot") + + @command def attribute(self, name): return self.send_element_command("GET", "attribute/%s" % name) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/__init__.py index 9de87924607..9a82cc48eab 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/__init__.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/__init__.py @@ -1,12 +1,10 @@ -def element_rect(session, element): - return session.execute_script(""" - let {devicePixelRatio} = window; - let {left, top, width, height} = arguments[0].getBoundingClientRect(); +def element_dimensions(session, element): + return tuple(session.execute_script(""" + const {devicePixelRatio} = window; + let {width, height} = arguments[0].getBoundingClientRect(); - return { - x: Math.floor((left + window.pageXOffset) * devicePixelRatio), - y: Math.floor((top + window.pageYOffset) * devicePixelRatio), - width: Math.floor(width * devicePixelRatio), - height: Math.floor(height * devicePixelRatio), - }; - """, args=(element,)) + return [ + Math.floor(width * devicePixelRatio), + Math.floor(height * devicePixelRatio), + ]; + """, args=(element,))) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/iframe.py b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/iframe.py index 242122f0b5e..83f55deff75 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/iframe.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/iframe.py @@ -4,21 +4,58 @@ from tests.support.asserts import assert_success from tests.support.image import png_dimensions from tests.support.inline import iframe, inline -from . import element_rect +from . import element_dimensions +DEFAULT_CONTENT = "<div id='content'>Lorem ipsum dolor sit amet.</div>" -DEFAULT_CSS_STYLE = """ +REFERENCE_CONTENT = "<div id='outer'>{}</div>".format(DEFAULT_CONTENT) +REFERENCE_STYLE = """ <style> - div, iframe { + #outer { display: block; - border: 1px solid blue; - width: 10em; - height: 10em; + margin: 0; + border: 0; + width: 200px; + height: 200px; + } + #content { + display: block; + margin: 0; + border: 0; + width: 100px; + height: 100px; + background: green; + } + </style> +""" + +OUTER_IFRAME_STYLE = """ + <style> + iframe { + display: block; + margin: 0; + border: 0; + width: 200px; + height: 200px; } </style> """ -DEFAULT_CONTENT = "<div>Lorem ipsum dolor sit amet.</div>" +INNER_IFRAME_STYLE = """ + <style> + body { + margin: 0; + } + div { + display: block; + margin: 0; + border: 0; + width: 100px; + height: 100px; + background: green; + } + </style> +""" def take_element_screenshot(session, element_id): @@ -31,24 +68,55 @@ def take_element_screenshot(session, element_id): ) +def test_frame_element(session): + # Create a reference element which looks exactly like the frame's content + session.url = inline("{0}{1}".format(REFERENCE_STYLE, REFERENCE_CONTENT)) + + # Capture the inner content as reference image + ref_el = session.find.css("#content", all=False) + ref_screenshot = ref_el.screenshot() + ref_dimensions = element_dimensions(session, ref_el) + + assert png_dimensions(ref_screenshot) == ref_dimensions + + # Capture the frame's element + iframe_content = "{0}{1}".format(INNER_IFRAME_STYLE, DEFAULT_CONTENT) + session.url = inline("""{0}{1}""".format(OUTER_IFRAME_STYLE, iframe(iframe_content))) + + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + div = session.find.css("div", all=False) + div_dimensions = element_dimensions(session, div) + assert div_dimensions == ref_dimensions + + response = take_element_screenshot(session, div.id) + div_screenshot = assert_success(response) + + assert png_dimensions(div_screenshot) == ref_dimensions + assert div_screenshot == ref_screenshot + + @pytest.mark.parametrize("domain", ["", "alt"], ids=["same_origin", "cross_origin"]) def test_source_origin(session, url, domain): - session.url = inline("""{0}{1}""".format(DEFAULT_CSS_STYLE, DEFAULT_CONTENT)) - element = session.find.css("div", all=False) - rect = element_rect(session, element) + # Create a reference element which looks exactly like the iframe + session.url = inline("{0}{1}".format(REFERENCE_STYLE, REFERENCE_CONTENT)) + + div = session.find.css("div", all=False) + div_dimensions = element_dimensions(session, div) - response = take_element_screenshot(session, element.id) + response = take_element_screenshot(session, div.id) reference_screenshot = assert_success(response) - assert png_dimensions(reference_screenshot) == (rect["width"], rect["height"]) + assert png_dimensions(reference_screenshot) == div_dimensions - iframe_content = "<style>body {{ margin: 0; }}</style>{}".format(DEFAULT_CONTENT) + iframe_content = "{0}{1}".format(INNER_IFRAME_STYLE, DEFAULT_CONTENT) session.url = inline("""{0}{1}""".format( - DEFAULT_CSS_STYLE, iframe(iframe_content, domain=domain))) + OUTER_IFRAME_STYLE, iframe(iframe_content, domain=domain))) + frame_element = session.find.css("iframe", all=False) - frame_rect = element_rect(session, frame_element) + frame_dimensions = element_dimensions(session, frame_element) response = take_element_screenshot(session, frame_element.id) screenshot = assert_success(response) - assert png_dimensions(screenshot) == (frame_rect["width"], frame_rect["height"]) + assert png_dimensions(screenshot) == frame_dimensions assert screenshot == reference_screenshot diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py index fd460b656ae..50d33a266db 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py @@ -2,7 +2,7 @@ from tests.support.asserts import assert_error, assert_success from tests.support.image import png_dimensions from tests.support.inline import inline -from . import element_rect +from . import element_dimensions def take_element_screenshot(session, element_id): @@ -32,9 +32,8 @@ def test_stale(session): def test_format_and_dimensions(session): session.url = inline("<input>") element = session.find.css("input", all=False) - rect = element_rect(session, element) response = take_element_screenshot(session, element.id) screenshot = assert_success(response) - assert png_dimensions(screenshot) == (rect["width"], rect["height"]) + assert png_dimensions(screenshot) == element_dimensions(session, element) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/__init__.py index c07f8d16703..f3001d946df 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/__init__.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/__init__.py @@ -1,6 +1,18 @@ +def element_dimensions(session, element): + return tuple(session.execute_script(""" + const {devicePixelRatio} = window; + let {width, height} = arguments[0].getBoundingClientRect(); + + return [ + Math.floor(width * devicePixelRatio), + Math.floor(height * devicePixelRatio), + ]; + """, args=(element,))) + + def viewport_dimensions(session): return tuple(session.execute_script(""" - let {devicePixelRatio, innerHeight, innerWidth} = window; + const {devicePixelRatio, innerHeight, innerWidth} = window; return [ Math.floor(innerWidth * devicePixelRatio), diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/iframe.py b/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/iframe.py index 66df6ec9493..601c039d56d 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/iframe.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/iframe.py @@ -4,21 +4,58 @@ from tests.support.asserts import assert_success from tests.support.image import png_dimensions from tests.support.inline import iframe, inline -from . import viewport_dimensions +from . import element_dimensions, viewport_dimensions +DEFAULT_CONTENT = "<div id='content'>Lorem ipsum dolor sit amet.</div>" -DEFAULT_CSS_STYLE = """ +REFERENCE_CONTENT = "<div id='outer'>{}</div>".format(DEFAULT_CONTENT) +REFERENCE_STYLE = """ <style> - div, iframe { + #outer { display: block; - border: 1px solid blue; - width: 10em; - height: 10em; + margin: 0; + border: 0; + width: 200px; + height: 200px; + } + #content { + display: block; + margin: 0; + border: 0; + width: 100px; + height: 100px; + background: green; + } + </style> +""" + +OUTER_IFRAME_STYLE = """ + <style> + iframe { + display: block; + margin: 0; + border: 0; + width: 200px; + height: 200px; } </style> """ -DEFAULT_CONTENT = "<div>Lorem ipsum dolor sit amet.</div>" +INNER_IFRAME_STYLE = """ + <style> + body { + margin: 0; + } + div { + display: block; + margin: 0; + border: 0; + width: 100px; + height: 100px; + background: green; + } + </style> +""" def take_screenshot(session): @@ -27,8 +64,8 @@ def take_screenshot(session): def test_always_captures_top_browsing_context(session): - iframe_content = "<style>body {{ margin: 0; }}</style>{}".format(DEFAULT_CONTENT) - session.url = inline("""{0}{1}""".format(DEFAULT_CSS_STYLE, iframe(iframe_content))) + iframe_content = "{0}{1}".format(INNER_IFRAME_STYLE, DEFAULT_CONTENT) + session.url = inline("""{0}{1}""".format(OUTER_IFRAME_STYLE, iframe(iframe_content))) response = take_screenshot(session) reference_screenshot = assert_success(response) @@ -40,20 +77,21 @@ def test_always_captures_top_browsing_context(session): response = take_screenshot(session) screenshot = assert_success(response) + assert png_dimensions(screenshot) == png_dimensions(reference_screenshot) assert screenshot == reference_screenshot @pytest.mark.parametrize("domain", ["", "alt"], ids=["same_origin", "cross_origin"]) -def test_source_origin(session, url, domain): - session.url = inline("""{0}{1}""".format(DEFAULT_CSS_STYLE, DEFAULT_CONTENT)) +def test_source_origin(session, domain): + session.url = inline("{0}{1}".format(REFERENCE_STYLE, REFERENCE_CONTENT)) response = take_screenshot(session) reference_screenshot = assert_success(response) assert png_dimensions(reference_screenshot) == viewport_dimensions(session) - iframe_content = "<style>body {{ margin: 0; }}</style>{}".format(DEFAULT_CONTENT) + iframe_content = "{0}{1}".format(INNER_IFRAME_STYLE, DEFAULT_CONTENT) session.url = inline("""{0}{1}""".format( - DEFAULT_CSS_STYLE, iframe(iframe_content, domain=domain))) + OUTER_IFRAME_STYLE, iframe(iframe_content, domain=domain))) response = take_screenshot(session) screenshot = assert_success(response) |