Warning

This document is for an old release 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_test.selenium.test_custom_builds

from .framework import (
    retry_assertion_during_transitions,
    selenium_test,
    SharedStateSeleniumTestCase,
)


[docs]class TestCustomBuilds(SharedStateSeleniumTestCase): user_email: str build_name1: str build_name2: str build_key1: str build_key2: str
[docs] @selenium_test def test_build_add(self): self._login() self.navigate_to_custom_builds_page() self.add_custom_build(self.build_name1, self.build_key1) self.assert_custom_builds_in_grid([self.build_name1])
[docs] @selenium_test def test_build_delete(self): self._login() self.navigate_to_custom_builds_page() self.add_custom_build(self.build_name2, self.build_key2) self.assert_custom_builds_in_grid([self.build_name2]) self.delete_custom_build(self.build_name2) self.assert_custom_builds_in_grid([self.build_name2], False)
[docs] @retry_assertion_during_transitions def assert_custom_builds_in_grid(self, expected_builds, present=True): actual_builds = self.get_custom_builds() intersection = set(actual_builds).intersection(expected_builds) if present: assert intersection == set(expected_builds) else: assert intersection == set()
def _login(self): self.home() # ensure Galaxy is loaded self.submit_login(self.user_email, retries=2)
[docs] def add_custom_build(self, build_name, build_key): name_input = self.wait_for_selector('input[id="name"]') name_input.send_keys(build_name) key_input = self.wait_for_selector('input[id="id"]') key_input.send_keys(build_key) len_type_select = self.wait_for_selector('select[id="type"]') len_type_select.click() option = self.wait_for_sizzle_selector_clickable('option[value="text"]') option.click() content_area = self.wait_for_and_click_selector('textarea[id="len-file-text-area"]') content_area.send_keys("content") self.wait_for_and_click_selector("button#save")
[docs] def delete_custom_build(self, build_name): delete_button = None grid = self.wait_for_selector("table.grid > tbody") for row in grid.find_elements(self.by.TAG_NAME, "tr"): td = row.find_elements(self.by.TAG_NAME, "td") name = td[0].text if name == build_name: delete_button = td[3].find_element(self.by.CSS_SELECTOR, ".fa-trash-o") break if delete_button is None: raise AssertionError(f"Failed to find custom build with name [{build_name}]") delete_button.click()
[docs] def get_custom_builds(self): self.sleep_for(self.wait_types.UX_RENDER) builds = [] grid = self.wait_for_selector("table.grid > tbody") for row in grid.find_elements(self.by.TAG_NAME, "tr"): name = row.find_elements(self.by.TAG_NAME, "td")[0].text builds.append(name) return builds
[docs] def navigate_to_custom_builds_page(self): self.home() self.navigate_to_user_preferences() self.components.preferences.custom_builds.wait_for_and_click()
[docs] def setup_shared_state(self): TestCustomBuilds.user_email = self._get_random_email() self.register(self.user_email) TestCustomBuilds.build_name1 = self._get_random_name() TestCustomBuilds.build_name2 = self._get_random_name() TestCustomBuilds.build_key1 = self._get_random_name(len=5) TestCustomBuilds.build_key2 = self._get_random_name(len=5)