Warning

This document is for an in-development version of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.

Source code for galaxy.selenium.context

import os
from abc import abstractmethod
from typing import Optional
from urllib.parse import urljoin

import yaml

from .driver_factory import ConfiguredDriver
from .navigates_galaxy import NavigatesGalaxy


[docs]class GalaxySeleniumContext(NavigatesGalaxy): url: str target_url_from_selenium: str configured_driver: ConfiguredDriver
[docs] def build_url(self, url: str, for_selenium: bool = True) -> str: if for_selenium: base = self.target_url_from_selenium else: base = self.url return urljoin(base, url)
@property def driver(self): return self.configured_driver.driver
[docs] def screenshot(self, label: str): """If GALAXY_TEST_SCREENSHOTS_DIRECTORY is set create a screenshot there named <label>.png. Unlike the above "snapshot" feature, this will be written out regardless and not in a per-test directory. The above method is used for debugging failures within a specific test. This method if more for creating a set of images to augment automated testing with manual human inspection after a test or test suite has executed. """ target = self._screenshot_path(label) if target is None: return self.driver.save_screenshot(target) return target
@abstractmethod def _screenshot_path(self, label: str, extension=".png") -> Optional[str]: """Path to store screenshots in."""
[docs]class GalaxySeleniumContextImpl(GalaxySeleniumContext): """Minimal, simplified GalaxySeleniumContext useful outside the context of test cases. A variant of this concept that can also populate content via the API to then interact with via the Selenium is :class:`galaxy_test.selenium.framework.GalaxySeleniumContextImpl`. """
[docs] def __init__(self, from_dict: Optional[dict] = None) -> None: from_dict = from_dict or {} self.configured_driver = ConfiguredDriver(**from_dict.get("driver", {})) self.url = from_dict.get("local_galaxy_url", "http://localhost:8080") self.target_url_from_selenium = from_dict.get("selenium_galaxy_url", self.url) self.timeout_multiplier = from_dict.get("timeout_multiplier", 1)
def _screenshot_path(self, label, extension=".png"): return label + extension
[docs]def init(config=None, clazz=GalaxySeleniumContextImpl) -> GalaxySeleniumContext: if os.path.exists("galaxy_selenium_context.yml"): with open("galaxy_selenium_context.yml") as f: as_dict = yaml.safe_load(f) context = clazz(as_dict) else: config = config or {} context = clazz(config) return context