tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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