зеркало из https://github.com/mozilla/gecko-dev.git
bug 1492499: webdriver: poll for document.hidden; r=automatedtester
For the time being we need to poll for document.hidden to become true because certain driver implementations, such as geckodriver, occasionally does not wait until the DOM property is propagated to the child process. Depends on D8408 Differential Revision: https://phabricator.services.mozilla.com/D8409 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
e520fe6c58
Коммит
56f70d08e0
|
@ -1,5 +1,5 @@
|
|||
from tests.support.asserts import assert_error, assert_success
|
||||
from tests.support.helpers import is_fullscreen
|
||||
from tests.support.helpers import document_hidden, is_fullscreen
|
||||
|
||||
|
||||
def maximize(session):
|
||||
|
@ -23,7 +23,7 @@ def test_fully_exit_fullscreen(session):
|
|||
|
||||
def test_restore_the_window(session):
|
||||
session.window.minimize()
|
||||
assert session.execute_script("return document.hidden") is True
|
||||
assert document_hidden(session)
|
||||
|
||||
response = maximize(session)
|
||||
assert_success(response)
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# META: timeout=long
|
||||
|
||||
from tests.support.asserts import assert_error, assert_success
|
||||
from tests.support.helpers import is_fullscreen
|
||||
from tests.support.helpers import document_hidden, is_fullscreen
|
||||
|
||||
|
||||
def minimize(session):
|
||||
|
@ -7,10 +9,6 @@ def minimize(session):
|
|||
"POST", "session/{session_id}/window/minimize".format(**vars(session)))
|
||||
|
||||
|
||||
def is_minimized(session):
|
||||
return session.execute_script("return document.hidden")
|
||||
|
||||
|
||||
def test_no_browsing_context(session, closed_window):
|
||||
response = minimize(session)
|
||||
assert_error(response, "no such window")
|
||||
|
@ -23,19 +21,19 @@ def test_fully_exit_fullscreen(session):
|
|||
response = minimize(session)
|
||||
assert_success(response)
|
||||
assert not is_fullscreen(session)
|
||||
assert is_minimized(session)
|
||||
assert document_hidden(session)
|
||||
|
||||
|
||||
def test_minimize(session):
|
||||
assert not is_minimized(session)
|
||||
assert not document_hidden(session)
|
||||
|
||||
response = minimize(session)
|
||||
assert_success(response)
|
||||
assert is_minimized(session)
|
||||
assert document_hidden(session)
|
||||
|
||||
|
||||
def test_payload(session):
|
||||
assert not is_minimized(session)
|
||||
assert not document_hidden(session)
|
||||
|
||||
response = minimize(session)
|
||||
value = assert_success(response)
|
||||
|
@ -51,16 +49,16 @@ def test_payload(session):
|
|||
assert isinstance(value["x"], int)
|
||||
assert isinstance(value["y"], int)
|
||||
|
||||
assert is_minimized(session)
|
||||
assert document_hidden(session)
|
||||
|
||||
|
||||
def test_minimize_twice_is_idempotent(session):
|
||||
assert not is_minimized(session)
|
||||
assert not document_hidden(session)
|
||||
|
||||
first_response = minimize(session)
|
||||
assert_success(first_response)
|
||||
assert is_minimized(session)
|
||||
assert document_hidden(session)
|
||||
|
||||
second_response = minimize(session)
|
||||
assert_success(second_response)
|
||||
assert is_minimized(session)
|
||||
assert document_hidden(session)
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
import pytest
|
||||
|
||||
from tests.support.asserts import assert_dialog_handled, assert_error, assert_success
|
||||
from tests.support.helpers import document_hidden
|
||||
|
||||
|
||||
def minimize(session):
|
||||
|
@ -10,23 +11,17 @@ def minimize(session):
|
|||
"POST", "session/{session_id}/window/minimize".format(**vars(session)))
|
||||
|
||||
|
||||
def is_minimized(session):
|
||||
return session.execute_script("return document.hidden")
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def check_user_prompt_closed_without_exception(session, create_dialog):
|
||||
def check_user_prompt_closed_without_exception(dialog_type, retval):
|
||||
assert not is_minimized(session)
|
||||
|
||||
assert not document_hidden(session)
|
||||
create_dialog(dialog_type, text=dialog_type)
|
||||
|
||||
response = minimize(session)
|
||||
assert_success(response)
|
||||
|
||||
assert_dialog_handled(session, expected_text=dialog_type, expected_retval=retval)
|
||||
|
||||
assert is_minimized(session)
|
||||
assert document_hidden(session)
|
||||
|
||||
return check_user_prompt_closed_without_exception
|
||||
|
||||
|
@ -34,16 +29,14 @@ def check_user_prompt_closed_without_exception(session, create_dialog):
|
|||
@pytest.fixture
|
||||
def check_user_prompt_closed_with_exception(session, create_dialog):
|
||||
def check_user_prompt_closed_with_exception(dialog_type, retval):
|
||||
assert not is_minimized(session)
|
||||
|
||||
assert not document_hidden(session)
|
||||
create_dialog(dialog_type, text=dialog_type)
|
||||
|
||||
response = minimize(session)
|
||||
assert_error(response, "unexpected alert open")
|
||||
|
||||
assert_dialog_handled(session, expected_text=dialog_type, expected_retval=retval)
|
||||
|
||||
assert not is_minimized(session)
|
||||
assert not document_hidden(session)
|
||||
|
||||
return check_user_prompt_closed_with_exception
|
||||
|
||||
|
@ -51,8 +44,7 @@ def check_user_prompt_closed_with_exception(session, create_dialog):
|
|||
@pytest.fixture
|
||||
def check_user_prompt_not_closed_but_exception(session, create_dialog):
|
||||
def check_user_prompt_not_closed_but_exception(dialog_type):
|
||||
assert not is_minimized(session)
|
||||
|
||||
assert not document_hidden(session)
|
||||
create_dialog(dialog_type, text=dialog_type)
|
||||
|
||||
response = minimize(session)
|
||||
|
@ -61,7 +53,7 @@ def check_user_prompt_not_closed_but_exception(session, create_dialog):
|
|||
assert session.alert.text == dialog_type
|
||||
session.alert.dismiss()
|
||||
|
||||
assert not is_minimized(session)
|
||||
assert not document_hidden(session)
|
||||
|
||||
return check_user_prompt_not_closed_but_exception
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ import pytest
|
|||
from webdriver.transport import Response
|
||||
|
||||
from tests.support.asserts import assert_error, assert_success
|
||||
from tests.support.helpers import is_fullscreen
|
||||
from tests.support.helpers import document_hidden, is_fullscreen
|
||||
|
||||
|
||||
def set_window_rect(session, rect):
|
||||
|
@ -144,14 +144,14 @@ def test_fully_exit_fullscreen(session):
|
|||
|
||||
def test_restore_from_minimized(session):
|
||||
session.window.minimize()
|
||||
assert session.execute_script("return document.hidden") is True
|
||||
assert document_hidden(session)
|
||||
|
||||
response = set_window_rect(session, {"width": 450, "height": 450})
|
||||
value = assert_success(response)
|
||||
assert value["width"] == 450
|
||||
assert value["height"] == 450
|
||||
|
||||
assert session.execute_script("return document.hidden") is False
|
||||
assert not document_hidden(session)
|
||||
|
||||
|
||||
def test_restore_from_maximized(session):
|
||||
|
|
|
@ -5,6 +5,8 @@ import sys
|
|||
import webdriver
|
||||
|
||||
from tests.support import defaults
|
||||
from tests.support.sync import Poll
|
||||
|
||||
|
||||
def ignore_exceptions(f):
|
||||
def inner(*args, **kwargs):
|
||||
|
@ -119,6 +121,13 @@ def is_element_in_viewport(session, element):
|
|||
""", args=(element,))
|
||||
|
||||
|
||||
def document_hidden(session):
|
||||
"""Polls for the document to become hidden."""
|
||||
def hidden(session):
|
||||
return session.execute_script("return document.hidden")
|
||||
return Poll(session, timeout=3, raises=None).until(hidden)
|
||||
|
||||
|
||||
def is_fullscreen(session):
|
||||
# At the time of writing, WebKit does not conform to the
|
||||
# Fullscreen API specification.
|
||||
|
|
Загрузка…
Ссылка в новой задаче