Skip to content

Commit

Permalink
Added test
Browse files Browse the repository at this point in the history
  • Loading branch information
szymon-kellton committed Mar 22, 2024
1 parent 05b8b2d commit f9eaee4
Show file tree
Hide file tree
Showing 4 changed files with 154 additions and 9 deletions.
112 changes: 104 additions & 8 deletions backend/selenium_tests/page_object/base_components.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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")
33 changes: 33 additions & 0 deletions backend/selenium_tests/tools/tag_name_finder.py
Original file line number Diff line number Diff line change
@@ -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")

0 comments on commit f9eaee4

Please sign in to comment.