mirror of
https://github.com/servo/servo.git
synced 2025-08-13 09:25:32 +01:00
Update web-platform-tests to revision 615bb572c95add74ca4fb9fed4af5269a49cf4ef
This commit is contained in:
parent
b628b6ef8e
commit
0aa76d7524
162 changed files with 2069 additions and 636 deletions
|
@ -3,6 +3,7 @@ import pytest
|
|||
from tests.support.asserts import assert_error, assert_success
|
||||
from tests.support.inline import inline
|
||||
|
||||
|
||||
def element_click(session, element):
|
||||
return session.transport.send(
|
||||
"POST", "session/{session_id}/element/{element_id}/click".format(
|
||||
|
@ -10,6 +11,38 @@ def element_click(session, element):
|
|||
element_id=element.id))
|
||||
|
||||
|
||||
def test_display_none(session):
|
||||
session.url = inline("""<button style="display: none">foobar</button>""")
|
||||
element = session.find.css("button", all=False)
|
||||
|
||||
response = element_click(session, element)
|
||||
assert_error(response, "element not interactable")
|
||||
|
||||
|
||||
def test_visibility_hidden(session):
|
||||
session.url = inline("""<button style="visibility: hidden">foobar</button>""")
|
||||
element = session.find.css("button", all=False)
|
||||
|
||||
response = element_click(session, element)
|
||||
assert_error(response, "element not interactable")
|
||||
|
||||
|
||||
def test_hidden(session):
|
||||
session.url = inline("<button hidden>foobar</button>")
|
||||
element = session.find.css("button", all=False)
|
||||
|
||||
response = element_click(session, element)
|
||||
assert_error(response, "element not interactable")
|
||||
|
||||
|
||||
def test_disabled(session):
|
||||
session.url = inline("""<button disabled>foobar</button>""")
|
||||
element = session.find.css("button", all=False)
|
||||
|
||||
response = element_click(session, element)
|
||||
assert_success(response)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("transform", ["translate(-100px, -100px)", "rotate(50deg)"])
|
||||
def test_element_not_interactable_css_transform(session, transform):
|
||||
session.url = inline("""
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
import pytest
|
||||
|
||||
from tests.support.asserts import assert_error, assert_files_uploaded, assert_success
|
||||
from tests.support.inline import inline
|
||||
|
||||
|
@ -140,3 +142,87 @@ def test_single_file_appends_with_multiple_attribute(session, create_files):
|
|||
assert_success(response)
|
||||
|
||||
assert_files_uploaded(session, element, files)
|
||||
|
||||
|
||||
def test_transparent(session, create_files):
|
||||
files = create_files(["foo"])
|
||||
session.url = inline("""<input type=file style="opacity: 0">""")
|
||||
element = session.find.css("input", all=False)
|
||||
|
||||
response = element_send_keys(session, element, str(files[0]))
|
||||
assert_success(response)
|
||||
assert_files_uploaded(session, element, files)
|
||||
|
||||
|
||||
def test_obscured(session, create_files):
|
||||
files = create_files(["foo"])
|
||||
session.url = inline("""
|
||||
<style>
|
||||
div {
|
||||
position: absolute;
|
||||
width: 100vh;
|
||||
height: 100vh;
|
||||
background: blue;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
<input type=file>
|
||||
<div></div>
|
||||
""")
|
||||
element = session.find.css("input", all=False)
|
||||
|
||||
response = element_send_keys(session, element, str(files[0]))
|
||||
assert_success(response)
|
||||
assert_files_uploaded(session, element, files)
|
||||
|
||||
|
||||
def test_outside_viewport(session, create_files):
|
||||
files = create_files(["foo"])
|
||||
session.url = inline("""<input type=file style="margin-left: -100vh">""")
|
||||
element = session.find.css("input", all=False)
|
||||
|
||||
response = element_send_keys(session, element, str(files[0]))
|
||||
assert_success(response)
|
||||
assert_files_uploaded(session, element, files)
|
||||
|
||||
|
||||
def test_hidden(session, create_files):
|
||||
files = create_files(["foo"])
|
||||
session.url = inline("<input type=file hidden>")
|
||||
element = session.find.css("input", all=False)
|
||||
|
||||
response = element_send_keys(session, element, str(files[0]))
|
||||
assert_success(response)
|
||||
assert_files_uploaded(session, element, files)
|
||||
|
||||
|
||||
def test_display_none(session, create_files):
|
||||
files = create_files(["foo"])
|
||||
session.url = inline("""<input type=file style="display: none">""")
|
||||
element = session.find.css("input", all=False)
|
||||
|
||||
response = element_send_keys(session, element, str(files[0]))
|
||||
assert_success(response)
|
||||
assert_files_uploaded(session, element, files)
|
||||
|
||||
|
||||
@pytest.mark.capabilities({"strictFileInteractability": True})
|
||||
def test_strict_hidden(session, create_files):
|
||||
files = create_files(["foo"])
|
||||
session.url = inline("<input type=file hidden>")
|
||||
element = session.find.css("input", all=False)
|
||||
|
||||
response = element_send_keys(session, element, str(files[0]))
|
||||
assert_error(response, "element not interactable")
|
||||
|
||||
|
||||
@pytest.mark.capabilities({"strictFileInteractability": True})
|
||||
def test_strict_display_none(session, create_files):
|
||||
files = create_files(["foo"])
|
||||
session.url = inline("""<input type=file style="display: none">""")
|
||||
element = session.find.css("input", all=False)
|
||||
|
||||
response = element_send_keys(session, element, str(files[0]))
|
||||
assert_error(response, "element not interactable")
|
||||
|
|
|
@ -111,7 +111,7 @@ def test_not_a_focusable_element(session):
|
|||
assert_error(response, "element not interactable")
|
||||
|
||||
|
||||
def test_not_displayed_element(session):
|
||||
def test_display_none(session):
|
||||
session.url = inline("""<input style="display: none">""")
|
||||
element = session.find.css("input", all=False)
|
||||
|
||||
|
@ -119,7 +119,7 @@ def test_not_displayed_element(session):
|
|||
assert_error(response, "element not interactable")
|
||||
|
||||
|
||||
def test_hidden_element(session):
|
||||
def test_visibility_hidden(session):
|
||||
session.url = inline("""<input style="visibility: hidden">""")
|
||||
element = session.find.css("input", all=False)
|
||||
|
||||
|
@ -127,7 +127,15 @@ def test_hidden_element(session):
|
|||
assert_error(response, "element not interactable")
|
||||
|
||||
|
||||
def test_disabled_element(session):
|
||||
def test_hidden(session):
|
||||
session.url = inline("<input hidden>")
|
||||
element = session.find.css("input", all=False)
|
||||
|
||||
response = element_send_keys(session, element, "foo")
|
||||
assert_error(response, "element not interactable")
|
||||
|
||||
|
||||
def test_disabled(session):
|
||||
session.url = inline("""<input disabled>""")
|
||||
element = session.find.css("input", all=False)
|
||||
|
||||
|
|
|
@ -0,0 +1,114 @@
|
|||
import pytest
|
||||
|
||||
from tests.support.asserts import assert_dialog_handled, assert_error, assert_success
|
||||
|
||||
|
||||
def execute_script(session, script, args=None):
|
||||
if args is None:
|
||||
args = []
|
||||
body = {"script": script, "args": args}
|
||||
|
||||
return session.transport.send(
|
||||
"POST", "/session/{session_id}/execute/sync".format(
|
||||
session_id=session.session_id),
|
||||
body)
|
||||
|
||||
|
||||
def test_promise_resolve(session):
|
||||
response = execute_script(session, """
|
||||
return Promise.resolve('foobar');
|
||||
""")
|
||||
assert_success(response, "foobar")
|
||||
|
||||
|
||||
def test_promise_resolve_delayed(session):
|
||||
response = execute_script(session, """
|
||||
return new Promise(
|
||||
(resolve) => setTimeout(
|
||||
() => resolve('foobar'),
|
||||
50
|
||||
)
|
||||
);
|
||||
""")
|
||||
assert_success(response, "foobar")
|
||||
|
||||
|
||||
def test_promise_all_resolve(session):
|
||||
response = execute_script(session, """
|
||||
return Promise.all([
|
||||
Promise.resolve(1),
|
||||
Promise.resolve(2)
|
||||
]);
|
||||
""")
|
||||
assert_success(response, [1, 2])
|
||||
|
||||
|
||||
def test_await_promise_resolve(session):
|
||||
response = execute_script(session, """
|
||||
const res = await Promise.resolve('foobar');
|
||||
return res;
|
||||
""")
|
||||
assert_success(response, "foobar")
|
||||
|
||||
|
||||
def test_promise_reject(session):
|
||||
response = execute_script(session, """
|
||||
return Promise.reject(new Error('my error'));
|
||||
""")
|
||||
assert_error(response, "javascript error")
|
||||
|
||||
|
||||
def test_promise_reject_delayed(session):
|
||||
response = execute_script(session, """
|
||||
return new Promise(
|
||||
(resolve, reject) => setTimeout(
|
||||
() => reject(new Error('my error')),
|
||||
50
|
||||
)
|
||||
);
|
||||
""")
|
||||
assert_error(response, "javascript error")
|
||||
|
||||
|
||||
def test_promise_all_reject(session):
|
||||
response = execute_script(session, """
|
||||
return Promise.all([
|
||||
Promise.resolve(1),
|
||||
Promise.reject(new Error('error'))
|
||||
]);
|
||||
""")
|
||||
assert_error(response, "javascript error")
|
||||
|
||||
|
||||
def test_await_promise_reject(session):
|
||||
response = execute_script(session, """
|
||||
await Promise.reject(new Error('my error'));
|
||||
return 'foo';
|
||||
""")
|
||||
assert_error(response, "javascript error")
|
||||
|
||||
|
||||
def test_promise_resolve_timeout(session):
|
||||
session.timeouts.script = .1
|
||||
response = execute_script(session, """
|
||||
return new Promise(
|
||||
(resolve) => setTimeout(
|
||||
() => resolve(),
|
||||
1000
|
||||
)
|
||||
);
|
||||
""")
|
||||
assert_error(response, "timeout error")
|
||||
|
||||
|
||||
def test_promise_reject_timeout(session):
|
||||
session.timeouts.script = .1
|
||||
response = execute_script(session, """
|
||||
return new Promise(
|
||||
(resolve, reject) => setTimeout(
|
||||
() => reject(new Error('my error')),
|
||||
1000
|
||||
)
|
||||
);
|
||||
""")
|
||||
assert_error(response, "timeout error")
|
|
@ -21,6 +21,7 @@ def test_sessionid(new_session, add_browser_capabilities):
|
|||
("proxy", dict),
|
||||
("setWindowRect", bool),
|
||||
("timeouts", dict),
|
||||
("strictFileInteractability", bool),
|
||||
("unhandledPromptBehavior", basestring),
|
||||
])
|
||||
def test_capability_type(session, capability, type):
|
||||
|
@ -35,6 +36,7 @@ def test_capability_type(session, capability, type):
|
|||
("proxy", {}),
|
||||
("setWindowRect", True),
|
||||
("timeouts", {"implicit": 0, "pageLoad": 300000, "script": 30000}),
|
||||
("strictFileInteractability", False),
|
||||
("unhandledPromptBehavior", "dismiss and notify"),
|
||||
])
|
||||
def test_capability_default_value(session, capability, default_value):
|
||||
|
|
|
@ -27,6 +27,9 @@ valid_data = [
|
|||
{"script": 50, "pageLoad": 25},
|
||||
{"script": 500},
|
||||
]),
|
||||
("strictFileInteractability", [
|
||||
True, False, None,
|
||||
]),
|
||||
("unhandledPromptBehavior", [
|
||||
"dismiss",
|
||||
"accept",
|
||||
|
@ -95,6 +98,9 @@ invalid_data = [
|
|||
{"pageLoad": {"value": 10}},
|
||||
{"pageLoad": 10, "invalid": 10},
|
||||
]),
|
||||
("strictFileInteractability", [
|
||||
1, [], {}, "false",
|
||||
]),
|
||||
("unhandledPromptBehavior", [
|
||||
1, [], {}, False,
|
||||
"DISMISS",
|
||||
|
@ -106,25 +112,25 @@ invalid_data = [
|
|||
]
|
||||
|
||||
invalid_extensions = [
|
||||
"automaticInspection",
|
||||
"automaticProfiling",
|
||||
"browser",
|
||||
"chromeOptions",
|
||||
"ensureCleanSession",
|
||||
"firefox",
|
||||
"firefox_binary",
|
||||
"firefoxOptions",
|
||||
"chromeOptions",
|
||||
"automaticInspection",
|
||||
"automaticProfiling",
|
||||
"platform",
|
||||
"version",
|
||||
"browser",
|
||||
"platformVersion",
|
||||
"javascriptEnabled",
|
||||
"nativeEvents",
|
||||
"seleniumProtocol",
|
||||
"profile",
|
||||
"trustAllSSLCertificates",
|
||||
"initialBrowserUrl",
|
||||
"requireWindowFocus",
|
||||
"javascriptEnabled",
|
||||
"logFile",
|
||||
"logLevel",
|
||||
"nativeEvents",
|
||||
"platform",
|
||||
"platformVersion",
|
||||
"profile",
|
||||
"requireWindowFocus",
|
||||
"safari.options",
|
||||
"ensureCleanSession",
|
||||
"seleniumProtocol",
|
||||
"trustAllSSLCertificates",
|
||||
"version",
|
||||
]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue