def test_summary_pages_links(provider, cls): navigate_to(cls.object, "All") all_url = sel.current_url() tb.select("List View") name = choice([r[2].text for r in list_tbl.rows()]) obj = cls.object(name, provider) obj.summary # <- reload summary breads = breadcrumbs() bread_names = map(sel.text_sane, breads) if cls.breadcrumb_member.startswith("Container") and cls.breadcrumb_member not in bread_names: breadcrumb_member = cls.breadcrumb_member.split(" ")[-1] else: breadcrumb_member = cls.breadcrumb_member assert breadcrumb_member in bread_names chosen_link = next(b for b in breads if sel.text_sane(b) == breadcrumb_member) sel.click(chosen_link) # TODO: replace with widgetastic view.is_displayed function when available assert sel.current_url().split("?")[0] == all_url.split("?")[0]
def _on_detail_page(self): """ Returns ``True`` if on the providers detail page, ``False`` if not.""" if not self.string_name: # No point in doing that since it is probably being called from badly configured class # And since it is badly configured, let's notify the user. logger.warning( 'Hey, _on_details_page called from {} class which does not have string_name set' .format(type(self).__name__)) return False ensure_browser_open() collection = '{} Providers'.format(self.string_name) title = '{} (Summary)'.format(self.name) return breadcrumbs() == [collection, title] and summary_title() == title
def _on_detail_page(self): """ Returns ``True`` if on the providers detail page, ``False`` if not.""" if not self.string_name: # No point in doing that since it is probably being called from badly configured class # And since it is badly configured, let's notify the user. logger.warning( 'Hey, _on_details_page called from {} class which does not have string_name set' .format(type(self).__name__)) return False ensure_browser_open() collection = '{} Providers'.format(self.string_name) title = '{} (Summary)'.format(self.name) return breadcrumbs() == [collection, title ] and summary_title() == title
def test_breadcrumbs(provider, soft_assert): for dataset in DATA_SETS: if current_version() < '5.7' and dataset.obj == Template: continue rows = navigate_and_get_rows(provider, dataset.obj, 1) if not rows: pytest.skip( 'Could not test breadcrums: No records found in {}\'s table'. format(dataset.obj.__name__)) row = rows[-1] instance_name = row[2].text sel.click(row) breadcrumb_elements = breadcrumbs() soft_assert( breadcrumb_elements, 'Breadcrumbs not found in {} {} summary page'.format( dataset.obj.__name__, instance_name)) bread_names_2_element = { sel.text_sane(b): b for b in breadcrumb_elements } try: breadcrumb_element = soft_get(bread_names_2_element, dataset.obj_base_name, dict_=True) except: soft_assert( False, 'Could not find breadcrumb "{}" in {} {} summary page. breadcrumbs: {}' .format(dataset.obj_base_name, bread_names_2_element.keys(), dataset.obj.__name__, instance_name)) breadcrumb_name = sel.text_sane(breadcrumb_element) sel.click(breadcrumb_element) # We verify the location as following since we want to prevent from name convention errors soft_assert( dataset.obj_base_name in summary_title().lower(), 'Breadcrumb link "{}" in {} {} page should navigate to ' '{}s main page. navigated instead to: {}'.format( breadcrumb_name, dataset.obj.__name__, instance_name, dataset.obj.__name__, sel.current_url()))
def test_breadcrumbs(provider, soft_assert): for dataset in DATA_SETS: if current_version() < '5.7' and dataset.obj == Template: continue rows = navigate_and_get_rows(provider, dataset.obj, 1) if not rows: pytest.skip('Could not test breadcrums: No records found in {}\'s table' .format(dataset.obj.__name__)) row = rows[-1] instance_name = row[2].text sel.click(row) breadcrumb_elements = breadcrumbs() soft_assert(breadcrumb_elements, 'Breadcrumbs not found in {} {} summary page' .format(dataset.obj.__name__, instance_name)) bread_names_2_element = {sel.text_sane(b): b for b in breadcrumb_elements} try: breadcrumb_element = soft_get(bread_names_2_element, dataset.obj_base_name, dict_=True) except: soft_assert(False, 'Could not find breadcrumb "{}" in {} {} summary page. breadcrumbs: {}' .format(dataset.obj_base_name, bread_names_2_element.keys(), dataset.obj.__name__, instance_name)) breadcrumb_name = sel.text_sane(breadcrumb_element) sel.click(breadcrumb_element) # We verify the location as following since we want to prevent from name convention errors soft_assert(dataset.obj_base_name in summary_title().lower(), 'Breadcrumb link "{}" in {} {} page should navigate to ' '{}s main page. navigated instead to: {}' .format(breadcrumb_name, dataset.obj.__name__, instance_name, dataset.obj.__name__, sel.current_url()))