diff --git a/backend/selenium_tests/page_object/base_components.py b/backend/selenium_tests/page_object/base_components.py index 9c37514c8d..e285504721 100644 --- a/backend/selenium_tests/page_object/base_components.py +++ b/backend/selenium_tests/page_object/base_components.py @@ -3,30 +3,126 @@ class BaseComponents(Common): + # Labels + businessAreaContainer = 'div[data-cy="business-area-container"]' + globalProgramFilterContainer = 'div[data-cy="global-program-filter-container"]' globalProgramFilter = 'div[data-cy="global-program-filter"]' + menuUserProfile = 'button[data-cy="menu-user-profile"]' + sideNav = 'div[data-cy="side-nav"]' + navCountryDashboard = 'a[data-cy="nav-Country Dashboard"]' navRegistrationDataImport = 'a[data-cy="nav-Registration Data Import"]' + navProgrammePopulation = 'a[data-cy="nav-Programme Population"]' + navHouseholds = 'a[data-cy="nav-Households"]' + navIndividuals = 'a[data-cy="nav-Individuals"]' navProgrammeManagement = 'a[data-cy="nav-Programme Management"]' + navProgrammeDetails = 'a[data-cy="nav-Programme Details"]' + navTargeting = 'a[data-cy="nav-Targeting"]' + navCashAssist = 'a[data-cy="nav-Cash Assist"]' + navPaymentModule = 'a[data-cy="nav-Payment Module"]' + navPaymentVerification = 'a[data-cy="nav-Payment Verification"]' navGrievance = 'a[data-cy="nav-Grievance"]' - navFeedback = 'a[data-cy="nav-Feedback"]' - navGrievanceTicket = 'a[data-cy="nav-Grievance Tickets"]' + navGrievanceTickets = 'a[data-cy="nav-Grievance Tickets"]' navGrievanceDashboard = 'a[data-cy="nav-Grievance Dashboard"]' + navFeedback = 'a[data-cy="nav-Feedback"]' + navAccountability = 'a[data-cy="nav-Accountability"]' + navCommunication = 'a[data-cy="nav-Communication"]' + navSurveys = 'a[data-cy="nav-Surveys"]' + navProgrammeUsers = 'a[data-cy="nav-Programme Users"]' + navActivityLog = 'a[data-cy="nav-Activity Log"]' + navResourcesKnowledgeBase = 'a[data-cy="nav-resources-Knowledge Base"]' + navResourcesConversations = 'a[data-cy="nav-resources-Conversations"]' + navResourcesToolsAndMaterials = 'a[data-cy="nav-resources-Tools and Materials"]' + navResourcesReleaseNote = 'a[data-cy="nav-resources-Release Note"]' + # Text globalProgramFilterText = "All Programmes" - def getNavProgrammeManagement(self) -> WebElement: - return self.wait_for(self.navProgrammeManagement) + def getBusinessAreaContainer(self) -> WebElement: + return self.wait_for(self.businessAreaContainer) + + def getGlobalProgramFilterContainer(self) -> WebElement: + return self.wait_for(self.globalProgramFilterContainer) + + def getGlobalProgramFilter(self) -> WebElement: + return self.wait_for(self.globalProgramFilter) + + def getMenuUserProfile(self) -> WebElement: + return self.wait_for(self.menuUserProfile) + + def getSideNav(self) -> WebElement: + return self.wait_for(self.sideNav) + + def getNavCountryDashboard(self) -> WebElement: + return self.wait_for(self.navCountryDashboard) def getNavRegistrationDataImport(self) -> WebElement: return self.wait_for(self.navRegistrationDataImport) - def getNavFeedback(self) -> WebElement: - return self.wait_for(self.navFeedback) + def getNavProgrammePopulation(self) -> WebElement: + return self.wait_for(self.navProgrammePopulation) + + def getNavHouseholds(self) -> WebElement: + return self.wait_for(self.navHouseholds) + + def getNavIndividuals(self) -> WebElement: + return self.wait_for(self.navIndividuals) + + def getNavProgrammeManagement(self) -> WebElement: + return self.wait_for(self.navProgrammeManagement) + + def getNavProgrammeDetails(self) -> WebElement: + return self.wait_for(self.navProgrammeDetails) + + def getNavTargeting(self) -> WebElement: + return self.wait_for(self.navTargeting) + + def getNavCashAssist(self) -> WebElement: + return self.wait_for(self.navCashAssist) + + def getNavPaymentModule(self) -> WebElement: + return self.wait_for(self.navPaymentModule) + + def getNavPaymentVerification(self) -> WebElement: + return self.wait_for(self.navPaymentVerification) def getNavGrievance(self) -> WebElement: return self.wait_for(self.navGrievance) - def getGlobalProgramFilter(self) -> WebElement: - return self.wait_for(self.globalProgramFilter) + def getNavGrievanceTickets(self) -> WebElement: + return self.wait_for(self.navGrievanceTickets) + + def getNavGrievanceDashboard(self) -> WebElement: + return self.wait_for(self.navGrievanceDashboard) + + def getNavFeedback(self) -> WebElement: + return self.wait_for(self.navFeedback) + + def getNavAccountability(self) -> WebElement: + return self.wait_for(self.navAccountability) + + def getNavCommunication(self) -> WebElement: + return self.wait_for(self.navCommunication) + + def getNavSurveys(self) -> WebElement: + return self.wait_for(self.navSurveys) + + def getNavProgrammeUsers(self) -> WebElement: + return self.wait_for(self.navProgrammeUsers) + + def getNavActivityLog(self) -> WebElement: + return self.wait_for(self.navActivityLog) + + def getNavResourcesKnowledgeBase(self) -> WebElement: + return self.wait_for(self.navResourcesKnowledgeBase) + + def getNavResourcesConversations(self) -> WebElement: + return self.wait_for(self.navResourcesConversations) + + def getNavResourcesToolsAndMaterials(self) -> WebElement: + return self.wait_for(self.navResourcesToolsAndMaterials) + + def getNavResourcesReleaseNote(self) -> WebElement: + return self.wait_for(self.navResourcesReleaseNote) def selectGlobalProgramFilter(self, name: str) -> WebElement: self.getGlobalProgramFilter().click() diff --git a/backend/selenium_tests/page_object/registration_data_import/registration_data_import.py b/backend/selenium_tests/page_object/registration_data_import/registration_data_import.py index 8119b4aa2e..c48aaebba2 100644 --- a/backend/selenium_tests/page_object/registration_data_import/registration_data_import.py +++ b/backend/selenium_tests/page_object/registration_data_import/registration_data_import.py @@ -4,7 +4,22 @@ class RegistrationDataImport(BaseComponents): # Locators + mainContent = 'div[data-cy="main-content"]' + pageHeaderContainer = 'div[data-cy="page-header-container"]' + pageHeaderTitle = 'h5[data-cy="page-header-title"]' buttonImport = 'button[data-cy="button-import"]' + filterSearch = 'div[data-cy="filter-search"]' + importedByInput = 'div[data-cy="Imported By-input"]' + filterStatus = 'div[data-cy="filter-status"]' + filterSizeMin = 'div[data-cy="filter-size-min"]' + filterSizeMax = 'div[data-cy="filter-size-max"]' + datePickerFilter = 'div[data-cy="date-picker-filter"]' + buttonFiltersClear = 'button[data-cy="button-filters-clear"]' + buttonFiltersApply = 'button[data-cy="button-filters-apply"]' + tableTitle = 'h6[data-cy="table-title"]' + tableLabel = 'span[data-cy="table-label"]' + statusContainer = 'div[data-cy="status-container"]' + tablePagination = 'div[data-cy="table-pagination"]' # Texts diff --git a/backend/selenium_tests/registration_data_import/test_registration_data_import.py b/backend/selenium_tests/registration_data_import/test_registration_data_import.py index 73e5ed4049..770eda73e9 100644 --- a/backend/selenium_tests/registration_data_import/test_registration_data_import.py +++ b/backend/selenium_tests/registration_data_import/test_registration_data_import.py @@ -25,5 +25,6 @@ def test_smoke_registration_data_import( pageRegistrationDataImport.selectGlobalProgramFilter("Test Programm").click() pageRegistrationDataImport.getNavRegistrationDataImport().click() # Check Elements on Page - pageRegistrationDataImport.getButtonImport() + assert "Import" in pageRegistrationDataImport.getButtonImport().text + pageRegistrationDataImport.screenshot("1") diff --git a/backend/selenium_tests/tools/tag_name_finder.py b/backend/selenium_tests/tools/tag_name_finder.py new file mode 100644 index 0000000000..3f5d470a21 --- /dev/null +++ b/backend/selenium_tests/tools/tag_name_finder.py @@ -0,0 +1,33 @@ +from selenium.webdriver import Chrome +from selenium.webdriver.common.by import By + +url = input("Url of page (default is localhost:3000/):") +if not url: + url = "http://localhost:3000/" + +driver = Chrome() + +driver.get(url) +label = input("Choose the label (default it data-cy):") +if not label: + label = "data-cy" +input("Open the page and press Enter") +ids = driver.find_elements(By.XPATH, f'//*[@{label}]') + + +def printing(what: str) -> None: + for ii in ids: + data_cy_attribute = ii.get_attribute('data-cy') + var_name = [i.capitalize() for i in ii.get_attribute('data-cy').lower().replace("-", " ").split(" ")] + method_name = "get" + "".join(var_name) + var_name[0] = var_name[0].lower() + var_name = "".join(var_name) + if what == "Labels": + print(f"{var_name} = '{ii.tag_name}[data-cy=\"{data_cy_attribute}\"]'") + if what == "Methods": + print(f"def {method_name}(self) -> WebElement: \n\treturn self.wait_for(self.{var_name})\n") + + +printing("Labels") +print("\n") +printing("Methods")