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_library_contents

import os

from galaxy_test.base.decorators import (
    requires_admin,
    requires_new_library,
)
from .framework import (
    retry_during_transitions,
    selenium_test,
    SeleniumTestCase,
    UsesLibraryAssertions,
)


[docs]class TestLibraryContents(SeleniumTestCase, UsesLibraryAssertions): run_as_admin = True
[docs] @selenium_test @requires_admin @requires_new_library def test_sub_folder(self): def change_description(description): self.components.libraries.folder.edit_folder_btn.wait_for_and_click() self.components.libraries.folder.input_folder_description.wait_for_visible().clear() self.components.libraries.folder.input_folder_description.wait_for_and_send_keys(description) self.components.libraries.folder.save_folder_btn.wait_for_and_click() sub_folder_name = self._get_random_name(prefix="new_sub_folder") description = self._get_random_name(prefix="new_sub_folder_description") long_description = self._get_random_name(prefix="new_sub_folder_description", len=45) # create mew folder self.admin_login() self.navigate_to_new_library() self.assert_num_displayed_items_is(0) self.libraries_folder_create(sub_folder_name) self.assert_num_displayed_items_is(1) # check empty folder new_folder_link = self.wait_for_xpath_visible(f'//a[contains(text(), "{sub_folder_name}")]') new_folder_link.click() # assert that 'empty folder message' is present self.components.libraries.folder.empty_folder_message.wait_for_present() # go one folder up self.components.libraries.folder.btn_open_parent_folder(folder_name=self.name).wait_for_and_click() # assert empty description self.components.libraries.folder.description_field.assert_absent_or_hidden() # change description change_description(description) assert description == self.components.libraries.folder.description_field.wait_for_text() change_description(long_description) # assert shrinked description shrinked_description = long_description[0:40] assert shrinked_description == self.components.libraries.folder.description_field_shrinked.wait_for_text()
[docs] @selenium_test @requires_admin @requires_new_library def test_import_dataset_from_history(self): self.admin_login() self.perform_upload(self.get_filename("1.txt")) self.wait_for_history() self.navigate_to_new_library() self.assert_num_displayed_items_is(0) self.sleep_for(self.wait_types.UX_RENDER) self.libraries_dataset_import(self.navigation.libraries.folder.labels.from_history) # Click the cancel button, make sure modal is hidden. self.wait_for_visible(self.navigation.libraries.folder.selectors.import_modal) self.wait_for_and_click(self.navigation.libraries.folder.selectors.import_datasets_cancel_button) self.wait_for_absent_or_hidden(self.navigation.libraries.folder.selectors.import_modal) self.libraries_dataset_import(self.navigation.libraries.folder.labels.from_history) # Need to select the right item on the dropdown self.sleep_for(self.wait_types.UX_RENDER) self._select_history_option("Unnamed history") self.sleep_for(self.wait_types.UX_RENDER) self.libraries_dataset_import_from_history_select(["1.txt"]) # Add self.sleep_for(self.wait_types.UX_RENDER) self.screenshot("libraries_dataset_import") self.libraries_dataset_import_from_history_click_ok() self.assert_num_displayed_items_is(1)
[docs] @selenium_test @requires_admin @requires_new_library def download_dataset_from_library(self): self.test_import_dataset_from_history() self.components.libraries.folder.select_one.wait_for_and_click() self.components.libraries.folder.download_button.wait_for_and_click() self.sleep_for(self.wait_types.UX_RENDER) folder_files = os.listdir(self.get_download_path()) expected_filename = "selected_dataset_files.zip" assert expected_filename in folder_files
[docs] @selenium_test @requires_admin @requires_new_library def test_delete_dataset(self): self.test_import_dataset_from_history() self.sleep_for(self.wait_types.UX_RENDER) # assert "you must select at least one" modal assert self.components.libraries.folder.toast_msg.is_displayed self.components.libraries.folder.delete_btn.wait_for_and_click() self.components.libraries.folder.select_one.wait_for_and_click() self.sleep_for(self.wait_types.UX_RENDER) self.components.libraries.folder.delete_btn.wait_for_and_click() self.sleep_for(self.wait_types.UX_RENDER) self.assert_num_displayed_items_is(0)
# Fine test locally but the upload doesn't work in Docker compose. I'd think # Galaxy must be running so that test-data/1.txt would work but it just doesn't # for some reason. https://jenkins.galaxyproject.org/job/jmchilton-selenium/79/artifact/79-test-errors/test_import_dataset_from_path2017100413221507137721/
[docs] @selenium_test @requires_admin @requires_new_library def test_import_dataset_from_path(self): self.admin_login() self.navigate_to_new_library() self.assert_num_displayed_items_is(0) self.sleep_for(self.wait_types.UX_RENDER) # Click the cancel button, make sure modal is hidden. self.libraries_dataset_import(self.navigation.libraries.folder.labels.from_path) self.wait_for_visible(self.navigation.libraries.folder.selectors.import_modal) self.wait_for_and_click(self.navigation.libraries.folder.selectors.import_datasets_cancel_button) self.wait_for_absent_or_hidden(self.navigation.libraries.folder.selectors.import_modal) # Try again... this time actually select some paths. self.libraries_dataset_import(self.navigation.libraries.folder.labels.from_path) textarea = self.wait_for_and_click(self.navigation.libraries.folder.selectors.import_from_path_textarea) textarea.send_keys("test-data/1.txt") self.sleep_for(self.wait_types.UX_RENDER) self.wait_for_and_click(self.navigation.libraries.folder.selectors.import_datasets_ok_button) # Let the progress bar disappear... self.wait_for_absent_or_hidden(self.navigation.libraries.folder.selectors.import_progress_bar) self.assert_num_displayed_items_is(1) self.click_label("1.txt") self.wait_for_visible(self.navigation.libraries.dataset.selectors.table) elements = self.find_elements(self.navigation.libraries.dataset.selectors.table_rows) table_as_dict = {} for element in elements: row_values = element.text.split("\n") key = row_values[0] value = row_values[1] table_as_dict[key] = value assert table_as_dict["Name"] == "1.txt", table_as_dict assert table_as_dict["Genome build"] == "?", table_as_dict
[docs] @selenium_test @requires_admin @requires_new_library def test_import_dataset_from_import_dir(self): self.admin_login() self.navigate_to_new_library() self.assert_num_displayed_items_is(0) filenames = ["1.axt", "1.bed", "1.bam"] self.populate_library_folder_from_import_dir(self.name, filenames) self.assert_num_displayed_items_is(len(filenames))
[docs] @selenium_test @requires_admin @requires_new_library def test_show_details(self): self.admin_login() self.navigate_to_new_library() self.sleep_for(self.wait_types.UX_RENDER) self.components.libraries.folder.open_location_details_btn.wait_for_and_click() self.sleep_for(self.wait_types.UX_RENDER) self.components.libraries.folder.location_details_ok_btn.wait_for_and_click() self.screenshot("libraries_show_details") self.wait_for_overlays_cleared() self.screenshot("libraries_show_details_done")
@retry_during_transitions def _select_history_option(self, label_text): select = self.components.libraries.folder.add_history_items.wait_for_select() select.select_by_visible_text(label_text)