WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/merge.py::test_platform_name[body0] PASSED WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/merge.py::test_platform_name[body1] PASSED WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/merge.py::test_merge_invalid[acceptInsecureCerts-value0] PASSED WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/merge.py::test_merge_invalid[unhandledPromptBehavior-value1] FAILED WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/merge.py::test_merge_invalid[unhandledPromptBehavior-value2] FAILED WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/merge.py::test_merge_invalid[timeouts-value3] PASSED WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/merge.py::test_merge_invalid[timeouts-value4] PASSED WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/merge.py::test_merge_platformName FAILED WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/merge.py::test_merge_browserName FAILED Similar backtraces: new_session = <function create_session at 0x7f1318721758>, add_browser_capabilites = <function update_capabilities at 0x7f1318721848>, key = 'unhandledPromptBehavior' value = ('accept', 'accept') @pytest.mark.parametrize("key,value", invalid_merge) def test_merge_invalid(new_session, add_browser_capabilites, key, value): with pytest.raises(error.InvalidArgumentException): new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({key: value[0]}), > "firstMatch": [{}, {key: value[1]}]}}) E Failed: DID NOT RAISE <class 'webdriver.error.InvalidArgumentException'> add_browser_capabilites = <function update_capabilities at 0x7f1318721848> key = 'unhandledPromptBehavior' new_session = <function create_session at 0x7f1318721758> value = ('accept', 'accept') We are accepting capabilities that we shouldn't.
This is actually a bug in the spec, see https://github.com/w3c/webdriver/issues/1203. It seems the idea in any case is that we should check all the firstMatch capabilities before matching them, and return if there's any error. test_merge_platformName and test_merge_browserName are different issues, I'll file separate bug reports for those.
Created attachment 332026 [details] Patch
Committed r227414: <https://trac.webkit.org/changeset/227414>
<rdar://problem/36776979>