mirror of
https://github.com/servo/servo.git
synced 2025-07-23 15:23:42 +01:00
Update web-platform-tests to revision 5fe9625d7445a6b88640f830d90dd5489c4bda05
This commit is contained in:
parent
39c3f46375
commit
92d17be4fe
104 changed files with 2429 additions and 236 deletions
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-002.html]
|
||||
[Hit test float]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-004.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[hit-test-floats-005.html]
|
||||
[Miss clipped float]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[CaretPosition-001.html]
|
||||
[Element at (400, 100)]
|
||||
expected: FAIL
|
||||
|
|
@ -315,18 +315,18 @@
|
|||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
[<iframe>: combined response Content-Type: text/plain;charset=gbk text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -53,6 +53,9 @@
|
|||
[combined text/javascript ]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript; charset=windows-1252 text/javascript]
|
||||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript;charset=windows-1252 text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[image-loads.html]
|
||||
expected: TIMEOUT
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_5.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[skip-another-top-level-browsing-context.html]
|
||||
expected: TIMEOUT
|
||||
[Autofocus elements queued in another top-level browsing context's documents should be skipped.]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,20 +1,16 @@
|
|||
[supported-elements.html]
|
||||
expected: TIMEOUT
|
||||
[Contenteditable element should support autofocus]
|
||||
expected: FAIL
|
||||
|
||||
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
[Element with tabindex should support autofocus]
|
||||
expected: FAIL
|
||||
|
||||
[Area element should support autofocus]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
[Host element with delegatesFocus should support autofocus]
|
||||
expected: NOTRUN
|
||||
|
||||
[Non-HTMLElement should not support autofocus]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[fieldset-flexbox.html]
|
||||
expected: CRASH
|
|
@ -171,6 +171,3 @@
|
|||
[XHTML img usemap="#hash-id"]
|
||||
expected: FAIL
|
||||
|
||||
[HTML (standards) IMG usemap="no-hash-name"]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[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: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-1.html]
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-2.html]
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-3.html]
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[form-double-submit-3.html]
|
||||
[<button> should have the same double-submit protection as <input type=submit>]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[form-double-submit.html]
|
||||
[default submit action should supersede onclick submit()]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[iframe_005.html]
|
||||
[document.write external script into iframe write back into parent]
|
||||
expected: FAIL
|
||||
|
|
@ -1,10 +1,9 @@
|
|||
[promise-job-entry.html]
|
||||
expected: TIMEOUT
|
||||
[Fulfillment handler on fulfilled promise]
|
||||
expected: FAIL
|
||||
|
||||
[Rejection handler on pending-then-rejected promise]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Sanity check: this all works as expected with no promises involved]
|
||||
expected: FAIL
|
||||
|
@ -16,5 +15,5 @@
|
|||
expected: FAIL
|
||||
|
||||
[Fulfillment handler on pending-then-fulfilled promise]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
[tee.any.sharedworker.html]
|
||||
expected: ERROR
|
||||
|
||||
[tee.any.worker.html]
|
||||
expected: TIMEOUT
|
||||
[ReadableStreamTee should not pull more chunks than can fit in the branch queue]
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStream teeing: canceling branch1 should finish when branch2 reads until end of stream]
|
||||
expected: TIMEOUT
|
||||
|
||||
[ReadableStream teeing: canceling branch1 should finish when original stream errors]
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStreamTee should only pull enough to fill the emptiest queue]
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStreamTee stops pulling when original stream errors while both branches are reading]
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStreamTee stops pulling when original stream errors while branch 1 is reading]
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStreamTee stops pulling when original stream errors while branch 2 is reading]
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStreamTee should not pull when original is already errored]
|
||||
expected: NOTRUN
|
||||
|
||||
|
||||
[tee.any.serviceworker.html]
|
||||
expected: ERROR
|
||||
|
||||
[tee.any.html]
|
||||
expected: TIMEOUT
|
||||
[ReadableStreamTee should not pull more chunks than can fit in the branch queue]
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStream teeing: canceling branch1 should finish when branch2 reads until end of stream]
|
||||
expected: TIMEOUT
|
||||
|
||||
[ReadableStream teeing: canceling branch1 should finish when original stream errors]
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStreamTee should only pull enough to fill the emptiest queue]
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStreamTee stops pulling when original stream errors while both branches are reading]
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStreamTee stops pulling when original stream errors while branch 1 is reading]
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStreamTee stops pulling when original stream errors while branch 2 is reading]
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStreamTee should not pull when original is already errored]
|
||||
expected: NOTRUN
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[018.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, javascript:]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[017.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, about:blank]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[Worker-constructor.html]
|
||||
expected: ERROR
|
|
@ -0,0 +1,49 @@
|
|||
[exception-in-onerror.html]
|
||||
[Throw in setTimeout(string): classic: listener]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in setTimeout(function): module: listener]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in worker initialization: classic: handler]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in message handler: classic: listener]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in setTimeout(function): classic: handler]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in message handler: module: handler]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in setTimeout(function): module: handler]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in worker initialization: module: handler]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in setTimeout(string): module: listener]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in message handler: classic: handler]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in worker initialization: classic: listener]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in message handler: module: listener]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in setTimeout(string): module: handler]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in setTimeout(function): classic: listener]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in worker initialization: module: listener]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in setTimeout(string): classic: handler]
|
||||
expected: FAIL
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
[shared-worker-in-data-url-context.window.html]
|
||||
expected: TIMEOUT
|
||||
[Create a shared worker in a data url frame]
|
||||
expected: FAIL
|
||||
|
||||
[Create a data url shared worker in a data url frame]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -144109,6 +144109,136 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"grid-item-no-aspect-ratio-stretch-1.html": [
|
||||
"1b5ae0a6ad80610515ed53f5ea34e812fe040d27",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-1-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"grid-item-no-aspect-ratio-stretch-10.html": [
|
||||
"6d8d7e848c24d6da176334b56f6b8af03341d374",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-8-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"grid-item-no-aspect-ratio-stretch-2.html": [
|
||||
"5371e560a5f80eae466485ccd89486c33d741190",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-2-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"grid-item-no-aspect-ratio-stretch-3.html": [
|
||||
"e2b05bd21664eaa61e4ec3a2abb74f431c8fdc1c",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-3-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"grid-item-no-aspect-ratio-stretch-4.html": [
|
||||
"1cf2849dad3d067b7d097ab76a775e213e836d10",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"grid-item-no-aspect-ratio-stretch-5.html": [
|
||||
"3000e9d97a1002b41753ca651a0313e090f42bf8",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"grid-item-no-aspect-ratio-stretch-6.html": [
|
||||
"655040eb446497916470875c7312bfa81d343148",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"grid-item-no-aspect-ratio-stretch-7.html": [
|
||||
"29dec490b79ac5ee7c21af8013c0917b0642221b",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-7-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"grid-item-no-aspect-ratio-stretch-8.html": [
|
||||
"933ddd0504efe9a3202d3ded7f661b5cacd1a2c4",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-8-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"grid-item-no-aspect-ratio-stretch-9.html": [
|
||||
"367adae9eb74d5975170ec94893ae84ad1046f0d",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-8-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"grid-item-self-baseline-001.html": [
|
||||
"ccc50c764975906b59f54aa1205a4513149e85f2",
|
||||
[
|
||||
|
@ -159992,6 +160122,19 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"paint-function-this-value.https.html": [
|
||||
"216913899a931e8144d8a647eccb8ba01037f737",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-paint-api/parse-input-arguments-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"paint2d-composite.https.html": [
|
||||
"d654ba49aad6048f88e6ddb6750554dc22b860fb",
|
||||
[
|
||||
|
@ -270699,12 +270842,8 @@
|
|||
"6d1eedb1fcbfda2bf27f74af1b34763adc62d599",
|
||||
[]
|
||||
],
|
||||
"not-embeddable-frame.html": [
|
||||
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
|
||||
[]
|
||||
],
|
||||
"not-embeddable-frame.html.sub.headers": [
|
||||
"beecdb765cd02cc6f15700d773e66e8844b941da",
|
||||
"not-embeddable-frame.py": [
|
||||
"50f9c83cf5c2343535f36348459ab8144dbe8cd7",
|
||||
[]
|
||||
],
|
||||
"redirect-throw-function.sub.py": [
|
||||
|
@ -302477,6 +302616,38 @@
|
|||
"d167a5f1542b5a71b51ce06b806a2f9425d7f6ab",
|
||||
[]
|
||||
],
|
||||
"grid-item-no-aspect-ratio-stretch-1-ref.html": [
|
||||
"6a7862c9acb626a72fda6138fdabd05a37e865ac",
|
||||
[]
|
||||
],
|
||||
"grid-item-no-aspect-ratio-stretch-2-ref.html": [
|
||||
"69d59e85a3c7134064f516d9e1a32ccb00dc1960",
|
||||
[]
|
||||
],
|
||||
"grid-item-no-aspect-ratio-stretch-3-ref.html": [
|
||||
"7ee8a2d6bdccc5f50b9f1444cb92a23febe9f81d",
|
||||
[]
|
||||
],
|
||||
"grid-item-no-aspect-ratio-stretch-4-ref.html": [
|
||||
"9edb8aa76f8fd40302a8dcac27db19b51f2c56b0",
|
||||
[]
|
||||
],
|
||||
"grid-item-no-aspect-ratio-stretch-5-ref.html": [
|
||||
"6a3446534a1a5e42952f521c9b1634284c4e594b",
|
||||
[]
|
||||
],
|
||||
"grid-item-no-aspect-ratio-stretch-6-ref.html": [
|
||||
"33f472e71b853651285ff7248226ed4be6c1a603",
|
||||
[]
|
||||
],
|
||||
"grid-item-no-aspect-ratio-stretch-7-ref.html": [
|
||||
"0d60375f560f3a2d379bd90eac4a062e0a7f420a",
|
||||
[]
|
||||
],
|
||||
"grid-item-no-aspect-ratio-stretch-8-ref.html": [
|
||||
"09dd27321ab5790927104ccadb4d002dba4f67a7",
|
||||
[]
|
||||
],
|
||||
"grid-item-self-baseline-001-ref.html": [
|
||||
"6eadf9a02a55822a54fa44715d80bece93997b0f",
|
||||
[]
|
||||
|
@ -322761,7 +322932,7 @@
|
|||
[]
|
||||
],
|
||||
"index.md": [
|
||||
"90a67c21fce2d1546544c0540d3158fd5bf16a26",
|
||||
"c1d2fe17a31508d65a9b46da5bb93b3329648ad9",
|
||||
[]
|
||||
],
|
||||
"lint-tool.md": [
|
||||
|
@ -322831,7 +323002,7 @@
|
|||
[]
|
||||
],
|
||||
"testharness.md": [
|
||||
"1e9772a401796da1a9a15f1fea9958843c64dc7e",
|
||||
"1037eaca03c702383c0b9caab07fa98cdec4b4c0",
|
||||
[]
|
||||
],
|
||||
"tools.md": [
|
||||
|
@ -330371,7 +330542,7 @@
|
|||
[]
|
||||
],
|
||||
"dispatcher.py": [
|
||||
"2617361b0b369bd9efd3aedd42a88f8f46906fe3",
|
||||
"e77583e479f9506b3f6a5b53293ae25dc3cae8f1",
|
||||
[]
|
||||
],
|
||||
"executor.html": [
|
||||
|
@ -350648,7 +350819,7 @@
|
|||
[]
|
||||
],
|
||||
"github_checks_output.py": [
|
||||
"d799be911660f566701be5ebc3b90caf117075e2",
|
||||
"16d399002984e0b9daf8a0239b49bedbea50914b",
|
||||
[]
|
||||
],
|
||||
"sink_task.py": [
|
||||
|
@ -351253,7 +351424,7 @@
|
|||
[]
|
||||
],
|
||||
"commands.json": [
|
||||
"a5457b55a3308d47fac178aedd6282d93b36120f",
|
||||
"ed1d72e60ec33c3b550308bc55eacbf96e0be4c4",
|
||||
[]
|
||||
],
|
||||
"serve.py": [
|
||||
|
@ -351261,7 +351432,7 @@
|
|||
[]
|
||||
],
|
||||
"test_functional.py": [
|
||||
"894479d111c90dad925c683cb0e93ac13fc68619",
|
||||
"5a918c2ee473e55886dfc70878d3df17b728e6f1",
|
||||
[]
|
||||
],
|
||||
"test_serve.py": [
|
||||
|
@ -357049,7 +357220,7 @@
|
|||
[]
|
||||
],
|
||||
"commands.json": [
|
||||
"a47ab40d72847d5f536e0ac2e02eb3fe0fea233a",
|
||||
"51f66d0decb09d7a17493ca72a5f13f829d04f3b",
|
||||
[]
|
||||
],
|
||||
"create.py": [
|
||||
|
@ -357118,7 +357289,7 @@
|
|||
[]
|
||||
],
|
||||
"test_wpt.py": [
|
||||
"b5ae79d13112bec1a4f264686338204ba3d62abc",
|
||||
"0b6aff42d57d7dc8bb4ba936c86b913f58cba791",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -357139,7 +357310,7 @@
|
|||
[]
|
||||
],
|
||||
"wpt.py": [
|
||||
"395db0394da67caa8bdc1ad9e689e583175192b0",
|
||||
"efa985c7cc1740eb0fd6e5a80f9e89e24cf75d37",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -358137,7 +358308,7 @@
|
|||
[]
|
||||
],
|
||||
"test_stash.py": [
|
||||
"1c4c9ad933a37746623a0195f553ad8cfe70688f",
|
||||
"0b960c1e9f8609dcbd82dbb333434fe0d2700185",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -363523,7 +363694,7 @@
|
|||
},
|
||||
"onerror": {
|
||||
"exception-in-onerror.js": [
|
||||
"2bf4124cb74b5fa34302ffddce7e44b953d0d472",
|
||||
"61a95dda51f7e74c3fdff46fcfd09d7f2305dbe5",
|
||||
[]
|
||||
],
|
||||
"handled.js": [
|
||||
|
@ -384934,8 +385105,15 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"report-frame-ancestors-with-x-frame-options.sub.html": [
|
||||
"0c58a5efd54ceda6ad5f906b02862976c40f65cd",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"report-frame-ancestors.sub.html": [
|
||||
"a5aa1661c1085a61bedfe88b41ee389f62f577d2",
|
||||
"cd7bbcb9731009651c1646907e55e137e9d5fdb5",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -415517,7 +415695,7 @@
|
|||
},
|
||||
"events": {
|
||||
"AddEventListenerOptions-once.html": [
|
||||
"ae750702c79d0e2f493537ade1c78558987f536e",
|
||||
"361c838b736258642c0bf5f26f243544edf2224b",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -417157,6 +417335,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"MutationObserver-callback-arguments.html": [
|
||||
"d64758cb4fa00d25ad3dafe576a0098c902922b7",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"MutationObserver-characterData.html": [
|
||||
"addaef03da1ac64ce9e6a6b1c5d244933b2c7f7b",
|
||||
[
|
||||
|
@ -457943,10 +458128,12 @@
|
|||
]
|
||||
],
|
||||
"reporting-observer.html": [
|
||||
"4d1eda941ae50ce4482c692dafe749ef9e455ac6",
|
||||
"decad097b6d29acabb6252497f68658002c3478e",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
|
@ -460738,7 +460925,7 @@
|
|||
]
|
||||
],
|
||||
"fieldset-flexbox.html": [
|
||||
"07c73554e59ccb576e590192e923de6b7100e1ae",
|
||||
"9e1c9ed152fb6597891b310f6a492d57ae136441",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -461384,7 +461571,7 @@
|
|||
"pragma-directives": {
|
||||
"attr-meta-http-equiv-refresh": {
|
||||
"allow-scripts-flag-changing-1.html": [
|
||||
"3bf8cfb6cc8949ec30f3491660f01fb452307ccb",
|
||||
"196f6d0409a9cc97104f6c15fc7855fb549bfebe",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -476545,6 +476732,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"observer-callback-arguments.html": [
|
||||
"6e816969d00641af4da1c86d7b7bafc4a3ffbc3b",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"observer-exceptions.html": [
|
||||
"126790f290d9480dcda7eed6e1b2989ffcc6a70f",
|
||||
[
|
||||
|
@ -477343,6 +477537,20 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"child-shift-with-parent-overflow-hidden.html": [
|
||||
"d69e55a51b8088ca0a94f3975155646d21792d88",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"child-shift-with-parent.html": [
|
||||
"7271af6d4a04fbbafebe2b20b372f6f41b31b3a9",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"clip-negative-bottom-margin.html": [
|
||||
"2c329d9fcd66d86bf8c350c2ee419e28ef6596f4",
|
||||
[
|
||||
|
@ -477380,6 +477588,20 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"inline-flow-shift-vertical-rl.html": [
|
||||
"a89cad145b277bb7a92b30781a63de18fb76c42f",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"inline-flow-shift.html": [
|
||||
"0385f29c2f9796818daf38ba5cad2aec7ba4b550",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"local-shift-without-viewport-shift.html": [
|
||||
"37729f1c13c298b5a2d95c46b7a4f199d8943022",
|
||||
[
|
||||
|
@ -477401,6 +477623,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"outline.html": [
|
||||
"1fed8e92f5e4b60cd83646405b6bd77e673c076f",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"partially-clipped-visual-rect.html": [
|
||||
"3b18b98dd93312c37b9e2f25918df50266a09243",
|
||||
[
|
||||
|
@ -487210,6 +487439,15 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"pointerevent_mouse-pointer-preventdefault.html": [
|
||||
"a727325a5b1d0e7d4f02899a98cfc5d457e106a4",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"testdriver": true
|
||||
}
|
||||
]
|
||||
],
|
||||
"pointerevent_mouse-pointer-updown-events.html": [
|
||||
"a5433aab535f075b58844481a44588cb578a6bf0",
|
||||
[
|
||||
|
@ -508087,7 +508325,7 @@
|
|||
]
|
||||
],
|
||||
"tee.any.js": [
|
||||
"b6a95368aa5e64df6ca9e15c034a1b4288883622",
|
||||
"55d4532ff83929b53db7791be52de8a98743d0f8",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -531672,6 +531910,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"render_state_update.https.html": [
|
||||
"2f28d442ec9889ae9cf6d54b70e1c4c64b862a0f",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"render_state_vertical_fov_immersive.https.html": [
|
||||
"485438cabf6a633df42a0f94c04922e7274013e1",
|
||||
[
|
||||
|
@ -533668,7 +533913,7 @@
|
|||
},
|
||||
"onerror": {
|
||||
"exception-in-onerror.html": [
|
||||
"840433d3d894b1a298bbd5bbe2ea14f9fdd81ef4",
|
||||
"d8aa02a01b8c841b2db575a1b7a77388d66d3dda",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-002.html]
|
||||
[Hit test float]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-004.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[hit-test-floats-005.html]
|
||||
[Miss clipped float]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[CaretPosition-001.html]
|
||||
[Element at (400, 100)]
|
||||
expected: FAIL
|
||||
|
|
@ -315,18 +315,18 @@
|
|||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
[<iframe>: combined response Content-Type: text/plain;charset=gbk text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -53,6 +53,9 @@
|
|||
[combined text/javascript ]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript; charset=windows-1252 text/javascript]
|
||||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript;charset=windows-1252 text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[image-loads.html]
|
||||
expected: TIMEOUT
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_5.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[skip-another-top-level-browsing-context.html]
|
||||
expected: TIMEOUT
|
||||
[Autofocus elements queued in another top-level browsing context's documents should be skipped.]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
[supported-elements.html]
|
||||
expected: TIMEOUT
|
||||
[Contenteditable element should support autofocus]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -7,14 +6,11 @@
|
|||
expected: FAIL
|
||||
|
||||
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
[Area element should support autofocus]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
[Host element with delegatesFocus should support autofocus]
|
||||
expected: NOTRUN
|
||||
|
||||
[Non-HTMLElement should not support autofocus]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[fieldset-flexbox.html]
|
||||
expected: CRASH
|
|
@ -172,6 +172,3 @@
|
|||
[XHTML img usemap="http://example.org/#garbage-before-hash-id"]
|
||||
expected: FAIL
|
||||
|
||||
[HTML (standards) IMG usemap="no-hash-name"]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
[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: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[iframe_sandbox_popups_nonescaping-1.html]
|
||||
type: testharness
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
[iframe_sandbox_popups_nonescaping-2.html]
|
||||
type: testharness
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
[iframe_sandbox_popups_nonescaping-3.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[form-double-submit-3.html]
|
||||
[<button> should have the same double-submit protection as <input type=submit>]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[form-double-submit.html]
|
||||
[default submit action should supersede onclick submit()]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[iframe_005.html]
|
||||
[document.write external script into iframe write back into parent]
|
||||
expected: FAIL
|
||||
|
|
@ -1,10 +1,9 @@
|
|||
[promise-job-entry.html]
|
||||
expected: TIMEOUT
|
||||
[Fulfillment handler on fulfilled promise]
|
||||
expected: FAIL
|
||||
|
||||
[Rejection handler on pending-then-rejected promise]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Sanity check: this all works as expected with no promises involved]
|
||||
expected: FAIL
|
||||
|
@ -16,5 +15,5 @@
|
|||
expected: FAIL
|
||||
|
||||
[Fulfillment handler on pending-then-fulfilled promise]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -2,34 +2,58 @@
|
|||
expected: ERROR
|
||||
|
||||
[tee.any.worker.html]
|
||||
expected: ERROR
|
||||
expected: TIMEOUT
|
||||
[ReadableStreamTee should not pull more chunks than can fit in the branch queue]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStreamTee stops pulling when original stream errors while branch 1 is reading]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStreamTee stops pulling when original stream errors while both branches are reading]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStreamTee stops pulling when original stream errors while branch 2 is reading]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStream teeing: canceling branch1 should finish when branch2 reads until end of stream]
|
||||
expected: TIMEOUT
|
||||
|
||||
[ReadableStream teeing: canceling branch1 should finish when original stream errors]
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStreamTee should only pull enough to fill the emptiest queue]
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStreamTee should not pull when original is already errored]
|
||||
expected: NOTRUN
|
||||
|
||||
|
||||
[tee.any.serviceworker.html]
|
||||
expected: ERROR
|
||||
|
||||
[tee.any.html]
|
||||
expected: ERROR
|
||||
expected: TIMEOUT
|
||||
[ReadableStreamTee should not pull more chunks than can fit in the branch queue]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStreamTee stops pulling when original stream errors while branch 1 is reading]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStreamTee stops pulling when original stream errors while both branches are reading]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStreamTee stops pulling when original stream errors while branch 2 is reading]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStream teeing: canceling branch1 should finish when branch2 reads until end of stream]
|
||||
expected: TIMEOUT
|
||||
|
||||
[ReadableStream teeing: canceling branch1 should finish when original stream errors]
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStreamTee should only pull enough to fill the emptiest queue]
|
||||
expected: NOTRUN
|
||||
|
||||
[ReadableStreamTee should not pull when original is already errored]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
[018.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, javascript:]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[017.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, about:blank]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[Worker-constructor.html]
|
||||
expected: ERROR
|
|
@ -0,0 +1,49 @@
|
|||
[exception-in-onerror.html]
|
||||
[Throw in setTimeout(string): classic: listener]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in setTimeout(function): module: listener]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in worker initialization: classic: handler]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in message handler: classic: listener]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in setTimeout(function): classic: handler]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in message handler: module: handler]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in setTimeout(function): module: handler]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in worker initialization: module: handler]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in setTimeout(string): module: listener]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in message handler: classic: handler]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in worker initialization: classic: listener]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in message handler: module: listener]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in setTimeout(string): module: handler]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in setTimeout(function): classic: listener]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in worker initialization: module: listener]
|
||||
expected: FAIL
|
||||
|
||||
[Throw in setTimeout(string): classic: handler]
|
||||
expected: FAIL
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
[shared-worker-in-data-url-context.window.html]
|
||||
expected: TIMEOUT
|
||||
[Create a shared worker in a data url frame]
|
||||
expected: FAIL
|
||||
|
||||
[Create a data url shared worker in a data url frame]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[getBoundingClientRect.html]
|
||||
[getBoundingClientRect 1]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<title>Reporting works with report-only frame-ancestors even if frame is blocked by X-Frame-Options</title>
|
||||
</head>
|
||||
<body>
|
||||
<iframe src="./support/not-embeddable-frame.py?reportID={{$id:uuid()}}&reportOnly=true&xFrameOptions=DENY"></iframe>
|
||||
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=frame-ancestors&reportID={{$id}}'></script>
|
||||
</body>
|
||||
</html>
|
|
@ -6,7 +6,7 @@
|
|||
<title>Reporting works with frame-ancestors</title>
|
||||
</head>
|
||||
<body>
|
||||
<iframe src="./support/not-embeddable-frame.html?reportID={{$id:uuid()}}"></iframe>
|
||||
<iframe src="./support/not-embeddable-frame.py?reportID={{$id:uuid()}}"></iframe>
|
||||
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=frame-ancestors&reportID={{$id}}'></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
Expires: Mon, 26 Jul 1997 05:00:00 GMT
|
||||
Cache-Control: no-store, no-cache, must-revalidate
|
||||
Cache-Control: post-check=0, pre-check=0, false
|
||||
Pragma: no-cache
|
||||
Content-Security-Policy: frame-ancestors 'none'; report-uri ../../support/report.py?op=put&reportID={{GET[reportID]}}
|
|
@ -0,0 +1,10 @@
|
|||
def main(request, response):
|
||||
headers = []
|
||||
if request.GET.first(b'xFrameOptions', None):
|
||||
headers.append((b'X-Frame-Options', request.GET[b'xFrameOptions']))
|
||||
|
||||
csp_header = b'Content-Security-Policy-Report-Only' \
|
||||
if request.GET.first(b'reportOnly', None) == 'true' else b'Content-Security-Policy'
|
||||
headers.append((csp_header, b"frame-ancestors 'none'; report-uri ../../support/report.py?op=put&reportID=" + request.GET[b'reportID']))
|
||||
|
||||
return headers, b'{}'
|
|
@ -0,0 +1,39 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Test Reference</title>
|
||||
<style>
|
||||
body {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-block;
|
||||
height: 250px;
|
||||
width: 350px;
|
||||
background: purple;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
svg {
|
||||
display: block;
|
||||
background: green;
|
||||
}
|
||||
.justify {
|
||||
width: 350px;
|
||||
}
|
||||
.align {
|
||||
height: 250px;
|
||||
}
|
||||
</style>
|
||||
<div>
|
||||
<svg class="align justify"></svg>
|
||||
</div>
|
||||
<div>
|
||||
<svg class="align"></svg>
|
||||
</div>
|
||||
<div>
|
||||
<svg class="justify"></svg>
|
||||
</div>
|
||||
<div>
|
||||
<svg></svg>
|
||||
</div>
|
|
@ -0,0 +1,45 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>stretching works for replaced items with no aspect ratio</title>
|
||||
<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
|
||||
<link rel="author" title="Mozilla" href="https://mozilla.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-grid">
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281">
|
||||
<link rel="match" href="grid-item-no-aspect-ratio-stretch-1-ref.html">
|
||||
<style>
|
||||
body {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-grid;
|
||||
height: 250px;
|
||||
width: 350px;
|
||||
background: purple;
|
||||
margin: 10px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
svg {
|
||||
background: green;
|
||||
}
|
||||
|
||||
.justify {
|
||||
justify-self: stretch;
|
||||
}
|
||||
.align {
|
||||
align-self: stretch;
|
||||
}
|
||||
</style>
|
||||
<div>
|
||||
<svg class="align justify"></svg>
|
||||
</div>
|
||||
<div>
|
||||
<svg class="align"></svg>
|
||||
</div>
|
||||
<div>
|
||||
<svg class="justify"></svg>
|
||||
</div>
|
||||
<div>
|
||||
<svg></svg>
|
||||
</div>
|
|
@ -0,0 +1,50 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>stretching works for replaced items with no aspect ratio</title>
|
||||
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://mozilla.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-grid">
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281">
|
||||
<link rel="match" href="grid-item-no-aspect-ratio-stretch-8-ref.html">
|
||||
<style>
|
||||
body {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-grid;
|
||||
height: 250px;
|
||||
width: 350px;
|
||||
background: grey;
|
||||
margin: 10px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.justify {
|
||||
justify-self: stretch;
|
||||
}
|
||||
.align {
|
||||
align-self: stretch;
|
||||
}
|
||||
</style>
|
||||
<div>
|
||||
<img class="align justify">
|
||||
</div>
|
||||
<div>
|
||||
<img class="align">
|
||||
</div>
|
||||
<div>
|
||||
<img class="justify">
|
||||
</div>
|
||||
<div>
|
||||
<img>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="0px" height="0px"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>'
|
||||
var imgs = document.querySelectorAll('img');
|
||||
for (var i = 0; i < imgs.length; ++i) {
|
||||
var img = imgs[i];
|
||||
img.src = url;
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,53 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>Reference: stretching works for replaced items with no aspect ratio</title>
|
||||
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://mozilla.org">
|
||||
<style>
|
||||
body {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-block;
|
||||
height: 250px;
|
||||
width: 350px;
|
||||
background: grey;
|
||||
margin: 10px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
img {
|
||||
display: block;
|
||||
width: 300px;
|
||||
height: 150px;
|
||||
}
|
||||
|
||||
.justify {
|
||||
width: 350px;
|
||||
}
|
||||
.align {
|
||||
height: 250px;
|
||||
}
|
||||
</style>
|
||||
<div>
|
||||
<img class="align justify">
|
||||
</div>
|
||||
<div>
|
||||
<img class="align" style="width:20px">
|
||||
</div>
|
||||
<div>
|
||||
<img class="justify">
|
||||
</div>
|
||||
<div>
|
||||
<img style="width:20px">
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="20px"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>'
|
||||
var imgs = document.querySelectorAll('img');
|
||||
for (var i = 0; i < imgs.length; ++i) {
|
||||
var img = imgs[i];
|
||||
img.src = url;
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,50 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>stretching works for replaced items with no aspect ratio</title>
|
||||
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://mozilla.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-grid">
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281">
|
||||
<link rel="match" href="grid-item-no-aspect-ratio-stretch-2-ref.html">
|
||||
<style>
|
||||
body {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-grid;
|
||||
height: 250px;
|
||||
width: 350px;
|
||||
background: grey;
|
||||
margin: 10px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.justify {
|
||||
justify-self: stretch;
|
||||
}
|
||||
.align {
|
||||
align-self: stretch;
|
||||
}
|
||||
</style>
|
||||
<div>
|
||||
<img class="align justify">
|
||||
</div>
|
||||
<div>
|
||||
<img class="align">
|
||||
</div>
|
||||
<div>
|
||||
<img class="justify">
|
||||
</div>
|
||||
<div>
|
||||
<img>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="20px"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>'
|
||||
var imgs = document.querySelectorAll('img');
|
||||
for (var i = 0; i < imgs.length; ++i) {
|
||||
var img = imgs[i];
|
||||
img.src = url;
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,53 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>Reference: stretching works for replaced items with no aspect ratio</title>
|
||||
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://mozilla.org">
|
||||
<style>
|
||||
body {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-block;
|
||||
height: 250px;
|
||||
width: 350px;
|
||||
background: grey;
|
||||
margin: 10px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
img {
|
||||
display: block;
|
||||
width: 300px;
|
||||
height: 150px;
|
||||
}
|
||||
|
||||
.justify {
|
||||
width: 350px;
|
||||
}
|
||||
.align {
|
||||
height: 250px;
|
||||
}
|
||||
</style>
|
||||
<div>
|
||||
<img class="align justify">
|
||||
</div>
|
||||
<div>
|
||||
<img class="align">
|
||||
</div>
|
||||
<div>
|
||||
<img class="justify" style="height:20px">
|
||||
</div>
|
||||
<div>
|
||||
<img style="height:20px">
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" height="20px"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>'
|
||||
var imgs = document.querySelectorAll('img');
|
||||
for (var i = 0; i < imgs.length; ++i) {
|
||||
var img = imgs[i];
|
||||
img.src = url;
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,50 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>stretching works for replaced items with no aspect ratio</title>
|
||||
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://mozilla.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-grid">
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281">
|
||||
<link rel="match" href="grid-item-no-aspect-ratio-stretch-3-ref.html">
|
||||
<style>
|
||||
body {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-grid;
|
||||
height: 250px;
|
||||
width: 350px;
|
||||
background: grey;
|
||||
margin: 10px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.justify {
|
||||
justify-self: stretch;
|
||||
}
|
||||
.align {
|
||||
align-self: stretch;
|
||||
}
|
||||
</style>
|
||||
<div>
|
||||
<img class="align justify">
|
||||
</div>
|
||||
<div>
|
||||
<img class="align">
|
||||
</div>
|
||||
<div>
|
||||
<img class="justify">
|
||||
</div>
|
||||
<div>
|
||||
<img>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" height="20px"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>'
|
||||
var imgs = document.querySelectorAll('img');
|
||||
for (var i = 0; i < imgs.length; ++i) {
|
||||
var img = imgs[i];
|
||||
img.src = url;
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,53 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>Reference: stretching works for replaced items with no aspect ratio</title>
|
||||
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://mozilla.org">
|
||||
<style>
|
||||
body {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-block;
|
||||
height: 250px;
|
||||
width: 350px;
|
||||
background: grey;
|
||||
margin: 10px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
img {
|
||||
display: block;
|
||||
width: 300px;
|
||||
height: 150px;
|
||||
}
|
||||
|
||||
.justify {
|
||||
width: 350px;
|
||||
}
|
||||
.align {
|
||||
height: 250px;
|
||||
}
|
||||
</style>
|
||||
<div>
|
||||
<img class="align justify">
|
||||
</div>
|
||||
<div>
|
||||
<img class="align" style="width:10px">
|
||||
</div>
|
||||
<div>
|
||||
<img class="justify" style="height:20px">
|
||||
</div>
|
||||
<div>
|
||||
<img style="width:10px; height:20px">
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 100"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>'
|
||||
var imgs = document.querySelectorAll('img');
|
||||
for (var i = 0; i < imgs.length; ++i) {
|
||||
var img = imgs[i];
|
||||
img.src = url;
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,50 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>stretching works for replaced items with no aspect ratio</title>
|
||||
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://mozilla.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-grid">
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281">
|
||||
<link rel="match" href="grid-item-no-aspect-ratio-stretch-4-ref.html">
|
||||
<style>
|
||||
body {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-grid;
|
||||
height: 250px;
|
||||
width: 350px;
|
||||
background: grey;
|
||||
margin: 10px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.justify {
|
||||
justify-self: stretch;
|
||||
}
|
||||
.align {
|
||||
align-self: stretch;
|
||||
}
|
||||
</style>
|
||||
<div>
|
||||
<img class="align justify">
|
||||
</div>
|
||||
<div>
|
||||
<img class="align">
|
||||
</div>
|
||||
<div>
|
||||
<img class="justify">
|
||||
</div>
|
||||
<div>
|
||||
<img>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 50 100"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>'
|
||||
var imgs = document.querySelectorAll('img');
|
||||
for (var i = 0; i < imgs.length; ++i) {
|
||||
var img = imgs[i];
|
||||
img.src = url;
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,53 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>Reference: stretching works for replaced items with no aspect ratio</title>
|
||||
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://mozilla.org">
|
||||
<style>
|
||||
body {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-block;
|
||||
height: 250px;
|
||||
width: 350px;
|
||||
background: grey;
|
||||
margin: 10px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
img {
|
||||
display: block;
|
||||
width: 300px;
|
||||
height: 150px;
|
||||
}
|
||||
|
||||
.justify {
|
||||
width: 350px;
|
||||
}
|
||||
.align {
|
||||
height: 250px;
|
||||
}
|
||||
</style>
|
||||
<div>
|
||||
<img class="align justify">
|
||||
</div>
|
||||
<div>
|
||||
<img class="align" style="width:20px">
|
||||
</div>
|
||||
<div>
|
||||
<img class="justify" style="width:350px; height:40px">
|
||||
</div>
|
||||
<div>
|
||||
<img style="width:20px; height:40px">
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 100"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>'
|
||||
var imgs = document.querySelectorAll('img');
|
||||
for (var i = 0; i < imgs.length; ++i) {
|
||||
var img = imgs[i];
|
||||
img.src = url;
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,50 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>stretching works for replaced items with no aspect ratio</title>
|
||||
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://mozilla.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-grid">
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281">
|
||||
<link rel="match" href="grid-item-no-aspect-ratio-stretch-5-ref.html">
|
||||
<style>
|
||||
body {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-grid;
|
||||
height: 250px;
|
||||
width: 350px;
|
||||
background: grey;
|
||||
margin: 10px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.justify {
|
||||
justify-self: stretch;
|
||||
}
|
||||
.align {
|
||||
align-self: stretch;
|
||||
}
|
||||
</style>
|
||||
<div>
|
||||
<img class="align justify">
|
||||
</div>
|
||||
<div>
|
||||
<img class="align">
|
||||
</div>
|
||||
<div>
|
||||
<img class="justify">
|
||||
</div>
|
||||
<div>
|
||||
<img>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="20px" viewBox="0 0 50 100"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>'
|
||||
var imgs = document.querySelectorAll('img');
|
||||
for (var i = 0; i < imgs.length; ++i) {
|
||||
var img = imgs[i];
|
||||
img.src = url;
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,54 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>Reference: stretching works for replaced items with no aspect ratio</title>
|
||||
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://mozilla.org">
|
||||
<style>
|
||||
body {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-block;
|
||||
height: 250px;
|
||||
width: 350px;
|
||||
background: grey;
|
||||
margin: 10px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
img {
|
||||
display: block;
|
||||
width: 300px;
|
||||
height: 150px;
|
||||
background: blue;
|
||||
}
|
||||
|
||||
.justify {
|
||||
width: 350px;
|
||||
}
|
||||
.align {
|
||||
height: 250px;
|
||||
}
|
||||
</style>
|
||||
<div>
|
||||
<img class="align justify">
|
||||
</div>
|
||||
<div>
|
||||
<img class="align" style="width:0px">
|
||||
</div>
|
||||
<div>
|
||||
<img class="justify" style="height:20px">
|
||||
</div>
|
||||
<div>
|
||||
<img style="width:0px; height:20px">
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg"></svg>'
|
||||
var imgs = document.querySelectorAll('img');
|
||||
for (var i = 0; i < imgs.length; ++i) {
|
||||
var img = imgs[i];
|
||||
img.src = url;
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,51 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>stretching works for replaced items with no aspect ratio</title>
|
||||
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://mozilla.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-grid">
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281">
|
||||
<link rel="match" href="grid-item-no-aspect-ratio-stretch-6-ref.html">
|
||||
<style>
|
||||
body {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-grid;
|
||||
height: 250px;
|
||||
width: 350px;
|
||||
background: grey;
|
||||
margin: 10px;
|
||||
vertical-align: top;
|
||||
}
|
||||
img { background: blue; }
|
||||
|
||||
.justify {
|
||||
justify-self: stretch;
|
||||
}
|
||||
.align {
|
||||
align-self: stretch;
|
||||
}
|
||||
</style>
|
||||
<div>
|
||||
<img class="align justify">
|
||||
</div>
|
||||
<div>
|
||||
<img class="align">
|
||||
</div>
|
||||
<div>
|
||||
<img class="justify">
|
||||
</div>
|
||||
<div>
|
||||
<img>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="0px" height="20px" viewBox="0 0 50 100"></svg>'
|
||||
var imgs = document.querySelectorAll('img');
|
||||
for (var i = 0; i < imgs.length; ++i) {
|
||||
var img = imgs[i];
|
||||
img.src = url;
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,54 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>Reference: stretching works for replaced items with no aspect ratio</title>
|
||||
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://mozilla.org">
|
||||
<style>
|
||||
body {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-block;
|
||||
height: 250px;
|
||||
width: 350px;
|
||||
background: grey;
|
||||
margin: 10px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
img {
|
||||
display: block;
|
||||
width: 300px;
|
||||
height: 150px;
|
||||
background: blue;
|
||||
}
|
||||
|
||||
.justify {
|
||||
width: 350px;
|
||||
}
|
||||
.align {
|
||||
height: 250px;
|
||||
}
|
||||
</style>
|
||||
<div>
|
||||
<img class="align justify">
|
||||
</div>
|
||||
<div>
|
||||
<img class="align" style="width:20px">
|
||||
</div>
|
||||
<div>
|
||||
<img class="justify" style="height:0px">
|
||||
</div>
|
||||
<div>
|
||||
<img style="width:20px; height:0px">
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg"></svg>'
|
||||
var imgs = document.querySelectorAll('img');
|
||||
for (var i = 0; i < imgs.length; ++i) {
|
||||
var img = imgs[i];
|
||||
img.src = url;
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,51 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>stretching works for replaced items with no aspect ratio</title>
|
||||
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://mozilla.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-grid">
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281">
|
||||
<link rel="match" href="grid-item-no-aspect-ratio-stretch-7-ref.html">
|
||||
<style>
|
||||
body {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-grid;
|
||||
height: 250px;
|
||||
width: 350px;
|
||||
background: grey;
|
||||
margin: 10px;
|
||||
vertical-align: top;
|
||||
}
|
||||
img { background: blue; }
|
||||
|
||||
.justify {
|
||||
justify-self: stretch;
|
||||
}
|
||||
.align {
|
||||
align-self: stretch;
|
||||
}
|
||||
</style>
|
||||
<div>
|
||||
<img class="align justify">
|
||||
</div>
|
||||
<div>
|
||||
<img class="align">
|
||||
</div>
|
||||
<div>
|
||||
<img class="justify">
|
||||
</div>
|
||||
<div>
|
||||
<img>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="20px" height="0px" viewBox="0 0 50 100"></svg>'
|
||||
var imgs = document.querySelectorAll('img');
|
||||
for (var i = 0; i < imgs.length; ++i) {
|
||||
var img = imgs[i];
|
||||
img.src = url;
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,27 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>Reference: stretching works for replaced items with no aspect ratio</title>
|
||||
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://mozilla.org">
|
||||
<style>
|
||||
body {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-block;
|
||||
height: 250px;
|
||||
width: 350px;
|
||||
background: grey;
|
||||
margin: 10px;
|
||||
vertical-align: top;
|
||||
}
|
||||
</style>
|
||||
<div>
|
||||
</div>
|
||||
<div>
|
||||
</div>
|
||||
<div>
|
||||
</div>
|
||||
<div>
|
||||
</div>
|
|
@ -0,0 +1,50 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>stretching works for replaced items with no aspect ratio</title>
|
||||
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://mozilla.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-grid">
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281">
|
||||
<link rel="match" href="grid-item-no-aspect-ratio-stretch-8-ref.html">
|
||||
<style>
|
||||
body {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-grid;
|
||||
height: 250px;
|
||||
width: 350px;
|
||||
background: grey;
|
||||
margin: 10px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.justify {
|
||||
justify-self: stretch;
|
||||
}
|
||||
.align {
|
||||
align-self: stretch;
|
||||
}
|
||||
</style>
|
||||
<div>
|
||||
<img class="align justify">
|
||||
</div>
|
||||
<div>
|
||||
<img class="align">
|
||||
</div>
|
||||
<div>
|
||||
<img class="justify">
|
||||
</div>
|
||||
<div>
|
||||
<img>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="0px" height="20px"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>'
|
||||
var imgs = document.querySelectorAll('img');
|
||||
for (var i = 0; i < imgs.length; ++i) {
|
||||
var img = imgs[i];
|
||||
img.src = url;
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,50 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>stretching works for replaced items with no aspect ratio</title>
|
||||
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://mozilla.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-grid">
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656281">
|
||||
<link rel="match" href="grid-item-no-aspect-ratio-stretch-8-ref.html">
|
||||
<style>
|
||||
body {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-grid;
|
||||
height: 250px;
|
||||
width: 350px;
|
||||
background: grey;
|
||||
margin: 10px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.justify {
|
||||
justify-self: stretch;
|
||||
}
|
||||
.align {
|
||||
align-self: stretch;
|
||||
}
|
||||
</style>
|
||||
<div>
|
||||
<img class="align justify">
|
||||
</div>
|
||||
<div>
|
||||
<img class="align">
|
||||
</div>
|
||||
<div>
|
||||
<img class="justify">
|
||||
</div>
|
||||
<div>
|
||||
<img>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var url = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="20px" height="0px"><circle cx="50%" cy="50%" r="50%" fill="blue"/></svg>'
|
||||
var imgs = document.querySelectorAll('img');
|
||||
for (var i = 0; i < imgs.length; ++i) {
|
||||
var img = imgs[i];
|
||||
img.src = url;
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,43 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="reftest-wait">
|
||||
<meta charset="utf-8">
|
||||
<title>Paint callback is invoked with `this` value of `paintInstance`</title>
|
||||
<link rel="help" href="https://drafts.css-houdini.org/css-paint-api-1/#invoke-a-paint-callback">
|
||||
<link rel="match" href="parse-input-arguments-ref.html">
|
||||
<style>
|
||||
.container {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
#canvas-geometry {
|
||||
background-image: paint(geometry);
|
||||
}
|
||||
</style>
|
||||
<script src="/common/reftest-wait.js"></script>
|
||||
<script src="/common/worklet-reftest.js"></script>
|
||||
<body>
|
||||
<div id="canvas-geometry" class="container"></div>
|
||||
|
||||
<script id="code" type="text/worklet">
|
||||
let paintInstance;
|
||||
|
||||
registerPaint('geometry', class {
|
||||
constructor() {
|
||||
paintInstance = this;
|
||||
}
|
||||
paint(ctx, geom) {
|
||||
if (this === paintInstance)
|
||||
ctx.fillStyle = 'green';
|
||||
else
|
||||
ctx.fillStyle = 'red';
|
||||
ctx.fillRect(0, 0, geom.width, geom.height);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<script>
|
||||
importWorkletAndTerminateTestAfterAsyncPaint(CSS.paintWorklet, document.getElementById('code').textContent);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -8,43 +8,14 @@ testing plan](making-a-testing-plan) will help you decide what to write.
|
|||
|
||||
There's also a load of [general guidelines](general-guidelines) that apply to all tests.
|
||||
|
||||
```eval_rst
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
## Test Types
|
||||
|
||||
general-guidelines
|
||||
ahem
|
||||
assumptions
|
||||
crashtest
|
||||
css-metadata
|
||||
css-user-styles
|
||||
file-names
|
||||
h2tests
|
||||
lint-tool
|
||||
making-a-testing-plan
|
||||
manual
|
||||
reftest-tutorial
|
||||
reftests
|
||||
print-reftests
|
||||
rendering
|
||||
server-features
|
||||
submission-process
|
||||
testdriver
|
||||
testdriver-extension-tutorial
|
||||
testharness
|
||||
testharness-tutorial
|
||||
tools
|
||||
visual
|
||||
wdspec
|
||||
test-templates
|
||||
github-intro
|
||||
```
|
||||
There are various different ways of writing tests:
|
||||
|
||||
## Test Type
|
||||
|
||||
Tests in this project use a few different approaches to verify expected
|
||||
behavior. The tests can be classified based on the way they express
|
||||
expectations:
|
||||
* [JavaScript tests (testharness.js)](testharness) are preferred for testing APIs and may be used
|
||||
for other features too. They are built with the testharness.js unit testing framework, and consist
|
||||
of assertions written in JavaScript. A high-level [testharness.js tutorial](testharness-tutorial)
|
||||
is available.
|
||||
|
||||
* Rendering tests should be used to verify that the browser graphically
|
||||
displays pages as expected. See the [rendering test guidelines](rendering)
|
||||
|
@ -53,7 +24,8 @@ expectations:
|
|||
|
||||
* [Reftests](reftests) should be used to test rendering and layout. They
|
||||
consist of two or more pages with assertions as to whether they render
|
||||
identically or not.
|
||||
identically or not. A high-level [reftest tutorial](reftest-tutorial) is available. A
|
||||
[print reftests](print-reftests) variant is available too.
|
||||
|
||||
* [Visual tests](visual) should be used for checking rendering where there is
|
||||
a large number of conforming renderings such that reftests are impractical.
|
||||
|
@ -61,10 +33,6 @@ expectations:
|
|||
screenshot can be taken and compared to an expected rendering for that user
|
||||
agent on that platform.
|
||||
|
||||
* [testharness.js](testharness) tests should be used (where possible!) for
|
||||
testing everything else. They are built with the testharness.js unit testing
|
||||
framework, and consist of assertions written in JavaScript.
|
||||
|
||||
* [Crashtests](crashtest) tests are used to check that the browser is
|
||||
able to load a given document without crashing or experiencing other
|
||||
low-level issues (asserts, leaks, etc.). They pass if the load
|
||||
|
@ -78,14 +46,6 @@ expectations:
|
|||
tested using any of the above. They consist of a page that needs manual
|
||||
interaction or verification of the final result.
|
||||
|
||||
In general, there is a strong preference towards reftests and testharness.js
|
||||
tests types (as they can be easily run without human interaction), so they
|
||||
should be used in preference to the others even if it results in a
|
||||
somewhat cumbersome test; there is a far weaker preference between the
|
||||
two test types, and it is at times advisable to use testharness.js tests
|
||||
for things which would typically be tested using reftests but for
|
||||
which it would be overly cumbersome.
|
||||
|
||||
See [file names](file-names) for test types and features determined by the file names,
|
||||
and [server features](server-features) for advanced testing features.
|
||||
|
||||
|
@ -94,3 +54,37 @@ and [server features](server-features) for advanced testing features.
|
|||
Once you've written tests, please submit them using
|
||||
the [typical GitHub Pull Request workflow](submission-process); please
|
||||
make sure you run the [`lint` script](lint-tool) before opening a pull request!
|
||||
|
||||
## Table of Contents
|
||||
|
||||
```eval_rst
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
general-guidelines
|
||||
making-a-testing-plan
|
||||
testharness
|
||||
testharness-tutorial
|
||||
rendering
|
||||
reftests
|
||||
reftest-tutorial
|
||||
print-reftests
|
||||
visual
|
||||
crashtest
|
||||
wdspec
|
||||
manual
|
||||
file-names
|
||||
server-features
|
||||
submission-process
|
||||
lint-tool
|
||||
ahem
|
||||
assumptions
|
||||
css-metadata
|
||||
css-user-styles
|
||||
h2tests
|
||||
testdriver
|
||||
testdriver-extension-tutorial
|
||||
tools
|
||||
test-templates
|
||||
github-intro
|
||||
```
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# testharness.js Tests
|
||||
# JavaScript Tests (testharness.js)
|
||||
|
||||
```eval_rst
|
||||
.. toctree::
|
||||
|
|
|
@ -78,4 +78,21 @@ test(function() {
|
|||
assert_equals(invoked_count, 0, "The handler should have been removed");
|
||||
}, "Once listener should be added / removed like normal listeners");
|
||||
|
||||
test(function() {
|
||||
var invoked_count = 0;
|
||||
|
||||
for (let n = 4; n > 0; n--) {
|
||||
document.addEventListener('test', (e) => {
|
||||
invoked_count++;
|
||||
e.stopImmediatePropagation();
|
||||
}, {once: true});
|
||||
}
|
||||
|
||||
for (let n = 4; n > 0; n--) {
|
||||
document.dispatchEvent(new Event('test'));
|
||||
}
|
||||
|
||||
assert_equals(invoked_count, 4, "The listeners should be invoked");
|
||||
}, "Multiple once listeners should be invoked even if the stopImmediatePropagation is set");
|
||||
|
||||
</script>
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
<!DOCTYPE HTML>
|
||||
<meta charset=utf-8>
|
||||
<title>MutationObserver: callback arguments</title>
|
||||
<link rel="help" href="https://dom.spec.whatwg.org/#notify-mutation-observers">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id="mo-target"></div>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
"use strict";
|
||||
|
||||
async_test(t => {
|
||||
const moTarget = document.querySelector("#mo-target");
|
||||
const mo = new MutationObserver(function(records, observer) {
|
||||
t.step(() => {
|
||||
assert_equals(this, mo);
|
||||
assert_equals(arguments.length, 2);
|
||||
assert_true(Array.isArray(records));
|
||||
assert_equals(records.length, 1);
|
||||
assert_true(records[0] instanceof MutationRecord);
|
||||
assert_equals(observer, mo);
|
||||
|
||||
mo.disconnect();
|
||||
t.done();
|
||||
});
|
||||
});
|
||||
|
||||
mo.observe(moTarget, {attributes: true});
|
||||
moTarget.className = "trigger-mutation";
|
||||
}, "Callback is invoked with |this| value of MutationObserver and two arguments");
|
||||
</script>
|
|
@ -1,3 +1,6 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<meta name="timeout" content="long">
|
||||
<title>
|
||||
Check the ReportingObserver(s) are notified about the coop-access-violation
|
||||
events.
|
||||
|
@ -12,8 +15,10 @@
|
|||
|
||||
const directory = "/html/cross-origin-opener-policy/reporting";
|
||||
const executor_path = directory + "/resources/executor.html?pipe=";
|
||||
const https = get_host_info().HTTPS_ORIGIN;
|
||||
const same_origin = get_host_info().HTTPS_ORIGIN;
|
||||
const cross_site = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
|
||||
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
|
||||
const corp_header = '|header(Cross-Origin-Resource-Policy,cross-origin)';
|
||||
|
||||
promise_test(async t => {
|
||||
// This test window.
|
||||
|
@ -22,13 +27,13 @@ promise_test(async t => {
|
|||
// The "opener" window, using COOP-Report-Only and a reporter.
|
||||
const opener_token = token();
|
||||
const opener_reportTo = reportToHeaders(token());
|
||||
const opener_url = https + executor_path + opener_reportTo.header +
|
||||
const opener_url = same_origin + executor_path + opener_reportTo.header +
|
||||
opener_reportTo.coopReportOnlySameOriginHeader + coep_header +
|
||||
`&uuid=${opener_token}`;
|
||||
|
||||
// The "openee" window, NOT using COOP.
|
||||
const openee_token = token();
|
||||
const openee_url = https + executor_path + `&uuid=${openee_token}`;
|
||||
const openee_url = same_origin + executor_path + `&uuid=${openee_token}`;
|
||||
|
||||
// 1. Create the opener window.
|
||||
window.open(opener_url);
|
||||
|
@ -82,12 +87,12 @@ promise_test(async t => {
|
|||
|
||||
// The "opener" window, NOT using COOP.
|
||||
const opener_token = token();
|
||||
const opener_url = https + executor_path + `&uuid=${opener_token}`;
|
||||
const opener_url = same_origin + executor_path + `&uuid=${opener_token}`;
|
||||
|
||||
// The "openee" window, using COOP-Report-Only and a reporter.
|
||||
const openee_token = token();
|
||||
const openee_reportTo = reportToHeaders(token());
|
||||
const openee_url = https + executor_path + openee_reportTo.header +
|
||||
const openee_url = same_origin + executor_path + openee_reportTo.header +
|
||||
openee_reportTo.coopReportOnlySameOriginHeader + coep_header +
|
||||
`&uuid=${openee_token}`;
|
||||
|
||||
|
@ -132,4 +137,126 @@ promise_test(async t => {
|
|||
let report_access_to = JSON.parse(await receive(this_window_token));
|
||||
assert_equals(report_access_to.length, 0, "Unexpected report received.");
|
||||
}, "Openee COOP");
|
||||
|
||||
promise_test(async t => {
|
||||
// This test window.
|
||||
const this_window_token = token();
|
||||
|
||||
// The "opener" window, using COOP-Report-Only and a reporter.
|
||||
const opener_token = token();
|
||||
const opener_reportTo = reportToHeaders(token());
|
||||
const opener_url = same_origin + executor_path + opener_reportTo.header +
|
||||
opener_reportTo.coopReportOnlySameOriginHeader + coep_header +
|
||||
`&uuid=${opener_token}`;
|
||||
|
||||
// The "opener's iframe", same-origin with its parent.
|
||||
const opener_iframe_token = token();
|
||||
const opener_iframe_url = same_origin + executor_path + coep_header +
|
||||
`&uuid=${opener_iframe_token}`;
|
||||
|
||||
// The "openee" window, NOT using COOP.
|
||||
const openee_token = token();
|
||||
const openee_url = same_origin + executor_path + coep_header +
|
||||
`&uuid=${openee_token}`;
|
||||
|
||||
// 1. Create the opener window.
|
||||
window.open(opener_url);
|
||||
t.add_cleanup(() => send(opener_token, "window.close();"));
|
||||
|
||||
// 2. The opener opens an iframe, and install a ReportingObserver to catch
|
||||
// future accesses.
|
||||
send(opener_token, `
|
||||
iframe = document.createElement("iframe");
|
||||
iframe.src = "${opener_iframe_url}";
|
||||
document.body.appendChild(iframe);
|
||||
|
||||
let observer = new ReportingObserver(reports => {
|
||||
send("${this_window_token}", JSON.stringify(reports));
|
||||
observer.disconnect();
|
||||
});
|
||||
observer.observe();
|
||||
`);
|
||||
|
||||
// 3. The iframe opens the openee.
|
||||
send(opener_iframe_token, `openee = window.open('${openee_url}');`);
|
||||
t.add_cleanup(() => send(openee_token, `window.close();`));
|
||||
|
||||
// 4. Wait for the openee to load its document.
|
||||
send(openee_token, `send("${this_window_token}", "Ready");`);
|
||||
assert_equals(await receive(this_window_token), "Ready");
|
||||
|
||||
// 4. The opener's iframe tries to access the openee. This is an
|
||||
// "access-from-coop-page" from a same-origin iframe, so the
|
||||
// ReportingObserver(s) are notified.
|
||||
send(opener_iframe_token, `tryAccess(openee);`);
|
||||
|
||||
let reports = await receive(this_window_token);
|
||||
assert_not_equals(reports, "timeout", "No report received.");
|
||||
reports = JSON.parse(reports);
|
||||
assert_equals(reports.length, 1, "No report received.");
|
||||
assert_equals(reports[0].type, "coop-access-violation");
|
||||
assert_equals(reports[0].url, opener_url.replace(/"/g, '%22'));
|
||||
assert_true(reports[0].body.sourceFile.includes("try-access.js"));
|
||||
assert_equals(reports[0].body.lineNumber, 6);
|
||||
assert_equals(reports[0].body.columnNumber, 7);
|
||||
assert_equals(reports[0].body.property, "blur");
|
||||
}, "Access from same-origin iframe")
|
||||
|
||||
promise_test(async t => {
|
||||
// This test window.
|
||||
const this_window_token = token();
|
||||
|
||||
// The "opener" window, using COOP-Report-Only and a reporter.
|
||||
const opener_token = token();
|
||||
const opener_reportTo = reportToHeaders(token());
|
||||
const opener_url = same_origin + executor_path + opener_reportTo.header +
|
||||
opener_reportTo.coopReportOnlySameOriginHeader + coep_header +
|
||||
`&uuid=${opener_token}`;
|
||||
|
||||
// The "opener's iframe", same-origin with its parent.
|
||||
const opener_iframe_token = token();
|
||||
const opener_iframe_url = cross_site + executor_path + coep_header +
|
||||
corp_header +
|
||||
`&uuid=${opener_iframe_token}`;
|
||||
|
||||
// The "openee" window, NOT using COOP.
|
||||
const openee_token = token();
|
||||
const openee_url = same_origin + executor_path + coep_header +
|
||||
`&uuid=${openee_token}`;
|
||||
|
||||
// 1. Create the opener window.
|
||||
window.open(opener_url);
|
||||
t.add_cleanup(() => send(opener_token, "window.close();"));
|
||||
|
||||
// 2. The opener opens an iframe, and install a ReportingObserver to catch
|
||||
// future accesses.
|
||||
send(opener_token, `
|
||||
iframe = document.createElement("iframe");
|
||||
iframe.src = "${opener_iframe_url}";
|
||||
document.body.appendChild(iframe);
|
||||
|
||||
let observer = new ReportingObserver(reports => {
|
||||
send("${this_window_token}", JSON.stringify(reports));
|
||||
observer.disconnect();
|
||||
});
|
||||
observer.observe();
|
||||
`);
|
||||
|
||||
// 3. The iframe opens the openee.
|
||||
send(opener_iframe_token, `openee = window.open('${openee_url}');`);
|
||||
t.add_cleanup(() => send(openee_token, `window.close();`));
|
||||
|
||||
// 4. Wait for the openee to load its document.
|
||||
send(openee_token, `send("${this_window_token}", "Ready");`);
|
||||
assert_equals(await receive(this_window_token), "Ready");
|
||||
|
||||
// 5. The opener's iframe tries to access the openee. This is an
|
||||
// "access-from-coop-page" from a cross-site iframe. The ReportingObservers
|
||||
// from the main document aren't notified.
|
||||
send(opener_iframe_token, `tryAccess(openee);`);
|
||||
|
||||
let reports = await receive(this_window_token);
|
||||
assert_equals(reports, "timeout", "Unexpected report received.");
|
||||
}, "Access from cross-site iframe")
|
||||
|
||||
</script>
|
||||
|
|
|
@ -9,12 +9,19 @@ def main(request, response):
|
|||
return b''
|
||||
|
||||
uuid = request.GET[b'uuid']
|
||||
stash = request.server.stash;
|
||||
with stash.lock:
|
||||
queue = stash.take(uuid)
|
||||
if queue is None:
|
||||
queue = []
|
||||
|
||||
if request.method == u'POST':
|
||||
return request.server.stash.put(uuid, request.body)
|
||||
else:
|
||||
body = request.server.stash.take(uuid)
|
||||
if body is None:
|
||||
return b'not ready'
|
||||
if request.method == u'POST':
|
||||
queue.append(request.body)
|
||||
ret = b'done'
|
||||
else:
|
||||
return body
|
||||
if len(queue) == 0:
|
||||
ret = b'not ready'
|
||||
else:
|
||||
ret = queue.pop(0)
|
||||
stash.put(uuid, queue)
|
||||
return ret;
|
||||
|
|
|
@ -81,4 +81,15 @@ legend {
|
|||
testElm.querySelector('div').offsetTop, 'offsetTop')
|
||||
|
||||
}, "Inline flex");
|
||||
|
||||
test(() => {
|
||||
const testElm = document.getElementById('test');
|
||||
testElm.style.flexDirection = 'row';
|
||||
const item0 = testElm.querySelectorAll('div')[0];
|
||||
const item1 = testElm.querySelectorAll('div')[1];
|
||||
assert_equals(item0.offsetTop, item1.offsetTop);
|
||||
|
||||
testElm.style.flexDirection = 'column';
|
||||
assert_true(item0.offsetTop < item1.offsetTop);
|
||||
}, "Dynamic change of flex-direction");
|
||||
</script>
|
||||
|
|
|
@ -33,7 +33,10 @@ destIFrame.onload = () => {
|
|||
++destLoadCount;
|
||||
|
||||
if (destLoadCount === 2) {
|
||||
assert_unreached("The iframe into which the meta was moved must not refresh");
|
||||
// destIFrame doesn't have the sandboxed automatic features browsing context
|
||||
// flag sets, thus navigated.
|
||||
assert_equals(destIFrame.contentDocument.body.textContent.trim(), "foo");
|
||||
done();
|
||||
}
|
||||
|
||||
maybeStartTest();
|
||||
|
@ -41,9 +44,6 @@ destIFrame.onload = () => {
|
|||
|
||||
function maybeStartTest() {
|
||||
if (sourceLoadCount === 1 && destLoadCount === 1) {
|
||||
// Test that no refreshes occur within 3 seconds
|
||||
step_timeout(done, 3000);
|
||||
|
||||
const meta = sourceIFrame.contentDocument.querySelector("meta");
|
||||
destIFrame.contentDocument.body.appendChild(meta);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
<!DOCTYPE HTML>
|
||||
<meta charset=utf-8>
|
||||
<title>IntersectionObserver: callback arguments</title>
|
||||
<link rel="help" href="https://w3c.github.io/IntersectionObserver/#notify-intersection-observers-algo">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
"use strict";
|
||||
|
||||
async_test(t => {
|
||||
const io = new IntersectionObserver(function(entries, observer) {
|
||||
t.step(() => {
|
||||
assert_equals(this, io);
|
||||
assert_equals(arguments.length, 2);
|
||||
assert_true(Array.isArray(entries));
|
||||
assert_equals(entries.length, 1);
|
||||
assert_true(entries[0] instanceof IntersectionObserverEntry);
|
||||
assert_equals(observer, io);
|
||||
|
||||
io.disconnect();
|
||||
t.done();
|
||||
});
|
||||
});
|
||||
|
||||
io.observe(document.body);
|
||||
}, "Callback is invoked with |this| value of IntersectionObserver and two arguments");
|
||||
</script>
|
|
@ -0,0 +1,32 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Layout Instability: parent (with overflow:hidden) and child moved together</title>
|
||||
<link rel="help" href="https://wicg.github.io/layout-instability/" />
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/util.js"></script>
|
||||
<div id="parent" style="position: relative; width: 200px; height: 200px;
|
||||
border: 50px solid blue; overflow: hidden">
|
||||
<div id="child" style="height: 400px"></div>
|
||||
</div>
|
||||
<script>
|
||||
|
||||
promise_test(async () => {
|
||||
const watcher = new ScoreWatcher;
|
||||
|
||||
// Wait for the initial render to complete.
|
||||
await waitForAnimationFrames(2);
|
||||
|
||||
// Modify the position of the div.
|
||||
const parent = document.querySelector("#parent");
|
||||
parent.style.top = '100px';
|
||||
|
||||
// Only the parent area should be reported.
|
||||
const expectedScore = computeExpectedScore(300 * (300 + 100), 100);
|
||||
|
||||
// Observer fires after the frame is painted.
|
||||
assert_equals(watcher.score, 0);
|
||||
await watcher.promise;
|
||||
assert_equals(watcher.score, expectedScore);
|
||||
}, 'Parent (with overflow:hidden) and child moved together.');
|
||||
|
||||
</script>
|
|
@ -0,0 +1,34 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Layout Instability: parent/child moved together</title>
|
||||
<link rel="help" href="https://wicg.github.io/layout-instability/" />
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/util.js"></script>
|
||||
<div id="parent" style="position: relative; width: 100px; height: 100px; border: 100px solid blue">
|
||||
<div id="child" style="height: 300px"></div>
|
||||
</div>
|
||||
<script>
|
||||
|
||||
promise_test(async () => {
|
||||
const watcher = new ScoreWatcher;
|
||||
|
||||
// Wait for the initial render to complete.
|
||||
await waitForAnimationFrames(2);
|
||||
|
||||
// Modify the position of the div.
|
||||
const parent = document.querySelector("#parent");
|
||||
parent.style.top = '100px';
|
||||
|
||||
// If the implementation reports child and parent separately
|
||||
// (overlapping are should be excluded):
|
||||
const expectedScoreMin = computeExpectedScore(300 * (300 + 100) + 100 * 100, 100);
|
||||
// If the implementation reports parent bounding box (including child):
|
||||
const expectedScoreMax = computeExpectedScore(300 * (400 + 100), 100);
|
||||
|
||||
// Observer fires after the frame is painted.
|
||||
assert_equals(watcher.score, 0);
|
||||
await watcher.promise;
|
||||
assert_between_inclusive(watcher.score, expectedScoreMin, expectedScoreMax);
|
||||
}, 'Parent/child movement.');
|
||||
|
||||
</script>
|
|
@ -0,0 +1,44 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Layout Instability: vertical-rl inline/text movement is detected</title>
|
||||
<link rel="help" href="https://wicg.github.io/layout-instability/" />
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/util.js"></script>
|
||||
<body style="writing-mode: vertical-rl">
|
||||
<div style="height: 200px; font-size: 20px; line-height: 25px">
|
||||
1AAAAAAA<br>
|
||||
2AAAAAAA<br>
|
||||
3AAAAAAA<br>
|
||||
<div id="inline-block" style="display: inline-block; width: 50px">4AAAAAAA</div><br>
|
||||
5AAAAAAA<br>
|
||||
6AAAAAAA<br>
|
||||
7AAAAAAA<br>
|
||||
</div>
|
||||
<script>
|
||||
|
||||
promise_test(async () => {
|
||||
const watcher = new ScoreWatcher;
|
||||
|
||||
// Wait for the initial render to complete.
|
||||
await waitForAnimationFrames(2);
|
||||
|
||||
// Modify the position of the div.
|
||||
const inline_block = document.querySelector("#inline-block");
|
||||
inline_block.style.width = '100px';
|
||||
|
||||
// The lines below the inline-block are shifted down by 50px.
|
||||
// The implementation may measure the real width of the shifted text
|
||||
// or use the available width (i.e. width of the containing block).
|
||||
// Also tolerate extra 10% error.
|
||||
const text_width = inline_block.offsetWidth;
|
||||
const expectedScoreMin = computeExpectedScore(text_width * (30 * 3 + 50), 50) * 0.9;
|
||||
const expectedScoreMax = computeExpectedScore(200 * (30 * 3 + 50), 50) * 1.1;
|
||||
|
||||
// Observer fires after the frame is painted.
|
||||
assert_equals(watcher.score, 0);
|
||||
await watcher.promise;
|
||||
assert_between_exclusive(watcher.score, expectedScoreMin, expectedScoreMax);
|
||||
}, 'Vertical-rl inline flow movement.');
|
||||
|
||||
</script>
|
||||
</body>
|
|
@ -0,0 +1,42 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Layout Instability: inline/text movement is detected</title>
|
||||
<link rel="help" href="https://wicg.github.io/layout-instability/" />
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/util.js"></script>
|
||||
<div style="width: 200px; font-size: 20px; line-height: 25px">
|
||||
1AAAAAAA<br>
|
||||
2AAAAAAA<br>
|
||||
3AAAAAAA<br>
|
||||
<div id="inline-block" style="display: inline-block; height: 50px">4AAAAAAA</div><br>
|
||||
5AAAAAAA<br>
|
||||
6AAAAAAA<br>
|
||||
7AAAAAAA<br>
|
||||
</div>
|
||||
<script>
|
||||
|
||||
promise_test(async () => {
|
||||
const watcher = new ScoreWatcher;
|
||||
|
||||
// Wait for the initial render to complete.
|
||||
await waitForAnimationFrames(2);
|
||||
|
||||
// Modify the position of the div.
|
||||
const inline_block = document.querySelector("#inline-block");
|
||||
inline_block.style.height = '100px';
|
||||
|
||||
// The lines below the inline-block are shifted down by 50px.
|
||||
// The implementation may measure the real width of the shifted text
|
||||
// or use the available width (i.e. width of the containing block).
|
||||
// Also tolerate extra 10% error.
|
||||
const text_width = inline_block.offsetWidth;
|
||||
const expectedScoreMin = computeExpectedScore(text_width * (30 * 3 + 50), 50) * 0.9;
|
||||
const expectedScoreMax = computeExpectedScore(200 * (30 * 3 + 50), 50) * 1.1;
|
||||
|
||||
// Observer fires after the frame is painted.
|
||||
assert_equals(watcher.score, 0);
|
||||
await watcher.promise;
|
||||
assert_between_exclusive(watcher.score, expectedScoreMin, expectedScoreMax);
|
||||
}, 'Inline flow movement.');
|
||||
|
||||
</script>
|
21
tests/wpt/web-platform-tests/layout-instability/outline.html
Normal file
21
tests/wpt/web-platform-tests/layout-instability/outline.html
Normal file
|
@ -0,0 +1,21 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Layout Instability: outline doesn't contribute to layout shift</title>
|
||||
<link rel="help" href="https://wicg.github.io/layout-instability/" />
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/util.js"></script>
|
||||
<div id="target" style="width: 300px; height: 300px"></div>
|
||||
<script>
|
||||
promise_test(async () => {
|
||||
const watcher = new ScoreWatcher;
|
||||
|
||||
// Wait for the initial render to complete.
|
||||
await waitForAnimationFrames(2);
|
||||
|
||||
// Add outline for target. This should not generate a shift.
|
||||
target.style.outline = "10px solid blue";
|
||||
|
||||
await waitForAnimationFrames(3);
|
||||
assert_equals(watcher.score, 0);
|
||||
}, "Outline.");
|
||||
</script>
|
|
@ -0,0 +1,199 @@
|
|||
<!DOCTYPE HTML>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="/resources/testdriver-actions.js"></script>
|
||||
<script type="text/javascript" src="../pointerevent_support.js"></script>
|
||||
<style>
|
||||
div.box {
|
||||
margin: 10px;
|
||||
padding: 50px;
|
||||
float: left;
|
||||
}
|
||||
</style>
|
||||
<h1>Verifies the effect of pointer event prevent-default on following pointer & mouse events.</h1>
|
||||
<div id="target" class="box" style="background-color:green;">
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var receivedEvents = [];
|
||||
var mouseEventList = ["mousedown", "mouseup", "mouseenter", "mouseleave", "mouseover", "mouseout", "mousemove"];
|
||||
var pointerEventList = ["pointerdown", "pointerup", "pointerenter", "pointerleave", "pointerover", "pointerout", "pointermove"];
|
||||
|
||||
var preventDefaultList = ["none"].concat(pointerEventList);
|
||||
var eventToPreventDefault = "";
|
||||
var seqNo = 0;
|
||||
|
||||
function init() {
|
||||
var targetDiv = document.getElementById("target");
|
||||
|
||||
mouseEventList.forEach(function(eventName) {
|
||||
targetDiv.addEventListener(eventName, function(event) {
|
||||
++seqNo;
|
||||
receivedEvents.push(`${seqNo}.${eventName}@target`);
|
||||
});
|
||||
});
|
||||
|
||||
pointerEventList.forEach(function(eventName) {
|
||||
targetDiv.addEventListener(eventName, function(event) {
|
||||
var preventDefaultMsg = "";
|
||||
if (event.type == eventToPreventDefault) {
|
||||
event.preventDefault();
|
||||
preventDefaultMsg = "_prevented_default";
|
||||
}
|
||||
++seqNo;
|
||||
receivedEvents.push(`${seqNo}.${eventName}@target${preventDefaultMsg}`);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
var expectedEvents = new Map([
|
||||
["none", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target",
|
||||
"4.mouseenter@target", "5.pointermove@target", "6.mousemove@target",
|
||||
"7.pointerdown@target", "8.mousedown@target", "9.pointerup@target",
|
||||
"10.mouseup@target", "11.pointerdown@target", "12.mousedown@target",
|
||||
"13.pointermove@target", "14.mousemove@target", "15.pointerout@target",
|
||||
"16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target",
|
||||
"19.pointerover@target", "20.pointerenter@target", "21.mouseover@target",
|
||||
"22.mouseenter@target", "23.pointermove@target", "24.mousemove@target",
|
||||
"25.pointerup@target", "26.mouseup@target", "27.pointerout@target",
|
||||
"28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"
|
||||
]],
|
||||
["pointerdown", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target",
|
||||
"4.mouseenter@target", "5.pointermove@target", "6.mousemove@target",
|
||||
"7.pointerdown@target_prevented_default", "8.pointerup@target",
|
||||
"9.pointerdown@target_prevented_default",
|
||||
"10.pointermove@target", "11.pointerout@target", "12.pointerleave@target",
|
||||
"13.mouseout@target", "14.mouseleave@target", "15.pointerover@target",
|
||||
"16.pointerenter@target", "17.mouseover@target", "18.mouseenter@target",
|
||||
"19.pointermove@target", "20.pointerup@target", "21.pointerout@target",
|
||||
"22.pointerleave@target", "23.mouseout@target", "24.mouseleave@target"
|
||||
]],
|
||||
["pointerup", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target",
|
||||
"4.mouseenter@target", "5.pointermove@target", "6.mousemove@target",
|
||||
"7.pointerdown@target", "8.mousedown@target", "9.pointerup@target_prevented_default",
|
||||
"10.mouseup@target", "11.pointerdown@target", "12.mousedown@target",
|
||||
"13.pointermove@target", "14.mousemove@target", "15.pointerout@target",
|
||||
"16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target",
|
||||
"19.pointerover@target", "20.pointerenter@target", "21.mouseover@target",
|
||||
"22.mouseenter@target", "23.pointermove@target", "24.mousemove@target",
|
||||
"25.pointerup@target_prevented_default", "26.mouseup@target", "27.pointerout@target",
|
||||
"28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"]],
|
||||
["pointerenter", ["1.pointerover@target", "2.pointerenter@target_prevented_default", "3.mouseover@target",
|
||||
"4.mouseenter@target", "5.pointermove@target", "6.mousemove@target",
|
||||
"7.pointerdown@target", "8.mousedown@target", "9.pointerup@target",
|
||||
"10.mouseup@target", "11.pointerdown@target", "12.mousedown@target",
|
||||
"13.pointermove@target", "14.mousemove@target", "15.pointerout@target",
|
||||
"16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target",
|
||||
"19.pointerover@target", "20.pointerenter@target_prevented_default", "21.mouseover@target",
|
||||
"22.mouseenter@target", "23.pointermove@target", "24.mousemove@target",
|
||||
"25.pointerup@target", "26.mouseup@target", "27.pointerout@target",
|
||||
"28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"]],
|
||||
["pointerleave", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target",
|
||||
"4.mouseenter@target", "5.pointermove@target", "6.mousemove@target",
|
||||
"7.pointerdown@target", "8.mousedown@target", "9.pointerup@target",
|
||||
"10.mouseup@target", "11.pointerdown@target", "12.mousedown@target",
|
||||
"13.pointermove@target", "14.mousemove@target", "15.pointerout@target",
|
||||
"16.pointerleave@target_prevented_default", "17.mouseout@target", "18.mouseleave@target",
|
||||
"19.pointerover@target", "20.pointerenter@target", "21.mouseover@target",
|
||||
"22.mouseenter@target", "23.pointermove@target", "24.mousemove@target",
|
||||
"25.pointerup@target", "26.mouseup@target", "27.pointerout@target",
|
||||
"28.pointerleave@target_prevented_default", "29.mouseout@target", "30.mouseleave@target"]],
|
||||
["pointerover", ["1.pointerover@target_prevented_default", "2.pointerenter@target", "3.mouseover@target",
|
||||
"4.mouseenter@target", "5.pointermove@target", "6.mousemove@target",
|
||||
"7.pointerdown@target", "8.mousedown@target", "9.pointerup@target",
|
||||
"10.mouseup@target", "11.pointerdown@target", "12.mousedown@target",
|
||||
"13.pointermove@target", "14.mousemove@target", "15.pointerout@target",
|
||||
"16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target",
|
||||
"19.pointerover@target_prevented_default", "20.pointerenter@target", "21.mouseover@target",
|
||||
"22.mouseenter@target", "23.pointermove@target", "24.mousemove@target",
|
||||
"25.pointerup@target", "26.mouseup@target", "27.pointerout@target",
|
||||
"28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"]],
|
||||
["pointerout", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target",
|
||||
"4.mouseenter@target", "5.pointermove@target", "6.mousemove@target",
|
||||
"7.pointerdown@target", "8.mousedown@target", "9.pointerup@target",
|
||||
"10.mouseup@target", "11.pointerdown@target", "12.mousedown@target",
|
||||
"13.pointermove@target", "14.mousemove@target", "15.pointerout@target_prevented_default",
|
||||
"16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target",
|
||||
"19.pointerover@target", "20.pointerenter@target", "21.mouseover@target",
|
||||
"22.mouseenter@target", "23.pointermove@target", "24.mousemove@target",
|
||||
"25.pointerup@target", "26.mouseup@target", "27.pointerout@target_prevented_default",
|
||||
"28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"]],
|
||||
["pointermove", ["1.pointerover@target", "2.pointerenter@target", "3.mouseover@target",
|
||||
"4.mouseenter@target", "5.pointermove@target_prevented_default", "6.mousemove@target",
|
||||
"7.pointerdown@target", "8.mousedown@target", "9.pointerup@target",
|
||||
"10.mouseup@target", "11.pointerdown@target", "12.mousedown@target",
|
||||
"13.pointermove@target_prevented_default", "14.mousemove@target", "15.pointerout@target",
|
||||
"16.pointerleave@target", "17.mouseout@target", "18.mouseleave@target",
|
||||
"19.pointerover@target", "20.pointerenter@target", "21.mouseover@target",
|
||||
"22.mouseenter@target", "23.pointermove@target_prevented_default", "24.mousemove@target",
|
||||
"25.pointerup@target", "26.mouseup@target", "27.pointerout@target",
|
||||
"28.pointerleave@target", "29.mouseout@target", "30.mouseleave@target"]]
|
||||
]);
|
||||
|
||||
async function runTestForDefaultEvent(preventDefaultEvent) {
|
||||
promise_test((test)=>
|
||||
new Promise(async (resolve, reject)=>{
|
||||
test.add_cleanup(()=>{
|
||||
receivedEvents = [];
|
||||
seqNo = 0;
|
||||
eventToPreventDefault = "";
|
||||
});
|
||||
eventToPreventDefault = preventDefaultEvent;
|
||||
|
||||
try{
|
||||
// if awaited Promise rejects then fail the test
|
||||
await performActions(test, preventDefaultEvent);
|
||||
}
|
||||
catch(e){
|
||||
reject(e);
|
||||
}
|
||||
test.step(()=>{
|
||||
assert_array_equals(expectedEvents.get(preventDefaultEvent), receivedEvents);});
|
||||
resolve();
|
||||
}), `Verifies the effect of pointer event prevent-default on ${preventDefaultEvent}`);
|
||||
}
|
||||
|
||||
async function runTests(){
|
||||
// create one test for each event in preventDefaultList
|
||||
// run all tests one by one
|
||||
preventDefaultList.forEach(preventDefaultEvent=>runTestForDefaultEvent(preventDefaultEvent));
|
||||
}
|
||||
|
||||
function performActions(test, preventDefaultEvent){
|
||||
let targetDiv = document.getElementById("target");
|
||||
let rect = targetDiv.getBoundingClientRect();
|
||||
let x1 = Math.ceil(rect.left - 3);
|
||||
let y1 = Math.ceil(rect.top - 5);
|
||||
let x2 = Math.ceil(rect.left + 3);
|
||||
let y2 = Math.ceil(rect.top + 5);
|
||||
|
||||
let eventWatcher = new EventWatcher(test, targetDiv, ["mouseleave"], ()=>waitForAnimationFrames(900));
|
||||
// wait for all expected events to happen.
|
||||
// Because each test ends with mouseleave and there are 2 mouseleave events,
|
||||
// we use EventWatcher to wait for the two mouseleave events to happen
|
||||
let donePromise = eventWatcher.wait_for(["mouseleave", "mouseleave"], { record: 'all' });
|
||||
let actionsPromise = new test_driver.Actions()
|
||||
.pointerMove(0, 0)
|
||||
// start with mouse outside target
|
||||
.pointerMove(x1, y1)
|
||||
// move into target and click
|
||||
.pointerMove(x2, y2)
|
||||
.pointerDown()
|
||||
.pointerUp()
|
||||
// drag out of and into target & release within target
|
||||
.pointerDown()
|
||||
.pointerMove(x2+5, y2+5)
|
||||
.pointerMove(x1, y1)
|
||||
.pointerMove(x2, y2)
|
||||
.pointerUp()
|
||||
// move outside target again
|
||||
.pointerMove(x1, y1)
|
||||
.send();
|
||||
return Promise.all([donePromise, actionsPromise]);
|
||||
}
|
||||
|
||||
init();
|
||||
runTests();
|
||||
</script>
|
|
@ -317,6 +317,57 @@ promise_test(t => {
|
|||
|
||||
}, 'ReadableStream teeing: erroring the original should immediately error the branches');
|
||||
|
||||
promise_test(async t => {
|
||||
|
||||
let controller;
|
||||
const rs = new ReadableStream({
|
||||
start(c) {
|
||||
controller = c;
|
||||
}
|
||||
});
|
||||
|
||||
const [reader1, reader2] = rs.tee().map(branch => branch.getReader());
|
||||
const cancelPromise = reader2.cancel();
|
||||
|
||||
controller.enqueue('a');
|
||||
|
||||
const read1 = await reader1.read();
|
||||
assert_object_equals(read1, { value: 'a', done: false }, 'first read() from branch1 should fulfill with the chunk');
|
||||
|
||||
controller.close();
|
||||
|
||||
const read2 = await reader1.read();
|
||||
assert_object_equals(read2, { value: undefined, done: true }, 'second read() from branch1 should be done');
|
||||
|
||||
await Promise.all([
|
||||
reader1.closed,
|
||||
cancelPromise
|
||||
]);
|
||||
|
||||
}, 'ReadableStream teeing: canceling branch1 should finish when branch2 reads until end of stream');
|
||||
|
||||
promise_test(async t => {
|
||||
|
||||
let controller;
|
||||
const theError = { name: 'boo!' };
|
||||
const rs = new ReadableStream({
|
||||
start(c) {
|
||||
controller = c;
|
||||
}
|
||||
});
|
||||
|
||||
const [reader1, reader2] = rs.tee().map(branch => branch.getReader());
|
||||
const cancelPromise = reader2.cancel();
|
||||
|
||||
controller.error(theError);
|
||||
|
||||
await Promise.all([
|
||||
promise_rejects_exactly(t, theError, reader1.read()),
|
||||
cancelPromise
|
||||
]);
|
||||
|
||||
}, 'ReadableStream teeing: canceling branch1 should finish when original stream errors');
|
||||
|
||||
test(t => {
|
||||
|
||||
// Copy original global.
|
||||
|
|
|
@ -21,7 +21,7 @@ def get_gh_checks_outputter(kwargs):
|
|||
"""Return the outputter for GitHub Checks output, if enabled.
|
||||
|
||||
:param kwargs: The arguments passed to the program (to look for the
|
||||
--github_checks_text_file flag)
|
||||
github_checks_text_file field)
|
||||
"""
|
||||
global __outputter
|
||||
if kwargs['github_checks_text_file'] and __outputter is None:
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
"parser": "get_parser",
|
||||
"help": "Run wptserve server for WAVE",
|
||||
"virtualenv": true,
|
||||
"install": ["ua-parser"],
|
||||
"requirements": ["../wave/requirements.txt"]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ try:
|
|||
import Queue as queue # noqa: N813
|
||||
except ImportError:
|
||||
import queue
|
||||
import sys
|
||||
import tempfile
|
||||
import threading
|
||||
|
||||
|
@ -45,6 +46,8 @@ def tempfile_name():
|
|||
os.remove(name)
|
||||
|
||||
|
||||
@pytest.mark.skipif(sys.version_info >= (3, 8) and sys.platform == 'darwin',
|
||||
reason="multiprocessing test hangs in Python 3.8 on macOS (#24880)")
|
||||
def test_subprocess_exit(server_subprocesses, tempfile_name):
|
||||
timeout = 30
|
||||
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
"help": "Run tests in a browser",
|
||||
"virtualenv": true,
|
||||
"install": [
|
||||
"requests",
|
||||
"zstandard"
|
||||
],
|
||||
"requirements": [
|
||||
|
@ -25,9 +24,6 @@
|
|||
"parser": "create_parser_update",
|
||||
"help": "Update expectations files from raw logs.",
|
||||
"virtualenv": true,
|
||||
"install": [
|
||||
"requests"
|
||||
],
|
||||
"requirements": [
|
||||
"../wptrunner/requirements.txt"
|
||||
]
|
||||
|
@ -51,6 +47,7 @@
|
|||
"script": "run",
|
||||
"parser": "get_parser",
|
||||
"help": "Install browser components",
|
||||
"virtualenv": true,
|
||||
"install": [
|
||||
"mozinstall"
|
||||
]
|
||||
|
|
|
@ -188,6 +188,8 @@ def test_run_zero_tests():
|
|||
|
||||
@pytest.mark.slow
|
||||
@pytest.mark.remote_network
|
||||
@pytest.mark.skipif(sys.version_info >= (3, 8) and sys.platform == 'darwin',
|
||||
reason="multiprocessing test hangs in Python 3.8 on macOS (#24880)")
|
||||
def test_run_failing_test():
|
||||
"""Failing tests should be reported with a non-zero exit status unless the
|
||||
`--no-fail-on-unexpected` option has been specified."""
|
||||
|
@ -211,6 +213,8 @@ def test_run_failing_test():
|
|||
|
||||
@pytest.mark.slow
|
||||
@pytest.mark.remote_network
|
||||
@pytest.mark.skipif(sys.version_info >= (3, 8) and sys.platform == 'darwin',
|
||||
reason="multiprocessing test hangs in Python 3.8 on macOS (#24880)")
|
||||
def test_run_verify_unstable(temp_test):
|
||||
"""Unstable tests should be reported with a non-zero exit status. Stable
|
||||
tests should be reported with a zero exit status."""
|
||||
|
|
|
@ -38,6 +38,8 @@ def load_commands():
|
|||
"requirements": [os.path.join(base_dir, item)
|
||||
for item in props.get("requirements", [])]
|
||||
}
|
||||
if rv[command]["install"] or rv[command]["requirements"]:
|
||||
assert rv[command]["virtualenv"]
|
||||
return rv
|
||||
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue