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_history_multi_view
from .framework import (
selenium_test,
SeleniumTestCase,
)
[docs]class HistoryMultiViewTestCase(SeleniumTestCase):
ensure_registered = True
[docs] @selenium_test
def test_create_new_old_slides_next(self):
history_id = self.current_history_id()
input_collection = self.dataset_collection_populator.create_list_in_history(
history_id, contents=["0", "1", "0", "1"], wait=True
).json()
input_hid = input_collection["outputs"][0]["hid"]
self.home()
self.open_history_multi_view()
hdca_selector = self.history_panel_wait_for_hid_state(input_hid, "ok", multi_history_panel=True)
self.wait_for_visible(hdca_selector)
self.components.multi_history_view.create_new_button.wait_for_and_click()
self.components.multi_history_view.drag_drop_help.wait_for_visible()
self.screenshot("multi_history_collection")
[docs] @selenium_test
def test_list_list_display(self):
history_id = self.current_history_id()
method = self.dataset_collection_populator.create_list_of_list_in_history(history_id, wait=True).json
selector = self.prepare_multi_history_view(method)
first_level_element_selector = selector.descendant(".dataset-collection-element")
self.wait_for_and_click(first_level_element_selector)
dataset_selector = first_level_element_selector.descendant(".dataset")
self.wait_for_and_click(dataset_selector)
self.sleep_for(self.wait_types.UX_TRANSITION)
self.screenshot("multi_history_list_list")
[docs] @selenium_test
def test_list_list_list_display(self):
history_id = self.current_history_id()
method = self.dataset_collection_populator.create_nested_collection(
history_id, collection_type="list:list:list"
).json
selector = self.prepare_multi_history_view(method)
first_level_element_selector = selector.descendant(".dataset-collection-element")
self.wait_for_and_click(first_level_element_selector)
second_level_element_selector = first_level_element_selector.descendant(".dataset-collection-element")
self.wait_for_and_click(second_level_element_selector)
dataset_selector = first_level_element_selector.descendant(".dataset")
self.wait_for_and_click(dataset_selector)
self.sleep_for(self.wait_types.UX_TRANSITION)
self.screenshot("multi_history_list_list_list")
[docs] @selenium_test
def test_copy_history(self):
history_id = self.current_history_id()
method = self.dataset_collection_populator.create_list_in_history(
history_id, contents=["0", "1", "0", "1"]
).json
self.prepare_multi_history_view(method)
self.copy_history(history_id)
self.assert_history(history_id, histories_number=2)
[docs] @selenium_test
def test_delete_history(self):
history_id = self.current_history_id()
method = self.dataset_collection_populator.create_list_in_history(
history_id, contents=["0", "1", "0", "1"]
).json
self.prepare_multi_history_view(method)
self.copy_history(history_id)
self.components.multi_history_view.history_dropdown_btn(history_id=history_id).wait_for_and_click()
# click on delete button with corresponding history_id
self.components.multi_history_view.history_dropdown_menu.delete(history_id=history_id).wait_for_and_click()
self.sleep_for(self.wait_types.UX_RENDER)
self.assert_history(history_id, should_exist=False)
[docs] @selenium_test
def test_purge_history(self):
history_id = self.current_history_id()
method = self.dataset_collection_populator.create_list_in_history(
history_id, contents=["0", "1", "0", "1"]
).json
self.prepare_multi_history_view(method)
self.copy_history(history_id)
self.components.multi_history_view.history_dropdown_btn(history_id=history_id).wait_for_and_click()
# click on purge button with corresponding history_id
self.components.multi_history_view.history_dropdown_menu.purge(history_id=history_id).wait_for_and_click()
self.driver.switch_to.alert.accept()
self.sleep_for(self.wait_types.UX_RENDER)
self.assert_history(history_id, should_exist=False)
[docs] @selenium_test
def test_switch_history(self):
"""
1. Load the multi history view. There should be a selector for the button
to create a new history.
2. Create a new history. This *should* automatically switch to the newly
created history.
3. Switch back to the original history. A button should appear on the old,
previously created history that allows switching back to that one, and
the history ID should now match the ID of the history with which we
started.
"""
self.home()
original_history_id = self.current_history_id()
# Load the multi-view
self.open_history_multi_view()
# There should be only one
self.assert_history(original_history_id, histories_number=1)
# Creating a new history should automatically switch to it
self.components.multi_history_view.create_new_button.wait_for_and_click()
self.sleep_for(self.wait_types.UX_RENDER)
new_history_id = self.current_history_id()
# Otherwise this assertion would fail
self.screenshot("multi_history_switch_created_history")
self.assertNotEqual(original_history_id, new_history_id)
# Switch back to the original history
switch_button = self.components.multi_history_view.switch_button(history_id=original_history_id)
switch_button.wait_for_and_click()
self.sleep_for(self.wait_types.UX_RENDER)
self.screenshot("multi_history_switch_changed_history")
self.assertEqual(original_history_id, self.current_history_id())
[docs] def assert_history(self, history_id, histories_number=1, should_exist=True):
self.components.multi_history_view.histories.wait_for_present()
histories = self.components.multi_history_view.histories.all()
assert len(histories) == histories_number
# search for history with history_id
assert should_exist == any(
history.get_attribute("id") == f"history-column-{history_id}" for history in histories
)
[docs] def copy_history(self, history_id):
self.components.multi_history_view.history_dropdown_btn(history_id=history_id).wait_for_and_click()
self.components.multi_history_view.copy.wait_for_and_click()
self.components.multi_history_view.copy_history_modal.copy_btn.wait_for_and_click()
self.sleep_for(self.wait_types.UX_RENDER)
[docs] def prepare_multi_history_view(self, collection_populator_method):
collection = collection_populator_method()
if "outputs" in collection:
collection = self.dataset_collection_populator.wait_for_fetched_collection(collection)
collection_hid = collection["hid"]
self.home()
self.open_history_multi_view()
selector = self.history_panel_wait_for_hid_state(collection_hid, "ok", multi_history_panel=True)
self.click(selector)
return selector