Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement SwitchToWindow and DismissAlert WebDriver commands #23580

Merged
merged 2 commits into from Jun 24, 2019

Conversation

@georgeroman
Copy link
Contributor

georgeroman commented Jun 16, 2019


  • ./mach build -d does not report any errors
  • ./mach test-tidy does not report any errors
  • There are tests for these changes

This change is Reviewable

@highfive
Copy link

highfive commented Jun 16, 2019

Heads up! This PR modifies the following files:

@jdm
Copy link
Member

jdm commented Jun 16, 2019

@bors-servo
Copy link
Contributor

bors-servo commented Jun 16, 2019

📌 Commit e3ce21d has been approved by jdm

@highfive highfive assigned jdm and unassigned asajeffrey Jun 16, 2019
bors-servo added a commit that referenced this pull request Jun 16, 2019
…miss_alert_wd_commands, r=jdm

Implement SwitchToWindow and DismissAlert WebDriver commands

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors

<!-- Either: -->
- [X] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23580)
<!-- Reviewable:end -->
@bors-servo
Copy link
Contributor

bors-servo commented Jun 16, 2019

Testing commit e3ce21d with merge f5964a0...

@bors-servo
Copy link
Contributor

bors-servo commented Jun 16, 2019

💔 Test failed - linux-rel-wpt

@highfive
Copy link

highfive commented Jun 16, 2019

Test failures:

      ▶ Unexpected subtest result in /webdriver/tests/element_send_keys/scroll_into_view.py:
      │ FAIL [expected PASS] test_element_outside_of_not_scrollable_viewport
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 384d36d5-eb31-47ee-8e01-494712045f32>
      │ 
      │     def test_element_outside_of_not_scrollable_viewport(session):
      │         session.url = inline("<input style=\"position: relative; left: -9999px;\">")
      │         element = session.find.css("input", all=False)
      │     
      │ >       response = element_send_keys(session, element, "foo")
      │ 
      │ element    = None
      │ session    = <Session 384d36d5-eb31-47ee-8e01-494712045f32>
      │ 
      │ tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/scroll_into_view.py:17: 
      │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
      │ 
      │ session = <Session 384d36d5-eb31-47ee-8e01-494712045f32>, element = None
      │ text = 'foo'
      │ 
      │     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})
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 384d36d5-eb31-47ee-8e01-494712045f32>
      │ text       = 'foo'
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/scroll_into_view.py:9: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/get_element_tag_name/get.py:
      │ FAIL [expected PASS] test_element_stale
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session b4c30119-3479-44de-9edb-3eea4ceb0c15>
      │ 
      │     def test_element_stale(session):
      │         session.url = inline("<input id=foo>")
      │         element = session.find.css("input", all=False)
      │         session.refresh()
      │     
      │ >       result = get_element_tag_name(session, element.id)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session b4c30119-3479-44de-9edb-3eea4ceb0c15>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/get_element_tag_name/get.py:27: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/get_element_text/get.py:
      │ FAIL [expected PASS] test_read_element_text
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 7229e439-96ba-4121-9ff6-227876670ec9>
      │ 
      │     def test_read_element_text(session):
      │         session.url = inline("""
      │             <body>
      │               Noise before <span id='id'>This has an ID</span>. Noise after
      │             </body>""")
      │     
      │         element = session.find.css("#id", all=False)
      │     
      │ >       result = get_element_text(session, element.id)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 7229e439-96ba-4121-9ff6-227876670ec9>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/get_element_text/get.py:32: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/element_send_keys/send_keys.py:
      │ FAIL [expected PASS] test_invalid_text_type[None]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>, value = None
      │ 
      │     @pytest.mark.parametrize("value", [True, None, 1, [], {}])
      │     def test_invalid_text_type(session, value):
      │         session.url = inline("<input>")
      │         element = session.find.css("input", all=False)
      │     
      │ >       response = element_send_keys(session, element, value)
      │ 
      │ element    = None
      │ session    = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>
      │ value      = None
      │ 
      │ tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py:49: 
      │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
      │ 
      │ session = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>, element = None
      │ text = None
      │ 
      │     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})
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>
      │ text       = None
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py:14: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/element_send_keys/send_keys.py:
      │ FAIL [expected PASS] test_invalid_text_type[value4]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>, value = {}
      │ 
      │     @pytest.mark.parametrize("value", [True, None, 1, [], {}])
      │     def test_invalid_text_type(session, value):
      │         session.url = inline("<input>")
      │         element = session.find.css("input", all=False)
      │     
      │ >       response = element_send_keys(session, element, value)
      │ 
      │ element    = None
      │ session    = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>
      │ value      = {}
      │ 
      │ tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py:49: 
      │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
      │ 
      │ session = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>, element = None
      │ text = {}
      │ 
      │     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})
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>
      │ text       = {}
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py:14: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/element_send_keys/send_keys.py:
      │ FAIL [expected PASS] test_invalid_text_type[1]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>, value = 1
      │ 
      │     @pytest.mark.parametrize("value", [True, None, 1, [], {}])
      │     def test_invalid_text_type(session, value):
      │         session.url = inline("<input>")
      │         element = session.find.css("input", all=False)
      │     
      │ >       response = element_send_keys(session, element, value)
      │ 
      │ element    = None
      │ session    = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>
      │ value      = 1
      │ 
      │ tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py:49: 
      │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
      │ 
      │ session = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>, element = None
      │ text = 1
      │ 
      │     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})
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>
      │ text       = 1
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py:14: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/element_send_keys/send_keys.py:
      │ FAIL [expected PASS] test_null_response_value
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>
      │ 
      │     def test_null_response_value(session):
      │         session.url = inline("<input>")
      │         element = session.find.css("input", all=False)
      │     
      │ >       response = element_send_keys(session, element, "foo")
      │ 
      │ element    = None
      │ session    = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>
      │ 
      │ tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py:32: 
      │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
      │ 
      │ session = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>, element = None
      │ text = 'foo'
      │ 
      │     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})
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>
      │ text       = 'foo'
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py:14: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/element_send_keys/send_keys.py:
      │ FAIL [expected PASS] test_invalid_text_type[True]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>, value = True
      │ 
      │     @pytest.mark.parametrize("value", [True, None, 1, [], {}])
      │     def test_invalid_text_type(session, value):
      │         session.url = inline("<input>")
      │         element = session.find.css("input", all=False)
      │     
      │ >       response = element_send_keys(session, element, value)
      │ 
      │ element    = None
      │ session    = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>
      │ value      = True
      │ 
      │ tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py:49: 
      │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
      │ 
      │ session = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>, element = None
      │ text = True
      │ 
      │     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})
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>
      │ text       = True
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py:14: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/element_send_keys/send_keys.py:
      │ FAIL [expected PASS] test_null_parameter_value
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>
      │ http = <tests.support.http_request.HTTPRequest object at 0x7f10006ed3d0>
      │ 
      │     def test_null_parameter_value(session, http):
      │         session.url = inline("<input>")
      │         element = session.find.css("input", all=False)
      │     
      │         path = "/session/{session_id}/element/{element_id}/value".format(
      │ >           session_id=session.session_id, element_id=element.id)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ http       = <tests.support.http_request.HTTPRequest object at 0x7f10006ed3d0>
      │ session    = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py:23: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/element_send_keys/send_keys.py:
      │ FAIL [expected PASS] test_stale_element
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>
      │ 
      │     def test_stale_element(session):
      │         session.url = inline("<input>")
      │         element = session.find.css("input", all=False)
      │     
      │         session.refresh()
      │     
      │ >       response = element_send_keys(session, element, "foo")
      │ 
      │ element    = None
      │ session    = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>
      │ 
      │ tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py:59: 
      │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
      │ 
      │ session = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>, element = None
      │ text = 'foo'
      │ 
      │     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})
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>
      │ text       = 'foo'
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py:14: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/element_send_keys/send_keys.py:
      │ FAIL [expected PASS] test_invalid_text_type[value3]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>, value = []
      │ 
      │     @pytest.mark.parametrize("value", [True, None, 1, [], {}])
      │     def test_invalid_text_type(session, value):
      │         session.url = inline("<input>")
      │         element = session.find.css("input", all=False)
      │     
      │ >       response = element_send_keys(session, element, value)
      │ 
      │ element    = None
      │ session    = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>
      │ value      = []
      │ 
      │ tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py:49: 
      │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
      │ 
      │ session = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>, element = None
      │ text = []
      │ 
      │     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})
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 1de5a9e9-5c48-4d2b-b060-db8434987384>
      │ text       = []
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py:14: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/get_named_cookie/get.py:
      │ FAIL [expected PASS] test_duplicated_cookie
      │   → AssertionError: assert 'world' == 'newworld'
      │ 
      │ session = <Session 0effc810-06cc-4976-836a-220ee9182ce8>
      │ url = <function url at 0x7f1000703848>
      │ server_config = {'_logger_name': 'web-platform-tests', 'aliases': [], 'all_domains': {'': {'': 'web-platform.test', 'nonexistent': 'no...ad.www.not-web-platform.test', 'xn--n8j6ds53lwwkrqhv28a.not-web-platform.test', 'www.not-web-platform.test', ...], ...}
      │ 
      │     def test_duplicated_cookie(session, url, server_config):
      │         new_cookie = {
      │             "name": "hello",
      │             "value": "world",
      │             "domain": server_config["browser_host"],
      │             "path": "/",
      │             "http_only": False,
      │             "secure": False
      │         }
      │     
      │         session.url = url("/common/blank.html")
      │         clear_all_cookies(session)
      │     
      │         session.set_cookie(**new_cookie)
      │         session.url = inline("""
      │           <script>
      │             document.cookie = '{name}=newworld; domain={domain}; path=/';
      │           </script>""".format(
      │             name=new_cookie["name"],
      │             domain=server_config["browser_host"]))
      │     
      │         result = get_named_cookie(session, new_cookie["name"])
      │         cookie = assert_success(result)
      │         assert isinstance(cookie, dict)
      │     
      │         assert "name" in cookie
      │         assert isinstance(cookie["name"], basestring)
      │         assert "value" in cookie
      │         assert isinstance(cookie["value"], basestring)
      │     
      │         assert cookie["name"] == new_cookie["name"]
      │ >       assert cookie["value"] == "newworld"
      │ E       AssertionError: assert 'world' == 'newworld'
      │ E         - world
      │ E         + newworld
      │ E         ? +++
      │ 
      │ cookie     = {'domain': 'web-platform.test', 'httpOnly': False, 'name': 'hello', 'path': '/', ...}
      │ new_cookie = {'domain': 'web-platform.test', 'http_only': False, 'name': 'hello', 'path': '/', ...}
      │ result     = <Responsetatus=200 body={"value": {"domain": "web-platform.test", "name": "hello", "value": "world", "path": "/", "httpOnly": false, "secure": false}}>
      │ server_config = {'_logger_name': 'web-platform-tests', 'aliases': [], 'all_domains': {'': {'': 'web-platform.test', 'nonexistent': 'no...ad.www.not-web-platform.test', 'xn--n8j6ds53lwwkrqhv28a.not-web-platform.test', 'www.not-web-platform.test', ...], ...}
      │ session    = <Session 0effc810-06cc-4976-836a-220ee9182ce8>
      │ url        = <function url at 0x7f1000703848>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/get_named_cookie/get.py:107: AssertionError
    
      ▶ Unexpected subtest result in /webdriver/tests/switch_to_frame/cross_origin.py:
      │ FAIL [expected PASS] test_nested_cross_origin_iframe
      │   → AssertionError: assert False
      │ 
      │ session = <Session 3e0ac564-78eb-4da6-99c9-9a8ecb481d6f>
      │ server_config = {'_logger_name': 'web-platform-tests', 'aliases': [], 'all_domains': {'': {'': 'web-platform.test', 'nonexistent': 'no...ad.www.not-web-platform.test', 'xn--n8j6ds53lwwkrqhv28a.not-web-platform.test', 'www.not-web-platform.test', ...], ...}
      │ 
      │     def test_nested_cross_origin_iframe(session, server_config):
      │         frame2 = iframe("", subdomain="www.www")
      │         frame1 = iframe(frame2, subdomain="www")
      │         top_doc = inline(frame1, subdomain="")
      │     
      │         session.url = top_doc
      │         assert document_location(session).startswith(
      │             "http://{}".format(server_config["browser_host"]))
      │     
      │         frame1_el = session.find.css("iframe", all=False)
      │         response = switch_to_frame(session, frame1_el)
      │         value = assert_success(response)
      │ >       assert document_location(session).startswith(
      │             "http://www.{}".format(server_config["browser_host"]))
      │ E       AssertionError: assert False
      │ E        +  where False = <built-in method startswith of unicode object at 0x7f10007846c0>('http://www.web-platform.test')
      │ E        +    where <built-in method startswith of unicode object at 0x7f10007846c0> = 'http://web-platform.test:8000/webdriver/tests/support/inline.py?doc=%3Ciframe+src%3D%27http%3A%2F%2Fwww.web-platform....E%26content-type%3Dtext%252Fhtml%253Bcharset%253Dutf-8%27%3E%3C%2Fiframe%3E&content-type=text%2Fhtml%3Bcharset%3Dutf-8'.startswith
      │ E        +      where 'http://web-platform.test:8000/webdriver/tests/support/inline.py?doc=%3Ciframe+src%3D%27http%3A%2F%2Fwww.web-platform....E%26content-type%3Dtext%252Fhtml%253Bcharset%253Dutf-8%27%3E%3C%2Fiframe%3E&content-type=text%2Fhtml%3Bcharset%3Dutf-8' = document_location(<Session 3e0ac564-78eb-4da6-99c9-9a8ecb481d6f>)
      │ E        +    and   'http://www.web-platform.test' = <built-in method format of str object at 0x7f10006435a8>('web-platform.test')
      │ E        +      where <built-in method format of str object at 0x7f10006435a8> = 'http://www.{}'.format
      │ 
      │ frame1     = "<iframe src='http://www.web-platform.test:8000/webdriver/tests/support/inline.py?doc=%3Ciframe+src%3D%27http%3A%2F%2F...-type%3Dtext%252Fhtml%253Bcharset%253Dutf-8%27%3E%3C%2Fiframe%3E&content-type=text%2Fhtml%3Bcharset%3Dutf-8'></iframe>"
      │ frame1_el  = None
      │ frame2     = "<iframe src='http://www.www.web-platform.test:8000/webdriver/tests/support/inline.py?doc=&content-type=text%2Fhtml%3Bcharset%3Dutf-8'></iframe>"
      │ response   = <Responsetatus=200 body={"value": null}>
      │ server_config = {'_logger_name': 'web-platform-tests', 'aliases': [], 'all_domains': {'': {'': 'web-platform.test', 'nonexistent': 'no...ad.www.not-web-platform.test', 'xn--n8j6ds53lwwkrqhv28a.not-web-platform.test', 'www.not-web-platform.test', ...], ...}
      │ session    = <Session 3e0ac564-78eb-4da6-99c9-9a8ecb481d6f>
      │ top_doc    = 'http://web-platform.test:8000/webdriver/tests/support/inline.py?doc=%3Ciframe+src%3D%27http%3A%2F%2Fwww.web-platform....E%26content-type%3Dtext%252Fhtml%253Bcharset%253Dutf-8%27%3E%3C%2Fiframe%3E&content-type=text%2Fhtml%3Bcharset%3Dutf-8'
      │ value      = None
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/cross_origin.py:53: AssertionError
    
      ▶ Unexpected subtest result in /webdriver/tests/switch_to_frame/cross_origin.py:
      │ FAIL [expected PASS] test_cross_origin_iframe
      │   → AssertionError: assert False
      │ 
      │ session = <Session 3e0ac564-78eb-4da6-99c9-9a8ecb481d6f>
      │ server_config = {'_logger_name': 'web-platform-tests', 'aliases': [], 'all_domains': {'': {'': 'web-platform.test', 'nonexistent': 'no...ad.www.not-web-platform.test', 'xn--n8j6ds53lwwkrqhv28a.not-web-platform.test', 'www.not-web-platform.test', ...], ...}
      │ 
      │     def test_cross_origin_iframe(session, server_config):
      │         session.url = inline(iframe("", subdomain="www"))
      │         frame_element = session.find.css("iframe", all=False)
      │     
      │         response = switch_to_frame(session, frame_element)
      │         value = assert_success(response)
      │ >       assert document_location(session).startswith(
      │             "http://www.{}".format(server_config["browser_host"]))
      │ E       AssertionError: assert False
      │ E        +  where False = <built-in method startswith of unicode object at 0x7f101c7f5a50>('http://www.web-platform.test')
      │ E        +    where <built-in method startswith of unicode object at 0x7f101c7f5a50> = 'http://web-platform.test:8000/webdriver/tests/support/inline.py?doc=%3Ciframe+src%3D%27http%3A%2F%2Fwww.web-platform....D%26content-type%3Dtext%252Fhtml%253Bcharset%253Dutf-8%27%3E%3C%2Fiframe%3E&content-type=text%2Fhtml%3Bcharset%3Dutf-8'.startswith
      │ E        +      where 'http://web-platform.test:8000/webdriver/tests/support/inline.py?doc=%3Ciframe+src%3D%27http%3A%2F%2Fwww.web-platform....D%26content-type%3Dtext%252Fhtml%253Bcharset%253Dutf-8%27%3E%3C%2Fiframe%3E&content-type=text%2Fhtml%3Bcharset%3Dutf-8' = document_location(<Session 3e0ac564-78eb-4da6-99c9-9a8ecb481d6f>)
      │ E        +    and   'http://www.web-platform.test' = <built-in method format of str object at 0x7f10006435e0>('web-platform.test')
      │ E        +      where <built-in method format of str object at 0x7f10006435e0> = 'http://www.{}'.format
      │ 
      │ frame_element = None
      │ response   = <Responsetatus=200 body={"value": null}>
      │ server_config = {'_logger_name': 'web-platform-tests', 'aliases': [], 'all_domains': {'': {'': 'web-platform.test', 'nonexistent': 'no...ad.www.not-web-platform.test', 'xn--n8j6ds53lwwkrqhv28a.not-web-platform.test', 'www.not-web-platform.test', ...], ...}
      │ session    = <Session 3e0ac564-78eb-4da6-99c9-9a8ecb481d6f>
      │ value      = None
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/cross_origin.py:37: AssertionError
    
      ▶ Unexpected subtest result in /webdriver/tests/is_element_selected/selected.py:
      │ FAIL [expected PASS] test_element_stale
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 277e44f3-96bd-4c77-809c-7d710793c902>
      │ 
      │     def test_element_stale(session):
      │         session.url = check_doc
      │         element = session.find.css("#checked", all=False)
      │         session.refresh()
      │     
      │ >       result = is_element_selected(session, element.id)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 277e44f3-96bd-4c77-809c-7d710793c902>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/is_element_selected/selected.py:34: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/is_element_selected/selected.py:
      │ FAIL [expected PASS] test_element_not_selected
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 277e44f3-96bd-4c77-809c-7d710793c902>
      │ 
      │     def test_element_not_selected(session):
      │         session.url = option_doc
      │         element = session.find.css("#notSelected", all=False)
      │     
      │ >       result = is_element_selected(session, element.id)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 277e44f3-96bd-4c77-809c-7d710793c902>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/is_element_selected/selected.py:66: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/is_element_selected/selected.py:
      │ FAIL [expected PASS] test_element_selected
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 277e44f3-96bd-4c77-809c-7d710793c902>
      │ 
      │     def test_element_selected(session):
      │         session.url = option_doc
      │         element = session.find.css("#selected", all=False)
      │     
      │ >       result = is_element_selected(session, element.id)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 277e44f3-96bd-4c77-809c-7d710793c902>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/is_element_selected/selected.py:58: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/is_element_selected/selected.py:
      │ FAIL [expected PASS] test_checkbox_not_selected
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 277e44f3-96bd-4c77-809c-7d710793c902>
      │ 
      │     def test_checkbox_not_selected(session):
      │         session.url = check_doc
      │         element = session.find.css("#notChecked", all=False)
      │     
      │ >       result = is_element_selected(session, element.id)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 277e44f3-96bd-4c77-809c-7d710793c902>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/is_element_selected/selected.py:50: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/is_element_selected/selected.py:
      │ FAIL [expected PASS] test_element_checked
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 277e44f3-96bd-4c77-809c-7d710793c902>
      │ 
      │     def test_element_checked(session):
      │         session.url = check_doc
      │         element = session.find.css("#checked", all=False)
      │     
      │ >       result = is_element_selected(session, element.id)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 277e44f3-96bd-4c77-809c-7d710793c902>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/is_element_selected/selected.py:42: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/get_element_rect/get.py:
      │ FAIL [expected PASS] test_basic
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 359f9f5d-5ffe-4a99-bf4d-1a24331cda0d>
      │ 
      │     def test_basic(session):
      │         session.url = inline("<input>")
      │         element = session.find.css("input", all=False)
      │     
      │ >       result = get_element_rect(session, element.id)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 359f9f5d-5ffe-4a99-bf4d-1a24331cda0d>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py:39: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/get_element_rect/get.py:
      │ FAIL [expected PASS] test_element_stale
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 359f9f5d-5ffe-4a99-bf4d-1a24331cda0d>
      │ 
      │     def test_element_stale(session):
      │         session.url = inline("<input>")
      │         element = session.find.css("input", all=False)
      │         session.refresh()
      │     
      │ >       result = get_element_rect(session, element.id)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 359f9f5d-5ffe-4a99-bf4d-1a24331cda0d>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py:31: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/execute_script/properties.py:
      │ FAIL [expected PASS] test_content_attribute
      │   → AssertionError: assert None == 'foobar'
      │ 
      │ session = <Session 1951d7d7-3841-4b39-9c9e-81fdff3acd97>
      │ 
      │     def test_content_attribute(session):
      │         session.url = inline("<input value=foobar>")
      │         response = execute_script(session, """
      │             const input = document.querySelector("input");
      │             return input.value;
      │             """)
      │ >       assert_success(response, "foobar")
      │ 
      │ response   = <Responsetatus=200 body={"value": null}>
      │ session    = <Session 1951d7d7-3841-4b39-9c9e-81fdff3acd97>
      │ 
      │ tests/wpt/web-platform-tests/webdriver/tests/execute_script/properties.py:20: 
      │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
      │ 
      │ response = <Responsetatus=200 body={"value": null}>, value = 'foobar'
      │ 
      │     def assert_success(response, value=None):
      │         """
      │         Verify that the provided webdriver.Response instance described
      │         a valid success response as defined by `dfn-send-a-response` and
      │         the provided response value.
      │     
      │         :param response: ``webdriver.Response`` instance.
      │         :param value: Expected value of the response body, if any.
      │         """
      │         assert response.status == 200, str(response.error)
      │     
      │         if value is not None:
      │ >           assert response.body["value"] == value
      │ E           AssertionError: assert None == 'foobar'
      │ 
      │ response   = <Responsetatus=200 body={"value": null}>
      │ value      = 'foobar'
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/support/asserts.py:70: AssertionError
    
      ▶ Unexpected subtest result in /webdriver/tests/execute_script/properties.py:
      │ FAIL [expected PASS] test_script_defining_property
      │   → AssertionError: assert None == 'foobar'
      │ 
      │ session = <Session 1951d7d7-3841-4b39-9c9e-81fdff3acd97>
      │ 
      │     def test_script_defining_property(session):
      │         session.url = inline("<input>")
      │         execute_script(session, """
      │             const input = document.querySelector("input");
      │             input.foobar = "foobar";
      │             """)
      │         response = execute_script(session, """
      │             const input = document.querySelector("input");
      │             return input.foobar;
      │             """)
      │ >       assert_success(response, "foobar")
      │ 
      │ response   = <Responsetatus=200 body={"value": null}>
      │ session    = <Session 1951d7d7-3841-4b39-9c9e-81fdff3acd97>
      │ 
      │ tests/wpt/web-platform-tests/webdriver/tests/execute_script/properties.py:67: 
      │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
      │ 
      │ response = <Responsetatus=200 body={"value": null}>, value = 'foobar'
      │ 
      │     def assert_success(response, value=None):
      │         """
      │         Verify that the provided webdriver.Response instance described
      │         a valid success response as defined by `dfn-send-a-response` and
      │         the provided response value.
      │     
      │         :param response: ``webdriver.Response`` instance.
      │         :param value: Expected value of the response body, if any.
      │         """
      │         assert response.status == 200, str(response.error)
      │     
      │         if value is not None:
      │ >           assert response.body["value"] == value
      │ E           AssertionError: assert None == 'foobar'
      │ 
      │ response   = <Responsetatus=200 body={"value": null}>
      │ value      = 'foobar'
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/support/asserts.py:70: AssertionError
    
      ▶ Unexpected subtest result in /webdriver/tests/execute_script/properties.py:
      │ FAIL [expected PASS] test_idl_attribute
      │   → AssertionError: assert None == 'foobar'
      │ 
      │ session = <Session 1951d7d7-3841-4b39-9c9e-81fdff3acd97>
      │ 
      │     def test_idl_attribute(session):
      │         session.url = inline("""
      │             <input>
      │             <script>
      │             const input = document.querySelector("input");
      │             input.value = "foobar";
      │             </script>
      │             """)
      │         response = execute_script(session, """
      │             const input = document.querySelector("input");
      │             return input.value;
      │             """)
      │ >       assert_success(response, "foobar")
      │ 
      │ response   = <Responsetatus=200 body={"value": null}>
      │ session    = <Session 1951d7d7-3841-4b39-9c9e-81fdff3acd97>
      │ 
      │ tests/wpt/web-platform-tests/webdriver/tests/execute_script/properties.py:35: 
      │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
      │ 
      │ response = <Responsetatus=200 body={"value": null}>, value = 'foobar'
      │ 
      │     def assert_success(response, value=None):
      │         """
      │         Verify that the provided webdriver.Response instance described
      │         a valid success response as defined by `dfn-send-a-response` and
      │         the provided response value.
      │     
      │         :param response: ``webdriver.Response`` instance.
      │         :param value: Expected value of the response body, if any.
      │         """
      │         assert response.status == 200, str(response.error)
      │     
      │         if value is not None:
      │ >           assert response.body["value"] == value
      │ E           AssertionError: assert None == 'foobar'
      │ 
      │ response   = <Responsetatus=200 body={"value": null}>
      │ value      = 'foobar'
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/support/asserts.py:70: AssertionError
    
      ▶ Unexpected subtest result in /webdriver/tests/get_element_css_value/get.py:
      │ FAIL [expected PASS] test_element_stale
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 74a05675-d9ed-445a-a382-d59515003253>
      │ 
      │     def test_element_stale(session):
      │         session.url = inline("<input>")
      │         element = session.find.css("input", all=False)
      │         session.refresh()
      │     
      │ >       result = get_element_css_value(session, element.id, "display")
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 74a05675-d9ed-445a-a382-d59515003253>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py:31: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/get_element_css_value/get.py:
      │ FAIL [expected PASS] test_property_name_value
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 74a05675-d9ed-445a-a382-d59515003253>
      │ 
      │     def test_property_name_value(session):
      │         session.url = inline("""<input style="display: block">""")
      │         element = session.find.css("input", all=False)
      │     
      │ >       result = get_element_css_value(session, element.id, "display")
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 74a05675-d9ed-445a-a382-d59515003253>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py:39: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/get_element_css_value/get.py:
      │ FAIL [expected PASS] test_property_name_not_existent
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 74a05675-d9ed-445a-a382-d59515003253>
      │ 
      │     def test_property_name_not_existent(session):
      │         session.url = inline("<input>")
      │         element = session.find.css("input", all=False)
      │     
      │ >       result = get_element_css_value(session, element.id, "foo")
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 74a05675-d9ed-445a-a382-d59515003253>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py:47: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/switch_to_frame/switch.py:
      │ FAIL [expected PASS] test_frame_id_webelement_iframe[0-foo]
      │   → assert 0 == 2
      │ 
      │ session = <Session 9ca9db59-8a9e-4c82-892f-75df4fdc527d>, index = 0
      │ value = 'foo'
      │ 
      │     @pytest.mark.parametrize("index, value", [[0, "foo"], [1, "bar"]])
      │     def test_frame_id_webelement_iframe(session, index, value):
      │         session.url = inline("{}{}".format(iframe("<p>foo"), iframe("<p>bar")))
      │         frames = session.find.css("iframe")
      │ >       assert len(frames) == 2
      │ E       assert 0 == 2
      │ E        +  where 0 = len([])
      │ 
      │ frames     = []
      │ index      = 0
      │ session    = <Session 9ca9db59-8a9e-4c82-892f-75df4fdc527d>
      │ value      = 'foo'
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/switch.py:116: AssertionError
    
      ▶ Unexpected subtest result in /webdriver/tests/switch_to_frame/switch.py:
      │ FAIL [expected PASS] test_frame_id_null
      │   → Failed: DID NOT RAISE <class 'webdriver.error.StaleElementReferenceException'>
      │ 
      │ session = <Session 9ca9db59-8a9e-4c82-892f-75df4fdc527d>
      │ 
      │     def test_frame_id_null(session):
      │         session.url = inline(iframe("{}<div>foo".format(iframe("<p>bar"))))
      │     
      │         frame1 = session.find.css("iframe", all=False)
      │         session.switch_frame(frame1)
      │         frame1_element = session.find.css("div", all=False)
      │     
      │         frame2 = session.find.css("iframe", all=False)
      │         session.switch_frame(frame2)
      │         frame2_element = session.find.css("p", all=False)
      │     
      │         # Switch to top-level browsing context
      │         response = switch_to_frame(session, None)
      │         assert_success(response)
      │     
      │         with pytest.raises(StaleElementReferenceException):
      │ >           frame2_element.text
      │ E           Failed: DID NOT RAISE <class 'webdriver.error.StaleElementReferenceException'>
      │ 
      │ frame1     = None
      │ frame1_element = None
      │ frame2     = None
      │ frame2_element = <Element a631eaacae2548e783c2309ce8fb5f20>
      │ response   = <Responsetatus=200 body={"value": null}>
      │ session    = <Session 9ca9db59-8a9e-4c82-892f-75df4fdc527d>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/switch.py:73: Failed
    
      ▶ Unexpected subtest result in /webdriver/tests/switch_to_frame/switch.py:
      │ FAIL [expected PASS] test_frame_id_webelement_iframe[1-bar]
      │   → assert 0 == 2
      │ 
      │ session = <Session 9ca9db59-8a9e-4c82-892f-75df4fdc527d>, index = 1
      │ value = 'bar'
      │ 
      │     @pytest.mark.parametrize("index, value", [[0, "foo"], [1, "bar"]])
      │     def test_frame_id_webelement_iframe(session, index, value):
      │         session.url = inline("{}{}".format(iframe("<p>foo"), iframe("<p>bar")))
      │         frames = session.find.css("iframe")
      │ >       assert len(frames) == 2
      │ E       assert 0 == 2
      │ E        +  where 0 = len([])
      │ 
      │ frames     = []
      │ index      = 1
      │ session    = <Session 9ca9db59-8a9e-4c82-892f-75df4fdc527d>
      │ value      = 'bar'
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/switch_to_frame/switch.py:116: AssertionError
    
      ▶ Unexpected subtest result in /webdriver/tests/get_element_attribute/get.py:
      │ FAIL [expected PASS] test_element_stale
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 2ab81080-8077-42ea-ad55-b4ea520b0121>
      │ 
      │     def test_element_stale(session):
      │         session.url = inline("<input id=foo>")
      │         element = session.find.css("input", all=False)
      │         session.refresh()
      │ >       result = get_element_attribute(session, element.id, "id")
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 2ab81080-8077-42ea-ad55-b4ea520b0121>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/get_element_attribute/get.py:30: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/switch_to_parent_frame/switch.py:
      │ FAIL [expected PASS] test_null_response_value
      │   → AssertionError: no such frame (404): Frame does not exist
      │ 
      │ session = <Session f90126ef-8ea7-41f8-ad6a-6515723a8384>
      │ 
      │     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)
      │ 
      │ frame_element = None
      │ response   = <Response status=404 error=<NoSuchFrameException http_status=404>>
      │ session    = <Session f90126ef-8ea7-41f8-ad6a-6515723a8384>
      │ 
      │ tests/wpt/web-platform-tests/webdriver/tests/switch_to_parent_frame/switch.py:20: 
      │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
      │ 
      │ response = <Response status=404 error=<NoSuchFrameException http_status=404>>
      │ value = None
      │ 
      │     def assert_success(response, value=None):
      │         """
      │         Verify that the provided webdriver.Response instance described
      │         a valid success response as defined by `dfn-send-a-response` and
      │         the provided response value.
      │     
      │         :param response: ``webdriver.Response`` instance.
      │         :param value: Expected value of the response body, if any.
      │         """
      │ >       assert response.status == 200, str(response.error)
      │ E       AssertionError: no such frame (404): Frame does not exist
      │ E         
      │ E       assert 404 == 200
      │ E        +  where 404 = <Response status=404 error=<NoSuchFrameException http_status=404>>.status
      │ 
      │ response   = <Response status=404 error=<NoSuchFrameException http_status=404>>
      │ value      = None
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/support/asserts.py:67: AssertionError
    
      ▶ Unexpected subtest result in /webdriver/tests/switch_to_parent_frame/switch.py:
      │ FAIL [expected PASS] test_stale_element_from_iframe
      │   → AssertionError: no such frame (404): Frame does not exist
      │ 
      │ session = <Session f90126ef-8ea7-41f8-ad6a-6515723a8384>
      │ 
      │     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)
      │ 
      │ frame_element = None
      │ result     = <Response status=404 error=<NoSuchFrameException http_status=404>>
      │ session    = <Session f90126ef-8ea7-41f8-ad6a-6515723a8384>
      │ stale_element = <Element 95e226f1954d418fae31a50565ed981b>
      │ 
      │ tests/wpt/web-platform-tests/webdriver/tests/switch_to_parent_frame/switch.py:36: 
      │ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
      │ 
      │ response = <Response status=404 error=<NoSuchFrameException http_status=404>>
      │ value = None
      │ 
      │     def assert_success(response, value=None):
      │         """
      │         Verify that the provided webdriver.Response instance described
      │         a valid success response as defined by `dfn-send-a-response` and
      │         the provided response value.
      │     
      │         :param response: ``webdriver.Response`` instance.
      │         :param value: Expected value of the response body, if any.
      │         """
      │ >       assert response.status == 200, str(response.error)
      │ E       AssertionError: no such frame (404): Frame does not exist
      │ E         
      │ E       assert 404 == 200
      │ E        +  where 404 = <Response status=404 error=<NoSuchFrameException http_status=404>>.status
      │ 
      │ response   = <Response status=404 error=<NoSuchFrameException http_status=404>>
      │ value      = None
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/support/asserts.py:67: AssertionError
    
      ▶ Unexpected subtest result in /webdriver/tests/find_elements/find.py:
      │ FAIL [expected PASS] test_find_elements[css selector-#linkText]
      │   → assert 0 == 1
      │ 
      │ session = <Session 4ab3e95a-5771-4581-ae27-f198623f7e3a>, using = 'css selector'
      │ value = '#linkText'
      │ 
      │     @pytest.mark.parametrize("using,value",
      │                              [("css selector", "#linkText"),
      │                               ("link text", "full link text"),
      │                               ("partial link text", "link text"),
      │                               ("tag name", "a"),
      │                               ("xpath", "//a")])
      │     def test_find_elements(session, using, value):
      │         # Step 8 - 9
      │         session.url = inline("<a href=# id=linkText>full link text</a>")
      │     
      │         response = find_elements(session, using, value)
      │         assert_success(response)
      │ >       assert len(response.body["value"]) == 1
      │ E       assert 0 == 1
      │ E        +  where 0 = len([])
      │ 
      │ response   = <Responsetatus=200 body={"value": []}>
      │ session    = <Session 4ab3e95a-5771-4581-ae27-f198623f7e3a>
      │ using      = 'css selector'
      │ value      = '#linkText'
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/find_elements/find.py:52: AssertionError
    
      ▶ Unexpected subtest result in /webdriver/tests/is_element_enabled/enabled.py:
      │ FAIL [expected PASS] test_element_stale
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 9a7214bc-d8c4-4935-b4cb-ce275bcae631>
      │ 
      │     def test_element_stale(session):
      │         session.url = inline("<input>")
      │         element = session.find.css("input", all=False)
      │         session.refresh()
      │     
      │ >       result = is_element_enabled(session, element.id)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 9a7214bc-d8c4-4935-b4cb-ce275bcae631>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py:27: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/is_element_enabled/enabled.py:
      │ FAIL [expected PASS] test_fieldset_enabled_descendant[button]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_fieldset_enabled_descendant[input]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_fieldset_enabled_descendant[select]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_fieldset_enabled_descendant[textarea]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 9a7214bc-d8c4-4935-b4cb-ce275bcae631>, element = None
      │ 
      │     @pytest.mark.parametrize("element", ["button", "input", "select", "textarea"])
      │     def test_fieldset_enabled_descendant(session, element):
      │         session.url = inline("<fieldset><{}/></fieldset>".format(element))
      │         element = session.find.css(element, all=False)
      │     
      │ >       result = is_element_enabled(session, element.id)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 9a7214bc-d8c4-4935-b4cb-ce275bcae631>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py:63: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/is_element_enabled/enabled.py:
      │ FAIL [expected PASS] test_form_control_enabled[button]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_form_control_enabled[input]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_form_control_enabled[select]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_form_control_enabled[textarea]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 9a7214bc-d8c4-4935-b4cb-ce275bcae631>, element = None
      │ 
      │     @pytest.mark.parametrize("element", ["button", "input", "select", "textarea"])
      │     def test_form_control_enabled(session, element):
      │         session.url = inline("<{}/>".format(element))
      │         element = session.find.css(element, all=False)
      │     
      │ >       result = is_element_enabled(session, element.id)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 9a7214bc-d8c4-4935-b4cb-ce275bcae631>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py:45: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/is_element_enabled/enabled.py:
      │ FAIL [expected PASS] test_fieldset_enabled_descendant_legend[button]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_fieldset_enabled_descendant_legend[input]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_fieldset_enabled_descendant_legend[select]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_fieldset_enabled_descendant_legend[textarea]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 9a7214bc-d8c4-4935-b4cb-ce275bcae631>, element = None
      │ 
      │     @pytest.mark.parametrize("element", ["button", "input", "select", "textarea"])
      │     def test_fieldset_enabled_descendant_legend(session, element):
      │         session.url = inline("<fieldset><legend><{}/></legend></fieldset>".format(element))
      │         element = session.find.css(element, all=False)
      │     
      │ >       result = is_element_enabled(session, element.id)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 9a7214bc-d8c4-4935-b4cb-ce275bcae631>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py:81: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/is_element_enabled/enabled.py:
      │ FAIL [expected PASS] test_xhtml_form_control_enabled[button]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_xhtml_form_control_enabled[input]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_xhtml_form_control_enabled[select]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_xhtml_form_control_enabled[textarea]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 9a7214bc-d8c4-4935-b4cb-ce275bcae631>, element = None
      │ 
      │     @pytest.mark.parametrize("element", ["button", "input", "select", "textarea"])
      │     def test_xhtml_form_control_enabled(session, element):
      │         session.url = inline("""<{}/>""".format(element), doctype="xhtml")
      │         element = session.find.css(element, all=False)
      │     
      │ >       result = is_element_enabled(session, element.id)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 9a7214bc-d8c4-4935-b4cb-ce275bcae631>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py:100: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/is_element_enabled/enabled.py:
      │ FAIL [expected PASS] test_xhtml_form_control_disabled[button]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_xhtml_form_control_disabled[input]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_xhtml_form_control_disabled[select]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_xhtml_form_control_disabled[textarea]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 9a7214bc-d8c4-4935-b4cb-ce275bcae631>, element = None
      │ 
      │     @pytest.mark.parametrize("element", ["button", "input", "select", "textarea"])
      │     def test_xhtml_form_control_disabled(session, element):
      │         session.url = inline("""<{} disabled="disabled"/>""".format(element),
      │                              doctype="xhtml")
      │         element = session.find.css(element, all=False)
      │     
      │ >       result = is_element_enabled(session, element.id)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 9a7214bc-d8c4-4935-b4cb-ce275bcae631>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py:91: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/is_element_enabled/enabled.py:
      │ FAIL [expected PASS] test_fieldset_disabled_descendant_legend[button]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_fieldset_disabled_descendant_legend[input]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_fieldset_disabled_descendant_legend[select]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_fieldset_disabled_descendant_legend[textarea]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 9a7214bc-d8c4-4935-b4cb-ce275bcae631>, element = None
      │ 
      │     @pytest.mark.parametrize("element", ["button", "input", "select", "textarea"])
      │     def test_fieldset_disabled_descendant_legend(session, element):
      │         session.url = inline("<fieldset disabled><legend><{}/></legend></fieldset>".format(element))
      │         element = session.find.css(element, all=False)
      │     
      │ >       result = is_element_enabled(session, element.id)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 9a7214bc-d8c4-4935-b4cb-ce275bcae631>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py:72: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/is_element_enabled/enabled.py:
      │ FAIL [expected PASS] test_xml_always_not_enabled
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 9a7214bc-d8c4-4935-b4cb-ce275bcae631>
      │ 
      │     def test_xml_always_not_enabled(session):
      │         session.url = inline("""<note></note>""", doctype="xml")
      │         element = session.find.css("note", all=False)
      │     
      │ >       result = is_element_enabled(session, element.id)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 9a7214bc-d8c4-4935-b4cb-ce275bcae631>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py:108: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/is_element_enabled/enabled.py:
      │ FAIL [expected PASS] test_fieldset_disabled_descendant[button]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_fieldset_disabled_descendant[input]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_fieldset_disabled_descendant[select]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_fieldset_disabled_descendant[textarea]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 9a7214bc-d8c4-4935-b4cb-ce275bcae631>, element = None
      │ 
      │     @pytest.mark.parametrize("element", ["button", "input", "select", "textarea"])
      │     def test_fieldset_disabled_descendant(session, element):
      │         session.url = inline("<fieldset disabled><{}/></fieldset>".format(element))
      │         element = session.find.css(element, all=False)
      │     
      │ >       result = is_element_enabled(session, element.id)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 9a7214bc-d8c4-4935-b4cb-ce275bcae631>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py:54: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/is_element_enabled/enabled.py:
      │ FAIL [expected PASS] test_form_control_disabled[button]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_form_control_disabled[input]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_form_control_disabled[select]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ FAIL [expected PASS] test_form_control_disabled[textarea]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 9a7214bc-d8c4-4935-b4cb-ce275bcae631>, element = None
      │ 
      │     @pytest.mark.parametrize("element", ["button", "input", "select", "textarea"])
      │     def test_form_control_disabled(session, element):
      │         session.url = inline("<{} disabled/>".format(element))
      │         element = session.find.css(element, all=False)
      │     
      │ >       result = is_element_enabled(session, element.id)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 9a7214bc-d8c4-4935-b4cb-ce275bcae631>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py:36: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/find_element_from_element/find.py:
      │ FAIL [expected PASS] test_null_parameter_value
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 4a6358bf-6331-40e9-b849-6b09ffc3d3ad>
      │ http = <tests.support.http_request.HTTPRequest object at 0x7f1028757710>
      │ 
      │     def test_null_parameter_value(session, http):
      │         session.url = inline("<div><a href=# id=linkText>full link text</a></div>")
      │         element = session.find.css("div", all=False)
      │     
      │         path = "/session/{session_id}/element/{element_id}/element".format(
      │ >           session_id=session.session_id, element_id=element.id)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ http       = <tests.support.http_request.HTTPRequest object at 0x7f1028757710>
      │ session    = <Session 4a6358bf-6331-40e9-b849-6b09ffc3d3ad>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/find_element_from_element/find.py:22: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/find_element_from_element/find.py:
      │ FAIL [expected PASS] test_find_element[css selector-#linkText]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 4a6358bf-6331-40e9-b849-6b09ffc3d3ad>, using = 'css selector'
      │ value = '#linkText'
      │ 
      │     @pytest.mark.parametrize("using,value",
      │                              [("css selector", "#linkText"),
      │                               ("link text", "full link text"),
      │                               ("partial link text", "link text"),
      │                               ("tag name", "a"),
      │                               ("xpath", "//a")])
      │     def test_find_element(session, using, value):
      │         # Step 8 - 9
      │         session.url = inline("<div><a href=# id=linkText>full link text</a></div>")
      │         element = session.find.css("div", all=False)
      │ >       response = find_element(session, element.id, using, value)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 4a6358bf-6331-40e9-b849-6b09ffc3d3ad>
      │ using      = 'css selector'
      │ value      = '#linkText'
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/find_element_from_element/find.py:56: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/find_elements_from_element/find.py:
      │ FAIL [expected PASS] test_find_elements[css selector-#linkText]
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 641b88ab-c916-4ae3-a993-118d013e061f>, using = 'css selector'
      │ value = '#linkText'
      │ 
      │     @pytest.mark.parametrize("using,value",
      │                              [("css selector", "#linkText"),
      │                               ("link text", "full link text"),
      │                               ("partial link text", "link text"),
      │                               ("tag name", "a"),
      │                               ("xpath", "//a")])
      │     def test_find_elements(session, using, value):
      │         # Step 8 - 9
      │         session.url = inline("<div><a href=# id=linkText>full link text</a></div>")
      │         element = session.find.css("div", all=False)
      │ >       response = find_elements(session, element.id, using, value)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ session    = <Session 641b88ab-c916-4ae3-a993-118d013e061f>
      │ using      = 'css selector'
      │ value      = '#linkText'
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_element/find.py:56: AttributeError
    
      ▶ Unexpected subtest result in /webdriver/tests/find_elements_from_element/find.py:
      │ FAIL [expected PASS] test_null_parameter_value
      │   → AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ session = <Session 641b88ab-c916-4ae3-a993-118d013e061f>
      │ http = <tests.support.http_request.HTTPRequest object at 0x7f101975c7d0>
      │ 
      │     def test_null_parameter_value(session, http):
      │         session.url = inline("<div><a href=# id=linkText>full link text</a></div>")
      │         element = session.find.css("div", all=False)
      │     
      │         path = "/session/{session_id}/element/{element_id}/elements".format(
      │ >           session_id=session.session_id, element_id=element.id)
      │ E       AttributeError: 'NoneType' object has no attribute 'id'
      │ 
      │ element    = None
      │ http       = <tests.support.http_request.HTTPRequest object at 0x7f101975c7d0>
      │ session    = <Session 641b88ab-c916-4ae3-a993-118d013e061f>
      │ 
      └ tests/wpt/web-platform-tests/webdriver/tests/find_elements_from_element/find.py:22: AttributeError
@jdm
Copy link
Member

jdm commented Jun 24, 2019

@bors-servo try=wpt

bors-servo added a commit that referenced this pull request Jun 24, 2019
…miss_alert_wd_commands, r=<try>

Implement SwitchToWindow and DismissAlert WebDriver commands

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors

<!-- Either: -->
- [X] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23580)
<!-- Reviewable:end -->
@bors-servo
Copy link
Contributor

bors-servo commented Jun 24, 2019

Trying commit 15bd852 with merge 1ae3829...

@bors-servo
Copy link
Contributor

bors-servo commented Jun 24, 2019

☀️ Test successful - linux-rel-css, linux-rel-wpt, status-taskcluster
State: approved= try=True

@jdm
Copy link
Member

jdm commented Jun 24, 2019

@bors-servo
Copy link
Contributor

bors-servo commented Jun 24, 2019

📌 Commit 15bd852 has been approved by jdm

@bors-servo
Copy link
Contributor

bors-servo commented Jun 24, 2019

Testing commit 15bd852 with merge eb3e739...

bors-servo added a commit that referenced this pull request Jun 24, 2019
…miss_alert_wd_commands, r=jdm

Implement SwitchToWindow and DismissAlert WebDriver commands

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors

<!-- Either: -->
- [X] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23580)
<!-- Reviewable:end -->
@bors-servo
Copy link
Contributor

bors-servo commented Jun 24, 2019

💔 Test failed - status-taskcluster

@CYBAI
Copy link
Collaborator

CYBAI commented Jun 24, 2019

@bors-servo
Copy link
Contributor

bors-servo commented Jun 24, 2019

💣 Failed to start rebuilding: Unknown error

@bors-servo
Copy link
Contributor

bors-servo commented Jun 24, 2019

Testing commit 15bd852 with merge b1ecda3...

bors-servo added a commit that referenced this pull request Jun 24, 2019
…miss_alert_wd_commands, r=jdm

Implement SwitchToWindow and DismissAlert WebDriver commands

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors

<!-- Either: -->
- [X] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23580)
<!-- Reviewable:end -->
@bors-servo
Copy link
Contributor

bors-servo commented Jun 24, 2019

☀️ Test successful - arm64, linux-rel-css, linux-rel-wpt, status-taskcluster
Approved by: jdm
Pushing b1ecda3 to master...

@bors-servo bors-servo merged commit 15bd852 into servo:master Jun 24, 2019
4 checks passed
4 checks passed
Taskcluster (pull_request) TaskGroup: success
Details
Travis CI - Pull Request Build Passed
Details
continuous-integration/appveyor/pr AppVeyor build succeeded
Details
homu Test successful
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

6 participants
You can’t perform that action at this time.