Skip to content

Commit

Permalink
Merge pull request #16243 from jmchilton/workflow_license_selenium
Browse files Browse the repository at this point in the history
e2e test for workflow license selector
  • Loading branch information
dannon committed Jun 16, 2023
2 parents 004a8d7 + 6104f36 commit 980bd07
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 6 deletions.
22 changes: 16 additions & 6 deletions client/src/components/License/LicenseSelector.vue
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
<template>
<div v-if="editLicense">
<loading-span v-if="licensesLoading" message="Loading licenses..." />
<b-form-select v-else v-model="license" :options="licenseOptions"></b-form-select>
<b-form-select
v-else
v-model="license"
data-description="license select"
:options="licenseOptions"></b-form-select>
<License v-if="currentLicenseInfo" :license-id="license" :input-license-info="currentLicenseInfo">
<template v-slot:buttons>
<span v-b-tooltip.hover title="Save License"><font-awesome-icon icon="save" @click="onSave" /></span>
<span v-b-tooltip.hover title="Save License"
><font-awesome-icon data-description="license save" icon="save" @click="onSave"
/></span>
<span v-b-tooltip.hover title="Cancel Edit"
><font-awesome-icon icon="times" @click="disableEdit"
/></span>
Expand All @@ -15,17 +21,21 @@
<a href="#" @click.prevent="editLicense = false">cancel edit.</a>
</div>
</div>
<div v-else-if="license">
<div v-else-if="license" data-description="license selector" :data-license="license">
<License :license-id="license">
<template v-slot:buttons>
<span v-b-tooltip.hover title="Edit License"
><font-awesome-icon icon="edit" @click="editLicense = true"
><font-awesome-icon icon="edit" data-description="edit license link" @click="editLicense = true"
/></span>
</template>
</License>
</div>
<div v-else>
<i><a href="#" @click.prevent="editLicense = true">Specify a license for this workflow.</a></i>
<div v-else data-description="license selector" data-license="null">
<i
><a href="#" data-description="edit license link" @click.prevent="editLicense = true"
>Specify a license for this workflow.</a
></i
>
</div>
</template>

Expand Down
12 changes: 12 additions & 0 deletions client/src/utils/navigation/navigation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -661,6 +661,18 @@ workflow_editor:
canvas_body: '#workflow-canvas'
edit_annotation: '#workflow-annotation'
edit_name: '#workflow-name'
license_selector:
selector: 'license selector'
type: data-description
edit_license_link:
selector: 'edit license link'
type: data-description
license_select:
selector: 'license select'
type: data-description
license_save:
selector: 'license save'
type: data-description
tool_menu: '.toolMenuContainer'
tool_menu_section_link: '.tool-menu-section-${section_name} a span'
tool_menu_item_link: 'a.tool-menu-item-${item_name}'
Expand Down
7 changes: 7 additions & 0 deletions lib/galaxy/selenium/navigates_galaxy.py
Original file line number Diff line number Diff line change
Expand Up @@ -1049,6 +1049,13 @@ def rule_builder_enter_source_text(self, json):
text_area_elem.clear()
text_area_elem.send_keys(json)

def workflow_editor_set_license(self, license: str) -> None:
editor = self.components.workflow_editor
editor.edit_license_link.wait_for_and_click()
select = editor.license_select.wait_for_select()
select.select_by_value(license)
editor.license_save.wait_for_and_click()

def workflow_editor_click_option(self, option_label):
self.workflow_editor_click_options()
menu_element = self.workflow_editor_options_menu_element()
Expand Down
13 changes: 13 additions & 0 deletions lib/galaxy/selenium/smart_components.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,19 @@ def assert_absent_or_hidden_after_transitions(self, **kwds):
def assert_disabled(self, **kwds):
self._has_driver.assert_disabled(self._target, **kwds)

def data_value(self, attribute: str):
full_attribute = f"data-{attribute}"
attribute_value = (
self._has_driver.driver.find_element(*self._target.element_locator).get_attribute(full_attribute) or ""
)
return attribute_value

def assert_data_value(self, attribute: str, expected_value: str):
actual_value = self.data_value(attribute)
if actual_value != expected_value:
message = f"Expected data-{attribute} to have value [{expected_value}] but had value [{actual_value}]"
raise AssertionError(message)

def has_class(self, class_name):
classes_str = self._has_driver.driver.find_element(*self._target.element_locator).get_attribute("class") or ""
return class_name in classes_str.split(" ")
Expand Down
16 changes: 16 additions & 0 deletions lib/galaxy_test/selenium/test_workflow_editor.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,22 @@ def test_edit_name(self):
self.workflow_index_open_with_name(new_name)
self.assert_wf_name_is(name)

@selenium_test
def test_edit_license(self):
editor = self.components.workflow_editor
name = self.workflow_create_new()
editor.canvas_body.wait_for_visible()
editor.license_selector.wait_for_visible()
editor.license_selector.assert_no_axe_violations_with_impact_of_at_least("serious")
editor.license_selector.assert_data_value("license", "null")

self.workflow_editor_set_license("MIT")
self.workflow_editor_click_save()

self.workflow_index_open_with_name(name)
editor.license_selector.wait_for_visible()
editor.license_selector.assert_data_value("license", "MIT")

@selenium_test
def test_optional_select_data_field(self):
editor = self.components.workflow_editor
Expand Down

0 comments on commit 980bd07

Please sign in to comment.