class Test_Login: baseURL = ReadConfig.getApplicationURL() username = ReadConfig.getUseremail() password = ReadConfig.getPassword() logger = LogGen.loggen() create_boardURL = ReadConfig.getvaluesfrom_json('page_urls', 'create_board') create_board_title = ReadConfig.getvaluesfrom_json('title', 'create_board') str_page_header = ReadConfig.getvaluesfrom_json('header', 'create_board') session_name = ReadConfig.getvaluesfrom_json('create-board_data', 'session_name') owner = ReadConfig.getvaluesfrom_json('create-board_data', 'owner') success_message = ReadConfig.getvaluesfrom_json('create-board_data', 'success_message') @pytest.mark.smoke @pytest.mark.ui def test_login_create_board(self, setup): try: self.logger.info("****Started Login Test****") self.driver = setup self.driver.maximize_window() self.driver.get(self.baseURL) self.lp = LoginPage(self.driver) self.bp = BoardPage(self.driver) assert self.lp.login(self.username, self.password) self.bp.go_to_create_board() self.ui_helper = UIHelper(self.driver) pstr_url = self.driver.current_url assert self.ui_helper.verify_url(self.create_boardURL, pstr_url) pstr_title = self.driver.title assert self.create_board_title, pstr_title assert self.bp.verify_page_header(self.str_page_header) bln_final_result = self.bp.create_board(self.session_name, self.owner, self.success_message) if bln_final_result: self.logger.info("*** Test 001 passed****") self.driver.close() assert True else: self.logger.error("****Test 001 failed****") self.driver.close() assert False except Exception as exception_msg: self.logger.info(exception_msg) self.driver.save_screenshot("." + os.sep + "Screenshots" + os.sep + "test_login_createBoard_exception.png") self.driver.close() assert False
class Test_UI_springboard: baseURL = ReadConfig.getApplicationURL() username = ReadConfig.getUseremail() password = ReadConfig.getPassword() logger = LogGen.loggen() login_url = ReadConfig.getvaluesfrom_json('page_urls', 'login_url') create_boardURL = ReadConfig.getvaluesfrom_json('page_urls', 'create_board') create_board_title = ReadConfig.getvaluesfrom_json('title', 'create_board') str_page_header = ReadConfig.getvaluesfrom_json('header', 'create_board') session_name = ReadConfig.getvaluesfrom_json('create-board_data', 'session_name') owner = ReadConfig.getvaluesfrom_json('create-board_data', 'owner') success_message = ReadConfig.getvaluesfrom_json('create-board_data', 'success_message') board_url = ReadConfig.getvaluesfrom_json('page_urls', 'board_page') card_type_went_well = ReadConfig.getvaluesfrom_json('card_type', 'green') card_type_not_went_well = ReadConfig.getvaluesfrom_json('card_type', 'red') card_modal_header = ReadConfig.getvaluesfrom_json('header', 'sprint_board_modal') well_add_card_title = ReadConfig.getvaluesfrom_json( 'went_well_data', 'title') well_add_card_description = ReadConfig.getvaluesfrom_json( 'went_well_data', 'description') well_card_activity = ReadConfig.getvaluesfrom_json('card_activity', 'went_well') well_like_count = ReadConfig.getvaluesfrom_json('card_activity', 'like_count') not_well_add_card_title = ReadConfig.getvaluesfrom_json( 'not_went_well_data', 'title') not_well_add_card_description = ReadConfig.getvaluesfrom_json( 'not_went_well_data', 'description') not_well_expected_desc = ReadConfig.getvaluesfrom_json( 'not_went_well_data', 'description_displayed') not_well_card_activity = ReadConfig.getvaluesfrom_json( 'card_activity', 'not went well') not_well_delete_header = ReadConfig.getvaluesfrom_json( 'not_went_well_data', 'delete_header') not_well_delete_question = ReadConfig.getvaluesfrom_json( 'not_went_well_data', 'delete_question') @pytest.fixture() def launch_app(self, setup): self.driver = setup self.lp = LoginPage(self.driver) self.driver.maximize_window() self.driver.get(self.baseURL + self.login_url) # login to application and verify homepage assert self.lp.login(self.username, self.password) @pytest.mark.smoke @pytest.mark.ui def test_springboard(self, launch_app): self.bp = BoardPage(self.driver) self.cp = CreateCard(self.driver) self.ui_helper = UIHelper(self.driver) self.login_create_board() self.card_manipulation() def login_create_board(self): self.logger.info("****Started create board Test****") # go to create board link self.bp.go_to_create_board() pstr_url = self.driver.current_url # verify current url of create board assert self.ui_helper.verify_url(self.baseURL + self.create_boardURL, pstr_url) pstr_title = self.driver.title # verify title of create board page assert self.create_board_title, pstr_title # verify header of create board page assert self.bp.verify_page_header(self.str_page_header) # verify board creation with success message created bln_final_result = self.bp.create_board(self.session_name, self.owner, self.success_message) if bln_final_result: self.logger.info("*** Board created successfully****") self.logger.info("****Create board Test End****") assert True else: self.logger.error("****Board creation unsuccessful****") self.logger.info("****Create board Test End****") assert False def card_manipulation(self): self.logger.info("****Started Card manipulation Test****") self.cp.wait_board_page_to_load() pstr_url = self.driver.current_url #verify board url assert self.ui_helper.verify_url(self.baseURL + self.board_url, pstr_url) #click went well card card self.cp.clickCard(self.card_type_went_well) #verify modal header assert self.cp.verify_modal_header(self.card_modal_header) #create went well card self.cp.create_card(self.well_add_card_title, self.well_add_card_description) #verify well card creation assert self.cp.verify_card(self.card_type_went_well, self.well_add_card_title, self.well_add_card_description) self.cp.wait_board_page_to_load() #click did'nt go well card self.cp.clickCard(self.card_type_not_went_well) #verify modal header assert self.cp.verify_modal_header(self.card_modal_header) #create didn't go well card self.cp.create_card(self.not_well_add_card_title, self.not_well_add_card_description) #verify didn't go well card assert self.cp.verify_card(self.card_type_not_went_well, self.not_well_add_card_title, self.not_well_expected_desc) #like the went well card self.cp.click_activity(self.card_type_went_well, self.well_card_activity) #verify like bln_like = self.cp.verify_activity( self.card_type_went_well, self.well_card_activity, pstr_like_count=self.well_like_count) #delete the didn't go well card self.cp.click_activity(self.card_type_not_went_well, self.not_well_card_activity) #verify card delete modal assert self.cp.verify_delete_modal(self.not_well_delete_header, self.not_well_delete_question) #confirm card delete self.cp.delete_card() #verify didn't go well card is deleted bln_delete_card = self.cp.verify_delete_card( self.card_type_not_went_well) if bln_like and bln_delete_card: self.logger.info("***Card manipulation Successful****") self.logger.info("*** Card manipulation test ended****") assert True else: self.logger.error("****Card manipulation unsuccessful****") self.logger.info("*** Card manipulation test ended****") assert False
class Test_Login: baseURL = ReadConfig.getApplicationURL() username = ReadConfig.getUseremail() password = ReadConfig.getPassword() logger = LogGen.loggen() session_name = ReadConfig.getvaluesfrom_json('create-board_data', 'session_name') owner = ReadConfig.getvaluesfrom_json('create-board_data', 'owner') success_message = ReadConfig.getvaluesfrom_json('create-board_data', 'success_message') board_url = ReadConfig.getvaluesfrom_json('page_urls', 'board_page') card_type_went_well = ReadConfig.getvaluesfrom_json('card_type', 'green') card_type_not_went_well = ReadConfig.getvaluesfrom_json('card_type', 'red') card_modal_header = ReadConfig.getvaluesfrom_json('header', 'sprint_board_modal') well_add_card_title = ReadConfig.getvaluesfrom_json( 'went_well_data', 'title') well_add_card_description = ReadConfig.getvaluesfrom_json( 'went_well_data', 'description') well_card_activity = ReadConfig.getvaluesfrom_json('card_activity', 'went_well') well_like_count = ReadConfig.getvaluesfrom_json('card_activity', 'like_count') not_well_add_card_title = ReadConfig.getvaluesfrom_json( 'not_went_well_data', 'title') not_well_add_card_description = ReadConfig.getvaluesfrom_json( 'not_went_well_data', 'description') not_well_expected_desc = ReadConfig.getvaluesfrom_json( 'not_went_well_data', 'description_displayed') not_well_card_activity = ReadConfig.getvaluesfrom_json( 'card_activity', 'not went well') not_well_delete_header = ReadConfig.getvaluesfrom_json( 'not_went_well_data', 'delete_header') not_well_delete_question = ReadConfig.getvaluesfrom_json( 'not_went_well_data', 'delete_question') @pytest.mark.smoke @pytest.mark.ui def test_create_card_not_went_well(self, setup): try: self.logger.info("****Started Login Test****") self.driver = setup self.driver.maximize_window() self.driver.get(self.baseURL) self.lp = LoginPage(self.driver) self.bp = BoardPage(self.driver) assert self.lp.login(self.username, self.password) self.bp.go_to_create_board() bln_final_result = self.bp.create_board(self.session_name, self.owner, self.success_message) if bln_final_result: self.ui_helper = UIHelper(self.driver) self.cp = CreateCard(self.driver) self.cp.wait_board_page_to_load() pstr_url = self.driver.current_url assert self.ui_helper.verify_url(self.board_url, pstr_url) self.cp.clickCard(self.card_type_went_well) assert self.cp.verify_modal_header(self.card_modal_header) self.cp.create_card(self.well_add_card_title, self.well_add_card_description) assert self.cp.verify_card(self.card_type_went_well, self.well_add_card_title, self.well_add_card_description) self.cp.clickCard(self.card_type_not_went_well) assert self.cp.verify_modal_header(self.card_modal_header) self.cp.create_card(self.not_well_add_card_title, self.not_well_add_card_description) assert self.cp.verify_card(self.card_type_not_went_well, self.not_well_add_card_title, self.not_well_expected_desc) self.cp.click_activity(self.card_type_went_well, self.well_card_activity) bln_like = self.cp.verify_activity( self.card_type_went_well, self.well_card_activity, pstr_like_count=self.well_like_count) self.cp.click_activity(self.card_type_not_went_well, self.not_well_card_activity) assert self.cp.verify_delete_modal( self.not_well_delete_header, self.not_well_delete_question) self.cp.delete_card() bln_delete_card = self.cp.verify_delete_card( self.card_type_not_went_well) if bln_like and bln_delete_card: self.logger.info("***Test 003 passed****") self.driver.close() assert True else: self.logger.error("****Test 003 failed ****") self.driver.close() assert False except Exception as exception_msg: self.logger.info(exception_msg) self.driver.save_screenshot( "." + os.sep + "Screenshots" + os.sep + "test_createCard_not_well_exception.png") self.driver.close() assert False
class JobPage: # Job Page logger = LogGen.loggen() explicit_wait = ReadConfig.getexplicitwait() job_locator = Joblocators() baseURL = ReadConfig.getApplicationURL() def __init__(self, driver): self.driver = driver self.ui_helper = UIHelper(self.driver) def verify_job_page(self, str_pageheader): """ Description: | This method will allow user to verify base page :param str_pageheader: Page header :type str_pageheader: String :return: None """ pstr_page_header = self.job_locator.pstr_verify_home_page.format( str_pageheader) bln_page_header = self.ui_helper.is_element_displayed(pstr_page_header) if bln_page_header: self.logger.info("****User is on the Job page****") return True else: self.logger.info("****User is not on the Job page****") self.driver.save_screenshot("." + os.sep + "Screenshots" + os.sep + "test_login.png") self.driver.close() return False def verify_list_elements(self, pstr_naivigation_list, pstr_list_type): """ Description: | This method will verify list_elements rendering on the page :param pstr_naivigation_list: list of elements to be verified :type pstr_naivigation_list: Dictionary :param pstr_list_type: type of list. E.g. Top Nav, sector list,etc. :type pstr_list_type: String :return: boolean """ bln_top = False pstr_actual_list = [] if pstr_list_type == "sector_list": pstr_nav_list = pstr_naivigation_list.values() pstr_web_elem = self.driver.find_elements_by_xpath( self.job_locator.pstr_sector_list) bln_top = self.ui_helper.match_attributes_by_text( pstr_nav_list, pstr_web_elem) elif pstr_list_type == "top_nav": pstr_nav_list = pstr_naivigation_list.keys() pstr_web_elem = self.driver.find_elements_by_xpath( self.job_locator.pstr_nav_list) bln_top = self.ui_helper.match_attributes_by_text( pstr_nav_list, pstr_web_elem) elif pstr_list_type == "search_fields_list": pstr_search_placeholders = pstr_naivigation_list.values() pstr_web_ele_search = self.driver.find_elements_by_xpath( self.job_locator.pstr_search_list) if len(pstr_search_placeholders) == len(pstr_web_ele_search): for element in pstr_web_ele_search: pstr_actual_list.append( element.get_attribute("placeholder")) bln_top = ', '.join(map( str, pstr_search_placeholders)) in ', '.join( map(str, pstr_actual_list)) else: self.logger.info( "****Search box count mismatched. There may be few or more****" ) self.driver.save_screenshot("." + os.sep + "Screenshots" + os.sep + "test_job_search_fields.png") self.driver.close() return False return bln_top def verify_top_links(self, pstr_nav_links, pstr_nav_headers): """ Description: | This method will verify links redirection along with pae headers :param pstr_nav_links: list of links to be verified on the page :type pstr_nav_links: Dictionary :param pstr_nav_headers: list of headers to be verified :type pstr_nav_headers: Dictionary :return: boolean """ bln_verify_link = False bln_page_header = False for prop, value in pstr_nav_links.items(): pstr_val = pstr_nav_headers[prop] pstr_link = self.job_locator.pstr_nav_links.format(prop) bln_pstr_link = self.ui_helper.is_element_displayed(pstr_link) if bln_pstr_link: self.ui_helper.click(pstr_link) pstr_page_header = self.job_locator.pstr_nav_head.format( pstr_val) bln_page_header = self.ui_helper.is_element_displayed( pstr_page_header) given_link = self.baseURL + value pstr_url = self.driver.current_url bln_verify_link = self.ui_helper.verify_url( given_link, pstr_url) else: self.logger.info("**** Link not found. ****") self.driver.save_screenshot("." + os.sep + "Screenshots" + os.sep + "test_job_nav_link.png") self.driver.close() return False if bln_verify_link and bln_page_header: self.logger.info("**** Page headers verified ****") return True else: return False def click_sector(self, pstr_sector_type): """ Description: | This method will click on the sector type :param pstr_sector_type: Name of type of sector :type pstr_sector_type: String :return: None """ pstr_web_elem = self.driver.find_elements_by_xpath( self.job_locator.pstr_sector_list) for element in pstr_web_elem: if element.text == pstr_sector_type: element.click() self.logger.info(pstr_sector_type + "**** Clicked****") break else: self.logger.info(pstr_sector_type + "**** Not found****")