Files
galaxy/test/selenium_tests/test_history_dataset_state.py
T
John Chilton 225ad7fb45 Continue push toward smarter component based Selenium testing.
This continues a thread started in 0650978a91 and #4732 of switching to smarter selectors from a more structured YAML description of the Galaxy DOM. This continues that by:

- Eliminating any use of the old navigation YAML file (navigation-data.yml).
- Replace href selectors with other things since they break when testing Galaxy with a proxy-prefix.
- Extending the raw selectors to allow concept of nesting selectors.
- Building even smarter "components" that wrap these raw selectors generated from the YAML directly in a way that allows them to utilize the actual Selenium session and helper class.

So the old ``self.navigation_data`` is gone, ``self.navigation`` still yields the raw selectors, and ``self.components`` yields the smarter variant. Hopefully all will agree the code that uses ``self.components`` is more compact and readable.

The following a very basic example of this:

```diff
     def click_masthead_user(self):
-        self.wait_for_and_click(self.navigation.masthead.selectors.user)
+        self.components.masthead.user.wait_for_and_click()

```

Here is an example of combining it with the new child selector syntax:

```diff
     def assert_item_dbkey_displayed_as(self, hid, dbkey):
-        item_body_selector = self.history_panel_item_body_selector(hid=hid, wait=True)
-        dbkey_selector = item_body_selector + ' ' + self.test_data["historyPanel"]["selectors"]["hda"]["dbkey"]
-        dbkey_element = self.wait_for_selector_visible(dbkey_selector)
-        assert dbkey in dbkey_element.text
+        item_body = self.history_panel_item_component(hid=hid)
+        dbkey_text = item_body.dbkey.wait_for_text()
+        assert dbkey in dbkey_text

```
2017-10-04 12:53:34 -04:00

52 lines
1.8 KiB
Python

from .framework import (
selenium_test,
SeleniumTestCase,
UsesHistoryItemAssertions,
)
BUTTON_TOOLTIPS = {
"display": 'View data',
"edit": 'Edit attributes',
"delete": 'Delete',
"download": 'Download',
"info": 'View details',
"rerun": 'Run this job again',
}
class HistoryDatasetStateTestCase(SeleniumTestCase, UsesHistoryItemAssertions):
@selenium_test
def test_dataset_state(self):
self.register()
self.perform_upload(self.get_filename("1.fasta"))
self.history_panel_wait_for_hid_ok(1)
self.assert_item_name(1, "1.fasta")
self.assert_item_hid_text(1)
self._assert_title_buttons(1)
# Expand HDA and wait for details to show up.
self.history_panel_click_item_title(hid=1, wait=True)
self.history_panel_item_body_component(1, wait=True)
self.assert_item_summary_includes(1, "1 sequence")
self.assert_item_dbkey_displayed_as(1, "?")
self.assert_item_info_includes(1, 'uploaded fasta file')
self.assert_item_peek_includes(1, ">hg17")
self._assert_action_buttons(1)
def _assert_title_buttons(self, hid, expected_buttons=['display', 'edit', 'delete']):
self._assert_buttons(hid, expected_buttons)
def _assert_action_buttons(self, hid, expected_buttons=["info", "download"]):
self._assert_buttons(hid, expected_buttons)
def _assert_buttons(self, hid, expected_buttons):
item_button = self.history_panel_item_component(hid=hid)
# Let old tooltip expire, etc...
for expected_button in expected_buttons:
self.sleep_for(self.wait_types.UX_TRANSITION)
button = item_button["%s_button" % expected_button]
self.assert_tooltip_text(button.wait_for_visible(), BUTTON_TOOLTIPS[expected_button])