Bug 1461463 - [wdspec] Add tests for commands returning null as response value. draft
authorHenrik Skupin <mail@hskupin.info>
Thu, 17 May 2018 15:54:31 +0200
changeset 800978 eede9b81db656e33e125c12bffbb79a425a0b435
parent 800977 731ae50a8e878ab8cbc9df3bbd6c853e5fb3ee73
push id111539
push userbmo:hskupin@gmail.com
push dateTue, 29 May 2018 15:41:27 +0000
bugs1461463
milestone62.0a1
Bug 1461463 - [wdspec] Add tests for commands returning null as response value. MozReview-Commit-ID: 9W8TV1B3NGS
testing/web-platform/meta/MANIFEST.json
testing/web-platform/tests/webdriver/tests/accept_alert/accept.py
testing/web-platform/tests/webdriver/tests/actions/key.py
testing/web-platform/tests/webdriver/tests/actions/mouse.py
testing/web-platform/tests/webdriver/tests/add_cookie/add.py
testing/web-platform/tests/webdriver/tests/back/__init__.py
testing/web-platform/tests/webdriver/tests/back/back.py
testing/web-platform/tests/webdriver/tests/delete_all_cookies/__init__.py
testing/web-platform/tests/webdriver/tests/delete_all_cookies/delete.py
testing/web-platform/tests/webdriver/tests/delete_cookie/delete.py
testing/web-platform/tests/webdriver/tests/delete_session/delete.py
testing/web-platform/tests/webdriver/tests/dismiss_alert/dismiss.py
testing/web-platform/tests/webdriver/tests/element_clear/clear.py
testing/web-platform/tests/webdriver/tests/element_click/click.py
testing/web-platform/tests/webdriver/tests/element_send_keys/send_keys.py
testing/web-platform/tests/webdriver/tests/forward/__init__.py
testing/web-platform/tests/webdriver/tests/forward/forward.py
testing/web-platform/tests/webdriver/tests/navigate_to/__init__.py
testing/web-platform/tests/webdriver/tests/navigate_to/navigate.py
testing/web-platform/tests/webdriver/tests/refresh/__init__.py
testing/web-platform/tests/webdriver/tests/refresh/refresh.py
testing/web-platform/tests/webdriver/tests/send_alert_text/send.py
testing/web-platform/tests/webdriver/tests/set_timeouts/__init__.py
testing/web-platform/tests/webdriver/tests/set_timeouts/set.py
testing/web-platform/tests/webdriver/tests/switch_to_frame/__init__.py
testing/web-platform/tests/webdriver/tests/switch_to_frame/switch.py
testing/web-platform/tests/webdriver/tests/switch_to_parent_frame/switch.py
testing/web-platform/tests/webdriver/tests/switch_to_window/__init__.py
testing/web-platform/tests/webdriver/tests/switch_to_window/switch.py
--- a/testing/web-platform/meta/MANIFEST.json
+++ b/testing/web-platform/meta/MANIFEST.json
@@ -300965,26 +300965,36 @@
      {}
     ]
    ],
    "webdriver/tests/add_cookie/__init__.py": [
     [
      {}
     ]
    ],
+   "webdriver/tests/back/__init__.py": [
+    [
+     {}
+    ]
+   ],
    "webdriver/tests/close_window/__init__.py": [
     [
      {}
     ]
    ],
    "webdriver/tests/conftest.py": [
     [
      {}
     ]
    ],
+   "webdriver/tests/delete_all_cookies/__init__.py": [
+    [
+     {}
+    ]
+   ],
    "webdriver/tests/delete_cookie/__init__.py": [
     [
      {}
     ]
    ],
    "webdriver/tests/delete_session/__init__.py": [
     [
      {}
@@ -301035,16 +301045,21 @@
      {}
     ]
    ],
    "webdriver/tests/find_elements_from_element/__init__.py": [
     [
      {}
     ]
    ],
+   "webdriver/tests/forward/__init__.py": [
+    [
+     {}
+    ]
+   ],
    "webdriver/tests/fullscreen_window/__init__.py": [
     [
      {}
     ]
    ],
    "webdriver/tests/get_active_element/__init__.py": [
     [
      {}
@@ -301105,16 +301120,21 @@
      {}
     ]
    ],
    "webdriver/tests/minimize_window/__init__.py": [
     [
      {}
     ]
    ],
+   "webdriver/tests/navigate_to/__init__.py": [
+    [
+     {}
+    ]
+   ],
    "webdriver/tests/new_session/__init__.py": [
     [
      {}
     ]
    ],
    "webdriver/tests/new_session/conftest.py": [
     [
      {}
@@ -301130,21 +301150,31 @@
      {}
     ]
    ],
    "webdriver/tests/page_source/__init__.py": [
     [
      {}
     ]
    ],
+   "webdriver/tests/refresh/__init__.py": [
+    [
+     {}
+    ]
+   ],
    "webdriver/tests/send_alert_text/__init__.py": [
     [
      {}
     ]
    ],
+   "webdriver/tests/set_timeouts/__init__.py": [
+    [
+     {}
+    ]
+   ],
    "webdriver/tests/set_window_rect/__init__.py": [
     [
      {}
     ]
    ],
    "webdriver/tests/status/__init__.py": [
     [
      {}
@@ -301180,21 +301210,31 @@
      {}
     ]
    ],
    "webdriver/tests/support/wait.py": [
     [
      {}
     ]
    ],
+   "webdriver/tests/switch_to_frame/__init__.py": [
+    [
+     {}
+    ]
+   ],
    "webdriver/tests/switch_to_parent_frame/__init__.py": [
     [
      {}
     ]
    ],
+   "webdriver/tests/switch_to_window/__init__.py": [
+    [
+     {}
+    ]
+   ],
    "webgl/OWNERS": [
     [
      {}
     ]
    ],
    "webgl/common.js": [
     [
      {}
@@ -401327,28 +401367,40 @@
     ]
    ],
    "webdriver/tests/add_cookie/add.py": [
     [
      "/webdriver/tests/add_cookie/add.py",
      {}
     ]
    ],
+   "webdriver/tests/back/back.py": [
+    [
+     "/webdriver/tests/back/back.py",
+     {}
+    ]
+   ],
    "webdriver/tests/close_window/close.py": [
     [
      "/webdriver/tests/close_window/close.py",
      {}
     ]
    ],
    "webdriver/tests/close_window/user_prompts.py": [
     [
      "/webdriver/tests/close_window/user_prompts.py",
      {}
     ]
    ],
+   "webdriver/tests/delete_all_cookies/delete.py": [
+    [
+     "/webdriver/tests/delete_all_cookies/delete.py",
+     {}
+    ]
+   ],
    "webdriver/tests/delete_cookie/delete.py": [
     [
      "/webdriver/tests/delete_cookie/delete.py",
      {}
     ]
    ],
    "webdriver/tests/delete_cookie/user_prompts.py": [
     [
@@ -401377,16 +401429,22 @@
     ]
    ],
    "webdriver/tests/element_click/bubbling.py": [
     [
      "/webdriver/tests/element_click/bubbling.py",
      {}
     ]
    ],
+   "webdriver/tests/element_click/click.py": [
+    [
+     "/webdriver/tests/element_click/click.py",
+     {}
+    ]
+   ],
    "webdriver/tests/element_click/select.py": [
     [
      "/webdriver/tests/element_click/select.py",
      {}
     ]
    ],
    "webdriver/tests/element_click/stale.py": [
     [
@@ -401413,16 +401471,22 @@
     ]
    ],
    "webdriver/tests/element_send_keys/scroll_into_view.py": [
     [
      "/webdriver/tests/element_send_keys/scroll_into_view.py",
      {}
     ]
    ],
+   "webdriver/tests/element_send_keys/send_keys.py": [
+    [
+     "/webdriver/tests/element_send_keys/send_keys.py",
+     {}
+    ]
+   ],
    "webdriver/tests/execute_async_script/collections.py": [
     [
      "/webdriver/tests/execute_async_script/collections.py",
      {}
     ]
    ],
    "webdriver/tests/execute_async_script/user_prompts.py": [
     [
@@ -401473,16 +401537,22 @@
     ]
    ],
    "webdriver/tests/find_elements_from_element/find.py": [
     [
      "/webdriver/tests/find_elements_from_element/find.py",
      {}
     ]
    ],
+   "webdriver/tests/forward/forward.py": [
+    [
+     "/webdriver/tests/forward/forward.py",
+     {}
+    ]
+   ],
    "webdriver/tests/fullscreen_window/fullscreen.py": [
     [
      "/webdriver/tests/fullscreen_window/fullscreen.py",
      {}
     ]
    ],
    "webdriver/tests/fullscreen_window/user_prompts.py": [
     [
@@ -401617,16 +401687,22 @@
     ]
    ],
    "webdriver/tests/minimize_window/user_prompts.py": [
     [
      "/webdriver/tests/minimize_window/user_prompts.py",
      {}
     ]
    ],
+   "webdriver/tests/navigate_to/navigate.py": [
+    [
+     "/webdriver/tests/navigate_to/navigate.py",
+     {}
+    ]
+   ],
    "webdriver/tests/new_session/create_alwaysMatch.py": [
     [
      "/webdriver/tests/new_session/create_alwaysMatch.py",
      {
       "timeout": "long"
      }
     ]
    ],
@@ -401671,22 +401747,34 @@
     ]
    ],
    "webdriver/tests/page_source/source.py": [
     [
      "/webdriver/tests/page_source/source.py",
      {}
     ]
    ],
+   "webdriver/tests/refresh/refresh.py": [
+    [
+     "/webdriver/tests/refresh/refresh.py",
+     {}
+    ]
+   ],
    "webdriver/tests/send_alert_text/send.py": [
     [
      "/webdriver/tests/send_alert_text/send.py",
      {}
     ]
    ],
+   "webdriver/tests/set_timeouts/set.py": [
+    [
+     "/webdriver/tests/set_timeouts/set.py",
+     {}
+    ]
+   ],
    "webdriver/tests/set_window_rect/set.py": [
     [
      "/webdriver/tests/set_window_rect/set.py",
      {
       "timeout": "long"
      }
     ]
    ],
@@ -401697,21 +401785,33 @@
     ]
    ],
    "webdriver/tests/status/status.py": [
     [
      "/webdriver/tests/status/status.py",
      {}
     ]
    ],
+   "webdriver/tests/switch_to_frame/switch.py": [
+    [
+     "/webdriver/tests/switch_to_frame/switch.py",
+     {}
+    ]
+   ],
    "webdriver/tests/switch_to_parent_frame/switch.py": [
     [
      "/webdriver/tests/switch_to_parent_frame/switch.py",
      {}
     ]
+   ],
+   "webdriver/tests/switch_to_window/switch.py": [
+    [
+     "/webdriver/tests/switch_to_window/switch.py",
+     {}
+    ]
    ]
   }
  },
  "paths": {
   "./.codecov.yml": [
    "e2322808739a5977e90896b4755cfc20f4ab2046",
    "support"
   ],
@@ -616727,41 +616827,41 @@
    "b2ebe4b632b1a75e7334b97c3df7075f494dd5c6",
    "support"
   ],
   "webdriver/tests/accept_alert/__init__.py": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "webdriver/tests/accept_alert/accept.py": [
-   "840f2ba655688ac1ff7581557f7560f641b61fe8",
+   "528149429fbb7da35a52d4b4c0e6839f170d0fac",
    "wdspec"
   ],
   "webdriver/tests/actions/__init__.py": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "webdriver/tests/actions/conftest.py": [
    "f366a25d9d5e35a2897413a265398bc7a54f7c44",
    "support"
   ],
   "webdriver/tests/actions/key.py": [
-   "d589b53f0096893600e696b43ec19ca84e5ee2ab",
+   "0b70d98a4558427666abbe9629a6cf42d69e2597",
    "wdspec"
   ],
   "webdriver/tests/actions/key_shortcuts.py": [
    "dbe27dd0b1625169fc8cc2055f8fb49d5a4a78d2",
    "wdspec"
   ],
   "webdriver/tests/actions/modifier_click.py": [
    "f0ed71cbb6550ef496096541531f3b4fa3f4c6e2",
    "wdspec"
   ],
   "webdriver/tests/actions/mouse.py": [
-   "edad7693fcd01b418821942edb870191db64ea41",
+   "fb5072172d8524788147bde310d612aae5bee1b1",
    "wdspec"
   ],
   "webdriver/tests/actions/mouse_dblclick.py": [
    "dd73b09a15b438aaf77cbccdf40678a24bbabd39",
    "wdspec"
   ],
   "webdriver/tests/actions/mouse_pause_dblclick.py": [
    "d9c173d0c6c4943669dcd6d05472758c7f42b1ed",
@@ -616799,17 +616899,25 @@
    "95203777fcc012ab64465287737a89a4ba2c31dc",
    "support"
   ],
   "webdriver/tests/add_cookie/__init__.py": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "webdriver/tests/add_cookie/add.py": [
-   "29891e121def1917c47c70efd19b40ed5f2ea61d",
+   "39eb6c33a7c8f7a305cd093b795c0127816ac827",
+   "wdspec"
+  ],
+  "webdriver/tests/back/__init__.py": [
+   "da39a3ee5e6b4b0d3255bfef95601890afd80709",
+   "support"
+  ],
+  "webdriver/tests/back/back.py": [
+   "0df671f059b0b9064a6a8608163b46042524f7e7",
    "wdspec"
   ],
   "webdriver/tests/close_window/__init__.py": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "webdriver/tests/close_window/close.py": [
    "8c22860607cb0f3d610888c9816bf2384e2c5445",
@@ -616818,60 +616926,72 @@
   "webdriver/tests/close_window/user_prompts.py": [
    "58390344e980306233cd0daedca99fd4ec855cf8",
    "wdspec"
   ],
   "webdriver/tests/conftest.py": [
    "c812269d034c9ca1b8c4f136dd5d0cea52f4d0f0",
    "support"
   ],
+  "webdriver/tests/delete_all_cookies/__init__.py": [
+   "da39a3ee5e6b4b0d3255bfef95601890afd80709",
+   "support"
+  ],
+  "webdriver/tests/delete_all_cookies/delete.py": [
+   "1248b2e14b6b690b996f8bf620a6a1f33514256a",
+   "wdspec"
+  ],
   "webdriver/tests/delete_cookie/__init__.py": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "webdriver/tests/delete_cookie/delete.py": [
-   "1f0d6b861be1ed682fd87a402908cee186a3987c",
+   "e9b90bac0e666ce82b3c0006830febcef726d688",
    "wdspec"
   ],
   "webdriver/tests/delete_cookie/user_prompts.py": [
    "65b753bd80a06c3c20b0330f624a4d395fdb7ab2",
    "wdspec"
   ],
   "webdriver/tests/delete_session/__init__.py": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "webdriver/tests/delete_session/delete.py": [
-   "6cbfd4c20b548e668d6251df9d0a26b0824e6ae1",
+   "1df6e1bfba0577a591bda8e0e27b96a1abcea1fb",
    "wdspec"
   ],
   "webdriver/tests/dismiss_alert/__init__.py": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "webdriver/tests/dismiss_alert/dismiss.py": [
-   "e213f1939ff5cc2fbdebb2bd8e9445e284803a60",
+   "33b32f41d9078f7d317aed837f1fc05f443bd034",
    "wdspec"
   ],
   "webdriver/tests/element_clear/__init__.py": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "webdriver/tests/element_clear/clear.py": [
-   "d5a0a37d410f5a748aee5ac5be75acb837e491f8",
+   "cb1a5a8cb6568becf776031bca67079b54b53dc5",
    "wdspec"
   ],
   "webdriver/tests/element_click/__init__.py": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "webdriver/tests/element_click/bubbling.py": [
    "492e283b686abe0743d72e31017be149726628f9",
    "wdspec"
   ],
+  "webdriver/tests/element_click/click.py": [
+   "5af8f42f8b31cdc010a7f9e12f4a6814dc92e9de",
+   "wdspec"
+  ],
   "webdriver/tests/element_click/select.py": [
    "bddc341a0feb0d06e75415b8f98b8e9e0c2a829d",
    "wdspec"
   ],
   "webdriver/tests/element_click/stale.py": [
    "490b6c17365c5eab24fd4a7ac07be6614a86a934",
    "wdspec"
   ],
@@ -616890,16 +617010,20 @@
   "webdriver/tests/element_send_keys/interactability.py": [
    "5374827c90845ded660d540d23bb7e07ac84e445",
    "wdspec"
   ],
   "webdriver/tests/element_send_keys/scroll_into_view.py": [
    "e4a50a53a13c1ab76c6c002bbda1c103f8c32ccf",
    "wdspec"
   ],
+  "webdriver/tests/element_send_keys/send_keys.py": [
+   "90fe1e170efc56699af7af931cd9182abbbcef05",
+   "wdspec"
+  ],
   "webdriver/tests/execute_async_script/__init__.py": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "webdriver/tests/execute_async_script/collections.py": [
    "d6c95dfdcbfc3b9cf91cf6f943a17b7cd0fee79d",
    "wdspec"
   ],
@@ -616954,16 +617078,24 @@
   "webdriver/tests/find_elements_from_element/__init__.py": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "webdriver/tests/find_elements_from_element/find.py": [
    "2daef29773c98649b04e3d6e97380ba569ec045d",
    "wdspec"
   ],
+  "webdriver/tests/forward/__init__.py": [
+   "da39a3ee5e6b4b0d3255bfef95601890afd80709",
+   "support"
+  ],
+  "webdriver/tests/forward/forward.py": [
+   "558f686e715eab83f2979c4ac772472b7eb91432",
+   "wdspec"
+  ],
   "webdriver/tests/fullscreen_window/__init__.py": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "webdriver/tests/fullscreen_window/fullscreen.py": [
    "8a6e06b2fbd2ec80326ab1145e6ddfb35c6995b4",
    "wdspec"
   ],
@@ -617110,16 +617242,24 @@
   "webdriver/tests/minimize_window/minimize.py": [
    "8b59610ffcbb4ab41a74f149dc74d415edfaf60f",
    "wdspec"
   ],
   "webdriver/tests/minimize_window/user_prompts.py": [
    "668c775a0e60b377a5a558a2a38b8887ac2683a0",
    "wdspec"
   ],
+  "webdriver/tests/navigate_to/__init__.py": [
+   "da39a3ee5e6b4b0d3255bfef95601890afd80709",
+   "support"
+  ],
+  "webdriver/tests/navigate_to/navigate.py": [
+   "6274392529489518207961ed5e6b6bb3ff081572",
+   "wdspec"
+  ],
   "webdriver/tests/new_session/__init__.py": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "webdriver/tests/new_session/conftest.py": [
    "d2df38e506cb9a3e501f03fe03e2a31af42d6f04",
    "support"
   ],
@@ -617158,22 +617298,38 @@
   "webdriver/tests/page_source/__init__.py": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "webdriver/tests/page_source/source.py": [
    "f5e96dee33de36e3626c3e9bbfdd0014b27c305c",
    "wdspec"
   ],
+  "webdriver/tests/refresh/__init__.py": [
+   "da39a3ee5e6b4b0d3255bfef95601890afd80709",
+   "support"
+  ],
+  "webdriver/tests/refresh/refresh.py": [
+   "15f800f47dcc793325dbd920b8253648072503cd",
+   "wdspec"
+  ],
   "webdriver/tests/send_alert_text/__init__.py": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "webdriver/tests/send_alert_text/send.py": [
-   "743b0285cb404d5a2aafde268f9ba7e574760bd1",
+   "97c85c87bad0a09ec0ac97fb978e049e1b320283",
+   "wdspec"
+  ],
+  "webdriver/tests/set_timeouts/__init__.py": [
+   "da39a3ee5e6b4b0d3255bfef95601890afd80709",
+   "support"
+  ],
+  "webdriver/tests/set_timeouts/set.py": [
+   "335f9e4ae5c406a90bf6a4431fefb629496ad767",
    "wdspec"
   ],
   "webdriver/tests/set_window_rect/__init__.py": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "webdriver/tests/set_window_rect/set.py": [
    "79de443bc251f7effaa7c2ef3b95695f22db01c6",
@@ -617195,17 +617351,17 @@
    "5a31a3917a5157516c10951a3b3d5ffb43b992d9",
    "support"
   ],
   "webdriver/tests/support/asserts.py": [
    "1b839404daaca1d059cba98377edb91691ef7e82",
    "support"
   ],
   "webdriver/tests/support/fixtures.py": [
-   "126e82c42568c9ecb240e735a2b1361882ecd9ba",
+   "2c96ed59d70421875c31757bbfe1182860437bd9",
    "support"
   ],
   "webdriver/tests/support/http_request.py": [
    "cb40c781fea2280b98135522def5e6a116d7b946",
    "support"
   ],
   "webdriver/tests/support/inline.py": [
    "48399821b7abca50df824e37c41829d7a4573be1",
@@ -617214,22 +617370,38 @@
   "webdriver/tests/support/merge_dictionaries.py": [
    "84a6d3c6f8f4afded0f21264bbaeebec38a7f827",
    "support"
   ],
   "webdriver/tests/support/wait.py": [
    "511d4ba0ff21325b7503440b4111fac325139edc",
    "support"
   ],
+  "webdriver/tests/switch_to_frame/__init__.py": [
+   "da39a3ee5e6b4b0d3255bfef95601890afd80709",
+   "support"
+  ],
+  "webdriver/tests/switch_to_frame/switch.py": [
+   "90ab2a8b7bff127afd758b21210baa6b16b2d458",
+   "wdspec"
+  ],
   "webdriver/tests/switch_to_parent_frame/__init__.py": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "webdriver/tests/switch_to_parent_frame/switch.py": [
-   "c184952fc8a78f5edc7d573a9f8440b5eec334cc",
+   "df4dab8bd807672599d4b6191464ffdf5a9b7f44",
+   "wdspec"
+  ],
+  "webdriver/tests/switch_to_window/__init__.py": [
+   "da39a3ee5e6b4b0d3255bfef95601890afd80709",
+   "support"
+  ],
+  "webdriver/tests/switch_to_window/switch.py": [
+   "7bb4468fdaf3afb40669e581a3b277b5194c2ee0",
    "wdspec"
   ],
   "webgl/OWNERS": [
    "0df8e72f3ab70719aac73d3b06f043fac629939b",
    "support"
   ],
   "webgl/bufferSubData.html": [
    "526612470551a0eb157b310c587d50080087808d",
--- a/testing/web-platform/tests/webdriver/tests/accept_alert/accept.py
+++ b/testing/web-platform/tests/webdriver/tests/accept_alert/accept.py
@@ -2,17 +2,23 @@ from tests.support.asserts import assert
 from tests.support.inline import inline
 
 
 def accept_alert(session):
     return session.transport.send(
         "POST", "session/{session_id}/alert/accept".format(**vars(session)))
 
 
-# 18.2 Accept Alert
+def test_null_response_value(session, url):
+    session.url = inline("<script>window.alert('Hello');</script>")
+
+    response = accept_alert(session)
+    value = assert_success(response)
+    assert value is None
+
 
 def test_no_browsing_context(session, create_window):
     # 18.2 step 1
     session.window_handle = create_window()
     session.close()
 
     response = accept_alert(session)
     assert_error(response, "no such window")
--- a/testing/web-platform/tests/webdriver/tests/actions/key.py
+++ b/testing/web-platform/tests/webdriver/tests/actions/key.py
@@ -1,14 +1,22 @@
 import pytest
 
 from tests.actions.support.keys import Keys
 from tests.actions.support.refine import filter_dict, get_keys, get_events
 
 
+def test_null_response_value(session, key_chain):
+    value = key_chain.key_up("a").perform()
+    assert value is None
+
+    value = session.actions.release()
+    assert value is None
+
+
 def test_lone_keyup_sends_no_events(session, key_reporter, key_chain):
     key_chain.key_up("a").perform()
     assert len(get_keys(key_reporter)) == 0
     assert len(get_events(session)) == 0
     session.actions.release()
     assert len(get_keys(key_reporter)) == 0
     assert len(get_events(session)) == 0
 
--- a/testing/web-platform/tests/webdriver/tests/actions/mouse.py
+++ b/testing/web-platform/tests/webdriver/tests/actions/mouse.py
@@ -7,16 +7,24 @@ from tests.support.inline import inline
 from tests.support.wait import wait
 
 
 def link_doc(dest):
     content = "<a href=\"{}\" id=\"link\">destination</a>".format(dest)
     return inline(content)
 
 
+def test_null_response_value(session, mouse_chain):
+    value = mouse_chain.click().perform()
+    assert value is None
+
+    value = session.actions.release()
+    assert value is None
+
+
 def test_click_at_coordinates(session, test_actions_page, mouse_chain):
     div_point = {
         "x": 82,
         "y": 187,
     }
     mouse_chain \
         .pointer_move(div_point["x"], div_point["y"], duration=1000) \
         .click() \
--- a/testing/web-platform/tests/webdriver/tests/add_cookie/add.py
+++ b/testing/web-platform/tests/webdriver/tests/add_cookie/add.py
@@ -5,16 +5,30 @@ from tests.support.fixtures import clear
 
 
 def add_cookie(session, cookie):
     return session.transport.send(
         "POST", "session/{session_id}/cookie".format(**vars(session)),
         {"cookie": cookie})
 
 
+def test_null_response_value(session, url):
+    new_cookie = {
+        "name": "hello",
+        "value": "world",
+    }
+
+    session.url = url("/common/blank.html")
+    clear_all_cookies(session)
+
+    response = add_cookie(session, new_cookie)
+    value = assert_success(response)
+    assert value is None
+
+
 def test_add_domain_cookie(session, url, server_config):
     new_cookie = {
         "name": "hello",
         "value": "world",
         "domain": server_config["browser_host"],
         "path": "/",
         "httpOnly": False,
         "secure": False
new file mode 100644
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/webdriver/tests/back/back.py
@@ -0,0 +1,16 @@
+from tests.support.inline import inline
+from tests.support.asserts import assert_success
+
+
+def back(session):
+    return session.transport.send(
+        "POST", "session/{session_id}/back".format(**vars(session)))
+
+
+def test_null_response_value(session):
+    session.url = inline("<div>")
+    session.url = inline("<p>")
+
+    response = back(session)
+    value = assert_success(response)
+    assert value is None
new file mode 100644
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/webdriver/tests/delete_all_cookies/delete.py
@@ -0,0 +1,12 @@
+from tests.support.asserts import assert_success
+
+
+def delete_all_cookies(session):
+    return session.transport.send(
+        "DELETE", "/session/{session_id}/cookie".format(**vars(session)))
+
+
+def test_null_response_value(session, url):
+    response = delete_all_cookies(session)
+    value = assert_success(response)
+    assert value is None
--- a/testing/web-platform/tests/webdriver/tests/delete_cookie/delete.py
+++ b/testing/web-platform/tests/webdriver/tests/delete_cookie/delete.py
@@ -3,16 +3,22 @@ from tests.support.asserts import assert
 
 def delete_cookie(session, name):
     return session.transport.send(
         "DELETE", "/session/{session_id}/cookie/{name}".format(
             session_id=session.session_id,
             name=name))
 
 
+def test_null_response_value(session, url):
+    response = delete_cookie(session, "foo")
+    value = assert_success(response)
+    assert value is None
+
+
 def test_no_browsing_context(session, create_window):
     session.window_handle = create_window()
     session.close()
 
     response = delete_cookie(session, "foo")
     assert_error(response, "no such window")
 
 
--- a/testing/web-platform/tests/webdriver/tests/delete_session/delete.py
+++ b/testing/web-platform/tests/webdriver/tests/delete_session/delete.py
@@ -4,17 +4,23 @@ from webdriver import error
 from tests.support.asserts import assert_success
 from tests.support.inline import inline
 
 
 def delete_session(session):
     return session.transport.send("DELETE", "session/{session_id}".format(**vars(session)))
 
 
-def test_delete_session_with_dismissed_beforeunload_prompt(session):
+def test_null_response_value(session):
+    response = delete_session(session)
+    value = assert_success(response)
+    assert value is None
+
+
+def test_dismissed_beforeunload_prompt(session):
     session.url = inline("""
       <input type="text">
       <script>
         window.addEventListener("beforeunload", function (event) {
           event.preventDefault();
         });
       </script>
     """)
--- a/testing/web-platform/tests/webdriver/tests/dismiss_alert/dismiss.py
+++ b/testing/web-platform/tests/webdriver/tests/dismiss_alert/dismiss.py
@@ -2,17 +2,23 @@ from tests.support.asserts import assert
 from tests.support.inline import inline
 
 
 def dismiss_alert(session):
     return session.transport.send(
         "POST", "session/{session_id}/alert/dismiss".format(**vars(session)))
 
 
-# 18.1 Dismiss Alert
+def test_null_response_value(session, url):
+    session.url = inline("<script>window.alert('Hello');</script>")
+
+    response = dismiss_alert(session)
+    value = assert_success(response)
+    assert value is None
+
 
 def test_no_browsing_context(session, create_window):
     # 18.1 step 1
     session.window_handle = create_window()
     session.close()
 
     response = dismiss_alert(session)
     assert_error(response, "no such window")
--- a/testing/web-platform/tests/webdriver/tests/element_clear/clear.py
+++ b/testing/web-platform/tests/webdriver/tests/element_clear/clear.py
@@ -36,16 +36,25 @@ def get_events(session):
 
 @pytest.fixture(scope="session")
 def text_file(tmpdir_factory):
     fh = tmpdir_factory.mktemp("tmp").join("hello.txt")
     fh.write("hello")
     return fh
 
 
+def test_null_response_value(session):
+    session.url = inline("<input>")
+    element = session.find.css("input", all=False)
+
+    response = element_clear(session, element)
+    value = assert_success(response)
+    assert value is None
+
+
 def test_closed_context(session, create_window):
     new_window = create_window()
     session.window_handle = new_window
     session.url = inline("<input>")
     element = session.find.css("input", all=False)
     session.close()
 
     response = element_clear(session, element)
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/webdriver/tests/element_click/click.py
@@ -0,0 +1,18 @@
+from tests.support.asserts import 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(
+            session_id=session.session_id,
+            element_id=element.id))
+
+
+def test_null_response_value(session):
+    session.url = inline("<p>foo")
+    element = session.find.css("p", all=False)
+
+    response = element_click(session, element)
+    value = assert_success(response)
+    assert value is None
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/webdriver/tests/element_send_keys/send_keys.py
@@ -0,0 +1,19 @@
+from tests.support.asserts import assert_success
+from tests.support.inline import inline
+
+
+def element_send_keys(session, element, text):
+    return session.transport.send(
+        "POST", "/session/{session_id}/element/{element_id}/value".format(
+            session_id=session.session_id,
+            element_id=element.id),
+        {"text": text})
+
+
+def test_null_response_value(session):
+    session.url = inline("<input>")
+    element = session.find.css("input", all=False)
+
+    response = element_send_keys(session, element, "foo")
+    value = assert_success(response)
+    assert value is None
new file mode 100644
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/webdriver/tests/forward/forward.py
@@ -0,0 +1,17 @@
+from tests.support.inline import inline
+from tests.support.asserts import assert_success
+
+
+def forward(session):
+    return session.transport.send(
+        "POST", "session/{session_id}/forward".format(**vars(session)))
+
+
+def test_null_response_value(session):
+    session.url = inline("<div>")
+    session.url = inline("<p>")
+    session.back()
+
+    response = forward(session)
+    value = assert_success(response)
+    assert value is None
new file mode 100644
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/webdriver/tests/navigate_to/navigate.py
@@ -0,0 +1,14 @@
+from tests.support.inline import inline
+from tests.support.asserts import assert_success
+
+
+def navigate_to(session, url):
+    return session.transport.send(
+        "POST", "session/{session_id}/url".format(**vars(session)),
+        {"url": url})
+
+
+def test_null_response_value(session):
+    response = navigate_to(session, inline("<div/>"))
+    value = assert_success(response)
+    assert value is None
new file mode 100644
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/webdriver/tests/refresh/refresh.py
@@ -0,0 +1,15 @@
+from tests.support.inline import inline
+from tests.support.asserts import assert_success
+
+
+def refresh(session):
+    return session.transport.send(
+        "POST", "session/{session_id}/refresh".format(**vars(session)))
+
+
+def test_null_response_value(session):
+    session.url = inline("<div>")
+
+    response = refresh(session)
+    value = assert_success(response)
+    assert value is None
--- a/testing/web-platform/tests/webdriver/tests/send_alert_text/send.py
+++ b/testing/web-platform/tests/webdriver/tests/send_alert_text/send.py
@@ -1,76 +1,83 @@
 import pytest
 
 from tests.support.asserts import assert_error, assert_success
 from tests.support.inline import inline
 
 
-def send_alert_text(session, body=None):
+def send_alert_text(session, text=None):
     return session.transport.send(
         "POST", "session/{session_id}/alert/text".format(**vars(session)),
-        body)
+        {"text": text})
 
 
-# 18.4 Send Alert Text
+def test_null_response_value(session, url):
+    session.url = inline("<script>window.result = window.prompt('Enter Your Name: ', 'Name');</script>")
+
+    response = send_alert_text(session, "Federer")
+    value = assert_success(response)
+    assert value is None
+
 
 @pytest.mark.parametrize("text", [None, {}, [], 42, True])
 def test_invalid_input(session, text):
     # 18.4 step 2
     session.url = inline("<script>window.result = window.prompt('Enter Your Name: ', 'Name');</script>")
-    response = send_alert_text(session, {"text": text})
+    response = send_alert_text(session, text)
     assert_error(response, "invalid argument")
 
 
 def test_no_browsing_context(session, create_window):
     # 18.4 step 3
     session.window_handle = create_window()
     session.close()
-    body = {"text": "Federer"}
-    response = send_alert_text(session, body)
+
+    response = send_alert_text(session, "Federer")
     assert_error(response, "no such window")
 
 
 def test_no_user_prompt(session):
     # 18.4 step 4
-    body = {"text": "Federer"}
-    response = send_alert_text(session, body)
+    response = send_alert_text(session, "Federer")
     assert_error(response, "no such alert")
 
 
 def test_alert_element_not_interactable(session):
     # 18.4 step 5
     session.url = inline("<script>window.alert('Hello');</script>")
-    body = {"text": "Federer"}
-    response = send_alert_text(session, body)
+
+    response = send_alert_text(session, "Federer")
     assert_error(response, "element not interactable")
 
 
 def test_confirm_element_not_interactable(session):
     # 18.4 step 5
     session.url = inline("<script>window.confirm('Hello');</script>")
-    body = {"text": "Federer"}
-    response = send_alert_text(session, body)
+
+    response = send_alert_text(session, "Federer")
     assert_error(response, "element not interactable")
 
 
 def test_send_alert_text(session):
     # 18.4 step 6
     session.url = inline("<script>window.result = window.prompt('Enter Your Name: ', 'Name');</script>")
-    body = {"text": "Federer"}
-    send_response = send_alert_text(session, body)
+
+    send_response = send_alert_text(session, "Federer")
     assert_success(send_response)
+
     accept_response = session.transport.send("POST", "session/{session_id}/alert/accept"
                                              .format(session_id=session.session_id))
     assert_success(accept_response)
     assert session.execute_script("return window.result") == "Federer"
 
 
 def test_send_alert_text_with_whitespace(session):
     # 18.4 step 6
     session.url = inline("<script>window.result = window.prompt('Enter Your Name: ', 'Name');</script>")
-    body = {"text": " Fed erer "}
-    send_response = send_alert_text(session, body)
+
+    send_response = send_alert_text(session, " Fed erer ")
     assert_success(send_response)
+
     accept_response = session.transport.send("POST", "session/{session_id}/alert/accept"
                                              .format(session_id=session.session_id))
     assert_success(accept_response)
     assert session.execute_script("return window.result") == " Fed erer "
new file mode 100644
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/webdriver/tests/set_timeouts/set.py
@@ -0,0 +1,21 @@
+from tests.support.asserts import assert_success
+
+
+def set_timeouts(session, timeouts):
+    return session.transport.send(
+        "POST", "session/{session_id}/timeouts".format(**vars(session)),
+        timeouts)
+
+
+def test_null_response_value(session):
+    response = set_timeouts(session, {"implicit": 1000})
+    value = assert_success(response)
+    assert value is None
+
+    response = set_timeouts(session, {"pageLoad": 1000})
+    value = assert_success(response)
+    assert value is None
+
+    response = set_timeouts(session, {"script": 1000})
+    value = assert_success(response)
+    assert value is None
new file mode 100644
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/webdriver/tests/switch_to_frame/switch.py
@@ -0,0 +1,21 @@
+import webdriver.protocol as protocol
+
+from tests.support.asserts import assert_success
+from tests.support.inline import inline, iframe
+
+
+def switch_to_frame(session, frame):
+    return session.transport.send(
+        "POST", "session/{session_id}/frame".format(**vars(session)),
+        {"id": frame},
+        encoder=protocol.Encoder, decoder=protocol.Decoder,
+        session=session)
+
+
+def test_null_response_value(session):
+    session.url = inline(iframe("<p>foo"))
+    frame_element = session.find.css("iframe", all=False)
+
+    response = switch_to_frame(session, frame_element)
+    value = assert_success(response)
+    assert value is None
--- a/testing/web-platform/tests/webdriver/tests/switch_to_parent_frame/switch.py
+++ b/testing/web-platform/tests/webdriver/tests/switch_to_parent_frame/switch.py
@@ -5,16 +5,26 @@ from tests.support.asserts import assert
 from tests.support.inline import inline, iframe
 
 
 def switch_to_parent_frame(session):
     return session.transport.send(
         "POST", "session/{session_id}/frame/parent".format(**vars(session)))
 
 
+def test_null_response_value(session):
+    session.url = inline(iframe("<p>foo"))
+    frame_element = session.find.css("iframe", all=False)
+    session.switch_frame(frame_element)
+
+    response = switch_to_parent_frame(session)
+    value = assert_success(response)
+    assert value is None
+
+
 def test_stale_element_from_iframe(session):
     session.url = inline(iframe("<p>foo"))
     frame_element = session.find.css("iframe", all=False)
     session.switch_frame(frame_element)
     stale_element = session.find.css("p", all=False)
 
     result = switch_to_parent_frame(session)
     assert_success(result)
new file mode 100644
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/webdriver/tests/switch_to_window/switch.py
@@ -0,0 +1,15 @@
+from tests.support.asserts import assert_success
+
+
+def switch_to_window(session, handle):
+    return session.transport.send(
+        "POST", "session/{session_id}/window".format(**vars(session)),
+        {"handle": handle})
+
+
+def test_null_response_value(session, create_window):
+    new_handle = create_window()
+
+    response = switch_to_window(session, new_handle)
+    value = assert_success(response)
+    assert value is None