Bug 1392274 - Add Refresh wdspec tests r?whimboo draft
authorDavid Burns <dburns@mozilla.com>
Mon, 11 Dec 2017 21:38:18 +0000
changeset 807269 c012121f69196fb766536f5b88e8da62b5964bee
parent 807268 ca7014cf3d46396a46f76f3e9b76938393385875
child 807270 bf026d3f0a701593778c7e09ca04a6e5f4ab17b9
push id113061
push userbmo:dburns@mozilla.com
push dateWed, 13 Jun 2018 23:48:36 +0000
reviewerswhimboo
bugs1392274
milestone62.0a1
Bug 1392274 - Add Refresh wdspec tests r?whimboo These are the wdspec tests for testing the refresh command in https://w3c.github.io/webdriver/webdriver-spec.html#refresh MozReview-Commit-ID: HHd6sU7P8hp
testing/web-platform/tests/webdriver/tests/refresh/refresh.py
testing/web-platform/tests/webdriver/tests/refresh/user_prompts.py
--- a/testing/web-platform/tests/webdriver/tests/refresh/refresh.py
+++ b/testing/web-platform/tests/webdriver/tests/refresh/refresh.py
@@ -1,15 +1,53 @@
+
 from tests.support.inline import inline
-from tests.support.asserts import assert_success
+from tests.support.asserts import assert_dialog_handled, assert_error, assert_success
+
+alert_doc = inline("<script>window.alert()</script>")
 
 
 def refresh(session):
-    return session.transport.send(
-        "POST", "session/{session_id}/refresh".format(**vars(session)))
+    return session.transport.send("POST",
+                                  "session/%s/refresh" % session.session_id)
+
+# 9.5 Refresh
+
+
+def test_no_browsing_context(session, create_window):
+    # 9.5 step 1
+    session.window_handle = create_window()
+    session.close()
+
+    result = refresh(session)
+
+    assert_error(result, "no such window")
 
 
-def test_null_response_value(session):
-    session.url = inline("<div>")
+def test_basic(session):
+    session.url = inline("<title>WD doc title</title>")
+    url = session.url
+
+    session.execute_script("""
+      let elem = window.document.createElement('div');
+      elem.id = 'someDiv';
+      window.document.body.appendChild(elem);
+    """)
+    session.find.css("#someDiv")
+
+    result = refresh(session)
+    assert_success(result)
+    assert url == session.url
 
-    response = refresh(session)
-    value = assert_success(response)
-    assert value is None
+    response = session.find.css("#someDiv")
+    assert response == []
+
+
+def test_refresh_switches_to_parent_browsing_context(session, create_frame):
+    session.url = inline("<title>Parent</title>")
+
+    session.switch_frame(create_frame())
+    response = session.execute_script("return document.title")
+    assert response == ""
+
+    refresh(session)
+    response = session.execute_script("return document.title")
+    assert response == "Parent"
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/webdriver/tests/refresh/user_prompts.py
@@ -0,0 +1,90 @@
+from tests.support.inline import inline
+from tests.support.fixtures import create_dialog
+from tests.support.asserts import assert_dialog_handled, assert_error, assert_success
+
+alert_doc = inline("<script>window.alert()</script>")
+
+
+def test_get_current_url_alert_prompt(session):
+    # 9.5 step 2
+    session.url = alert_doc
+
+    result = refresh(session)
+
+    assert_error(result, "unexpected alert open")
+
+
+def test_prompt_accept(new_session):
+    _, session = new_session(
+        {"alwaysMatch": {"unhandledPromptBehavior": "accept"}})
+    session.url = inline("<title>WD doc title</title>")
+
+    # step 2
+    create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1")
+    result = refresh(session)
+
+    assert result.status == 200
+    assert_dialog_handled(session, "dismiss #1")
+
+    create_dialog(session)("confirm", text="dismiss #2", result_var="dismiss2")
+    result = refresh(session)
+
+    assert result.status == 200
+    assert_dialog_handled(session, "dismiss #2")
+
+    create_dialog(session)("prompt", text="dismiss #3", result_var="dismiss3")
+    result = refresh(session)
+
+    assert_success(result)
+    assert_dialog_handled(session, "dismiss #3")
+
+
+def test_prompt_dismiss(new_session):
+    _, session = new_session(
+        {"alwaysMatch": {"unhandledPromptBehavior": "dismiss"}})
+    session.url = inline("<title>WD doc title</title>")
+
+    # step 2
+    create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1")
+    result = refresh(session)
+
+    assert result.status == 200
+    assert_dialog_handled(session, "dismiss #1")
+
+    create_dialog(session)("confirm", text="dismiss #2", result_var="dismiss2")
+    result = refresh(session)
+
+    assert result.status == 200
+    assert_dialog_handled(session, "dismiss #2")
+
+    create_dialog(session)("prompt", text="dismiss #3", result_var="dismiss3")
+    result = refresh(session)
+
+    assert_success(result)
+    assert_dialog_handled(session, "dismiss #3")
+
+
+def test_handle_prompt_missing_value(session, create_dialog):
+
+    # step 2
+    session.url = inline("<title>WD doc title</title>")
+    create_dialog("alert", text="dismiss #1", result_var="dismiss1")
+
+    result = refresh(session)
+
+    assert_error(result, "unexpected alert open")
+    assert_dialog_handled(session, "dismiss #1")
+
+    create_dialog("confirm", text="dismiss #2", result_var="dismiss2")
+
+    result = refresh(session)
+
+    assert_error(result, "unexpected alert open")
+    assert_dialog_handled(session, "dismiss #2")
+
+    create_dialog("prompt", text="dismiss #3", result_var="dismiss3")
+
+    result = refresh(session)
+
+    assert_error(result, "unexpected alert open")
+    assert_dialog_handled(session, "dismiss #3")