diff options
Diffstat (limited to 'testing/web-platform/mozilla/tests/webdriver/cdp')
3 files changed, 75 insertions, 0 deletions
diff --git a/testing/web-platform/mozilla/tests/webdriver/cdp/__init__.py b/testing/web-platform/mozilla/tests/webdriver/cdp/__init__.py new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/cdp/__init__.py diff --git a/testing/web-platform/mozilla/tests/webdriver/cdp/debugger_address.py b/testing/web-platform/mozilla/tests/webdriver/cdp/debugger_address.py new file mode 100644 index 0000000000..ef9a301d24 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/cdp/debugger_address.py @@ -0,0 +1,45 @@ +# META: timeout=long + +import json + +import pytest +from support.context import using_context +from tests.support.http_request import HTTPRequest + + +def test_debugger_address_not_set(session): + debugger_address = session.capabilities.get("moz:debuggerAddress") + assert debugger_address is None + + +@pytest.mark.capabilities({"moz:debuggerAddress": False}) +def test_debugger_address_false(session): + debugger_address = session.capabilities.get("moz:debuggerAddress") + assert debugger_address is None + + +@pytest.mark.capabilities({"moz:debuggerAddress": True}) +@pytest.mark.parametrize("fission_enabled", [True, False], ids=["enabled", "disabled"]) +def test_debugger_address_true_with_fission(session, fission_enabled): + debugger_address = session.capabilities.get("moz:debuggerAddress") + assert debugger_address is not None + + host, port = debugger_address.split(":") + assert host == "127.0.0.1" + assert port.isnumeric() + + # Fetch the browser version via the debugger address, `localhost` has + # to work as well. + for target_host in [host, "localhost"]: + print(f"Connecting to WebSocket via host {target_host}") + http = HTTPRequest(target_host, int(port)) + with http.get("/json/version") as response: + data = json.loads(response.read()) + assert session.capabilities["browserVersion"] in data["Browser"] + + # Ensure Fission is not disabled (bug 1813981) + with using_context(session, "chrome"): + assert ( + session.execute_script("""return Services.appinfo.fissionAutostart""") + is fission_enabled + ) diff --git a/testing/web-platform/mozilla/tests/webdriver/cdp/port_file.py b/testing/web-platform/mozilla/tests/webdriver/cdp/port_file.py new file mode 100644 index 0000000000..aa294deb24 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/cdp/port_file.py @@ -0,0 +1,30 @@ +import os + +from support.network import websocket_request + + +def test_devtools_active_port_file(browser): + current_browser = browser(use_cdp=True) + + assert current_browser.remote_agent_port != 0 + assert current_browser.debugger_address.startswith("/devtools/browser/") + + port_file = os.path.join(current_browser.profile.profile, "DevToolsActivePort") + assert os.path.exists(port_file) + + current_browser.quit(clean_profile=False) + assert not os.path.exists(port_file) + + +def test_connect(browser): + current_browser = browser(use_cdp=True) + + # Both `localhost` and `127.0.0.1` have to accept connections. + for target_host in ["127.0.0.1", "localhost"]: + print(f"Connecting to the WebSocket via host {target_host}") + response = websocket_request( + target_host, + current_browser.remote_agent_port, + path=current_browser.debugger_address, + ) + assert response.status == 101 |