1import pytest
2
3from webdriver.error import NoSuchAlertException
4
5from tests.support.asserts import assert_error, assert_success
6from tests.support.inline import inline
7
8
9def get_computed_role(session, element):
10    return session.transport.send(
11        "GET", "session/{session_id}/element/{element_id}/computedrole".format(
12            session_id=session.session_id,
13            element_id=element))
14
15
16def test_no_browsing_context(session, closed_window):
17    response = get_computed_role(session, "id")
18    assert_error(response, "no such window")
19
20
21def test_no_user_prompt(session):
22    response = get_computed_role(session, "id")
23    assert_error(response, "no such alert")
24
25
26@pytest.mark.parametrize("html,tag,expected", [
27    ("<li role=menuitem>foo", "li", "menu"),
28    ("<input role=searchbox>", "input", "searchbox"),
29    ("<img role=presentation>", "img", "presentation")])
30def test_computed_roles(session, html, tag, expected):
31    session.url = inline(html)
32    element = session.find.css(tag, all=False)
33    result = get_computed_role(session, element.id)
34    assert_success(result, expected)
35