Bug 1381876 - Skip resetting namespaced interfaces in client.Session. r?automatedtester draft
authorAndreas Tolfsen <ato@sny.no>
Tue, 01 Aug 2017 18:23:47 +0100
changeset 641128 7eeb43e2f45d79b64443d9a817d7ebdf757760cc
parent 641127 b45eafe0b96700ef5011b645fa761113a9d5ca9e
child 641129 7586af25495a552f6f20ff3ee3191cbac8ab3064
push id72441
push userbmo:ato@sny.no
push dateSat, 05 Aug 2017 16:50:51 +0000
reviewersautomatedtester
bugs1381876
milestone57.0a1
Bug 1381876 - Skip resetting namespaced interfaces in client.Session. r?automatedtester Resetting these interfaces means they will not be set up again if the client.Session instance is reused. MozReview-Commit-ID: 7JW61VrMFpD
testing/web-platform/meta/MANIFEST.json
testing/web-platform/tests/tools/webdriver/webdriver/client.py
testing/web-platform/tests/webdriver/tests/maximize_window.py
--- a/testing/web-platform/meta/MANIFEST.json
+++ b/testing/web-platform/meta/MANIFEST.json
@@ -625006,33 +625006,33 @@
    "5ba51b660c7203bba3ada597c2f56fe094358e1f",
    "wdspec"
   ],
   "webdriver/tests/get_window_rect.py": [
    "2d4c13edc4e659af864750d0341c06ff969a687f",
    "wdspec"
   ],
   "webdriver/tests/maximize_window.py": [
-   "ba6b9109f5baaf6eb300a3f89f984753e9d5adb9",
+   "827b3a3e1a3ef628dae1480af029fc01ef5e9388",
    "wdspec"
   ],
   "webdriver/tests/navigation.py": [
    "cec2987258d9c807a247da9e0216b3af1f171484",
    "wdspec"
   ],
   "webdriver/tests/set_window_rect.py": [
    "8aef7d228fc9c1e8cf1029d8f1f7669602b6e877",
    "wdspec"
   ],
   "webdriver/tests/support/__init__.py": [
    "5a31a3917a5157516c10951a3b3d5ffb43b992d9",
    "support"
   ],
   "webdriver/tests/support/asserts.py": [
-   "cf1d298a9dc61b07eb9efe1ff3ed98a318d48bc4",
+   "693c848df03b46e7b4f5e17e49fd0879a29a0d1c",
    "support"
   ],
   "webdriver/tests/support/fixtures.py": [
    "6ceec11f42cd9be53a92ad88aa07657c78779ce3",
    "support"
   ],
   "webdriver/tests/support/http_request.py": [
    "cb40c781fea2280b98135522def5e6a116d7b946",
--- a/testing/web-platform/tests/tools/webdriver/webdriver/client.py
+++ b/testing/web-platform/tests/tools/webdriver/webdriver/client.py
@@ -385,20 +385,16 @@ class Session(object):
     def end(self):
         if self.session_id is None:
             return
 
         url = "session/%s" % self.session_id
         self.send_command("DELETE", url)
 
         self.session_id = None
-        self.timeouts = None
-        self.window = None
-        self.find = None
-        self.extension = None
 
     def send_command(self, method, url, body=None):
         """
         Send a command to the remote end and validate its success.
 
         :param method: HTTP method to use in request.
         :param uri: "Command part" of the HTTP request URL,
             e.g. `window/rect`.
--- a/testing/web-platform/tests/webdriver/tests/maximize_window.py
+++ b/testing/web-platform/tests/webdriver/tests/maximize_window.py
@@ -4,35 +4,72 @@ from tests.support.asserts import assert
 alert_doc = inline("<script>window.alert()</script>")
 
 # 10.7.3 Maximize Window
 def test_maximize_no_browsing_context(session, create_window):
     # Step 1
     session.window_handle = create_window()
     session.close()
     result = session.transport.send("POST", "session/%s/window/maximize" % session.session_id)
-
     assert_error(result, "no such window")
 
 
-def test_maximize_rect_alert_prompt(session):
+def test_handle_user_prompt(session):
     # Step 2
     session.url = alert_doc
-
     result = session.transport.send("POST", "session/%s/window/maximize" % session.session_id)
-
     assert_error(result, "unexpected alert open")
 
 
-def test_maximize_payload(session):
-    # step 5
+def test_maximize(session):
+    before = session.window.size
+
+    # step 4
+    result = session.transport.send("POST", "session/%s/window/maximize" % session.session_id)
+    assert_success(result)
+
+    after = session.window.size
+    assert before != after
+
+
+def test_payload(session):
+    before = session.window.size
+
     result = session.transport.send("POST", "session/%s/window/maximize" % session.session_id)
 
+    # step 5
     assert result.status == 200
     assert isinstance(result.body["value"], dict)
-    assert "width" in result.body["value"]
-    assert "height" in result.body["value"]
-    assert "x" in result.body["value"]
-    assert "y" in result.body["value"]
-    assert isinstance(result.body["value"]["width"], float)
-    assert isinstance(result.body["value"]["height"], float)
-    assert isinstance(result.body["value"]["x"], float)
-    assert isinstance(result.body["value"]["y"], float)
+
+    rect = result.body["value"]
+    assert "width" in rect
+    assert "height" in rect
+    assert "x" in rect
+    assert "y" in rect
+    assert isinstance(rect["width"], float)
+    assert isinstance(rect["height"], float)
+    assert isinstance(rect["x"], float)
+    assert isinstance(rect["y"], float)
+
+    after = session.window.size
+    assert before != after
+
+
+def test_maximize_when_resized_to_max_size(session):
+    # Determine the largest available window size by first maximising
+    # the window and getting the window rect dimensions.
+    #
+    # Then resize the window to the maximum available size.
+    session.end()
+    available = session.window.maximize()
+    session.end()
+
+    session.window.size = (int(available["width"]), int(available["height"]))
+
+    # In certain window managers a window extending to the full available
+    # dimensions of the screen may not imply that the window is maximised,
+    # since this is often a special state.  If a remote end expects a DOM
+    # resize event, this may not fire if the window has already reached
+    # its expected dimensions.
+    before = session.window.size
+    session.window.maximize()
+    after = session.window.size
+    assert before == after