# Testing: https://w3c.github.io/core-aam/#role-map-link import pytest TEST_HTML = { "role-link": "
click me
", "aria-disabled": "
click me
", "aria-expanded": "", } @pytest.mark.parametrize("test_html", TEST_HTML.values(), ids=TEST_HTML.keys()) def test_atspi(atspi, session, inline, test_html): session.url = inline(test_html) node = atspi.find_node("test", session.url) assert atspi.Accessible.get_role(node) == atspi.Role.LINK assert atspi.Accessible.get_hypertext_iface(node) is not None @pytest.mark.parametrize("test_html", TEST_HTML.values(), ids=TEST_HTML.keys()) def test_axapi(axapi, session, inline, test_html): session.url = inline(test_html) node = axapi.find_node("test", session.url) role = axapi.AXUIElementCopyAttributeValue(node, "AXRole", None)[1] assert role == "AXLink" subrole = axapi.AXUIElementCopyAttributeValue(node, "AXSubrole", None)[1] assert subrole == None @pytest.mark.parametrize("test_html", TEST_HTML.values(), ids=TEST_HTML.keys()) def test_ia2(ia2, session, inline, test_html): session.url = inline(test_html) node = ia2.find_node("test", session.url) assert ia2.get_role(node) == "ROLE_SYSTEM_LINK" state = ia2.get_state_list(node) assert 'OPAQUE' in state msaa_state = ia2.get_msaa_state_list(node) expected_msaa = ["LINKED"] if "aria-disabled=true" in test_html: expected_msaa.append("UNAVAILABLE") elif "aria-expanded=false" in test_html: expected_msaa.append("COLLAPSED") else: pass for expected in expected_msaa: assert expected in msaa_state if "aria-disabled=true" in test_html: assert "FOCUSABLE" not in msaa_state assert ia2.get_hyperlink_interface(node) is not None