Advertisement
Guest User

Untitled

a guest
Oct 19th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 34.59 KB | None | 0 0
  1. diff --git a/WebDriverTests/imported/w3c/webdriver/tests/conftest.py b/WebDriverTests/imported/w3c/webdriver/tests/conftest.py
  2. index e1491a68026..341377cfd2c 100644
  3. --- a/WebDriverTests/imported/w3c/webdriver/tests/conftest.py
  4. +++ b/WebDriverTests/imported/w3c/webdriver/tests/conftest.py
  5. @@ -1,7 +1,7 @@
  6.  import pytest
  7.  from tests.support.fixtures import (
  8.      configuration, create_dialog, create_frame, create_window, http,
  9. -    new_session, server_config, session, url)
  10. +    new_session, overwrite_capabilites, server_config, session, url)
  11.  
  12.  pytest.fixture(scope="session")(configuration)
  13.  pytest.fixture()(create_dialog)
  14. @@ -9,6 +9,7 @@ pytest.fixture()(create_frame)
  15.  pytest.fixture()(create_window)
  16.  pytest.fixture()(http)
  17.  pytest.fixture(scope="function")(new_session)
  18. +pytest.fixture()(overwrite_capabilites)
  19.  pytest.fixture()(server_config)
  20.  pytest.fixture(scope="function")(session)
  21.  pytest.fixture()(url)
  22. diff --git a/WebDriverTests/imported/w3c/webdriver/tests/contexts/maximize_window.py b/WebDriverTests/imported/w3c/webdriver/tests/contexts/maximize_window.py
  23. index 4173b170881..527f30e0262 100644
  24. --- a/WebDriverTests/imported/w3c/webdriver/tests/contexts/maximize_window.py
  25. +++ b/WebDriverTests/imported/w3c/webdriver/tests/contexts/maximize_window.py
  26. @@ -39,7 +39,7 @@ def test_handle_prompt_ignore():
  27.      """TODO"""
  28.  
  29.  
  30. -def test_handle_prompt_accept(new_session):
  31. +def test_handle_prompt_accept(new_session, overwrite_capabilites):
  32.      """
  33.      3. Handle any user prompts and return its value if it is an error.
  34.  
  35. @@ -59,7 +59,7 @@ def test_handle_prompt_accept(new_session):
  36.             Accept the current user prompt.
  37.  
  38.      """
  39. -    _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "accept"}})
  40. +    _, session = new_session(overwrite_capabilites({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}))
  41.      session.url = inline("<title>WD doc title</title>")
  42.  
  43.      create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1")
  44. diff --git a/WebDriverTests/imported/w3c/webdriver/tests/cookies/delete_cookie.py b/WebDriverTests/imported/w3c/webdriver/tests/cookies/delete_cookie.py
  45. index adb9674909c..5aadcd74083 100644
  46. --- a/WebDriverTests/imported/w3c/webdriver/tests/cookies/delete_cookie.py
  47. +++ b/WebDriverTests/imported/w3c/webdriver/tests/cookies/delete_cookie.py
  48. @@ -34,7 +34,7 @@ def test_handle_prompt_ignore():
  49.      """TODO"""
  50.  
  51.  
  52. -def test_handle_prompt_accept(new_session):
  53. +def test_handle_prompt_accept(new_session, overwrite_capabilites):
  54.      """
  55.      2. Handle any user prompts and return its value if it is an error.
  56.  
  57. @@ -54,7 +54,7 @@ def test_handle_prompt_accept(new_session):
  58.             Accept the current user prompt.
  59.  
  60.      """
  61. -    _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "accept"}})
  62. +    _, session = new_session(overwrite_capabilites({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}))
  63.      session.url = inline("<title>WD doc title</title>")
  64.  
  65.      create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1")
  66. diff --git a/WebDriverTests/imported/w3c/webdriver/tests/element_retrieval/get_active_element.py b/WebDriverTests/imported/w3c/webdriver/tests/element_retrieval/get_active_element.py
  67. index 8286633e89d..3a3891557cb 100644
  68. --- a/WebDriverTests/imported/w3c/webdriver/tests/element_retrieval/get_active_element.py
  69. +++ b/WebDriverTests/imported/w3c/webdriver/tests/element_retrieval/get_active_element.py
  70. @@ -43,8 +43,8 @@ def test_closed_context(session, create_window):
  71.  #    [...]
  72.  #
  73.  # 3. Return success.
  74. -def test_handle_prompt_dismiss(new_session):
  75. -    _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "dismiss"}})
  76. +def test_handle_prompt_dismiss(new_session, overwrite_capabilites):
  77. +    _, session = new_session(overwrite_capabilites({"alwaysMatch": {"unhandledPromptBehavior": "dismiss"}}))
  78.      session.url = inline("<body><p>Hello, World!</p></body>")
  79.  
  80.      create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1")
  81. @@ -87,8 +87,8 @@ def test_handle_prompt_dismiss(new_session):
  82.  #    [...]
  83.  #
  84.  # 3. Return success.
  85. -def test_handle_prompt_accept(new_session):
  86. -    _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "accept"}})
  87. +def test_handle_prompt_accept(new_session, overwrite_capabilites):
  88. +    _, session = new_session(overwrite_capabilites({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}))
  89.      session.url = inline("<body><p>Hello, World!</p></body>")
  90.      create_dialog(session)("alert", text="accept #1", result_var="accept1")
  91.  
  92. diff --git a/WebDriverTests/imported/w3c/webdriver/tests/fullscreen_window.py b/WebDriverTests/imported/w3c/webdriver/tests/fullscreen_window.py
  93. index 696c579c266..f4b66a691e1 100644
  94. --- a/WebDriverTests/imported/w3c/webdriver/tests/fullscreen_window.py
  95. +++ b/WebDriverTests/imported/w3c/webdriver/tests/fullscreen_window.py
  96. @@ -43,7 +43,7 @@ def test_handle_prompt_ignore():
  97.      """TODO"""
  98.  
  99.  
  100. -def test_handle_prompt_accept(new_session):
  101. +def test_handle_prompt_accept(new_session, overwrite_capabilites):
  102.      """
  103.      2. Handle any user prompts and return its value if it is an error.
  104.  
  105. @@ -63,7 +63,7 @@ def test_handle_prompt_accept(new_session):
  106.             Accept the current user prompt.
  107.  
  108.      """
  109. -    _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "accept"}})
  110. +    _, session = new_session(overwrite_capabilites({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}))
  111.      session.url = inline("<title>WD doc title</title>")
  112.      create_dialog(session)("alert", text="accept #1", result_var="accept1")
  113.  
  114. diff --git a/WebDriverTests/imported/w3c/webdriver/tests/get_window_rect.py b/WebDriverTests/imported/w3c/webdriver/tests/get_window_rect.py
  115. index 3ec8ce71d47..a0f4f383617 100644
  116. --- a/WebDriverTests/imported/w3c/webdriver/tests/get_window_rect.py
  117. +++ b/WebDriverTests/imported/w3c/webdriver/tests/get_window_rect.py
  118. @@ -37,7 +37,7 @@ def test_handle_prompt_ignore():
  119.      """TODO"""
  120.  
  121.  
  122. -def test_handle_prompt_accept(new_session):
  123. +def test_handle_prompt_accept(new_session, overwrite_capabilites):
  124.      """
  125.      2. Handle any user prompts and return its value if it is an error.
  126.  
  127. @@ -57,7 +57,7 @@ def test_handle_prompt_accept(new_session):
  128.             Accept the current user prompt.
  129.  
  130.      """
  131. -    _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "accept"}})
  132. +    _, session = new_session(overwrite_capabilites({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}))
  133.      session.url = inline("<title>WD doc title</title>")
  134.  
  135.      create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1")
  136. diff --git a/WebDriverTests/imported/w3c/webdriver/tests/minimize_window.py b/WebDriverTests/imported/w3c/webdriver/tests/minimize_window.py
  137. index 497d967d982..b1428bae1c8 100644
  138. --- a/WebDriverTests/imported/w3c/webdriver/tests/minimize_window.py
  139. +++ b/WebDriverTests/imported/w3c/webdriver/tests/minimize_window.py
  140. @@ -37,7 +37,7 @@ def test_handle_prompt_ignore():
  141.      """TODO"""
  142.  
  143.  
  144. -def test_handle_prompt_accept(new_session):
  145. +def test_handle_prompt_accept(new_session, overwrite_capabilites):
  146.      """
  147.      2. Handle any user prompts and return its value if it is an error.
  148.  
  149. @@ -57,7 +57,7 @@ def test_handle_prompt_accept(new_session):
  150.             Accept the current user prompt.
  151.  
  152.      """
  153. -    _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "accept"}})
  154. +    _, session = new_session(overwrite_capabilites({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}))
  155.      session.url = inline("<title>WD doc title</title>")
  156.  
  157.      create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1")
  158. diff --git a/WebDriverTests/imported/w3c/webdriver/tests/navigation/get_title.py b/WebDriverTests/imported/w3c/webdriver/tests/navigation/get_title.py
  159. index e0f39acebad..fa97524a158 100644
  160. --- a/WebDriverTests/imported/w3c/webdriver/tests/navigation/get_title.py
  161. +++ b/WebDriverTests/imported/w3c/webdriver/tests/navigation/get_title.py
  162. @@ -33,8 +33,8 @@ def test_title_from_closed_context(session, create_window):
  163.  #    [...]
  164.  #
  165.  # 3. Return success.
  166. -def test_title_handle_prompt_dismiss(new_session):
  167. -    _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "dismiss"}})
  168. +def test_title_handle_prompt_dismiss(new_session, overwrite_capabilites):
  169. +    _, session = new_session(overwrite_capabilites({"alwaysMatch": {"unhandledPromptBehavior": "dismiss"}}))
  170.      session.url = inline("<title>WD doc title</title>")
  171.  
  172.      expected_title = read_global(session, "document.title")
  173. @@ -80,8 +80,8 @@ def test_title_handle_prompt_dismiss(new_session):
  174.  #    [...]
  175.  #
  176.  # 3. Return success.
  177. -def test_title_handle_prompt_accept(new_session):
  178. -    _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "accept"}})
  179. +def test_title_handle_prompt_accept(new_session, overwrite_capabilites):
  180. +    _, session = new_session(overwrite_capabilites({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}))
  181.      session.url = inline("<title>WD doc title</title>")
  182.      create_dialog(session)("alert", text="accept #1", result_var="accept1")
  183.  
  184. diff --git a/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/create_alwaysMatch.py b/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/create_alwaysMatch.py
  185. index 0128c45d4fe..1d769c1caae 100644
  186. --- a/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/create_alwaysMatch.py
  187. +++ b/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/create_alwaysMatch.py
  188. @@ -8,6 +8,6 @@ from support.create import valid_data
  189.  
  190.  
  191.  @pytest.mark.parametrize("key,value", flatten(product(*item) for item in valid_data))
  192. -def test_valid(new_session, key, value):
  193. -    resp = new_session({"capabilities": {"alwaysMatch": {key: value}}})
  194. +def test_valid(new_session, overwrite_capabilites, key, value):
  195. +    resp = new_session(overwrite_capabilites({"alwaysMatch": {key: value}}))
  196.  
  197. diff --git a/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/create_firstMatch.py b/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/create_firstMatch.py
  198. index f0540309108..2dc685fe880 100644
  199. --- a/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/create_firstMatch.py
  200. +++ b/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/create_firstMatch.py
  201. @@ -8,5 +8,11 @@ from support.create import valid_data
  202.  
  203.  
  204.  @pytest.mark.parametrize("key,value", flatten(product(*item) for item in valid_data))
  205. -def test_valid(new_session, key, value):
  206. -    resp = new_session({"capabilities": {"firstMatch": [{key: value}]}})
  207. +def test_valid(new_session, overwrite_capabilites, key, value):
  208. +    capabilities = overwrite_capabilites({"firstMatch": [{key: value}]})
  209. +    # We need to remove the capability from alwaysMatch dictionary if present.
  210. +    try:
  211. +        del capabilities["capabilities"]["alwaysMatch"][key]
  212. +    except KeyError:
  213. +        pass
  214. +    resp = new_session(capabilities)
  215. diff --git a/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/default_values.py b/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/default_values.py
  216. index bfe4144f5a3..f80643c5a61 100644
  217. --- a/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/default_values.py
  218. +++ b/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/default_values.py
  219. @@ -7,15 +7,15 @@ import pytest
  220.  from webdriver import error
  221.  
  222.  
  223. -def test_basic(new_session):
  224. -    resp, _ = new_session({"capabilities": {}})
  225. +def test_basic(new_session, configuration):
  226. +    resp, _ = new_session({"capabilities": {"alwaysMatch": configuration["capabilities"]}})
  227.      assert set(resp.keys()) == {"sessionId", "capabilities"}
  228.  
  229.  
  230. -def test_repeat_new_session(new_session):
  231. -    resp, _ = new_session({"capabilities": {}})
  232. +def test_repeat_new_session(new_session, configuration):
  233. +    resp, _ = new_session({"capabilities": {"alwaysMatch": configuration["capabilities"]}})
  234.      with pytest.raises(error.SessionNotCreatedException):
  235. -        new_session({"capabilities": {}})
  236. +        new_session({"capabilities": {"alwaysMatch": configuration["capabilities"]}})
  237.  
  238.  
  239.  def test_no_capabilites(new_session):
  240. @@ -23,12 +23,12 @@ def test_no_capabilites(new_session):
  241.          new_session({})
  242.  
  243.  
  244. -def test_missing_first_match(new_session):
  245. -    resp, _ = new_session({"capabilities": {"alwaysMatch": {}}})
  246. +def test_missing_first_match(new_session, configuration):
  247. +    resp, _ = new_session({"capabilities": {"alwaysMatch": configuration["capabilities"]}})
  248.  
  249.  
  250. -def test_missing_always_match(new_session):
  251. -    resp, _ = new_session({"capabilities": {"firstMatch": [{}]}})
  252. +def test_missing_always_match(new_session, configuration):
  253. +    resp, _ = new_session({"capabilities": {"firstMatch": [configuration["capabilities"]]}})
  254.  
  255.  
  256.  def test_desired(new_session):
  257. @@ -36,13 +36,13 @@ def test_desired(new_session):
  258.          resp, _ = new_session({"desiredCapbilities": {}})
  259.  
  260.  
  261. -def test_ignore_non_spec_fields_in_capabilities(new_session):
  262. -    resp, _ = new_session({"capabilities": {"desiredCapbilities": {"pageLoadStrategy": "eager"}}})
  263. +def test_ignore_non_spec_fields_in_capabilities(new_session, overwrite_capabilites):
  264. +    resp, _ = new_session(overwrite_capabilites({"desiredCapbilities": {"pageLoadStrategy": "eager"}}))
  265.      assert resp["capabilities"]["pageLoadStrategy"] == "normal"
  266.  
  267.  
  268. -def test_valid_but_unmatchable_key(new_session):
  269. -    resp, _ = new_session({"capabilities": {
  270. +def test_valid_but_unmatchable_key(new_session, overwrite_capabilites):
  271. +    resp, _ = new_session(overwrite_capabilites({
  272.        "firstMatch": [{"pageLoadStrategy": "eager", "foo:unmatchable": True},
  273. -                     {"pageLoadStrategy": "none"}]}})
  274. +                     {"pageLoadStrategy": "none"}]}))
  275.      assert resp["capabilities"]["pageLoadStrategy"] == "none"
  276. diff --git a/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/invalid_capabilities.py b/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/invalid_capabilities.py
  277. index 325c9b281af..d77cb85fbfd 100644
  278. --- a/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/invalid_capabilities.py
  279. +++ b/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/invalid_capabilities.py
  280. @@ -13,15 +13,15 @@ def test_invalid_capabilites(new_session, value):
  281.  
  282.  
  283.  @pytest.mark.parametrize("value", [None, 1, "{}", []])
  284. -def test_invalid_always_match(new_session, value):
  285. +def test_invalid_always_match(new_session, configuration, value):
  286.      with pytest.raises(error.InvalidArgumentException):
  287. -        new_session({"capabilities": {"alwaysMatch": value}})
  288. +        new_session({"capabilities": {"alwaysMatch": value, "firstMatch": [configuration["capabilities"]]}})
  289.  
  290.  
  291.  @pytest.mark.parametrize("value", [None, 1, "[]", {}])
  292. -def test_invalid_first_match(new_session, value):
  293. +def test_invalid_first_match(new_session, configuration, value):
  294.      with pytest.raises(error.InvalidArgumentException):
  295. -        new_session({"capabilities": {"firstMatch": value}})
  296. +        new_session({"capabilities": {"alwaysMatch": configuration["capabilities"], "firstMatch": value}})
  297.  
  298.  
  299.  invalid_data = [
  300. @@ -49,9 +49,16 @@ invalid_data = [
  301.  @pytest.mark.parametrize("body", [lambda key, value: {"alwaysMatch": {key: value}},
  302.                                    lambda key, value: {"firstMatch": [{key: value}]}])
  303.  @pytest.mark.parametrize("key,value", flatten(product(*item) for item in invalid_data))
  304. -def test_invalid(new_session, body, key, value):
  305. +def test_invalid_values(new_session, overwrite_capabilites, body, key, value):
  306. +    test_capabilities = body(key, value)
  307. +    capabilities = overwrite_capabilites(test_capabilities)
  308. +    if "firstMatch" in test_capabilities:
  309. +        try:
  310. +            del capabilities["capabilities"]["alwaysMatch"][key]
  311. +        except KeyError:
  312. +            pass
  313.      with pytest.raises(error.InvalidArgumentException):
  314. -        resp = new_session({"capabilities": body(key, value)})
  315. +        resp = new_session(capabilities)
  316.  
  317.  
  318.  invalid_extensions = [
  319. @@ -82,7 +89,7 @@ invalid_extensions = [
  320.  @pytest.mark.parametrize("body", [lambda key, value: {"alwaysMatch": {key: value}},
  321.                                    lambda key, value: {"firstMatch": [{key: value}]}])
  322.  @pytest.mark.parametrize("key", invalid_extensions)
  323. -def test_invalid(new_session, body, key):
  324. +def test_invalid_extensions(new_session, overwrite_capabilites, body, key):
  325.      with pytest.raises(error.InvalidArgumentException):
  326. -        resp = new_session({"capabilities": body(key, {})})
  327. +        resp = new_session(overwrite_capabilites(body(key, {})))
  328.  
  329. diff --git a/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/merge.py b/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/merge.py
  330. index 2e64620455c..c12698eb4b0 100644
  331. --- a/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/merge.py
  332. +++ b/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/merge.py
  333. @@ -9,8 +9,8 @@ from conftest import platform_name
  334.  @pytest.mark.skipif(platform_name() is None, reason="Unsupported platform")
  335.  @pytest.mark.parametrize("body", [lambda key, value: {"alwaysMatch": {key: value}},
  336.                                    lambda key, value: {"firstMatch": [{key: value}]}])
  337. -def test_platform_name(new_session, platform_name, body):
  338. -    resp, _ = new_session({"capabilities": body("platformName", platform_name)})
  339. +def test_platform_name(new_session, overwrite_capabilites, platform_name, body):
  340. +    resp, _ = new_session(overwrite_capabilites(body("platformName", platform_name)))
  341.      assert resp["capabilities"]["platformName"] == platform_name
  342.  
  343.  
  344. @@ -24,18 +24,20 @@ invalid_merge = [
  345.  
  346.  
  347.  @pytest.mark.parametrize("key,value", invalid_merge)
  348. -def test_merge_invalid(new_session, key, value):
  349. +def test_merge_invalid(new_session, overwrite_capabilites, key, value):
  350.      with pytest.raises(error.InvalidArgumentException):
  351. -         new_session({"capabilities":
  352. +         new_session(overwrite_capabilites(
  353.                        {"alwaysMatch": {key: value[0]},
  354. -                       "firstMatch": [{}, {key: value[1]}]}})
  355. +                       "firstMatch": [{}, {key: value[1]}]}))
  356.  
  357.  
  358.  @pytest.mark.skipif(platform_name() is None, reason="Unsupported platform")
  359. -def test_merge_platformName(new_session, platform_name):
  360. +def test_merge_platformName(new_session, configuration, platform_name):
  361. +    always_match = configuration["capabilities"]
  362. +    always_match["timeouts"] = {"script": 10}
  363.      resp, _ = new_session({"capabilities":
  364. -                        {"alwaysMatch": {"timeouts": {"script": 10}}},
  365. -                        "firstMatch": [
  366. +                        {"alwaysMatch": always_match,
  367. +                         "firstMatch": [
  368.                              {
  369.                                  "platformName": platform_name.upper(),
  370.                                  "pageLoadStrategy": "none"
  371. @@ -44,14 +46,16 @@ def test_merge_platformName(new_session, platform_name):
  372.                                  "platformName": platform_name,
  373.                                  "pageLoadStrategy": "eager"
  374.                              }
  375. -                        ]})
  376. +                         ]}})
  377.  
  378.      assert resp["capabilities"]["platformName"] == platform_name
  379.      assert resp["capabilities"]["pageLoadStrategy"] == "eager"
  380.  
  381.  
  382. -def test_merge_browserName(new_session):
  383. -    resp, session = new_session({})
  384. +def test_merge_browserName(new_session, configuration):
  385. +    always_match = configuration["capabilities"]
  386. +    always_match = always_match.fromkeys([k for k in always_match.keys() if k not in ["browserName", "browserVersion", "platformName"]])
  387. +    resp, session = new_session({"capabilities": {"alwaysMatch": always_match}})
  388.      browser_settings = {
  389.          "browserName": resp["capabilities"]["browserName"],
  390.          "browserVersion": resp["capabilities"]["browserVersion"],
  391. @@ -59,9 +63,10 @@ def test_merge_browserName(new_session):
  392.      }
  393.      session.end()
  394.  
  395. +    always_match["timeouts"] = {"script": 10}
  396.      resp, _ = new_session({"capabilities":
  397. -                        {"alwaysMatch": {"timeouts": {"script": 10}}},
  398. -                        "firstMatch": [
  399. +                        {"alwaysMatch": always_match,
  400. +                         "firstMatch": [
  401.                              {
  402.                                  "browserName": browser_settings["browserName"] + "invalid",
  403.                                  "pageLoadStrategy": "none"
  404. @@ -70,7 +75,7 @@ def test_merge_browserName(new_session):
  405.                                  "browserName": browser_settings["browserName"],
  406.                                  "pageLoadStrategy": "eager"
  407.                              }
  408. -                        ]})
  409. +                         ]}})
  410.  
  411.      assert resp["capabilities"]["browserName"] == browser_settings['browserName']
  412.      assert resp["capabilities"]["pageLoadStrategy"] == "eager"
  413. diff --git a/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/response.py b/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/response.py
  414. index 6669573ba2c..e0b49ceba12 100644
  415. --- a/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/response.py
  416. +++ b/WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/response.py
  417. @@ -2,14 +2,14 @@
  418.  
  419.  import uuid
  420.  
  421. -def test_resp_sessionid(new_session):
  422. -    resp, _ = new_session({"capabilities": {}})
  423. +def test_resp_sessionid(new_session, configuration):
  424. +    resp, _ = new_session({"capabilities": {"alwaysMatch": configuration["capabilities"]}})
  425.      assert isinstance(resp["sessionId"], unicode)
  426.      uuid.UUID(hex=resp["sessionId"])
  427.  
  428.  
  429. -def test_resp_capabilites(new_session):
  430. -    resp, _ = new_session({"capabilities": {}})
  431. +def test_resp_capabilites(new_session, configuration):
  432. +    resp, _ = new_session({"capabilities": {"alwaysMatch": configuration["capabilities"]}})
  433.      assert isinstance(resp["sessionId"], unicode)
  434.      assert isinstance(resp["capabilities"], dict)
  435.      assert {"browserName",
  436. @@ -23,8 +23,8 @@ def test_resp_capabilites(new_session):
  437.                  set(resp["capabilities"].keys()))
  438.  
  439.  
  440. -def test_resp_data(new_session, platform_name):
  441. -    resp, _ = new_session({"capabilities": {}})
  442. +def test_resp_data(new_session, configuration, platform_name):
  443. +    resp, _ = new_session({"capabilities": {"alwaysMatch": configuration["capabilities"]}})
  444.  
  445.      assert isinstance(resp["capabilities"]["browserName"], unicode)
  446.      assert isinstance(resp["capabilities"]["browserVersion"], unicode)
  447. @@ -41,14 +41,14 @@ def test_resp_data(new_session, platform_name):
  448.      assert resp["capabilities"]["pageLoadStrategy"] == "normal"
  449.  
  450.  
  451. -def test_timeouts(new_session, platform_name):
  452. -    resp, _ = new_session({"capabilities": {"alwaysMatch": {"timeouts": {"implicit": 1000}}}})
  453. +def test_timeouts(new_session, overwrite_capabilites, platform_name):
  454. +    resp, _ = new_session(overwrite_capabilites({"alwaysMatch": {"timeouts": {"implicit": 1000}}}))
  455.      assert resp["capabilities"]["timeouts"] == {
  456.          "implicit": 1000,
  457.          "pageLoad": 300000,
  458.          "script": 30000
  459.      }
  460.  
  461. -def test_pageLoadStrategy(new_session, platform_name):
  462. -    resp, _ = new_session({"capabilities": {"alwaysMatch": {"pageLoadStrategy": "eager"}}})
  463. +def test_pageLoadStrategy(new_session, overwrite_capabilites, platform_name):
  464. +    resp, _ = new_session(overwrite_capabilites({"alwaysMatch": {"pageLoadStrategy": "eager"}}))
  465.      assert resp["capabilities"]["pageLoadStrategy"] == "eager"
  466. diff --git a/WebDriverTests/imported/w3c/webdriver/tests/set_window_rect.py b/WebDriverTests/imported/w3c/webdriver/tests/set_window_rect.py
  467. index b300d09d111..6b39e9e5b48 100644
  468. --- a/WebDriverTests/imported/w3c/webdriver/tests/set_window_rect.py
  469. +++ b/WebDriverTests/imported/w3c/webdriver/tests/set_window_rect.py
  470. @@ -33,7 +33,7 @@ def test_handle_prompt_dismiss():
  471.      """TODO"""
  472.  
  473.  
  474. -def test_handle_prompt_accept(new_session):
  475. +def test_handle_prompt_accept(new_session, overwrite_capabilites):
  476.      """
  477.      2. Handle any user prompts and return its value if it is an error.
  478.  
  479. @@ -53,8 +53,7 @@ def test_handle_prompt_accept(new_session):
  480.             Accept the current user prompt.
  481.  
  482.      """
  483. -    _, session = new_session(
  484. -        {"alwaysMatch": {"unhandledPromptBehavior": "accept"}})
  485. +    _, session = new_session(overwrite_capabilites({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}))
  486.      original = session.window.rect
  487.  
  488.      # step 2
  489. diff --git a/WebDriverTests/imported/w3c/webdriver/tests/state/get_element_attribute.py b/WebDriverTests/imported/w3c/webdriver/tests/state/get_element_attribute.py
  490. index e662d95a9c7..8c718d5aee1 100644
  491. --- a/WebDriverTests/imported/w3c/webdriver/tests/state/get_element_attribute.py
  492. +++ b/WebDriverTests/imported/w3c/webdriver/tests/state/get_element_attribute.py
  493. @@ -24,9 +24,9 @@ def test_no_browsing_context(session, create_window):
  494.      assert_error(result, "no such window")
  495.  
  496.  
  497. -def test_handle_prompt_dismiss(new_session):
  498. +def test_handle_prompt_dismiss(new_session, overwrite_capabilites):
  499.      # 13.2 step 2
  500. -    _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "dismiss"}})
  501. +    _, session = new_session(overwrite_capabilites({"alwaysMatch": {"unhandledPromptBehavior": "dismiss"}}))
  502.      session.url = inline("<input id=foo>")
  503.  
  504.      create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1")
  505. @@ -51,9 +51,9 @@ def test_handle_prompt_dismiss(new_session):
  506.      assert_dialog_handled(session, "dismiss #3")
  507.  
  508.  
  509. -def test_handle_prompt_accept(new_session):
  510. +def test_handle_prompt_accept(new_session, overwrite_capabilites):
  511.      # 13.2 step 2
  512. -    _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "accept"}})
  513. +    _, session = new_session(overwrite_capabilites({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}))
  514.      session.url = inline("<input id=foo>")
  515.  
  516.      create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1")
  517. diff --git a/WebDriverTests/imported/w3c/webdriver/tests/state/get_element_property.py b/WebDriverTests/imported/w3c/webdriver/tests/state/get_element_property.py
  518. index 00a85af69b5..cc33d005810 100644
  519. --- a/WebDriverTests/imported/w3c/webdriver/tests/state/get_element_property.py
  520. +++ b/WebDriverTests/imported/w3c/webdriver/tests/state/get_element_property.py
  521. @@ -19,9 +19,9 @@ def test_no_browsing_context(session, create_window):
  522.      assert_error(result, "no such window")
  523.  
  524.  
  525. -def test_handle_prompt_dismiss(new_session):
  526. +def test_handle_prompt_dismiss(new_session, overwrite_capabilites):
  527.      # 13.3 step 2
  528. -    _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "dismiss"}})
  529. +    _, session = new_session(overwrite_capabilites({"alwaysMatch": {"unhandledPromptBehavior": "dismiss"}}))
  530.      session.url = inline("<input id=foo>")
  531.  
  532.      create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1")
  533. @@ -53,9 +53,9 @@ def test_handle_prompt_dismiss(new_session):
  534.  
  535.  
  536.  
  537. -def test_handle_prompt_accept(new_session):
  538. +def test_handle_prompt_accept(new_session, overwrite_capabilites):
  539.      # 13.3 step 2
  540. -    _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "accept"}})
  541. +    _, session = new_session(overwrite_capabilites({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}))
  542.      session.url = inline("<input id=foo>")
  543.  
  544.      create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1")
  545. diff --git a/WebDriverTests/imported/w3c/webdriver/tests/state/get_element_tag_name.py b/WebDriverTests/imported/w3c/webdriver/tests/state/get_element_tag_name.py
  546. index 4100e9b1e17..05b03d93310 100644
  547. --- a/WebDriverTests/imported/w3c/webdriver/tests/state/get_element_tag_name.py
  548. +++ b/WebDriverTests/imported/w3c/webdriver/tests/state/get_element_tag_name.py
  549. @@ -17,9 +17,9 @@ def test_no_browsing_context(session, create_window):
  550.      assert_error(result, "no such window")
  551.  
  552.  
  553. -def test_handle_prompt_dismiss(new_session):
  554. +def test_handle_prompt_dismiss(new_session, overwrite_capabilites):
  555.      # 13.6 step 2
  556. -    _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "dismiss"}})
  557. +    _, session = new_session(overwrite_capabilites({"alwaysMatch": {"unhandledPromptBehavior": "dismiss"}}))
  558.      session.url = inline("<input id=foo>")
  559.  
  560.      create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1")
  561. @@ -50,9 +50,9 @@ def test_handle_prompt_dismiss(new_session):
  562.      assert_dialog_handled(session, "dismiss #3")
  563.  
  564.  
  565. -def test_handle_prompt_accept(new_session):
  566. +def test_handle_prompt_accept(new_session, overwrite_capabilites):
  567.      # 13.6 step 2
  568. -    _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "accept"}})
  569. +    _, session = new_session(overwrite_capabilites({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}))
  570.      session.url = inline("<input id=foo>")
  571.  
  572.      create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1")
  573. diff --git a/WebDriverTests/imported/w3c/webdriver/tests/state/is_element_selected.py b/WebDriverTests/imported/w3c/webdriver/tests/state/is_element_selected.py
  574. index c82f26fa912..c7411f6a337 100644
  575. --- a/WebDriverTests/imported/w3c/webdriver/tests/state/is_element_selected.py
  576. +++ b/WebDriverTests/imported/w3c/webdriver/tests/state/is_element_selected.py
  577. @@ -26,9 +26,9 @@ def test_no_browsing_context(session, create_window):
  578.      assert_error(result, "no such window")
  579.  
  580.  
  581. -def test_handle_prompt_dismiss(new_session):
  582. +def test_handle_prompt_dismiss(new_session, overwrite_capabilites):
  583.      # 13.1 step 2
  584. -    _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "dismiss"}})
  585. +    _, session = new_session(overwrite_capabilites({"alwaysMatch": {"unhandledPromptBehavior": "dismiss"}}))
  586.      session.url = inline("<input id=foo>")
  587.  
  588.      create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1")
  589. @@ -59,9 +59,9 @@ def test_handle_prompt_dismiss(new_session):
  590.      assert_dialog_handled(session, "dismiss #3")
  591.  
  592.  
  593. -def test_handle_prompt_accept(new_session):
  594. +def test_handle_prompt_accept(new_session, overwrite_capabilites):
  595.      # 13.1 step 2
  596. -    _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "accept"}})
  597. +    _, session = new_session(overwrite_capabilites({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}))
  598.      session.url = inline("<input id=foo>")
  599.  
  600.      create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1")
  601. diff --git a/WebDriverTests/imported/w3c/webdriver/tests/support/__init__.py b/WebDriverTests/imported/w3c/webdriver/tests/support/__init__.py
  602. index d37faf6da04..305bb29f8bf 100644
  603. --- a/WebDriverTests/imported/w3c/webdriver/tests/support/__init__.py
  604. +++ b/WebDriverTests/imported/w3c/webdriver/tests/support/__init__.py
  605. @@ -1 +1 @@
  606. -from merge_dictionaries import merge_dictionaries
  607. +from merge_dictionaries import merge_dictionaries, overwrite_dictionary
  608. diff --git a/WebDriverTests/imported/w3c/webdriver/tests/support/fixtures.py b/WebDriverTests/imported/w3c/webdriver/tests/support/fixtures.py
  609. index d93f862578a..bd4fc3fec9b 100644
  610. --- a/WebDriverTests/imported/w3c/webdriver/tests/support/fixtures.py
  611. +++ b/WebDriverTests/imported/w3c/webdriver/tests/support/fixtures.py
  612. @@ -8,7 +8,7 @@ import mozlog
  613.  
  614.  from tests.support.asserts import assert_error
  615.  from tests.support.http_request import HTTPRequest
  616. -from tests.support import merge_dictionaries
  617. +from tests.support import merge_dictionaries, overwrite_dictionary
  618.  
  619.  default_host = "http://127.0.0.1"
  620.  default_port = "4444"
  621. @@ -188,8 +188,6 @@ def new_session(configuration, request):
  622.          _session = webdriver.Session(configuration["host"],
  623.                                       configuration["port"],
  624.                                       capabilities=None)
  625. -        # TODO: merge in some capabilities from the confguration capabilities
  626. -        # since these might be needed to start the browser
  627.          value = _session.send_command("POST", "session", body=body)
  628.          # Don't set the global session until we are sure this succeeded
  629.          _current_session = _session
  630. @@ -203,6 +201,12 @@ def new_session(configuration, request):
  631.      return create_session
  632.  
  633.  
  634. +def overwrite_capabilites(configuration):
  635. +    def create_capabilities(capabilities):
  636. +        return {"capabilities": overwrite_dictionary({"alwaysMatch": configuration["capabilities"]}, capabilities)}
  637. +    return create_capabilities
  638. +
  639. +
  640.  def url(server_config):
  641.      def inner(path, protocol="http", query="", fragment=""):
  642.          port = server_config["ports"][protocol][0]
  643. diff --git a/WebDriverTests/imported/w3c/webdriver/tests/support/merge_dictionaries.py b/WebDriverTests/imported/w3c/webdriver/tests/support/merge_dictionaries.py
  644. index cf06c9b433c..c221af3514d 100644
  645. --- a/WebDriverTests/imported/w3c/webdriver/tests/support/merge_dictionaries.py
  646. +++ b/WebDriverTests/imported/w3c/webdriver/tests/support/merge_dictionaries.py
  647. @@ -24,6 +24,27 @@ def merge_dictionaries(first, second):
  648.  
  649.      return result
  650.  
  651. +def overwrite_dictionary(first, second):
  652. +    """Given two dictionaries, create a third that defines all specified
  653. +    key/value pairs. This merge_dictionaries is performed "deeply" on any nested
  654. +    dictionaries. If a value is defined for the same key by both dictionaries,
  655. +    the vale of the second one is used."""
  656. +    result = dict(first)
  657. +
  658. +    for key, value in iteritems(first):
  659. +        if key not in second or second[key] == value:
  660. +            continue
  661. +        if isinstance(second[key], dict) and isinstance(value, dict):
  662. +            result[key] = overwrite_dictionary(result[key], second[key])
  663. +        else:
  664. +            result[key] = second[key]
  665. +
  666. +    for key, value in iteritems(second):
  667. +        if key not in result:
  668. +            result[key] = value
  669. +
  670. +    return result
  671. +
  672.  if __name__ == "__main__":
  673.      assert merge_dictionaries({}, {}) == {}
  674.      assert merge_dictionaries({}, {"a": 23}) == {"a": 23}
  675. @@ -47,3 +68,12 @@ if __name__ == "__main__":
  676.      except Exception as _e:
  677.          e = _e
  678.      assert isinstance(e, TypeError)
  679. +
  680. +    assert overwrite_dictionary({}, {}) == {}
  681. +    assert overwrite_dictionary({}, {"a": 23}) == {"a": 23}
  682. +    assert overwrite_dictionary({"a": 23}, {}) == {"a": 23}
  683. +    assert overwrite_dictionary({"a": 23}, {"b": 45}) == {"a": 23, "b": 45}
  684. +
  685. +    assert overwrite_dictionary({"a": 23, "b": 45}, {"b": 55}) == {"a": 23, "b": 55}
  686. +    assert overwrite_dictionary({"a": {"b": 23, "d": 60}}, {"a": {"b": 45, "c": 55}}) == {"a": {"b": 45, "c": 55, "d": 60}}
  687. +    assert overwrite_dictionary({"a": {"b": 23, "d": 60}}, {"a": {"b": 23, "d": 65, "f": {"g": 75}}, "z": -10}) == {"a": {"b": 23, "d": 65, "f": {"g": 75}}, "z": -10}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement