Auto merge of #27959 - servo-wpt-sync:wpt_update_18-12-2020, r=servo-wpt-sync

Sync WPT with upstream (18-12-2020)

Automated downstream sync of changes from upstream as of 18-12-2020.
[no-wpt-sync]
r? @servo-wpt-sync
This commit is contained in:
bors-servo 2020-12-18 07:08:46 -05:00 committed by GitHub
commit ca4afea1c0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
105 changed files with 1034 additions and 323 deletions

View file

@ -1,4 +0,0 @@
[hit-test-floats-002.html]
[Hit test float]
expected: FAIL

View file

@ -1,4 +1,4 @@
[hit-test-floats-004.html]
[hit-test-floats-003.html]
[Miss float below something else]
expected: FAIL

View file

@ -0,0 +1,2 @@
[break-boundary-2-chars-001.html]
expected: FAIL

View file

@ -2,6 +2,3 @@
[Hit test intersecting scaled box]
expected: FAIL
[Hit test within unscaled box]
expected: FAIL

View file

@ -1,4 +0,0 @@
[elementFromPoint-001.html]
[CSSOM View - 5 - extensions to the Document interface]
expected: FAIL

View file

@ -17,3 +17,6 @@
[test the top of layer]
expected: FAIL
[test some point of the element: top left corner]
expected: FAIL

View file

@ -309,30 +309,24 @@
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
expected: NOTRUN
[<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: text/html */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL

View file

@ -11,6 +11,9 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
expected: FAIL
[X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
[X-Content-Type-Options%3A%20'NosniFF']
expected: FAIL
[X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff]
expected: FAIL

View file

@ -0,0 +1,4 @@
[traverse_the_history_1.html]
[Multiple history traversals from the same task]
expected: FAIL

View file

@ -0,0 +1,4 @@
[traverse_the_history_4.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -1,2 +0,0 @@
[cross-origin-objects-on-new-window.html]
expected: TIMEOUT

View file

@ -1,5 +1,5 @@
[embedded-opener-remove-frame.html]
expected: TIMEOUT
expected: CRASH
[opener of discarded nested browsing context]
expected: FAIL

View file

@ -1,5 +1,5 @@
[iframe_sandbox_popups_escaping-1.html]
expected: CRASH
expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT

View file

@ -1,5 +1,4 @@
[iframe_sandbox_popups_escaping-3.html]
expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT
expected: FAIL

View file

@ -1,5 +1,5 @@
[iframe_sandbox_popups_nonescaping-2.html]
expected: CRASH
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN

View file

@ -1,4 +0,0 @@
[form-double-submit-3.html]
[<button> should have the same double-submit protection as <input type=submit>]
expected: FAIL

View file

@ -0,0 +1,4 @@
[activation-behavior.window.html]
[<a> that is not connected should be followed]
expected: FAIL

View file

@ -0,0 +1,7 @@
[type.html]
[type="MODULE"]
expected: FAIL
[type="Module"]
expected: FAIL

View file

@ -1,4 +0,0 @@
[module-delayed.html]
[async document.write in a module]
expected: FAIL

View file

@ -1,5 +1,5 @@
[ignore-opens-during-unload.window.html]
expected: TIMEOUT
expected: CRASH
[document.open should bail out when ignore-opens-during-unload is greater than 0 during visibilitychange event (open(parent) while unloading parent and child)]
expected: TIMEOUT

View file

@ -3,6 +3,3 @@
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: TIMEOUT
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: FAIL

View file

@ -1,4 +1,5 @@
[realtimeanalyser-fft-scaling.html]
expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL

View file

@ -419,3 +419,6 @@
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-2.9435393349935682e-20\t9.3139332532882690e-1\t9.3139332532882690e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882690e-1 at index of 28696.\n\tMax RelError of 1.0000000000000000e+0 at index of 28696.\n]
expected: FAIL
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-1.6903211120476289e-27\t9.3139332532882690e-1\t9.3139332532882690e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882690e-1 at index of 28696.\n\tMax RelError of 1.0000000000000000e+0 at index of 28696.\n]
expected: FAIL

View file

@ -1,4 +1,5 @@
[audiocontext-not-fully-active.html]
expected: TIMEOUT
[frame in navigated remote-site frame]
expected: FAIL

View file

@ -1,5 +0,0 @@
[018.html]
expected: TIMEOUT
[origin of the script that invoked the method, javascript:]
expected: TIMEOUT

View file

@ -1,5 +0,0 @@
[018.html]
expected: TIMEOUT
[origin of the script that invoked the method, javascript:]
expected: TIMEOUT

View file

@ -1,5 +1,4 @@
[import-in-moduleworker.html]
expected: ERROR
[Base URL in module dedicated workers: import]
expected: FAIL

View file

@ -1074,6 +1074,13 @@
{}
]
],
"mmultiscripts-with-two-prescripts.html": [
"54f938460636bb351d9da20611fd872d6b888ca6",
[
null,
{}
]
],
"multicol-on-token-elements.html": [
"9fc00eb6911b625a7443a3e1ec65ada7daf25105",
[
@ -14107,20 +14114,6 @@
]
},
"selectors": {
"focus-visible-006-manual.html": [
"974abc0024e3153008e944ff706156efcb9948e2",
[
null,
{}
]
],
"focus-visible-008-manual.html": [
"53306a90bbcae67ca65feefce3e4d3758d1a4ecd",
[
null,
{}
]
],
"hover-001-manual.html": [
"87d7af91b6994371b72ff33923ea1cacc65c8b5b",
[
@ -129074,6 +129067,19 @@
],
{}
]
],
"widows-orphans-018.html": [
"80699c698d385b244cb58a79c108c6f28e733579",
[
null,
[
[
"/css/css-break/reference/widows-orphans-009-ref.html",
"=="
]
],
{}
]
]
},
"css-cascade": {
@ -165472,6 +165478,19 @@
{}
]
],
"multicol-fill-balance-006.html": [
"3dc2022a3dfcf80ff133c212237503a4b64a9fe1",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square-only.html",
"=="
]
],
{}
]
],
"multicol-fill-balance-nested-000.html": [
"5e466df8077545b4d6474389d296bc26c5b28b86",
[
@ -195399,6 +195418,32 @@
]
},
"word-break": {
"break-boundary-2-chars-001.html": [
"e207f474c75ad1f3e0dbb726826468763af2263d",
[
null,
[
[
"/css/css-text/word-break/reference/break-boundary-2-chars-001-ref.html",
"=="
]
],
{}
]
],
"break-boundary-2-chars-002.html": [
"67c4cb7310599337e6f6d801b029777934a1680a",
[
null,
[
[
"/css/css-text/word-break/reference/break-boundary-2-chars-002-ref.html",
"=="
]
],
{}
]
],
"word-break-break-all-000.html": [
"af21bedf4bdc3219b3c3b1225f76b55e127d3f13",
[
@ -261904,7 +261949,7 @@
[]
],
"font.py": [
"706ee022ef8ce7b4c08a0fed91b9415a8e5bd0f3",
"6e33dbbc35a6334586a83fe0762f6b6cb8112e21",
[]
],
"image.py": [
@ -322932,6 +322977,14 @@
},
"word-break": {
"reference": {
"break-boundary-2-chars-001-ref.html": [
"e0702afce52b2cc3eadbdc200e91180239e8a6b1",
[]
],
"break-boundary-2-chars-002-ref.html": [
"cd3ed338f1c345a5d2903c2a9b01d280582cfd16",
[]
],
"word-break-break-all-010-ref.html": [
"0e0300a72dc920a5ffb54cda6fbe84a2f517d010",
[]
@ -348007,7 +348060,7 @@
[]
],
"404-response-with-actual-image-data.py": [
"3e2d9917d90239148371a6c43b5f5d71b193355b",
"e98cf03cf530d1187cf41e71a940c93a42b3a248",
[]
],
"available-images-ref.html": [
@ -360272,7 +360325,7 @@
[]
],
"fetch-access-control.py": [
"a6cc9b12ad1fab3babd088d1edde5bf27fa51dfb",
"8822f32b270d4cb3d11f83576ee0a72f25e97b4d",
[]
],
"fetch-canvas-tainting-double-write-worker.js": [
@ -370639,7 +370692,7 @@
[]
],
"requirements.txt": [
"d83f5eb89fab1eb9734a90d262e21c33fa162a1f",
"a387544f3475cc88f93ca13ba13422cf1f208198",
[]
],
"revlist.py": [
@ -370745,7 +370798,7 @@
]
},
"requirements.txt": [
"a266c322e2cf453221e4a11e4302879e413baa94",
"5cfa9f3faf9c0088348c78b4030df450989066b7",
[]
],
"requirements_android_webview.txt": [
@ -370793,7 +370846,7 @@
[]
],
"requirements_sauce.txt": [
"47e268df17307a701bd966a9dbe89c3d542d8d3b",
"eae7ef3f004852071565e769edd87809194829b5",
[]
],
"requirements_servo.txt": [
@ -370957,11 +371010,11 @@
[]
],
"android_weblayer.py": [
"6110450b7282c6cfa4afaca1ec2b2ef580f7a714",
"f68312f231bba4f08aba7defbc272a86e98af244",
[]
],
"android_webview.py": [
"d0773873508fe7f327afe751d32eaddbecea9a3f",
"3cde248b4465cd10a86a813de8551808c42dbf18",
[]
],
"base.py": [
@ -370969,15 +371022,15 @@
[]
],
"chrome.py": [
"fd251a431c306f3bb3b12b848f548d8eff07a466",
"d3e27a9c5f65f7aa754263cb57846285d2857540",
[]
],
"chrome_android.py": [
"485b96f31e7deafdddf82fd375aea7d7497e9fa7",
"d7e3e21012169fdf12e47d3bc87552f46c779cf9",
[]
],
"chrome_ios.py": [
"6db0188e55ebff8d3a40f9a15dc714419edacbeb",
"ecdbc3a17623907dc9bd99505d1e5ee0bc747c7b",
[]
],
"chrome_spki_certs.py": [
@ -370985,7 +371038,7 @@
[]
],
"edge.py": [
"bdb37b3f84c2cdc4010a7a289a53564822a3a34c",
"b908684bbb3e7eae9982173ed26a9a9e39b6b437",
[]
],
"edge_webdriver.py": [
@ -370993,35 +371046,35 @@
[]
],
"edgechromium.py": [
"0bcb18cdc0cca64376906e9156b07c4a9cc7dcdb",
"67105e425c794c32cd99f8216418d47e640dc7ba",
[]
],
"epiphany.py": [
"f6c4c602a38c043637cf9dbc8bbb5350ec94527e",
"a3384436a1d643c6576ebb731db5c458f8ad2687",
[]
],
"firefox.py": [
"e95bc93deca0ef0f825e9d7997450f16a7353819",
"9104fedb5f9f45b6c8e9640159315a62e93a37c7",
[]
],
"firefox_android.py": [
"b219079de3df793ba5c74de8706d4c9ad0526194",
"ca6ea96013b67ed548f5487520253ca61e0ae32c",
[]
],
"ie.py": [
"78c22b909acf410038ff06769366662ab0c589a0",
"3a86c1b6ccb5aabfe210158f6be613f690543375",
[]
],
"opera.py": [
"805fedee636cd22155ed143cf1148f3c2f5d98e7",
"a34f41955383c08e98c4d38d7804231c17e9297a",
[]
],
"safari.py": [
"cb2b175d4dfbc3166e4ad5a6afe174ffdbc6ff8a",
"312d4db9c6382f7aff5cd75772f0edf73e538565",
[]
],
"sauce.py": [
"c57ac942ed4e7624a0a7d115df3a210aec5d9ee1",
"3497c5c277288e51f6677000e57057ebcd99a210",
[]
],
"sauce_setup": {
@ -371035,19 +371088,19 @@
]
},
"servo.py": [
"b9476540ac7c53162e70669c4b7ba4883fd75f75",
"a65ed5ead4e55c45cfd7aa7921f0717216ce6a45",
[]
],
"servodriver.py": [
"43794e41706d6ccc1f686655c8edeca95e3c4c62",
"ed85cbf3b9bd04ea192641b480ace44dc6d433bf",
[]
],
"webkit.py": [
"da93cf1643995d95b8d6de1f70c7731b5559768b",
"590e472aca961b865bf0dbc836c942f62b506ae8",
[]
],
"webkitgtk_minibrowser.py": [
"d8b9744bd743e39ce19f008e7f40cbc80e80107c",
"5b7a360fb608352e26971570af06c5bb8466255b",
[]
]
},
@ -371069,7 +371122,7 @@
[]
],
"base.py": [
"55518685494e2464354250ae6e72babdef46dcf7",
"51d752cdebc61976066a15c5dd9e778f9378ff00",
[]
],
"executorchrome.py": [
@ -371134,7 +371187,7 @@
[]
],
"runner.py": [
"3d32917659b3900f9e464670d2cdc39b8ff180a0",
"113eff99fee8d4a126d9c741b36cbfb8e8a1eebd",
[]
]
},
@ -371286,7 +371339,7 @@
[]
],
"test_webkitgtk.py": [
"6150d50acf93eac7d6961d82531c469d7e9967b7",
"c073d03e70ecc5e2b783cec4a79ac475609467db",
[]
]
},
@ -371436,7 +371489,7 @@
}
},
"wptrunner.py": [
"e1d9ef8b1a91dd2d44458c8c9d027537991f4cc9",
"b02805ff7e3df6645722e63fbc2d9715959c1ce6",
[]
],
"wpttest.py": [
@ -372369,7 +372422,7 @@
"urlpattern": {
"resources": {
"urlpatterntestdata.json": [
"5a1a3ec01eb2d504c6dd76010c17a8a680e0dd67",
"fe38505ddf0f985772d356fd05a9d5652982c7cc",
[]
]
}
@ -373858,7 +373911,7 @@
[]
],
"asserts.py": [
"3c3d677c90ecfc90f864042ef0628fb99a57131c",
"7afa22fd3fb81a3f915fe5edb4aa2a57a8b2e108",
[]
],
"authentication.py": [
@ -373904,7 +373957,7 @@
[]
],
"image.py": [
"6149ccccbe3252e5c1c2bc37ba3dd3103ffbf9b6",
"705f2668ea1fd2dff062dfdf3e3f6ae138f1581a",
[]
],
"inline.py": [
@ -413627,6 +413680,13 @@
{}
]
],
"overflow-clip-margin-intersection-observer.html": [
"dcc1e6e7edd7d14a96ea4037d459d2f16a1f706b",
[
null,
{}
]
],
"overflow-clip-scroll-size.html": [
"1f2c2236a412251a9c02b84d3fade4c2df8d0527",
[
@ -428459,6 +428519,15 @@
}
]
],
"focus-visible-006.html": [
"4b034b2e27962810bd9357ff88e5fe4587e56d25",
[
null,
{
"testdriver": true
}
]
],
"focus-visible-007.html": [
"95a27006e62076909f63f9946e1f2d7f8331732a",
[
@ -428468,6 +428537,15 @@
}
]
],
"focus-visible-008.html": [
"75f676f53f3319cb672195343c77cc7ebd94eee4",
[
null,
{
"testdriver": true
}
]
],
"focus-visible-009.html": [
"4dae6407adac3971db6064822643332cf7f1722d",
[
@ -430693,6 +430771,13 @@
{}
]
],
"Event-stopPropagation-cancel-bubbling.html": [
"5c2c49f33826a94418a2bcb65ca781e246adbd4b",
[
null,
{}
]
],
"Event-subclasses-constructors.html": [
"08a5ded011635c66151d22a09330f9341eb48c91",
[
@ -451604,6 +451689,57 @@
}
]
],
"redirect-referrer-override.any.js": [
"56e55d79e141fd90124c2d5ea4cef419ee8a9cbd",
[
"fetch/api/redirect/redirect-referrer-override.any.html",
{
"script_metadata": [
[
"timeout",
"long"
],
[
"script",
"/common/utils.js"
],
[
"script",
"../resources/utils.js"
],
[
"script",
"/common/get-host-info.sub.js"
]
],
"timeout": "long"
}
],
[
"fetch/api/redirect/redirect-referrer-override.any.worker.html",
{
"script_metadata": [
[
"timeout",
"long"
],
[
"script",
"/common/utils.js"
],
[
"script",
"../resources/utils.js"
],
[
"script",
"/common/get-host-info.sub.js"
]
],
"timeout": "long"
}
]
],
"redirect-referrer.any.js": [
"99fda42e69b29ff8bd12b7d987dbe00306059c5c",
[
@ -488355,6 +488491,24 @@
]
},
"the-input-element": {
"anchor-active-contenteditable.html": [
"88a9a35cc57db82323725559d8b0e2a202b3d7b7",
[
null,
{
"testdriver": true
}
]
],
"anchor-contenteditable-navigate.html": [
"e958f10df8d2624b48d1d48f4bd361abe6710edd",
[
null,
{
"testdriver": true
}
]
],
"button.html": [
"3c826a9754f6fddcd0ace10525a645bbe7f26805",
[
@ -491922,6 +492076,13 @@
null,
{}
]
],
"type.html": [
"5817ae4d435ed473b2f9cbcb798a48bc8318e12e",
[
null,
{}
]
]
},
"moving-between-documents": {
@ -589054,14 +589215,14 @@
},
"print": {
"printcmd.py": [
"e043056dd12aa5a6863041e0c4c9b8f5ae0cac1c",
"ff3de4e0af9ccc83e5cafccccef352258b7dc803",
[
null,
{}
]
],
"user_prompts.py": [
"2022796774bf76b93b5f0f844991c557c79df383",
"dc8a32e22db25a3ed4b30a54d864f94a057adf1f",
[
null,
{

View file

@ -1,4 +0,0 @@
[hit-test-floats-002.html]
[Hit test float]
expected: FAIL

View file

@ -1,4 +1,4 @@
[hit-test-floats-004.html]
[hit-test-floats-003.html]
[Miss float below something else]
expected: FAIL

View file

@ -0,0 +1,2 @@
[break-boundary-2-chars-001.html]
expected: FAIL

View file

@ -2,6 +2,3 @@
[Hit test intersecting scaled box]
expected: FAIL
[Hit test within unscaled box]
expected: FAIL

View file

@ -1,4 +0,0 @@
[elementFromPoint-001.html]
[CSSOM View - 5 - extensions to the Document interface]
expected: FAIL

View file

@ -21,3 +21,6 @@
[test the top of layer]
expected: FAIL
[test some point of the element: top left corner]
expected: FAIL

View file

@ -309,30 +309,24 @@
[fetch(): separate response Content-Type: text/plain ]
expected: NOTRUN
[<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: text/html */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL

View file

@ -11,6 +11,9 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
expected: FAIL
[X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
[X-Content-Type-Options%3A%20'NosniFF']
expected: FAIL
[X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff]
expected: FAIL

View file

@ -0,0 +1,4 @@
[traverse_the_history_1.html]
[Multiple history traversals from the same task]
expected: FAIL

View file

@ -0,0 +1,4 @@
[traverse_the_history_4.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -1,2 +0,0 @@
[cross-origin-objects-on-new-window.html]
expected: TIMEOUT

View file

@ -1,5 +1,5 @@
[embedded-opener-remove-frame.html]
expected: TIMEOUT
expected: CRASH
[opener and "removed" embedded documents]
expected: FAIL

View file

@ -1,6 +1,6 @@
[iframe_sandbox_popups_escaping-1.html]
type: testharness
expected: CRASH
expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT

View file

@ -1,6 +1,5 @@
[iframe_sandbox_popups_escaping-3.html]
type: testharness
expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT
expected: FAIL

View file

@ -1,6 +1,6 @@
[iframe_sandbox_popups_nonescaping-2.html]
type: testharness
expected: CRASH
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN

View file

@ -1,4 +0,0 @@
[form-double-submit-3.html]
[<button> should have the same double-submit protection as <input type=submit>]
expected: FAIL

View file

@ -0,0 +1,4 @@
[activation-behavior.window.html]
[<a> that is not connected should be followed]
expected: FAIL

View file

@ -0,0 +1,7 @@
[type.html]
[type="MODULE"]
expected: FAIL
[type="Module"]
expected: FAIL

View file

@ -1,4 +0,0 @@
[module-delayed.html]
[async document.write in a module]
expected: FAIL

View file

@ -1,5 +1,5 @@
[ignore-opens-during-unload.window.html]
expected: TIMEOUT
expected: CRASH
[ignore-opens-during-unload]
expected: FAIL

View file

@ -4,6 +4,3 @@
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: TIMEOUT
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: FAIL

View file

@ -1,4 +1,5 @@
[realtimeanalyser-fft-scaling.html]
expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL

View file

@ -647,3 +647,6 @@
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-2.9435393349935682e-20\t9.3139332532882690e-1\t9.3139332532882690e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882690e-1 at index of 28696.\n\tMax RelError of 1.0000000000000000e+0 at index of 28696.\n]
expected: FAIL
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-1.6903211120476289e-27\t9.3139332532882690e-1\t9.3139332532882690e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882690e-1 at index of 28696.\n\tMax RelError of 1.0000000000000000e+0 at index of 28696.\n]
expected: FAIL

View file

@ -1,4 +1,5 @@
[audiocontext-not-fully-active.html]
expected: TIMEOUT
[frame in navigated remote-site frame]
expected: FAIL

View file

@ -1,5 +0,0 @@
[018.html]
expected: TIMEOUT
[origin of the script that invoked the method, javascript:]
expected: TIMEOUT

View file

@ -1,5 +0,0 @@
[018.html]
expected: TIMEOUT
[origin of the script that invoked the method, javascript:]
expected: TIMEOUT

View file

@ -1,5 +1,4 @@
[import-in-moduleworker.html]
expected: ERROR
[Base URL in module dedicated workers: import]
expected: FAIL

View file

@ -1,58 +1,66 @@
import os, sys, base64
import six
from wptserve.utils import isomorphic_decode
import importlib
subresource = importlib.import_module("common.security-features.subresource.subresource")
def decodebytes(s):
if six.PY3:
return base64.decodebytes(six.ensure_binary(s))
return base64.decodestring(s)
def generate_payload(request, server_data):
data = (u'{"headers": %(headers)s}') % server_data
if b"id" in request.GET:
request.server.stash.put(request.GET[b"id"], data)
# Simple base64 encoded .tff font
return base64.decodestring(b"AAEAAAANAIAAAwBQRkZUTU6u6MkAAAXcAAAAHE9TLzJWYW"
b"QKAAABWAAAAFZjbWFwAA8D7wAAAcAAAAFCY3Z0IAAhAnkA"
b"AAMEAAAABGdhc3D//wADAAAF1AAAAAhnbHlmCC6aTwAAAx"
b"QAAACMaGVhZO8ooBcAAADcAAAANmhoZWEIkAV9AAABFAAA"
b"ACRobXR4EZQAhQAAAbAAAAAQbG9jYQBwAFQAAAMIAAAACm"
b"1heHAASQA9AAABOAAAACBuYW1lehAVOgAAA6AAAAIHcG9z"
b"dP+uADUAAAWoAAAAKgABAAAAAQAAMhPyuV8PPPUACwPoAA"
b"AAAMU4Lm0AAAAAxTgubQAh/5wFeAK8AAAACAACAAAAAAAA"
b"AAEAAAK8/5wAWgXcAAAAAAV4AAEAAAAAAAAAAAAAAAAAAA"
b"AEAAEAAAAEAAwAAwAAAAAAAgAAAAEAAQAAAEAALgAAAAAA"
b"AQXcAfQABQAAAooCvAAAAIwCigK8AAAB4AAxAQIAAAIABg"
b"kAAAAAAAAAAAABAAAAAAAAAAAAAAAAUGZFZABAAEEAQQMg"
b"/zgAWgK8AGQAAAABAAAAAAAABdwAIQAAAAAF3AAABdwAZA"
b"AAAAMAAAADAAAAHAABAAAAAAA8AAMAAQAAABwABAAgAAAA"
b"BAAEAAEAAABB//8AAABB////wgABAAAAAAAAAQYAAAEAAA"
b"AAAAAAAQIAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAA"
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAA"
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
b"AAAAAAAAAAAAAAAAAAAhAnkAAAAqACoAKgBGAAAAAgAhAA"
b"ABKgKaAAMABwAusQEALzyyBwQA7TKxBgXcPLIDAgDtMgCx"
b"AwAvPLIFBADtMrIHBgH8PLIBAgDtMjMRIREnMxEjIQEJ6M"
b"fHApr9ZiECWAAAAwBk/5wFeAK8AAMABwALAAABNSEVATUh"
b"FQE1IRUB9AH0/UQDhPu0BRQB9MjI/tTIyP7UyMgAAAAAAA"
b"4ArgABAAAAAAAAACYATgABAAAAAAABAAUAgQABAAAAAAAC"
b"AAYAlQABAAAAAAADACEA4AABAAAAAAAEAAUBDgABAAAAAA"
b"AFABABNgABAAAAAAAGAAUBUwADAAEECQAAAEwAAAADAAEE"
b"CQABAAoAdQADAAEECQACAAwAhwADAAEECQADAEIAnAADAA"
b"EECQAEAAoBAgADAAEECQAFACABFAADAAEECQAGAAoBRwBD"
b"AG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAAOA"
b"AgAE0AbwB6AGkAbABsAGEAIABDAG8AcgBwAG8AcgBhAHQA"
b"aQBvAG4AAENvcHlyaWdodCAoYykgMjAwOCBNb3ppbGxhIE"
b"NvcnBvcmF0aW9uAABNAGEAcgBrAEEAAE1hcmtBAABNAGUA"
b"ZABpAHUAbQAATWVkaXVtAABGAG8AbgB0AEYAbwByAGcAZQ"
b"AgADIALgAwACAAOgAgAE0AYQByAGsAQQAgADoAIAA1AC0A"
b"MQAxAC0AMgAwADAAOAAARm9udEZvcmdlIDIuMCA6IE1hcm"
b"tBIDogNS0xMS0yMDA4AABNAGEAcgBrAEEAAE1hcmtBAABW"
b"AGUAcgBzAGkAbwBuACAAMAAwADEALgAwADAAMAAgAABWZX"
b"JzaW9uIDAwMS4wMDAgAABNAGEAcgBrAEEAAE1hcmtBAAAA"
b"AgAAAAAAAP+DADIAAAABAAAAAAAAAAAAAAAAAAAAAAAEAA"
b"AAAQACACQAAAAAAAH//wACAAAAAQAAAADEPovuAAAAAMU4"
b"Lm0AAAAAxTgubQ==")
return decodebytes(b"AAEAAAANAIAAAwBQRkZUTU6u6MkAAAXcAAAAHE9TLzJWYW"
b"QKAAABWAAAAFZjbWFwAA8D7wAAAcAAAAFCY3Z0IAAhAnkA"
b"AAMEAAAABGdhc3D//wADAAAF1AAAAAhnbHlmCC6aTwAAAx"
b"QAAACMaGVhZO8ooBcAAADcAAAANmhoZWEIkAV9AAABFAAA"
b"ACRobXR4EZQAhQAAAbAAAAAQbG9jYQBwAFQAAAMIAAAACm"
b"1heHAASQA9AAABOAAAACBuYW1lehAVOgAAA6AAAAIHcG9z"
b"dP+uADUAAAWoAAAAKgABAAAAAQAAMhPyuV8PPPUACwPoAA"
b"AAAMU4Lm0AAAAAxTgubQAh/5wFeAK8AAAACAACAAAAAAAA"
b"AAEAAAK8/5wAWgXcAAAAAAV4AAEAAAAAAAAAAAAAAAAAAA"
b"AEAAEAAAAEAAwAAwAAAAAAAgAAAAEAAQAAAEAALgAAAAAA"
b"AQXcAfQABQAAAooCvAAAAIwCigK8AAAB4AAxAQIAAAIABg"
b"kAAAAAAAAAAAABAAAAAAAAAAAAAAAAUGZFZABAAEEAQQMg"
b"/zgAWgK8AGQAAAABAAAAAAAABdwAIQAAAAAF3AAABdwAZA"
b"AAAAMAAAADAAAAHAABAAAAAAA8AAMAAQAAABwABAAgAAAA"
b"BAAEAAEAAABB//8AAABB////wgABAAAAAAAAAQYAAAEAAA"
b"AAAAAAAQIAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAA"
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAA"
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
b"AAAAAAAAAAAAAAAAAAAhAnkAAAAqACoAKgBGAAAAAgAhAA"
b"ABKgKaAAMABwAusQEALzyyBwQA7TKxBgXcPLIDAgDtMgCx"
b"AwAvPLIFBADtMrIHBgH8PLIBAgDtMjMRIREnMxEjIQEJ6M"
b"fHApr9ZiECWAAAAwBk/5wFeAK8AAMABwALAAABNSEVATUh"
b"FQE1IRUB9AH0/UQDhPu0BRQB9MjI/tTIyP7UyMgAAAAAAA"
b"4ArgABAAAAAAAAACYATgABAAAAAAABAAUAgQABAAAAAAAC"
b"AAYAlQABAAAAAAADACEA4AABAAAAAAAEAAUBDgABAAAAAA"
b"AFABABNgABAAAAAAAGAAUBUwADAAEECQAAAEwAAAADAAEE"
b"CQABAAoAdQADAAEECQACAAwAhwADAAEECQADAEIAnAADAA"
b"EECQAEAAoBAgADAAEECQAFACABFAADAAEECQAGAAoBRwBD"
b"AG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAAOA"
b"AgAE0AbwB6AGkAbABsAGEAIABDAG8AcgBwAG8AcgBhAHQA"
b"aQBvAG4AAENvcHlyaWdodCAoYykgMjAwOCBNb3ppbGxhIE"
b"NvcnBvcmF0aW9uAABNAGEAcgBrAEEAAE1hcmtBAABNAGUA"
b"ZABpAHUAbQAATWVkaXVtAABGAG8AbgB0AEYAbwByAGcAZQ"
b"AgADIALgAwACAAOgAgAE0AYQByAGsAQQAgADoAIAA1AC0A"
b"MQAxAC0AMgAwADAAOAAARm9udEZvcmdlIDIuMCA6IE1hcm"
b"tBIDogNS0xMS0yMDA4AABNAGEAcgBrAEEAAE1hcmtBAABW"
b"AGUAcgBzAGkAbwBuACAAMAAwADEALgAwADAAMAAgAABWZX"
b"JzaW9uIDAwMS4wMDAgAABNAGEAcgBrAEEAAE1hcmtBAAAA"
b"AgAAAAAAAP+DADIAAAABAAAAAAAAAAAAAAAAAAAAAAAEAA"
b"AAAQACACQAAAAAAAH//wACAAAAAQAAAADEPovuAAAAAMU4"
b"Lm0AAAAAxTgubQ==")
def generate_report_headers_payload(request, server_data):
stashed_data = request.server.stash.take(request.GET[b"id"])

View file

@ -0,0 +1,65 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<title>CSS Fragmentation level 3 Test: 'orphans', 'widows' and content distribution in columns</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<link rel="help" href="https://www.w3.org/TR/css-break-3/#widows-orphans">
<link rel="match" href="reference/widows-orphans-009-ref.html">
<!--
Date created: December 16th 2020
Last modified: December 16th 2020
-->
<!--
Bug 137367: Implement orphans and widows
https://bugzilla.mozilla.org/show_bug.cgi?id=137367
-->
<meta name="flags" content="">
<meta name="assert" content="When column boxes are filled sequentially, their content should be distributed and fragmented in accordance with the 'orphans' and the 'widows' declarations. In this test, the 3rd column box is going to get only 1 line box which is insufficient to honor 'widows: 3'. If a class B break point would occur between the '6' and the '7' so that 3 line boxes would be at the top of the 3rd column box, then this would leave only 2 line boxes in the 2nd column box and this would violate the 'orphans: 3' constraint. For that reason, a class B break must not happen in the 2nd column between the '6' and the '7'. On the other hand, a class B break can occur between the '7' and the '8' in the 2nd column box and doing so does not violate the 'orphans: 3' constraint.">
<style>
div
{
border: orange solid 4px;
font-size: 20px;
line-height: 1.3; /* computes to 26px */
height: 104px; /* Therefore, exactly 4 line boxes */
margin-bottom: 1em;
padding: 0.5em; /* computes to 10px */
width: 460px;
columns: 4 auto;
column-fill: auto;
column-gap: 1em; /* computes to 20px */
column-rule: blue solid 4px;
}
div#test
{
orphans: 3;
widows: 3;
}
div#reference
{
orphans: 1;
widows: 1;
}
</style>
<p>Test passes if the digits inside both orange-bordered rectangles are <strong>distributed identically</strong>.
<div id="test">1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9</div>
<div id="reference">1<br>2<br>3<br>4<br>5<br>6<br>7<br><br>8<br>9</div>
<!-- Same as div#test except 1 extra br here ^ -->

View file

@ -0,0 +1,11 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://www.w3.org/TR/css-multicol-1/#filling-columns">
<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
<p>Test passes if there is a filled green square.</p>
<div style="float:left; width:50px; height:100px; background:green;"></div>
<div style="float:left; width:50px; background:green;">
<div style="columns:2; width:0;">
<div style="height:200px;"></div>
</div>
</div>

View file

@ -0,0 +1,55 @@
<!doctype html>
<meta charset="utf-8">
<title>Overflow: intersection observer with overflow-clip-margin</title>
<link rel="help" href="https://www.w3.org/TR/css-overflow-3/#propdef-overflow-clip-margin">
<link rel="author" title="Scott Violet" href="mailto:sky@chromium.org">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
#clipped_container {
overflow: clip;
width: 100px;
height: 100px;
border: solid;
overflow-clip-margin: 50px;
}
#big_green_div {
position: relative;
width: 1000px;
height: 1000px;
background: green;
left: -200px;
top: -200px;
}
/* These values ensure the element is vertically offscreen. */
.spacer { width: 150px; height: calc(100vh + 10px); }
</style>
<div class="spacer"></div>
<div id="clipped_container">
<div id="big_green_div"></div>
</div>
<script>
let t = async_test("ParentWithOverflowClipMargin");
let options = {
threshold: 0,
rootMargin: '0px'
}
// The 'big_green_div' is initially on screen due to
// overflow-clip-margin of the parent. Once the observer is notified, the
// overflow-clip-margin is reduced so that 'big_green_div' is no longer
// on screen, and the observer should again be notified.
let gotIntersects = false;
let intersectionObserver = new IntersectionObserver((entries, observer) => {
t.step(function() { assert_equals(1, entries.length); });
let entry = entries[0];
if (!gotIntersects) {
t.step(function() { assert_true(entry.isIntersecting); });
gotIntersects = true;
document.getElementById('clipped_container').style.overflowClipMargin = "0px";
} else {
t.step(function() { assert_false(entry.isIntersecting); });
t.done();
}}, options);
intersectionObserver.observe(document.getElementById('big_green_div'));
</script>

View file

@ -0,0 +1,64 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<title>CSS Text Test: soft wrap opportunity at boundary between two characters</title>
<!--
CSS3 Text, §5.1 Line breaking details, 7th bullet, 2nd sentence
https://www.w3.org/TR/css-text-3/#line-break-details
"
For soft wrap opportunities defined by the boundary between
two characters, the white-space property on the nearest
common ancestor of the two characters controls breaking
"
-->
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<link rel="help" href="https://www.w3.org/TR/css-text-3/#word-break-property">
<link rel="help" href="https://www.w3.org/TR/css-text-3/#line-break-details">
<link rel="match" href="reference/break-boundary-2-chars-001-ref.html">
<meta content="" name="flags">
<meta content="This test checks that the word-break property does not apply to a run of text that is styled with 'white-space: pre' because the word-break property has no rendering effect in cases where lines of text are not allowed to break. Between the 'c' and 'x' and between the 'z' and 'd', there must be a line break because the 'white-space' declaration in effect in the nearest common ancestor of each of these pairs of two characters allows text wrapping." name="assert">
<style>
div
{
display: inline-block;
font-size: 32px;
margin-right: 5ch;
width: 0;
word-break: break-all;
}
span
{
white-space: pre;
}
div#first-sub-test
{
white-space: normal;
}
div#second-sub-test
{
white-space: pre-wrap;
}
div#third-sub-test
{
white-space: break-spaces;
}
div#fourth-sub-test
{
white-space: pre-line;
}
</style>
<div id="first-sub-test">abc<span>xyz</span>def</div><div id="second-sub-test">abc<span>xyz</span>def</div><div id="third-sub-test">abc<span>xyz</span>def</div><div id="fourth-sub-test">abc<span>xyz</span>def</div>

View file

@ -0,0 +1,49 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<title>CSS Text Test: soft wrap opportunity at boundary between two characters</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<link rel="help" href="https://www.w3.org/TR/css-text-3/#word-break-property">
<link rel="match" href="reference/break-boundary-2-chars-002-ref.html">
<meta content="" name="flags">
<meta content="The word-break property can only apply when the 'white-space' value allow text wrapping, when line breaking opportunities are preserved. Therefore, 'word-break: break-all' must not cause any text wrapping in both cases of this test. There must be no wrapping between the 'c' and the 'x' and there must be no wrapping between the 'z' and the 'd'." name="assert">
<!--
white-space values that DISallow text wrapping:
{ pre , nowrap }
-->
<style>
div
{
display: inline-block;
font-size: 32px;
margin-right: 10ch;
width: 0;
word-break: normal;
}
span
{
word-break: break-all;
}
div#first-sub-test
{
white-space: pre;
}
div#second-sub-test
{
white-space: nowrap;
}
</style>
<div id="first-sub-test">abc<span>xyz</span>def</div>
<div id="second-sub-test">abc<span>xyz</span>def</div>

View file

@ -0,0 +1,20 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<title>CSS Reference Test</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<style>
div
{
display: inline-block;
font-size: 32px;
margin-right: 5ch;
white-space: pre;
width: 0;
}
</style>
<div>a<br>b<br>c<br>xyz<br>d<br>e<br>f</div><div>a<br>b<br>c<br>xyz<br>d<br>e<br>f</div><div>a<br>b<br>c<br>xyz<br>d<br>e<br>f</div><div>a<br>b<br>c<br>xyz<br>d<br>e<br>f</div>

View file

@ -0,0 +1,23 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<title>CSS Reference Test</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<style>
div
{
display: inline-block;
font-size: 32px;
margin-right: 10ch;
white-space: normal;
width: 0;
}
</style>
<div>abcxyzdef</div>
<div>abcxyzdef</div>

View file

@ -7,6 +7,9 @@
<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<style>
span[contenteditable] {
border: 1px solid black;
@ -42,6 +45,8 @@
assert_equals(getComputedStyle(el).outlineColor, "rgb(0, 100, 0)");
t.done();
}));
test_driver.click(el);
}, "Focus should always match :focus-visible on content editable divs");
</script>
</body>

View file

@ -7,6 +7,9 @@
<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<style>
:focus-visible {
outline: darkgreen auto 5px;
@ -44,6 +47,12 @@
el.focus();
});
}
const tab_key = '\ue004';
const enter_key = '\uE007';
test_driver.send_keys(el, tab_key).then(() => {
test_driver.send_keys(el, enter_key);
});
</script>
</body>
</html>

View file

@ -0,0 +1,20 @@
<!DOCTYPE html>
<meta charset="utf-8">
<link rel="author" title="Joey Arhar" href="mailto:jarhar@chromium.org">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<body>
<script>
test(t => {
const element = document.createElement('div');
element.addEventListener('click', () => {
event.stopPropagation();
}, { capture: true });
element.addEventListener('click',
t.unreached_func('stopPropagation in the capture handler should have canceled this bubble handler.'));
element.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true }));
});
</script>

View file

@ -0,0 +1,104 @@
// META: timeout=long
// META: script=/common/utils.js
// META: script=../resources/utils.js
// META: script=/common/get-host-info.sub.js
function getExpectation(expectations, init, initScenario, redirectPolicy, redirectScenario) {
let policies = [
expectations[initPolicy][initScenario],
expectations[redirectPolicy][redirectScenario]
];
if (policies.includes("omitted")) {
return null;
} else if (policies.includes("origin")) {
return referrerOrigin;
} else {
// "stripped-referrer"
return referrerUrl;
}
}
function testReferrerAfterRedirection(desc, redirectUrl, redirectLocation, referrerPolicy, redirectReferrerPolicy, expectedReferrer) {
var url = redirectUrl;
var urlParameters = "?location=" + encodeURIComponent(redirectLocation);
var description = desc + ", " + referrerPolicy + " init, " + redirectReferrerPolicy + " redirect header ";
if (redirectReferrerPolicy)
urlParameters += "&redirect_referrerpolicy=" + redirectReferrerPolicy;
var requestInit = {"redirect": "follow", "referrerPolicy": referrerPolicy};
promise_test(function(test) {
return fetch(url + urlParameters, requestInit).then(function(response) {
assert_equals(response.status, 200, "Inspect header response's status is 200");
assert_equals(response.headers.get("x-request-referer"), expectedReferrer ? expectedReferrer : null, "Check referrer header");
});
}, description);
}
var referrerOrigin = get_host_info().HTTP_ORIGIN + "/";
var referrerUrl = location.href;
var redirectUrl = RESOURCES_DIR + "redirect.py";
var locationUrl = get_host_info().HTTP_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "inspect-headers.py?headers=referer";
var crossLocationUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "inspect-headers.py?cors&headers=referer";
var expectations = {
"no-referrer": {
"same-origin": "omitted",
"cross-origin": "omitted"
},
"no-referrer-when-downgrade": {
"same-origin": "stripped-referrer",
"cross-origin": "stripped-referrer"
},
"origin": {
"same-origin": "origin",
"cross-origin": "origin"
},
"origin-when-cross-origin": {
"same-origin": "stripped-referrer",
"cross-origin": "origin",
},
"same-origin": {
"same-origin": "stripped-referrer",
"cross-origin": "omitted"
},
"strict-origin": {
"same-origin": "origin",
"cross-origin": "origin"
},
"strict-origin-when-cross-origin": {
"same-origin": "stripped-referrer",
"cross-origin": "origin"
},
"unsafe-url": {
"same-origin": "stripped-referrer",
"cross-origin": "stripped-referrer"
}
};
for (var initPolicy in expectations) {
for (var redirectPolicy in expectations) {
// Redirect to same-origin URL
testReferrerAfterRedirection(
"Same origin redirection",
redirectUrl,
locationUrl,
initPolicy,
redirectPolicy,
getExpectation(expectations, initPolicy, "same-origin", redirectPolicy, "same-origin"));
// Redirect to cross-origin URL
testReferrerAfterRedirection(
"Cross origin redirection",
redirectUrl,
crossLocationUrl,
initPolicy,
redirectPolicy,
getExpectation(expectations, initPolicy, "same-origin", redirectPolicy, "cross-origin"));
}
}
done();

View file

@ -1,3 +1,10 @@
import base64
import six
def decodebytes(s):
if six.PY3:
return base64.decodebytes(six.ensure_binary(s))
return base64.decodestring(s)
def main(req, res):
return 404, [(b'Content-Type', b'image/png')], base64.decodestring(b"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAhSURBVDhPY3wro/KfgQLABKXJBqMGjBoAAqMGDLwBDAwAEsoCTFWunmQAAAAASUVORK5CYII=")
return 404, [(b'Content-Type', b'image/png')], decodebytes(b"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAhSURBVDhPY3wro/KfgQLABKXJBqMGjBoAAqMGDLwBDAwAEsoCTFWunmQAAAAASUVORK5CYII=")

View file

@ -0,0 +1,25 @@
<!DOCTYPE html>
<meta charset="utf-8">
<link rel="author" title="Joey Arhar" href="mailto:jarhar@chromium.org">
<link rel="help" href="http://crbug.com/1007941">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<!-- This behavior is not explicitly specified. -->
<a id=anchorid href="nonexistant">anchor</a>
<script>
anchorid.addEventListener('mousedown', () => {
anchorid.contentEditable = true;
});
promise_test(async () => {
await test_driver.click(anchorid);
assert_equals(document.querySelector(':active'), null);
}, 'Anchor elements should not stay :active when contentEditable is enabled.');
</script>

View file

@ -0,0 +1,25 @@
<!DOCTYPE html>
<meta charset="utf-8">
<link rel="author" title="Joey Arhar" href="mailto:jarhar@chromium.org">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<!-- This behavior is not explicitly specified. -->
<a id=anchorid href="javascript:window.anchornavigated = true;">anchor</a>
<script>
promise_test(async () => {
window.anchornavigated = false;
anchorid.contentEditable = true;
await test_driver.click(anchorid);
assert_false(window.anchornavigated, "Anchor's javascript: url was run.");
}, 'Anchor elements should not be able to navigate if they have contentEditable.');
</script>

View file

@ -0,0 +1,24 @@
<!DOCTYPE html>
<title>Type attribute of module scripts</title>
<link rel="help" href="https://html.spec.whatwg.org/multipage/#prepare-a-script">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
window.t1 = async_test('type="module"');
window.t2 = async_test('type="MODULE"');
window.t3 = async_test('type="Module"');
window.t4 = async_test('type="module "');
window.t5 = async_test('type=" module"');
</script>
<script type="module">window.t1.done();</script>
<script type="MODULE">window.t2.done();</script>
<script type="Module">window.t3.done();</script>
<script type="module ">window.t4.unreached_func('Unexpectedly evaluated');</script>
<script type=" module">window.t5.unreached_func('Unexpectedly evaluated');</script>
<script type="module">
window.t1.unreached_func('Unexpectedly not evaluated')();
window.t2.unreached_func('Unexpectedly not evaluated')();
window.t3.unreached_func('Unexpectedly not evaluated')();
window.t4.done();
window.t5.done();
</script>

View file

@ -0,0 +1,8 @@
<!DOCTYPE html>
<math>
<mmultiscripts>
<mrow></mrow>
<mprescripts></mprescripts>
<mprescripts></mprescripts>
</mmultiscripts>
</math>

View file

@ -2,8 +2,15 @@ import base64
import json
import os
import six
from wptserve.utils import isomorphic_decode, isomorphic_encode
def decodebytes(s):
if six.PY3:
return base64.decodebytes(six.ensure_binary(s))
return base64.decodestring(s)
def main(request, response):
headers = []
headers.append((b'X-ServiceWorker-ServerHeader', b'SetInTheServer'))
@ -29,9 +36,9 @@ def main(request, response):
if b"PNGIMAGE" in request.GET:
headers.append((b"Content-Type", b"image/png"))
body = base64.decodestring(b"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1B"
b"AACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAhSURBVDhPY3wro/KfgQLABKXJBqMG"
b"jBoAAqMGDLwBDAwAEsoCTFWunmQAAAAASUVORK5CYII=")
body = decodebytes(b"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1B"
b"AACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAhSURBVDhPY3wro/KfgQLABKXJBqMG"
b"jBoAAqMGDLwBDAwAEsoCTFWunmQAAAAASUVORK5CYII=")
return headers, body
if b"VIDEO" in request.GET:

View file

@ -1,2 +1,2 @@
requests==2.25.0
requests==2.25.1
mozinfo==1.2.1 # https://bugzilla.mozilla.org/show_bug.cgi?id=1621226

View file

@ -6,5 +6,5 @@ mozdebug==0.2
pillow==6.2.2; python_version <= '2.7' # pyup: <7.0
pillow==8.0.1; python_version >= '3.0'
urllib3[secure]==1.26.2
requests==2.25.0
requests==2.25.1
six==1.15.0

View file

@ -1,3 +1,3 @@
mozprocess==1.2.1
selenium==3.141.0
requests==2.25.0
requests==2.25.1

View file

@ -28,14 +28,14 @@ def check_args(**kwargs):
require_arg(kwargs, "webdriver_binary")
def browser_kwargs(test_type, run_info_data, config, **kwargs):
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
return {"binary": kwargs["binary"],
"device_serial": kwargs["device_serial"],
"webdriver_binary": kwargs["webdriver_binary"],
"webdriver_args": kwargs.get("webdriver_args")}
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
**kwargs):
# Use update() to modify the global list in place.
_wptserve_ports.update(set(
@ -43,7 +43,7 @@ def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
server_config['ports']['ws'] + server_config['ports']['wss']
))
executor_kwargs = chrome_executor_kwargs(test_type, server_config,
executor_kwargs = chrome_executor_kwargs(logger, test_type, server_config,
cache_manager, run_info_data,
**kwargs)
del executor_kwargs["capabilities"]["goog:chromeOptions"]["prefs"]

View file

@ -28,14 +28,14 @@ def check_args(**kwargs):
require_arg(kwargs, "webdriver_binary")
def browser_kwargs(test_type, run_info_data, config, **kwargs):
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
return {"binary": kwargs["binary"],
"device_serial": kwargs["device_serial"],
"webdriver_binary": kwargs["webdriver_binary"],
"webdriver_args": kwargs.get("webdriver_args")}
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
**kwargs):
# Use update() to modify the global list in place.
_wptserve_ports.update(set(
@ -43,7 +43,7 @@ def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
server_config['ports']['ws'] + server_config['ports']['wss']
))
executor_kwargs = chrome_executor_kwargs(test_type, server_config,
executor_kwargs = chrome_executor_kwargs(logger, test_type, server_config,
cache_manager, run_info_data,
**kwargs)
del executor_kwargs["capabilities"]["goog:chromeOptions"]["prefs"]

View file

@ -28,13 +28,13 @@ def check_args(**kwargs):
require_arg(kwargs, "webdriver_binary")
def browser_kwargs(test_type, run_info_data, config, **kwargs):
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
return {"binary": kwargs["binary"],
"webdriver_binary": kwargs["webdriver_binary"],
"webdriver_args": kwargs.get("webdriver_args")}
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
**kwargs):
executor_kwargs = base_executor_kwargs(test_type, server_config,
cache_manager, run_info_data,

View file

@ -29,14 +29,14 @@ def check_args(**kwargs):
require_arg(kwargs, "webdriver_binary")
def browser_kwargs(test_type, run_info_data, config, **kwargs):
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
return {"package_name": kwargs["package_name"],
"device_serial": kwargs["device_serial"],
"webdriver_binary": kwargs["webdriver_binary"],
"webdriver_args": kwargs.get("webdriver_args")}
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
**kwargs):
# Use update() to modify the global list in place.
_wptserve_ports.update(set(
@ -44,7 +44,7 @@ def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
server_config['ports']['ws'] + server_config['ports']['wss']
))
executor_kwargs = chrome_executor_kwargs(test_type, server_config,
executor_kwargs = chrome_executor_kwargs(logger, test_type, server_config,
cache_manager, run_info_data,
**kwargs)
# Remove unsupported options on mobile.

View file

@ -22,12 +22,12 @@ def check_args(**kwargs):
require_arg(kwargs, "webdriver_binary")
def browser_kwargs(test_type, run_info_data, config, **kwargs):
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
return {"webdriver_binary": kwargs["webdriver_binary"],
"webdriver_args": kwargs.get("webdriver_args")}
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
**kwargs):
executor_kwargs = base_executor_kwargs(test_type, server_config, cache_manager, run_info_data,
**kwargs)

View file

@ -34,7 +34,7 @@ def check_args(**kwargs):
require_arg(kwargs, "webdriver_binary")
def browser_kwargs(test_type, run_info_data, config, **kwargs):
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
return {"webdriver_binary": kwargs["webdriver_binary"],
"webdriver_args": kwargs.get("webdriver_args"),
"timeout_multiplier": get_timeout_multiplier(test_type,
@ -42,7 +42,7 @@ def browser_kwargs(test_type, run_info_data, config, **kwargs):
**kwargs)}
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
**kwargs):
executor_kwargs = base_executor_kwargs(test_type, server_config,
cache_manager, run_info_data, **kwargs)

View file

@ -24,13 +24,13 @@ def check_args(**kwargs):
require_arg(kwargs, "webdriver_binary")
def browser_kwargs(test_type, run_info_data, config, **kwargs):
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
return {"binary": kwargs["binary"],
"webdriver_binary": kwargs["webdriver_binary"],
"webdriver_args": kwargs.get("webdriver_args")}
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
**kwargs):
executor_kwargs = base_executor_kwargs(test_type, server_config,
cache_manager, run_info_data,

View file

@ -25,7 +25,7 @@ def check_args(**kwargs):
pass
def browser_kwargs(test_type, run_info_data, config, **kwargs):
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
# Workaround for https://gitlab.gnome.org/GNOME/libsoup/issues/172
webdriver_required_args = ["--host=127.0.0.1"]
webdriver_args = maybe_add_args(webdriver_required_args, kwargs.get("webdriver_args"))
@ -49,7 +49,7 @@ def capabilities(server_config, **kwargs):
"certificates": certificate_domain_list(server_config.domains_set, kwargs["host_cert_path"])}}
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
**kwargs):
executor_kwargs = base_executor_kwargs(test_type, server_config,
cache_manager, run_info_data, **kwargs)

View file

@ -76,7 +76,7 @@ def check_args(**kwargs):
require_arg(kwargs, "binary")
def browser_kwargs(test_type, run_info_data, config, **kwargs):
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
return {"binary": kwargs["binary"],
"prefs_root": kwargs["prefs_root"],
"extra_prefs": kwargs["extra_prefs"],
@ -105,7 +105,7 @@ def browser_kwargs(test_type, run_info_data, config, **kwargs):
"specialpowers_path": kwargs["specialpowers_path"]}
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
**kwargs):
executor_kwargs = base_executor_kwargs(test_type, server_config,
cache_manager, run_info_data,
@ -138,6 +138,16 @@ def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
for pref, value in kwargs["extra_prefs"]:
options["prefs"].update({pref: Preferences.cast(value)})
capabilities["moz:firefoxOptions"] = options
environ = get_environ(logger,
kwargs["binary"],
kwargs["debug_info"],
kwargs["stylo_threads"],
kwargs["headless"],
kwargs["enable_webrender"],
kwargs["chaos_mode_flags"])
executor_kwargs["environ"] = environ
if kwargs["certutil_binary"] is None:
capabilities["acceptInsecureCerts"] = True
if capabilities:
@ -179,7 +189,10 @@ def run_info_extras(**kwargs):
"verify": kwargs["verify"],
"headless": kwargs.get("headless", False) or "MOZ_HEADLESS" in os.environ,
"sw-e10s": True,
"fission": kwargs.get("enable_fission") or get_bool_pref("fission.autostart")}
"fission": kwargs.get("enable_fission") or get_bool_pref("fission.autostart"),
"sessionHistoryInParent": (kwargs.get("enable_fission") or
get_bool_pref("fission.autostart") or
get_bool_pref("fission.sessionHistoryInParent"))}
# The value of `sw-e10s` defaults to whether the "parent_intercept"
# implementation is enabled for the current build. This value, however,
@ -213,6 +226,26 @@ def update_properties():
{"os": ["version"], "processor": ["bits"]})
def get_environ(logger, binary, debug_info, stylo_threads, headless, enable_webrender,
chaos_mode_flags=None):
env = test_environment(xrePath=os.path.abspath(os.path.dirname(binary)),
debugger=debug_info is not None,
useLSan=True,
log=logger)
env["STYLO_THREADS"] = str(stylo_threads)
if chaos_mode_flags is not None:
env["MOZ_CHAOSMODE"] = str(chaos_mode_flags)
if headless:
env["MOZ_HEADLESS"] = "1"
if enable_webrender:
env["MOZ_WEBRENDER"] = "1"
env["MOZ_ACCELERATED"] = "1"
else:
env["MOZ_WEBRENDER"] = "0"
return env
class FirefoxInstanceManager(object):
__metaclass__ = ABCMeta
@ -268,20 +301,8 @@ class FirefoxInstanceManager(object):
marionette_port = get_free_port()
profile.set_preferences({"marionette.port": marionette_port})
env = test_environment(xrePath=os.path.abspath(os.path.dirname(self.binary)),
debugger=self.debug_info is not None,
useLSan=True, log=self.logger)
env["STYLO_THREADS"] = str(self.stylo_threads)
if self.chaos_mode_flags is not None:
env["MOZ_CHAOSMODE"] = str(self.chaos_mode_flags)
if self.headless:
env["MOZ_HEADLESS"] = "1"
if self.enable_webrender:
env["MOZ_WEBRENDER"] = "1"
env["MOZ_ACCELERATED"] = "1"
else:
env["MOZ_WEBRENDER"] = "0"
env = get_environ(self.logger, self.binary, self.debug_info, self.stylo_threads,
self.headless, self.enable_webrender, self.chaos_mode_flags)
args = self.binary_args[:] if self.binary_args else []
args += [cmd_arg("marionette"), "about:blank"]

View file

@ -38,7 +38,7 @@ def check_args(**kwargs):
pass
def browser_kwargs(test_type, run_info_data, config, **kwargs):
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
return {"package_name": kwargs["package_name"],
"device_serial": kwargs["device_serial"],
"prefs_root": kwargs["prefs_root"],

View file

@ -18,11 +18,11 @@ __wptrunner__ = {"product": "ie",
def check_args(**kwargs):
require_arg(kwargs, "webdriver_binary")
def browser_kwargs(test_type, run_info_data, config, **kwargs):
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
return {"webdriver_binary": kwargs["webdriver_binary"],
"webdriver_args": kwargs.get("webdriver_args")}
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
**kwargs):
options = {}
options["requireWindowFocus"] = True

View file

@ -24,13 +24,13 @@ def check_args(**kwargs):
require_arg(kwargs, "webdriver_binary")
def browser_kwargs(test_type, run_info_data, config, **kwargs):
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
return {"binary": kwargs["binary"],
"webdriver_binary": kwargs["webdriver_binary"],
"webdriver_args": kwargs.get("webdriver_args")}
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
**kwargs):
from selenium.webdriver import DesiredCapabilities

View file

@ -26,12 +26,12 @@ def check_args(**kwargs):
require_arg(kwargs, "webdriver_binary")
def browser_kwargs(test_type, run_info_data, config, **kwargs):
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
return {"webdriver_binary": kwargs["webdriver_binary"],
"webdriver_args": kwargs.get("webdriver_args")}
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
**kwargs):
executor_kwargs = base_executor_kwargs(test_type, server_config,
cache_manager, run_info_data, **kwargs)

View file

@ -95,13 +95,13 @@ def check_args(**kwargs):
require_arg(kwargs, "sauce_key")
def browser_kwargs(test_type, run_info_data, config, **kwargs):
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
sauce_config = get_sauce_config(**kwargs)
return {"sauce_config": sauce_config}
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
**kwargs):
executor_kwargs = base_executor_kwargs(test_type, server_config,
cache_manager, run_info_data, **kwargs)

View file

@ -33,7 +33,7 @@ def check_args(**kwargs):
require_arg(kwargs, "binary")
def browser_kwargs(test_type, run_info_data, config, **kwargs):
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
return {
"binary": kwargs["binary"],
"debug_info": kwargs["debug_info"],
@ -43,7 +43,7 @@ def browser_kwargs(test_type, run_info_data, config, **kwargs):
}
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
**kwargs):
rv = base_executor_kwargs(test_type, server_config,
cache_manager, run_info_data, **kwargs)

View file

@ -36,7 +36,7 @@ def check_args(**kwargs):
require_arg(kwargs, "binary")
def browser_kwargs(test_type, run_info_data, config, **kwargs):
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
return {
"binary": kwargs["binary"],
"binary_args": kwargs["binary_args"],
@ -47,7 +47,7 @@ def browser_kwargs(test_type, run_info_data, config, **kwargs):
}
def executor_kwargs(test_type, server_config, cache_manager, run_info_data, **kwargs):
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data, **kwargs):
rv = base_executor_kwargs(test_type, server_config,
cache_manager, run_info_data, **kwargs)
return rv

View file

@ -29,7 +29,7 @@ def check_args(**kwargs):
require_arg(kwargs, "webkit_port")
def browser_kwargs(test_type, run_info_data, config, **kwargs):
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
return {"binary": kwargs["binary"],
"webdriver_binary": kwargs["webdriver_binary"],
"webdriver_args": kwargs.get("webdriver_args")}
@ -54,7 +54,7 @@ def capabilities_for_port(server_config, **kwargs):
return {}
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
**kwargs):
executor_kwargs = base_executor_kwargs(test_type, server_config,
cache_manager, run_info_data, **kwargs)

View file

@ -25,7 +25,7 @@ def check_args(**kwargs):
pass
def browser_kwargs(test_type, run_info_data, config, **kwargs):
def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
# Workaround for https://gitlab.gnome.org/GNOME/libsoup/issues/172
webdriver_required_args = ["--host=127.0.0.1"]
webdriver_args = maybe_add_args(webdriver_required_args, kwargs.get("webdriver_args"))
@ -53,7 +53,7 @@ def capabilities(server_config, **kwargs):
"certificates": certificate_domain_list(server_config.domains_set, kwargs["host_cert_path"])}}
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
def executor_kwargs(logger, test_type, server_config, cache_manager, run_info_data,
**kwargs):
executor_kwargs = base_executor_kwargs(test_type, server_config,
cache_manager, run_info_data, **kwargs)

View file

@ -598,7 +598,7 @@ class WdspecExecutor(TestExecutor):
def __init__(self, logger, browser, server_config, webdriver_binary,
webdriver_args, timeout_multiplier=1, capabilities=None,
debug_info=None, **kwargs):
debug_info=None, environ=None, **kwargs):
self.do_delayed_imports()
TestExecutor.__init__(self, logger, browser, server_config,
timeout_multiplier=timeout_multiplier,
@ -607,6 +607,7 @@ class WdspecExecutor(TestExecutor):
self.webdriver_args = webdriver_args
self.timeout_multiplier = timeout_multiplier
self.capabilities = capabilities
self.environ = environ if environ is not None else {}
self.protocol = self.protocol_cls(self, browser)
def is_alive(self):
@ -632,7 +633,8 @@ class WdspecExecutor(TestExecutor):
return pytestrunner.run(path,
self.server_config,
session_config,
timeout=timeout)
timeout=timeout,
environ=self.environ)
def do_delayed_imports(self):
global pytestrunner

View file

@ -24,7 +24,7 @@ def do_delayed_imports():
import pytest
def run(path, server_config, session_config, timeout=0):
def run(path, server_config, session_config, timeout=0, environ=None):
"""
Run Python test at ``path`` in pytest. The provided ``session``
is exposed as a fixture available in the scope of the test functions.
@ -41,28 +41,35 @@ def run(path, server_config, session_config, timeout=0):
if pytest is None:
do_delayed_imports()
os.environ["WD_HOST"] = session_config["host"]
os.environ["WD_PORT"] = str(session_config["port"])
os.environ["WD_CAPABILITIES"] = json.dumps(session_config["capabilities"])
os.environ["WD_SERVER_CONFIG"] = json.dumps(server_config.as_dict_for_wd_env_variable())
old_environ = os.environ.copy()
try:
os.environ["WD_HOST"] = session_config["host"]
os.environ["WD_PORT"] = str(session_config["port"])
os.environ["WD_CAPABILITIES"] = json.dumps(session_config["capabilities"])
os.environ["WD_SERVER_CONFIG"] = json.dumps(server_config.as_dict_for_wd_env_variable())
if environ:
os.environ.update(environ)
harness = HarnessResultRecorder()
subtests = SubtestResultRecorder()
harness = HarnessResultRecorder()
subtests = SubtestResultRecorder()
with TemporaryDirectory() as cache:
try:
pytest.main(["--strict", # turn warnings into errors
"-vv", # show each individual subtest and full failure logs
"--capture", "no", # enable stdout/stderr from tests
"--basetemp", cache, # temporary directory
"--showlocals", # display contents of variables in local scope
"-p", "no:mozlog", # use the WPT result recorder
"-p", "no:cacheprovider", # disable state preservation across invocations
"-o=console_output_style=classic", # disable test progress bar
path],
plugins=[harness, subtests])
except Exception as e:
harness.outcome = ("INTERNAL-ERROR", str(e))
with TemporaryDirectory() as cache:
try:
pytest.main(["--strict", # turn warnings into errors
"-vv", # show each individual subtest and full failure logs
"--capture", "no", # enable stdout/stderr from tests
"--basetemp", cache, # temporary directory
"--showlocals", # display contents of variables in local scope
"-p", "no:mozlog", # use the WPT result recorder
"-p", "no:cacheprovider", # disable state preservation across invocations
"-o=console_output_style=classic", # disable test progress bar
path],
plugins=[harness, subtests])
except Exception as e:
harness.outcome = ("INTERNAL-ERROR", str(e))
finally:
os.environ = old_environ
return (harness.outcome, subtests.results)

View file

@ -46,7 +46,7 @@ def test_webkitgtk_certificate_domain_list(product):
subdomains={"a", "b"},
not_subdomains={"x", "y"}) as env_config:
executor_args = get_executor_kwargs(None, env_config, None, None, **kwargs)
executor_args = get_executor_kwargs(None, None, env_config, None, None, **kwargs)
assert('capabilities' in executor_args)
assert('webkitgtk:browserOptions' in executor_args['capabilities'])
assert('certificates' in executor_args['capabilities']['webkitgtk:browserOptions'])

View file

@ -275,13 +275,15 @@ def run_tests(config, test_paths, product, **kwargs):
else:
browser_cls = product.browser_cls
browser_kwargs = product.get_browser_kwargs(test_type,
browser_kwargs = product.get_browser_kwargs(logger,
test_type,
run_info,
config=test_environment.config,
**kwargs)
executor_cls = product.executor_classes.get(test_type)
executor_kwargs = product.get_executor_kwargs(test_type,
executor_kwargs = product.get_executor_kwargs(logger,
test_type,
test_environment.config,
test_environment.cache_manager,
run_info,

Some files were not shown because too many files have changed in this diff Show more