capabilities.py (3416B)
1 import pytest 2 from webdriver.bidi.modules.script import ContextTarget 3 4 pytestmark = pytest.mark.asyncio 5 6 7 @pytest.mark.parametrize("match_type", ["alwaysMatch", "firstMatch"]) 8 async def test_platform_name( 9 new_session, match_capabilities, target_platform, match_type 10 ): 11 capabilities = match_capabilities(match_type, "platformName", target_platform) 12 13 bidi_session = await new_session(capabilities=capabilities) 14 15 assert bidi_session.capabilities["platformName"] == target_platform 16 17 18 @pytest.mark.parametrize("match_type", ["alwaysMatch", "firstMatch"]) 19 async def test_proxy( 20 new_session, match_capabilities, server_config, inline, match_type 21 ): 22 domain = server_config["domains"][""][""] 23 port = server_config["ports"]["http"][0] 24 proxy_url = f"{domain}:{port}" 25 proxy_capability = {"proxyType": "manual", "httpProxy": proxy_url} 26 capabilities = match_capabilities(match_type, "proxy", proxy_capability) 27 28 bidi_session = await new_session(capabilities=capabilities) 29 30 assert bidi_session.capabilities["proxy"] == proxy_capability 31 32 page_content = "proxy" 33 page_url = inline(f"<div>{page_content}</div>") 34 test_url = page_url.replace(proxy_url, "example.com") 35 36 contexts = await bidi_session.browsing_context.get_tree() 37 38 await bidi_session.browsing_context.navigate( 39 context=contexts[0]["context"], url=test_url, wait="complete" 40 ) 41 42 # Check that content is expected 43 response = await bidi_session.script.evaluate( 44 expression="""document.querySelector('div').textContent""", 45 target=ContextTarget(contexts[0]["context"]), 46 await_promise=False, 47 ) 48 49 assert response == {"type": "string", "value": page_content} 50 51 52 @pytest.mark.parametrize( 53 "value", 54 [ 55 "accept", 56 "accept and notify", 57 "dismiss", 58 "dismiss and notify", 59 "ignore", 60 ], 61 ) 62 async def test_unhandledPromptBehavior_string(new_session, match_capabilities, value): 63 capabilities = match_capabilities("alwaysMatch", "unhandledPromptBehavior", value) 64 65 bidi_session = await new_session(capabilities=capabilities) 66 67 assert bidi_session.capabilities.get("unhandledPromptBehavior") == value 68 69 70 async def test_unhandledPromptBehavior_without_value(new_session, match_capabilities): 71 capabilities = match_capabilities("alwaysMatch", "unhandledPromptBehavior", None) 72 73 bidi_session = await new_session(capabilities=capabilities) 74 75 assert "unhandledPromptBehavior" not in bidi_session.capabilities 76 77 78 @pytest.mark.parametrize("handler", ["accept", "dismiss", "ignore"]) 79 @pytest.mark.parametrize("prompt_type", ["alert", "beforeUnload", "confirm", "prompt"]) 80 async def test_unhandledPromptBehavior_object( 81 new_session, match_capabilities, handler, prompt_type 82 ): 83 capabilities = match_capabilities( 84 "alwaysMatch", "unhandledPromptBehavior", {prompt_type: handler} 85 ) 86 87 bidi_session = await new_session(capabilities=capabilities) 88 89 assert bidi_session.capabilities.get("unhandledPromptBehavior") == { 90 prompt_type: handler 91 } 92 93 94 @pytest.mark.parametrize("match_type", ["alwaysMatch", "firstMatch"]) 95 async def test_websocket_url(new_session, match_capabilities, match_type): 96 capabilities = match_capabilities(match_type, "webSocketUrl", True) 97 98 bidi_session = await new_session(capabilities=capabilities) 99 100 assert bidi_session.capabilities.get("webSocketUrl") is None