mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-10-24 23:49:37 +08:00
Merge pull request #7287 from dannon/slow_selenium_tests
Fix remaining selenium tests and add headless testing option.
This commit is contained in:
@@ -3,7 +3,7 @@ BROWSER_DESCRIPTION = "Use specific browser for selenium (e.g. firefox or chrome
|
||||
REMOTE_HOST_DESCRIPTION = "Selenium hub remote host to use (if remote driver in use)."
|
||||
REMOTE_PORT_DESCRIPTION = "Selenium hub remote port to use (if remote driver in use)."
|
||||
GALAXY_URL_DESCRIPTION = "URL of Galaxy instance to target."
|
||||
HEADLESS_DESCRIPTION = "Use local selenium headlessly (requires pyvirtualdisplay)."
|
||||
HEADLESS_DESCRIPTION = "Use local selenium headlessly (native in chrome, otherwise this requires pyvirtualdisplay)."
|
||||
|
||||
from six.moves.urllib.parse import urljoin
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ except ImportError:
|
||||
Display = None
|
||||
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.chrome.options import Options as ChromeOptions
|
||||
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
|
||||
|
||||
|
||||
@@ -15,15 +16,18 @@ LOGGING_PREFS = {
|
||||
}
|
||||
|
||||
|
||||
def get_local_driver(browser=DEFAULT_BROWSER):
|
||||
def get_local_browser(browser):
|
||||
if browser == "auto":
|
||||
if _which("chromedriver"):
|
||||
browser = "CHROME"
|
||||
return "CHROME"
|
||||
elif _which("geckodriver"):
|
||||
browser = "FIREFOX"
|
||||
return "FIREFOX"
|
||||
else:
|
||||
raise Exception("Selenium browser is 'auto' but neither geckodriver or chromedriver are found on PATH.")
|
||||
|
||||
|
||||
def get_local_driver(browser=DEFAULT_BROWSER, headless=False):
|
||||
browser = get_local_browser(browser)
|
||||
assert browser in ["CHROME", "FIREFOX", "OPERA", "PHANTOMJS"]
|
||||
driver_to_class = {
|
||||
"CHROME": webdriver.Chrome,
|
||||
@@ -32,7 +36,12 @@ def get_local_driver(browser=DEFAULT_BROWSER):
|
||||
"PHANTOMJS": webdriver.PhantomJS,
|
||||
}
|
||||
driver_class = driver_to_class[browser]
|
||||
return driver_class(desired_capabilities={"loggingPrefs": LOGGING_PREFS})
|
||||
if browser == 'CHROME' and headless:
|
||||
options = ChromeOptions()
|
||||
options.add_argument('--headless')
|
||||
return driver_class(desired_capabilities={"loggingPrefs": LOGGING_PREFS}, chrome_options=options)
|
||||
else:
|
||||
return driver_class(desired_capabilities={"loggingPrefs": LOGGING_PREFS})
|
||||
|
||||
|
||||
def get_remote_driver(
|
||||
|
||||
@@ -1257,7 +1257,7 @@ class NavigatesGalaxy(HasDriver):
|
||||
self.home()
|
||||
self.click_masthead_user()
|
||||
self.wait_for_and_click(self.navigation.masthead.labels.logout)
|
||||
self.click_label('go to the home page')
|
||||
self.sleep_for(WAIT_TYPES.UX_TRANSITION)
|
||||
assert not self.is_logged_in()
|
||||
|
||||
def run_tour(self, path, skip_steps=None, sleep_on_steps=None, tour_callback=None):
|
||||
|
||||
@@ -287,7 +287,7 @@ class SeleniumTestCase(FunctionalTestCase, NavigatesGalaxy, UsesApiTestCaseMixin
|
||||
self._try_setup_with_driver()
|
||||
|
||||
def setup_driver_and_session(self):
|
||||
self.display = driver_factory.virtual_display_if_enabled(headless_selenium())
|
||||
self.display = driver_factory.virtual_display_if_enabled(use_virtual_display())
|
||||
self.driver = get_driver()
|
||||
# New workflow index page does not degrade well to smaller sizes, needed
|
||||
# to increase this.
|
||||
@@ -488,7 +488,20 @@ def headless_selenium():
|
||||
return False
|
||||
|
||||
if GALAXY_TEST_SELENIUM_HEADLESS == "auto":
|
||||
if driver_factory.is_virtual_display_available():
|
||||
if driver_factory.is_virtual_display_available() or driver_factory.get_local_browser(GALAXY_TEST_SELENIUM_BROWSER) == "CHROME":
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
else:
|
||||
return asbool(GALAXY_TEST_SELENIUM_HEADLESS)
|
||||
|
||||
|
||||
def use_virtual_display():
|
||||
if asbool(GALAXY_TEST_SELENIUM_REMOTE):
|
||||
return False
|
||||
|
||||
if GALAXY_TEST_SELENIUM_HEADLESS == "auto":
|
||||
if driver_factory.is_virtual_display_available() and not driver_factory.get_local_browser(GALAXY_TEST_SELENIUM_BROWSER) == "CHROME":
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
@@ -497,7 +510,10 @@ def headless_selenium():
|
||||
|
||||
|
||||
def get_local_driver():
|
||||
return driver_factory.get_local_driver(GALAXY_TEST_SELENIUM_BROWSER)
|
||||
return driver_factory.get_local_driver(
|
||||
GALAXY_TEST_SELENIUM_BROWSER,
|
||||
headless_selenium()
|
||||
)
|
||||
|
||||
|
||||
def get_remote_driver():
|
||||
|
||||
Reference in New Issue
Block a user