mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
During this transient failure: https://jenkins.galaxyproject.org/job/selenium/519/artifact/519-test-errors/test_missing_tools2017092118271506032874/stacktrace.txt the workflow was still loading when an assertion about the resulting modal text was issued. Avoiding the arbitrary sleep and instead just retrying the assertion until it holds true or times out is more robust and should prevent that.
105 lines
3.8 KiB
Python
105 lines
3.8 KiB
Python
import time
|
|
|
|
from .framework import (
|
|
retry_assertion_during_transitions,
|
|
selenium_test,
|
|
SeleniumTestCase
|
|
)
|
|
|
|
from ._workflow_fixtures import (
|
|
WORKFLOW_SIMPLE_CAT_TWICE,
|
|
WORKFLOW_WITH_OLD_TOOL_VERSION,
|
|
WORKFLOW_WITH_INVALID_STATE,
|
|
)
|
|
|
|
|
|
class WorkflowEditorTestCase(SeleniumTestCase):
|
|
|
|
ensure_registered = True
|
|
|
|
@selenium_test
|
|
def test_build_workflow(self):
|
|
name = "test_edit_nam"
|
|
self.workflow_create_new(name=name)
|
|
element = self.wait_for_selector("#edit-attributes #workflow-name")
|
|
assert name in element.text, element.text
|
|
|
|
@selenium_test
|
|
def test_data_input(self):
|
|
self.workflow_create_new()
|
|
menu = self.wait_for_selector(".toolMenu")
|
|
time.sleep(1)
|
|
inputs_section = menu.find_element_by_css_selector("#title___workflow__inputs__")
|
|
inputs_link = inputs_section.find_element_by_css_selector("a span")
|
|
inputs_link.click()
|
|
self.wait_for_selector_visible("#__workflow__inputs__ .toolTitle")
|
|
input_links = self.driver.find_elements_by_css_selector("#__workflow__inputs__ .toolTitle a")
|
|
input_links[0].click()
|
|
# TODO: verify box is highlighted and side panel is a form describing input.
|
|
# More work needs to be done to develop testing abstractions for doing these things.
|
|
|
|
@selenium_test
|
|
def test_save_as(self):
|
|
workflow_populator = self.workflow_populator
|
|
workflow_populator.upload_yaml_workflow(WORKFLOW_SIMPLE_CAT_TWICE)
|
|
self.workflow_index_open()
|
|
self.workflow_index_click_option("Edit")
|
|
time.sleep(1)
|
|
self.workflow_editor_click_option("Save As")
|
|
|
|
@selenium_test
|
|
def test_editor_tool_upgrade_message(self):
|
|
workflow_populator = self.workflow_populator
|
|
workflow_populator.upload_yaml_workflow(WORKFLOW_WITH_OLD_TOOL_VERSION, exact_tools=True)
|
|
self.workflow_index_open()
|
|
self.workflow_index_click_option("Edit")
|
|
self.assert_modal_has_text("Using version '0.2' instead of version '0.0.1'")
|
|
|
|
@selenium_test
|
|
def test_editor_invalid_tool_state(self):
|
|
workflow_populator = self.workflow_populator
|
|
workflow_populator.upload_yaml_workflow(WORKFLOW_WITH_INVALID_STATE, exact_tools=True)
|
|
self.workflow_index_open()
|
|
self.workflow_index_click_option("Edit")
|
|
self.assert_modal_has_text("Using version '0.2' instead of version '0.0.1'")
|
|
self.assert_modal_has_text("Using default: '1'")
|
|
|
|
@selenium_test
|
|
def test_missing_tools(self):
|
|
workflow_populator = self.workflow_populator
|
|
workflow_populator.upload_yaml_workflow("""
|
|
class: GalaxyWorkflow
|
|
inputs:
|
|
- id: input1
|
|
steps:
|
|
- tool_id: missing
|
|
label: first_cat
|
|
state:
|
|
foo: bar
|
|
""")
|
|
self.workflow_index_open()
|
|
self.workflow_index_click_option("Edit")
|
|
self.assert_modal_has_text("Tool is not installed")
|
|
|
|
def workflow_create_new(self, name=None, annotation=None):
|
|
self.workflow_index_open()
|
|
self.click_button_new_workflow()
|
|
|
|
form_element = self.driver.find_element_by_css_selector("#center form")
|
|
action = form_element.get_attribute("action")
|
|
assert action.endswith("/workflow/create"), action
|
|
|
|
name = name or self._get_random_name()
|
|
annotation = annotation or self._get_random_name()
|
|
self.fill(form_element, {
|
|
'workflow_name': name,
|
|
'workflow_annotation': annotation,
|
|
})
|
|
self.click_submit(form_element)
|
|
|
|
@retry_assertion_during_transitions
|
|
def assert_modal_has_text(self, expected_text):
|
|
modal_element = self.wait_for_selector_visible(self.modal_body_selector())
|
|
text = modal_element.text
|
|
assert expected_text in text, "Failed to find expected text [%s] in modal text [%s]" % (expected_text, text)
|