def __init__(self, driver, obj_name): self.driver = driver self.obj_name = obj_name self.info_widget_cls = factory.get_cls_widget(object_name=obj_name, is_info=True) self.generic_widget_cls = factory.get_cls_widget(object_name=obj_name) self.entities_factory_cls = factory.get_cls_entity_factory( object_name=obj_name) # URLs self.url_mapped_objs = ("{src_obj_url}" + url.get_widget_name_of_mapped_objs(obj_name)) self.url_obj_info_page = "{obj_url}" + url.Widget.INFO
def __init__(self, driver, obj_name): self.driver = driver self.obj_name = obj_name self.generic_widget_cls = factory.get_cls_widget(object_name=self.obj_name) self.info_widget_cls = factory.get_cls_widget( object_name=self.obj_name, is_info=True) self.entities_factory_cls = factory.get_cls_entity_factory( object_name=self.obj_name) self.url_mapped_objs = ( "{src_obj_url}" + url.get_widget_name_of_mapped_objs(self.obj_name)) self.url_obj_info_page = "{obj_url}" + url.Widget.INFO self._unified_mapper = None
def test_mapping_via_lhn(self, selenium, new_product, new_project, new_system, new_data_asset, new_process): """LHN mapping tests from smoke tests, section 6""" objects = [ new_product, new_project, new_system, new_data_asset, new_process ] for object_ in objects: selenium.get(object_.url) header = dashboard.Header(selenium) # map objects for mapped_object in objects: # don't map an object to itself if mapped_object != object_: extended_info = conftest_utils\ .get_lhn_accordion(selenium, mapped_object.object_name)\ .hover_over_visible_member(mapped_object.title_entered.text) if not extended_info.is_mapped: extended_info.map_to_object() # workaround for CORE-3324 selenium_utils.hover_over_element( selenium, header.toggle_user_dropdown.element) # close LHN so that the contents are seen header.close_lhn_menu() widget = factory.get_cls_widget( mapped_object.object_name)(selenium) # check that the focus is on relevant widget assert widget.name_from_url in mapped_object.object_name # check items count assert widget.member_count == 1 # check that all mapped widgets are shown widget_bar = dashboard.Dashboard(selenium) for mapped_object in objects: if mapped_object != object_: # select a widget getattr( widget_bar, factory.get_method_select(mapped_object.object_name))() # verify widget widget = factory.get_cls_widget( mapped_object.object_name)(selenium) assert widget.name_from_url in mapped_object.object_name
def __init__(self, obj_name, driver=None): super(BaseWebUiService, self).__init__() self.obj_name = obj_name self.obj_type = objects.get_singular(self.obj_name, title=True) self.snapshot_obj_type = None self.generic_widget_cls = factory.get_cls_widget(object_name=self.obj_name) self.info_widget_cls = factory.get_cls_widget( object_name=self.obj_name, is_info=True) self.entities_factory_cls = factory.get_cls_entity_factory( object_name=self.obj_name) self.url_mapped_objs = ( "{src_obj_url}" + url.Utils.get_widget_name_of_mapped_objs(self.obj_name)) self.url_obj_info_page = "{obj_url}" + url.Widget.INFO self._unified_mapper = None
def __init__(self, driver, obj_name, is_versions_widget=False): self.driver = driver self.obj_name = obj_name self.is_versions_widget = is_versions_widget self.generic_widget_cls = factory.get_cls_widget( object_name=self.obj_name) self.info_widget_cls = factory.get_cls_widget( object_name=self.obj_name, is_info=True) self.entities_factory_cls = factory.get_cls_entity_factory( object_name=self.obj_name) self.url_mapped_objs = ("{src_obj_url}" + url.get_widget_name_of_mapped_objs( self.obj_name, is_versions_widget)) self.url_obj_info_page = "{obj_url}" + url.Widget.INFO self._unified_mapper = None
def create_obj_via_lhn(driver, object_name): """Create object via LHN.""" modal = get_lhn_accordion(driver, object_name).create_new() factory.get_cls_test_utils(object_name).enter_test_data(modal) modal.save_and_close() object_name = object_name + "InfoWidget" return factory.get_cls_widget(object_name, is_info=True)(driver)
def __init__(self, driver, obj_name): self.obj_name = obj_name self._locators_filter = factory.get_cls_locators_generic_widget( object_name=obj_name) self._locator_widget = factory.get_locator_widget(self.obj_name.upper()) self.info_widget_cls = factory.get_cls_widget( object_name=obj_name, is_info=True) # Filter self.cls_without_state_filtering = (AssessmentTemplates, ) # Persons, Workflows, TaskGroups, Cycles, CycleTaskGroupObjectTasks self.button_help = base.Button(driver, self._locators_filter.BUTTON_HELP) self.filter = base.FilterCommon( driver, text_box_locator=self._locators_filter.TEXTFIELD_TO_FILTER, bt_submit_locator=self._locators_filter.BUTTON_FILTER) if self.__class__ not in self.cls_without_state_filtering: self.dropdown_states = base.DropdownStatic( driver, dropdown_locator=self._locators_filter.DROPDOWN, elements_locator=self._locators_filter.DROPDOWN_STATES) super(Widget, self).__init__(driver) # Tree View self.tree_view = TreeView(driver, self.info_widget_cls, self.obj_name) # Tab count self.members_listed = None self.member_count = None self._set_members_listed()
def __init__(self, driver, obj_name, is_versions_widget=False): self.obj_name = obj_name self._locators_filter = locator.BaseWidgetGeneric self._locators_widget = factory.get_locator_widget( self.obj_name.upper()) if is_versions_widget: locator_parts = self._locators_widget[1].split("\"") locator_parts[1] += "_version" self._locators_widget = (self._locators_widget[0], "\"".join(locator_parts)) self.info_widget_cls = factory.get_cls_widget(object_name=obj_name, is_info=True) # Filter self.button_help = base.Button(driver, self._locators_filter.HELP_BTN_CSS) self.filter = base.FilterCommon( driver, text_box_locator=self._locators_filter.TXTFIELD_TO_FILTER_CSS, bt_submit_locator=self._locators_filter.FILTER_BTN_CSS) if self.obj_name not in objects.ALL_OBJS_WO_STATE_FILTERING: self.dropdown_states = base.DropdownStatic( driver, self._locators_filter.DD_CSS) super(Widget, self).__init__(driver) self._root = self._browser.element( class_name="widget governance treeview", id=objects.get_singular(self.obj_name)) # Tree View self.tree_view = TreeView(driver, self.info_widget_cls, self.obj_name) # Tab count self.members_listed = None self.member_count = None self._set_members_listed()
def __init__(self, driver, obj_name, is_versions_widget=False): self.obj_name = obj_name self._locators_filter = locator.BaseWidgetGeneric self._locators_widget = factory.get_locator_widget( self.obj_name.upper()) if is_versions_widget: locator_parts = self._locators_widget[1].split("\"") locator_parts[1] += "_version" self._locators_widget = (self._locators_widget[0], "\"".join( locator_parts)) self.info_widget_cls = factory.get_cls_widget( object_name=obj_name, is_info=True) # Filter self.button_help = base.Button(driver, self._locators_filter.HELP_BTN_CSS) self.filter = base.FilterCommon( driver, text_box_locator=self._locators_filter.TXTFIELD_TO_FILTER_CSS, bt_submit_locator=self._locators_filter.FILTER_BTN_CSS) if self.obj_name not in objects.ALL_OBJS_WO_STATE_FILTERING: self.dropdown_states = base.DropdownStatic( driver, self._locators_filter.DD_CSS) super(Widget, self).__init__(driver) # Tree View self.tree_view = TreeView(driver, self.info_widget_cls, self.obj_name) # Tab count self.members_listed = None self.member_count = None self._set_members_listed()
def __init__(self, driver, obj_name): self.obj_name = obj_name self._locators_filter = factory.get_cls_locators_generic_widget( object_name=obj_name) self._locator_widget = factory.get_locator_widget( self.obj_name.upper()) self.info_widget_cls = factory.get_cls_widget(object_name=obj_name, is_info=True) # Filter self.cls_without_state_filtering = (AssessmentTemplates, ) # Persons, Workflows, TaskGroups, Cycles, CycleTaskGroupObjectTasks self.button_help = base.Button(driver, self._locators_filter.BUTTON_HELP) self.filter = base.FilterCommon( driver, text_box_locator=self._locators_filter.TEXTFIELD_TO_FILTER, bt_submit_locator=self._locators_filter.BUTTON_FILTER) if self.__class__ not in self.cls_without_state_filtering: self.dropdown_states = base.DropdownStatic( driver, dropdown_locator=self._locators_filter.DROPDOWN, elements_locator=self._locators_filter.DROPDOWN_STATES) super(Widget, self).__init__(driver) # Tree View self.tree_view = TreeView(driver, self.info_widget_cls, self.obj_name) # Tab count self.members_listed = None self.member_count = None self._set_members_listed()
def _get_widget(self, widget_name): """Add attribute, click on relevant tab and return relevant widget.""" attr_name = "tab_" + widget_name setattr( self, attr_name, widget_bar.Tab(self._driver, factory.get_locator_widget(widget_name))) getattr(self, attr_name).click() return factory.get_cls_widget(widget_name)(self._driver, widget_name)
def test_mapping_via_lhn( self, selenium, new_product_ui, new_project_ui, new_system_ui, new_data_asset_ui, new_process_ui ): """LHN mapping tests from smoke tests, section 6.""" objects = [new_product_ui, new_project_ui, new_system_ui, new_data_asset_ui, new_process_ui] for object_ in objects: selenium.get(object_.url) header = dashboard.Header(selenium) # map objects for mapped_object in objects: # don't map an object to itself if mapped_object != object_: extended_info = ( conftest_utils.get_lhn_accordion( selenium, mapped_object.object_name).hover_over_visible_member( mapped_object.title_entered.text)) if not extended_info.is_mapped: extended_info.map_to_object() # workaround for CORE-3324 selenium_utils.hover_over_element( selenium, header.toggle_user_dropdown.element) # close LHN so that the contents are seen header.close_lhn_menu() widget = ( factory.get_cls_widget(mapped_object.object_name)(selenium)) # check that the focus is on relevant widget assert widget.name_from_url in mapped_object.object_name # check items count assert widget.member_count == 1 # check that all mapped widgets are shown widget_bar = dashboard.Dashboard(selenium) for mapped_object in objects: if mapped_object != object_: # select a widget getattr(widget_bar, factory.get_method_select(mapped_object.object_name))() # verify widget widget = ( factory.get_cls_widget(mapped_object.object_name)(selenium)) assert widget.name_from_url in mapped_object.object_name
def test_message_with_undo_btn_appears(self, reviewer, program_w_approved_via_ui_review, selenium): """Confirm floating message 'Review is complete' with 'Undo' button appears.""" info_page = factory.get_cls_widget( objects.get_plural(program_w_approved_via_ui_review.type), is_info=True)(selenium) actual_elements_state = { "is_floating_message_visible": info_page.floating_message.exists, "is_undo_btn_visible": info_page.undo_button.exists} expected_elements_state = copy.deepcopy(actual_elements_state) expected_elements_state["is_floating_message_visible"] = True expected_elements_state["is_undo_btn_visible"] = True assert actual_elements_state == expected_elements_state
def test_message_with_undo_btn_appears(self, second_creator, program_w_approved_via_ui_review, selenium): """Confirm floating message 'Review is complete' with 'Undo' button appears.""" info_page = factory.get_cls_widget( objects.get_plural(program_w_approved_via_ui_review.type), is_info=True)(selenium) actual_elements_state = { "is_floating_message_visible": info_page.floating_message.exists, "is_undo_btn_visible": info_page.undo_button.exists} expected_elements_state = copy.deepcopy(actual_elements_state) expected_elements_state["is_floating_message_visible"] = True expected_elements_state["is_undo_btn_visible"] = True assert actual_elements_state == expected_elements_state
def __init__(self, driver, obj_name, is_versions_widget=False): self.obj_name = obj_name self._locators_filter = locator.BaseWidgetGeneric self.is_versions_widget = is_versions_widget self.info_widget_cls = factory.get_cls_widget(object_name=obj_name, is_info=True) # Filter self.button_help = base.Button(driver, self._locators_filter.HELP_BTN_CSS) self.filter = base.FilterCommon( driver, text_box_locator=self._locators_filter.TXTFIELD_TO_FILTER_CSS, bt_submit_locator=self._locators_filter.FILTER_BTN_CSS) super(Widget, self).__init__(driver) self._root = self._browser.element( class_name="widget governance treeview", id=objects.get_singular(self.obj_name)) # Tree View self.tree_view = TreeView(driver, self.info_widget_cls, self.obj_name) # Tab count self.members_listed = None self.member_count = None self._set_members_listed()
def __init__(self, driver, obj_name): self.obj_name = obj_name self._locators_filter = locator.BaseWidgetGeneric self._locators_widget = factory.get_locator_widget( self.obj_name.upper()) self.info_widget_cls = factory.get_cls_widget(object_name=obj_name, is_info=True) # Filter self.button_help = base.Button(driver, self._locators_filter.HELP_BTN_CSS) self.filter = base.FilterCommon( driver, text_box_locator=self._locators_filter.TXTFIELD_TO_FILTER_CSS, bt_submit_locator=self._locators_filter.FILTER_BTN_CSS) if self.obj_name not in objects.ALL_OBJS_WO_STATE_FILTERING: self.dropdown_states = base.DropdownStatic( driver, self._locators_filter.DD_CSS) super(Widget, self).__init__(driver) # Tree View self.tree_view = TreeView(driver, self.info_widget_cls, self.obj_name) # Tab count self.members_listed = None self.member_count = None self._set_members_listed()
def select_info(self): """Selects the info widget/tab. Note that each object has a different info page""" self.tab_info.click() return factory.get_cls_widget( self.__class__.__name__.lower(), is_info=True)(self._driver)
def delete_obj_via_info_widget(driver, object_name): """Delete an object via Info Widget.""" factory.get_cls_widget(object_name, is_info=True)(driver)\ .press_object_settings() \ .select_delete() \ .confirm_delete()
def select_info(self): """Select Info widget/tab. Each object has different Info widget.""" self.tab_info.click() return factory.get_cls_widget(self.__class__.__name__.lower(), is_info=True)(self._driver)
def _select(self, widget_name): """Selects widget from Dropdown and return appropriate initialized Widget class""" self._driver.find_element( *factory.get_locator_add_widget(widget_name)).click() return factory.get_cls_widget(widget_name)(self._driver)
def create_obj_via_lhn(driver, object_name): """Create object via LHN.""" modal = get_lhn_accordion(driver, object_name).create_new() factory.get_cls_test_utils(object_name).enter_test_data(modal) modal.save_and_close() return factory.get_cls_widget(object_name, is_info=True)(driver)
def info_widget_page(obj): """Returns a corresponding page object from info_widget module.""" return factory.get_cls_widget(object_name=obj.obj_name(), is_info=True)()
def _select(self, widget_name): """Selects a widget from the dropdown and returns the appropriate initialized widget class""" self._driver.find_element(*factory.get_locator_add_widget(widget_name))\ .click() return factory.get_cls_widget(widget_name)(self._driver)
def delete_obj_via_info_widget(driver, object_name): """Delete object via Info Widget.""" (factory.get_cls_widget(object_name, is_info=True)(driver) .open_3bbs().select_delete().confirm_delete())
def delete_obj_via_info_widget(driver, object_name): """Delete object via Info Widget.""" (factory.get_cls_widget( object_name, is_info=True)(driver).open_3bbs().select_delete().confirm_delete())
def info_widget_page(obj): """Returns a corresponding page object from info_widget module.""" return factory.get_cls_widget(object_name=obj.obj_name(), is_info=True)()
def delete_object_on_info_widget(driver, object_name): """Deletes a object when the info widget is opened""" factory.get_cls_widget(object_name, is_info=True)(driver)\ .press_object_settings() \ .select_delete() \ .confirm_delete()
def select_info(self): """Selects the info widget/tab. Note that each object has a different info page""" self.tab_info.click() return factory.get_cls_widget(self.__class__.__name__.lower(), is_info=True)(self._driver)
def select_info(self): """Select Info widget/tab. Each object has different Info widget.""" self.tab_info.click() return factory.get_cls_widget( self.__class__.__name__.lower(), is_info=True)(self._driver)