Source code for galaxy_test.selenium.test_workflow_management

from .framework import (
    EXAMPLE_WORKFLOW_URL_1,
    retry_assertion_during_transitions,
    selenium_test,
    SeleniumTestCase,
    TestsGalaxyPagers,
    UsesWorkflowAssertions,
)


[docs]class WorkflowManagementTestCase(SeleniumTestCase, TestsGalaxyPagers, UsesWorkflowAssertions): ensure_registered = True
[docs] @selenium_test def test_import_from_url(self): self.workflow_index_open() self._workflow_import_from_url() table_elements = self.workflow_index_table_elements() assert len(table_elements) == 1 new_workflow = table_elements[0].find_element_by_css_selector(".workflow-dropdown") assert "TestWorkflow1 (imported from URL)" in new_workflow.text, new_workflow.text
[docs] @selenium_test def test_view(self): self.workflow_index_open() self._workflow_import_from_url() self.workflow_index_click_option("View external link") assert self.driver.current_url == EXAMPLE_WORKFLOW_URL_1 self.driver.back() self.components.workflows.external_link.wait_for_visible() # font-awesome title handling broken... https://github.com/FortAwesome/vue-fontawesome/issues/63 # title_element = external_link_icon.find_element_by_tag_name("title") # assert EXAMPLE_WORKFLOW_URL_1 in title_element.text self.workflow_index_click_option("View") workflow_show = self.components.workflow_show title_item = self.components.workflow_show.title.wait_for_visible() assert "TestWorkflow1" in title_item.text annotation_item = workflow_show.annotation.wait_for_visible() assert "simple workflow" in annotation_item.text self.screenshot("workflow_manage_view")
# TODO: Test display of steps...
[docs] @selenium_test def test_rename(self): self.workflow_index_open() self._workflow_import_from_url() self.workflow_index_rename("CoolNewName") @retry_assertion_during_transitions def check_name(): name = self.workflow_index_name() assert "CoolNewName" == name, name check_name()
[docs] @selenium_test def test_download(self): self.workflow_index_open() self._workflow_import_from_url() # TODO: fill this test out - getting downloaded files in general through Selenium is a bit tough, # going through the motions though should catch a couple potential problems. self.workflow_index_click_option("Download")
[docs] @selenium_test def test_tagging(self): self.workflow_index_open() self._workflow_import_from_url() self.workflow_index_add_tag("cooltag") @retry_assertion_during_transitions def check_tags(): self.assertEqual(self.workflow_index_tags(), ["cooltag"]) check_tags() self.screenshot("workflow_manage_tags")
[docs] @selenium_test def test_tag_filtering(self): self.workflow_index_open() self._workflow_import_from_url() self.workflow_index_add_tag("mytag") self._workflow_import_from_url() self.workflow_index_add_tag("mytag") self._workflow_import_from_url() self.workflow_index_add_tag("mytaglonger") self._workflow_import_from_url() self.workflow_index_search_for("mytag") self._assert_showing_n_workflows(3) self.screenshot("workflow_manage_search_by_tag_freetext") self.workflow_index_search_for("thisisnotatag") self._assert_showing_n_workflows(0) self.workflow_index_search_for() self._assert_showing_n_workflows(4) self.workflow_index_click_tag("mytag", workflow_index=3) self._assert_showing_n_workflows(2) self.screenshot("workflow_manage_search_by_tag_exact") self.workflow_index_search_for() self._assert_showing_n_workflows(4) self.workflow_index_search_for("MyTaG")
[docs] @selenium_test def test_index_search_filters(self): self.workflow_index_open() self._workflow_import_from_url() self.workflow_index_rename("searchforthis") self._assert_showing_n_workflows(1) self.workflow_index_search_for("name:doesnotmatch") self._assert_showing_n_workflows(0) self.screenshot("workflow_manage_search_no_matches") self.workflow_index_search_for() self._assert_showing_n_workflows(1) self.workflow_index_search_for("name:searchforthis") self._assert_showing_n_workflows(1) self.screenshot("workflow_manage_search_name_filter") self.workflow_index_search_for("n:searchforthis") self._assert_showing_n_workflows(1) self.screenshot("workflow_manage_search_name_alias") self.workflow_index_search_for("n:doesnotmatch") self._assert_showing_n_workflows(0) self.screenshot("workflow_manage_search_name_alias")
[docs] @selenium_test def test_workflow_delete(self): self.workflow_index_open() self._workflow_import_from_url() self.workflow_index_rename("fordelete") self._assert_showing_n_workflows(1) self.workflow_index_click_option("Delete") self.accept_alert() self._assert_showing_n_workflows(0) self.workflow_index_open() self._assert_showing_n_workflows(0)
[docs] @selenium_test def test_pagination(self): self.workflow_index_open() self._workflow_import_from_url() self.workflow_index_open() self._workflow_import_from_url() self.workflow_index_open() self._workflow_import_from_url() self.workflow_index_open() self._workflow_import_from_url() self.workflow_index_open() self._assert_showing_n_workflows(4) # by default the pager only appears when there are too many workflows # for one page - so verify it is absent and then swap to showing just # one workflow per page. workflows = self.components.workflows workflows.pager.wait_for_absent_or_hidden() self.re_get_with_query_params("rows_per_page=1") self._assert_showing_n_workflows(1) self.screenshot("workflows_paginated_first_page") self._assert_current_page_is(workflows, 1) self._next_page(workflows) self._assert_current_page_is(workflows, 2) self.screenshot("workflows_paginated_next_page") self._previous_page(workflows) self._assert_current_page_is(workflows, 1) self._last_page(workflows) self._assert_current_page_is(workflows, 4) self.screenshot("workflows_paginated_last_page") self._first_page(workflows) self._assert_current_page_is(workflows, 1)