def test_chrome_webdriver_supports_browser(): # ChromeDriver binary cannot be called. chrome = browser.Chrome(logger) chrome.webdriver_version = mock.MagicMock(return_value=None) assert not chrome.webdriver_supports_browser('/usr/bin/chromedriver', '/usr/bin/chrome', 'stable') # Browser binary cannot be called. chrome = browser.Chrome(logger) chrome.webdriver_version = mock.MagicMock(return_value='70.0.1') chrome.version = mock.MagicMock(return_value=None) assert chrome.webdriver_supports_browser('/usr/bin/chromedriver', '/usr/bin/chrome', 'stable') # Browser version matches. chrome = browser.Chrome(logger) chrome.webdriver_version = mock.MagicMock(return_value='70.0.1') chrome.version = mock.MagicMock(return_value='70.1.5') assert chrome.webdriver_supports_browser('/usr/bin/chromedriver', '/usr/bin/chrome', 'stable') # Browser version doesn't match. chrome = browser.Chrome(logger) chrome.webdriver_version = mock.MagicMock(return_value='70.0.1') chrome.version = mock.MagicMock(return_value='69.0.1') assert not chrome.webdriver_supports_browser('/usr/bin/chromedriver', '/usr/bin/chrome', 'stable') # The dev channel switches between beta and ToT ChromeDriver, so is sometimes # a version behind its ChromeDriver. As such, we accept browser version + 1 there. chrome = browser.Chrome(logger) chrome.webdriver_version = mock.MagicMock(return_value='70.0.1') chrome.version = mock.MagicMock(return_value='70.1.0') assert chrome.webdriver_supports_browser('/usr/bin/chromedriver', '/usr/bin/chrome', 'dev') chrome.webdriver_version = mock.MagicMock(return_value='71.0.1') assert chrome.webdriver_supports_browser('/usr/bin/chromedriver', '/usr/bin/chrome', 'dev')
def test_chrome_find_webdriver(mocked_find_executable): # Cannot find ChromeDriver chrome = browser.Chrome(logger) mocked_find_executable.return_value = None assert chrome.find_webdriver() is None # ChromeDriver binary cannot be called. chrome = browser.Chrome(logger) mocked_find_executable.return_value = '/usr/bin/chromedriver' chrome.webdriver_version = mock.MagicMock(return_value=None) assert chrome.find_webdriver() is None # Browser binary cannot be called. chrome = browser.Chrome(logger) mocked_find_executable.return_value = '/usr/bin/chromedriver' chrome.webdriver_version = mock.MagicMock(return_value='70.0.1') chrome.version = mock.MagicMock(return_value=None) assert chrome.find_webdriver( browser_binary='/usr/bin/chrome') == '/usr/bin/chromedriver' # Browser version matches. chrome = browser.Chrome(logger) mocked_find_executable.return_value = '/usr/bin/chromedriver' chrome.webdriver_version = mock.MagicMock(return_value='70.0.1') chrome.version = mock.MagicMock(return_value='70.1.5') assert chrome.find_webdriver( browser_binary='/usr/bin/chrome') == '/usr/bin/chromedriver' # Browser version doesn't match. chrome = browser.Chrome(logger) mocked_find_executable.return_value = '/usr/bin/chromedriver' chrome.webdriver_version = mock.MagicMock(return_value='70.0.1') chrome.version = mock.MagicMock(return_value='69.0.1') assert chrome.find_webdriver(browser_binary='/usr/bin/chrome') is None
def test_chrome_webdriver_supports_browser(): # ChromeDriver binary cannot be called. chrome = browser.Chrome(logger) chrome.webdriver_version = mock.MagicMock(return_value=None) assert not chrome.webdriver_supports_browser('/usr/bin/chromedriver', '/usr/bin/chrome') # Browser binary cannot be called. chrome = browser.Chrome(logger) chrome.webdriver_version = mock.MagicMock(return_value='70.0.1') chrome.version = mock.MagicMock(return_value=None) assert chrome.webdriver_supports_browser('/usr/bin/chromedriver', '/usr/bin/chrome') # Browser version matches. chrome = browser.Chrome(logger) chrome.webdriver_version = mock.MagicMock(return_value='70.0.1') chrome.version = mock.MagicMock(return_value='70.1.5') assert chrome.webdriver_supports_browser('/usr/bin/chromedriver', '/usr/bin/chrome') # Browser version doesn't match. chrome = browser.Chrome(logger) chrome.webdriver_version = mock.MagicMock(return_value='70.0.1') chrome.version = mock.MagicMock(return_value='69.0.1') assert not chrome.webdriver_supports_browser('/usr/bin/chromedriver', '/usr/bin/chrome')
def test_install_chrome_chromedriver_by_version(): # 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": dest = os.path.join(wpt.localpaths.repo_root, wpt.venv_dir(), "Scripts") chromedriver_path = os.path.join(dest, "chrome", "chromedriver.exe") else: dest = os.path.join(wpt.localpaths.repo_root, wpt.venv_dir(), "bin") chromedriver_path = os.path.join(dest, "chrome", "chromedriver") if os.path.exists(chromedriver_path): os.unlink(chromedriver_path) # This is a stable version. binary_path = chrome.install_webdriver_by_version(dest=dest, version="84.0.4147.89") assert binary_path == chromedriver_path assert os.path.exists(chromedriver_path) os.unlink(chromedriver_path)
def test_chrome_webdriver_version(mocked_call): chrome = browser.Chrome(logger) webdriver_binary = '/usr/bin/chromedriver' # Working cases. mocked_call.return_value = 'ChromeDriver 84.0.4147.30' assert chrome.webdriver_version(webdriver_binary) == '84.0.4147.30' mocked_call.return_value = 'ChromeDriver 87.0.1 (abcd1234-refs/branch-heads/4147@{#310})' assert chrome.webdriver_version(webdriver_binary) == '87.0.1' # Various invalid version strings mocked_call.return_value = 'Chrome 84.0.4147.30 (dev)' assert chrome.webdriver_version(webdriver_binary) is None mocked_call.return_value = 'ChromeDriver New 84.0.4147.30' assert chrome.webdriver_version(webdriver_binary) is None mocked_call.return_value = '' assert chrome.webdriver_version(webdriver_binary) is None # The underlying subprocess call throws. mocked_call.side_effect = subprocess.CalledProcessError(5, 'cmd', output='Call failed') assert chrome.webdriver_version(webdriver_binary) is None
def test_install_chromium(): dest = os.path.join(wpt.localpaths.repo_root, wpt.venv_dir(), "browsers", "nightly") if sys.platform == "win32": chromium_path = os.path.join(dest, "chrome-win") elif sys.platform == "darwin": chromium_path = os.path.join(dest, "chrome-mac") else: chromium_path = os.path.join(dest, "chrome-linux") if os.path.exists(chromium_path): utils.rmtree(chromium_path) with pytest.raises(SystemExit) as excinfo: wpt.main(argv=["install", "chrome", "browser", "--channel=nightly"]) assert excinfo.value.code == 0 assert os.path.exists(chromium_path) chrome = browser.Chrome(logging.getLogger("Chrome")) binary = chrome.find_nightly_binary(dest) assert binary is not None and os.path.exists(binary) utils.rmtree(chromium_path)