Source code

Revision control

Copy as Markdown

Other Tools

# mypy: allow-untyped-defs
import logging
import os
import platform
import sys
import pytest
from tools.wpt import browser, wpt
@pytest.mark.slow
@pytest.mark.remote_network
def test_install_chromium(tmp_path):
channel = "nightly"
if sys.platform == "win32":
chromium_dir = "chrome-win"
elif sys.platform == "darwin":
chromium_dir = "chrome-mac"
else:
chromium_dir = "chrome-linux"
with pytest.raises(SystemExit) as excinfo:
wpt.main(argv=["install", "-d", str(tmp_path), "chromium", "browser"])
assert excinfo.value.code == 0
assert os.path.isdir(os.path.join(tmp_path, "browsers", channel, chromium_dir))
chromium = browser.Chromium(logging.getLogger("Chromium"))
binary = chromium.find_binary(str(tmp_path), channel)
assert binary is not None and os.path.exists(binary)
@pytest.mark.slow
@pytest.mark.remote_network
def test_install_chrome(tmp_path):
channel = "dev"
uname = platform.uname()
chrome_platform = {
"Linux": "linux",
"Windows": "win",
"Darwin": "mac",
}.get(uname[0])
if chrome_platform in ("linux", "win"):
bits = "64" if uname.machine == "x86_64" else "32"
elif chrome_platform == "mac":
bits = "-arm64" if uname.machine == "arm64" else "-x64"
else:
bits = ""
chrome_dir = f"chrome-{chrome_platform}{bits}"
with pytest.raises(SystemExit) as excinfo:
wpt.main(argv=["install", "-d", str(tmp_path), "--channel", channel, "chrome", "browser"])
assert excinfo.value.code == 0
assert os.path.isdir(os.path.join(tmp_path, "browsers", channel, chrome_dir))
chrome = browser.Chrome(logging.getLogger("Chrome"))
binary = chrome.find_binary(tmp_path, channel)
assert binary is not None and os.path.exists(binary)
@pytest.mark.slow
@pytest.mark.remote_network
def test_install_chrome_chromedriver_by_version(tmp_path):
# This is not technically an integration test as we do not want to require Chrome Stable to run it.
chrome = browser.Chrome(logging.getLogger("Chrome"))
if sys.platform == "win32":
chromedriver_binary = "chromedriver.exe"
else:
chromedriver_binary = "chromedriver"
# This is a stable version.
binary_path = chrome.install_webdriver_by_version(
dest=str(tmp_path), version="115.0.5790.170", channel="stable")
assert os.path.samefile(
binary_path,
os.path.join(tmp_path, "chrome", chromedriver_binary),
)
@pytest.mark.slow
@pytest.mark.remote_network
@pytest.mark.xfail(sys.platform == "win32",
def test_install_firefox(tmp_path):
if sys.platform == "darwin":
fx_binary = "Firefox Nightly.app"
else:
fx_binary = "firefox"
with pytest.raises(SystemExit) as excinfo:
wpt.main(argv=["install", "-d", str(tmp_path), "firefox", "browser", "--channel=nightly"])
assert excinfo.value.code == 0
assert os.path.exists(os.path.join(tmp_path, "browsers", "nightly", fx_binary))