blob: f4e3b0481d3b3cbc93ba8b44c639934cf8eef9de [file] [log] [blame]
import pytest
from webdriver import error
from tests.support.asserts import assert_error, assert_success
from tests.support.inline import inline
def close(session):
return session.transport.send(
"DELETE", "session/{session_id}/window".format(**vars(session)))
def test_no_browsing_context(session, closed_window):
response = close(session)
assert_error(response, "no such window")
def test_close_browsing_context(session, create_window):
original_handles = session.handles
new_handle = create_window()
session.window_handle = new_handle
response = close(session)
handles = assert_success(response, original_handles)
assert session.handles == original_handles
assert new_handle not in handles
def test_close_browsing_context_with_dismissed_beforeunload_prompt(session, create_window):
original_handles = session.handles
new_handle = create_window()
session.window_handle = new_handle
session.url = inline("""
<input type="text">
<script>
window.addEventListener("beforeunload", function (event) {
event.preventDefault();
});
</script>
""")
session.find.css("input", all=False).send_keys("foo")
response = close(session)
handles = assert_success(response, original_handles)
assert session.handles == original_handles
assert new_handle not in handles
# A beforeunload prompt has to be automatically dismissed
with pytest.raises(error.NoSuchWindowException):
session.alert.text
def test_close_last_browsing_context(session):
assert len(session.handles) == 1
response = close(session)
assert_success(response, [])
# With no more open top-level browsing contexts, the session is closed.
session.session_id = None