diff --git a/ui-test/src/main/java/regclient/androidTestCases/LoginTest.java b/ui-test/src/main/java/regclient/androidTestCases/LoginTest.java index c0e553714..3c1d9e8b6 100644 --- a/ui-test/src/main/java/regclient/androidTestCases/LoginTest.java +++ b/ui-test/src/main/java/regclient/androidTestCases/LoginTest.java @@ -206,6 +206,8 @@ public void userloginTest() { assertTrue(dashboardPage.isUserIDDisplayed(), "Verify if user ID displayed"); assertTrue(dashboardPage.isUserNameDisplayed(), "Verify if user name displayed"); assertTrue(dashboardPage.isStatusTitleDisplayed(), "Verify if status displayed"); + dashboardPage.logPacketCounts(); + assertTrue(dashboardPage.isLoginUserActive(), "Verify if Loggedin user is active"); assertTrue(registrationTasksPage.isProfileTitleDisplayed(), "Verify if profile title display on homepage"); registrationTasksPage.clickProfileButton(); diff --git a/ui-test/src/main/java/regclient/page/BasePage.java b/ui-test/src/main/java/regclient/page/BasePage.java index 5e121ec4c..740b376b6 100644 --- a/ui-test/src/main/java/regclient/page/BasePage.java +++ b/ui-test/src/main/java/regclient/page/BasePage.java @@ -909,4 +909,22 @@ protected void waitForElementToBeVisible(By locator, int waitTime) { WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(waitTime)); wait.until(ExpectedConditions.visibilityOfElementLocated(locator)); } + + protected boolean isValuePresentInTable(WebElement tableElement,String rowIdentifier,int valueLineOffset,String expectedValue) { + String tableData = getVisibleValue(tableElement); + if (tableData == null || tableData.isEmpty()) { + return false; + } + String[] lines = tableData.split("\\R"); + for (int i = 0; i < lines.length; i++) { + if (lines[i].trim().equals(rowIdentifier)) { + int valueIndex = i + valueLineOffset; + if (valueIndex < lines.length) { + String actualValue = lines[valueIndex].trim(); + return actualValue.toLowerCase().contains(expectedValue); + } + } + } + return false; + } } diff --git a/ui-test/src/main/java/regclient/page/DashboardPage.java b/ui-test/src/main/java/regclient/page/DashboardPage.java index be5943819..aaece5cf0 100644 --- a/ui-test/src/main/java/regclient/page/DashboardPage.java +++ b/ui-test/src/main/java/regclient/page/DashboardPage.java @@ -19,4 +19,8 @@ public DashboardPage(AppiumDriver driver) { public abstract boolean isUserNameDisplayed(); public abstract boolean isStatusTitleDisplayed(); + + public abstract void logPacketCounts(); + + public abstract boolean isLoginUserActive(); } diff --git a/ui-test/src/main/java/regclient/pages/arabic/DashboardPageArabic.java b/ui-test/src/main/java/regclient/pages/arabic/DashboardPageArabic.java index 1429b0938..0e7b91a67 100644 --- a/ui-test/src/main/java/regclient/pages/arabic/DashboardPageArabic.java +++ b/ui-test/src/main/java/regclient/pages/arabic/DashboardPageArabic.java @@ -1,18 +1,26 @@ package regclient.pages.arabic; -import org.openqa.selenium.WebElement; +import org.openqa.selenium.WebElement; import io.appium.java_client.AppiumDriver; import io.appium.java_client.pagefactory.AndroidFindBy; +import regclient.api.KeycloakUserManager; import regclient.page.DashboardPage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class DashboardPageArabic extends DashboardPage { + + private static final Logger logger = LoggerFactory.getLogger(DashboardPageArabic.class); @AndroidFindBy(xpath = "//android.view.View[@content-desc=\"لوحة القيادة\"]/following-sibling::android.view.View[3]") private WebElement packetUploadedNumber; @AndroidFindBy(xpath = "//android.view.View[@content-desc=\"لوحة القيادة\"]/following-sibling::android.view.View[2]") private WebElement packetSyncedNumber; + + @AndroidFindBy(xpath = "//android.view.View[@content-desc=\"لوحة القيادة\"]/following-sibling::android.view.View[1]") + private WebElement packetCreatedNumber; @AndroidFindBy(accessibility = "لوحة القيادة") private WebElement dashboardPageTitle; @@ -25,6 +33,9 @@ public class DashboardPageArabic extends DashboardPage { @AndroidFindBy(xpath = "//android.view.View[contains(@content-desc, 'حالة')]") private WebElement statusTitle; + + @AndroidFindBy(xpath = "//android.view.View[contains(@content-desc,'المستخدمين')]") + private WebElement userTable; public DashboardPageArabic(AppiumDriver driver) { super(driver); @@ -54,4 +65,29 @@ public boolean isStatusTitleDisplayed() { return isElementDisplayed(statusTitle); } + public String getPacketsCreatedCount() { + return getVisibleValue(packetCreatedNumber); + } + + public String getPacketsSyncedCount() { + return getVisibleValue(packetSyncedNumber); + } + + public String getPacketsUploadedCount() { + return getVisibleValue(packetUploadedNumber); + } + + public void logPacketCounts() { + String created = getPacketsCreatedCount(); + String synced = getPacketsSyncedCount(); + String uploaded = getPacketsUploadedCount(); + logger.info("No. of Packets Created : " + created); + logger.info("No. of Packets Synced : " + synced); + logger.info("No. of Packets Uploaded : " + uploaded); + } + + public boolean isLoginUserActive() { + return isValuePresentInTable(userTable, KeycloakUserManager.moduleSpecificUser,2,"active"); + } + } diff --git a/ui-test/src/main/java/regclient/pages/english/DashboardPageEnglish.java b/ui-test/src/main/java/regclient/pages/english/DashboardPageEnglish.java index e3c11b550..0e16af7fa 100644 --- a/ui-test/src/main/java/regclient/pages/english/DashboardPageEnglish.java +++ b/ui-test/src/main/java/regclient/pages/english/DashboardPageEnglish.java @@ -1,18 +1,39 @@ package regclient.pages.english; import org.openqa.selenium.WebElement; - import io.appium.java_client.AppiumDriver; import io.appium.java_client.pagefactory.AndroidFindBy; +import regclient.api.KeycloakUserManager; import regclient.page.DashboardPage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class DashboardPageEnglish extends DashboardPage { + + + private static final Logger logger = LoggerFactory.getLogger(DashboardPageEnglish.class); + @AndroidFindBy(xpath = "//android.view.View[@content-desc=\"Dashboard\"]/following-sibling::android.view.View[3]") private WebElement packetUploadedNumber; @AndroidFindBy(xpath = "//android.view.View[@content-desc=\"Dashboard\"]/following-sibling::android.view.View[2]") private WebElement packetSyncedNumber; + + @AndroidFindBy(xpath = "//android.view.View[@content-desc=\"Dashboard\"]/following-sibling::android.view.View[1]") + private WebElement packetCreatedNumber; + + + @AndroidFindBy(xpath = "//android.view.View[@content-desc=\"Packets Uploaded\"]") + private WebElement packetUploadedLabel; + + @AndroidFindBy(xpath = "//android.view.View[@content-desc=\"Packets Synced\"]") + private WebElement packetSyncedLabel; + + @AndroidFindBy(xpath = "//android.view.View[@content-desc=\"Packets Created\"]") + private WebElement packetCreatedLabel; + @AndroidFindBy(accessibility = "Dashboard") private WebElement dashboardPageTitle; @@ -25,6 +46,9 @@ public class DashboardPageEnglish extends DashboardPage { @AndroidFindBy(xpath = "//android.view.View[contains(@content-desc, \"Status\")]") private WebElement statusTitle; + + @AndroidFindBy(xpath = "//android.view.View[contains(@content-desc,'User ID')]") + private WebElement userTable; public DashboardPageEnglish(AppiumDriver driver) { super(driver); @@ -53,4 +77,30 @@ public boolean isUserNameDisplayed() { public boolean isStatusTitleDisplayed() { return isElementDisplayed(statusTitle); } + + + public String getPacketsCreatedCount() { + return getVisibleValue(packetCreatedNumber); + } + + public String getPacketsSyncedCount() { + return getVisibleValue(packetSyncedNumber); + } + + public String getPacketsUploadedCount() { + return getVisibleValue(packetUploadedNumber); + } + + public void logPacketCounts() { + String created = getPacketsCreatedCount(); + String synced = getPacketsSyncedCount(); + String uploaded = getPacketsUploadedCount(); + logger.info("No. of Packets Created : " + created); + logger.info("No. of Packets Synced : " + synced); + logger.info("No. of Packets Uploaded : " + uploaded); + } + + public boolean isLoginUserActive() { + return isValuePresentInTable(userTable, KeycloakUserManager.moduleSpecificUser,2,"active"); + } } diff --git a/ui-test/src/main/java/regclient/pages/french/DashboardPageFrench.java b/ui-test/src/main/java/regclient/pages/french/DashboardPageFrench.java index 326c594d3..a7bd90cea 100644 --- a/ui-test/src/main/java/regclient/pages/french/DashboardPageFrench.java +++ b/ui-test/src/main/java/regclient/pages/french/DashboardPageFrench.java @@ -1,18 +1,29 @@ package regclient.pages.french; -import org.openqa.selenium.WebElement; +import org.openqa.selenium.WebElement; import io.appium.java_client.AppiumDriver; import io.appium.java_client.pagefactory.AndroidFindBy; +import regclient.api.KeycloakUserManager; import regclient.page.DashboardPage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class DashboardPageFrench extends DashboardPage { + + + private static final Logger logger = LoggerFactory.getLogger(DashboardPageFrench.class); - @AndroidFindBy(xpath = "//android.view.View[@content-desc=\"Dashboard\"]/following-sibling::android.view.View[3]") + + @AndroidFindBy(xpath = "//android.view.View[@content-desc=\"Tableau de bord\"]/following-sibling::android.view.View[3]") private WebElement packetUploadedNumber; - @AndroidFindBy(xpath = "//android.view.View[@content-desc=\"Dashboard\"]/following-sibling::android.view.View[2]") + @AndroidFindBy(xpath = "//android.view.View[@content-desc=\"Tableau de bord\"]/following-sibling::android.view.View[2]") private WebElement packetSyncedNumber; + + @AndroidFindBy(xpath = "//android.view.View[@content-desc=\"Tableau de bord\"]/following-sibling::android.view.View[1]") + private WebElement packetCreatedNumber; @AndroidFindBy(accessibility = "Tableau de bord") private WebElement dashboardPageTitle; @@ -26,6 +37,9 @@ public class DashboardPageFrench extends DashboardPage { @AndroidFindBy(xpath = "//android.view.View[contains(@content-desc, \"Statut\")]") private WebElement statusTitle; + @AndroidFindBy(xpath = "//android.view.View[contains(@content-desc,'Utilisatrices')]") + private WebElement userTable; + public DashboardPageFrench(AppiumDriver driver) { super(driver); } @@ -53,4 +67,29 @@ public boolean isUserNameDisplayed() { public boolean isStatusTitleDisplayed() { return isElementDisplayed(statusTitle); } + + public String getPacketsCreatedCount() { + return getVisibleValue(packetCreatedNumber); + } + + public String getPacketsSyncedCount() { + return getVisibleValue(packetSyncedNumber); + } + + public String getPacketsUploadedCount() { + return getVisibleValue(packetUploadedNumber); + } + + public void logPacketCounts() { + String created = getPacketsCreatedCount(); + String synced = getPacketsSyncedCount(); + String uploaded = getPacketsUploadedCount(); + logger.info("No. of Packets Created : " + created); + logger.info("No. of Packets Synced : " + synced); + logger.info("No. of Packets Uploaded : " + uploaded); + } + + public boolean isLoginUserActive() { + return isValuePresentInTable(userTable, KeycloakUserManager.moduleSpecificUser,2,"active"); + } } diff --git a/ui-test/src/main/java/regclient/pages/french/LoginPageFrench.java b/ui-test/src/main/java/regclient/pages/french/LoginPageFrench.java index 5761879f8..6491b982e 100644 --- a/ui-test/src/main/java/regclient/pages/french/LoginPageFrench.java +++ b/ui-test/src/main/java/regclient/pages/french/LoginPageFrench.java @@ -1,14 +1,13 @@ package regclient.pages.french; import java.time.Duration; - import org.openqa.selenium.WebElement; - import io.appium.java_client.AppiumDriver; import io.appium.java_client.pagefactory.AndroidFindBy; import regclient.page.LoginPage; import regclient.page.RegistrationTasksPage; + public class LoginPageFrench extends LoginPage { public LoginPageFrench(AppiumDriver driver) { @@ -144,4 +143,5 @@ public void selectLanguage() { public void clickOnSkipToHomeButton() { clickOnElement(skipToHomeButton); } + } diff --git a/ui-test/src/main/java/regclient/pages/hindi/DashboardPageHindi.java b/ui-test/src/main/java/regclient/pages/hindi/DashboardPageHindi.java index f3b540182..af0c9b182 100644 --- a/ui-test/src/main/java/regclient/pages/hindi/DashboardPageHindi.java +++ b/ui-test/src/main/java/regclient/pages/hindi/DashboardPageHindi.java @@ -1,18 +1,30 @@ package regclient.pages.hindi; + import org.openqa.selenium.WebElement; import io.appium.java_client.AppiumDriver; import io.appium.java_client.pagefactory.AndroidFindBy; +import regclient.api.KeycloakUserManager; import regclient.page.DashboardPage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + public class DashboardPageHindi extends DashboardPage { + + private static final Logger logger = LoggerFactory.getLogger(DashboardPageHindi.class); + @AndroidFindBy(xpath = "//android.view.View[@content-desc=\"Dashboard\"]/following-sibling::android.view.View[3]") private WebElement packetUploadedNumber; @AndroidFindBy(xpath = "//android.view.View[@content-desc=\"Dashboard\"]/following-sibling::android.view.View[2]") private WebElement packetSyncedNumber; + + @AndroidFindBy(xpath = "//android.view.View[@content-desc=\"Dashboard\"]/following-sibling::android.view.View[1]") + private WebElement packetCreatedNumber; @AndroidFindBy(accessibility = "Tableau de bord") private WebElement dashboardPageTitle; @@ -25,6 +37,9 @@ public class DashboardPageHindi extends DashboardPage { @AndroidFindBy(xpath = "//android.view.View[contains(@content-desc, \"Statut\")]") private WebElement statusTitle; + + @AndroidFindBy(xpath = "//android.view.View[contains(@content-desc,'User ID')]") + private WebElement userTable; public DashboardPageHindi(AppiumDriver driver) { super(driver); @@ -53,5 +68,30 @@ public boolean isUserNameDisplayed() { public boolean isStatusTitleDisplayed() { return isElementDisplayed(statusTitle); } + + public String getPacketsCreatedCount() { + return getVisibleValue(packetCreatedNumber); + } + + public String getPacketsSyncedCount() { + return getVisibleValue(packetSyncedNumber); + } + + public String getPacketsUploadedCount() { + return getVisibleValue(packetUploadedNumber); + } + + public void logPacketCounts() { + String created = getPacketsCreatedCount(); + String synced = getPacketsSyncedCount(); + String uploaded = getPacketsUploadedCount(); + logger.info("No. of Packets Created : " + created); + logger.info("No. of Packets Synced : " + synced); + logger.info("No. of Packets Uploaded : " + uploaded); + } + + public boolean isLoginUserActive() { + return isValuePresentInTable(userTable, KeycloakUserManager.moduleSpecificUser,2,"active"); + } } diff --git a/ui-test/src/main/java/regclient/pages/kannada/DashboardPageKannada.java b/ui-test/src/main/java/regclient/pages/kannada/DashboardPageKannada.java index c878e77c1..724c5867b 100644 --- a/ui-test/src/main/java/regclient/pages/kannada/DashboardPageKannada.java +++ b/ui-test/src/main/java/regclient/pages/kannada/DashboardPageKannada.java @@ -1,12 +1,21 @@ package regclient.pages.kannada; -import org.openqa.selenium.WebElement; +import org.openqa.selenium.WebElement; import io.appium.java_client.AppiumDriver; import io.appium.java_client.pagefactory.AndroidFindBy; +import regclient.api.KeycloakUserManager; import regclient.page.DashboardPage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class DashboardPageKannada extends DashboardPage { + private static final Logger logger = LoggerFactory.getLogger(DashboardPageKannada.class); + + + @AndroidFindBy(xpath = "//android.view.View[@content-desc=\"Dashboard\"]/following-sibling::android.view.View[1]") + private WebElement packetCreatedNumber; @AndroidFindBy(xpath = "//android.view.View[@content-desc=\"Dashboard\"]/following-sibling::android.view.View[3]") private WebElement packetUploadedNumber; @@ -25,6 +34,9 @@ public class DashboardPageKannada extends DashboardPage { @AndroidFindBy(xpath = "//android.view.View[contains(@content-desc, \"Status\")]") private WebElement statusTitle; + + @AndroidFindBy(xpath = "//android.view.View[contains(@content-desc,'User ID')]") + private WebElement userTable; public DashboardPageKannada(AppiumDriver driver) { super(driver); @@ -53,5 +65,30 @@ public boolean isUserNameDisplayed() { public boolean isStatusTitleDisplayed() { return isElementDisplayed(statusTitle); } + + public String getPacketsCreatedCount() { + return getVisibleValue(packetCreatedNumber); + } + + public String getPacketsSyncedCount() { + return getVisibleValue(packetSyncedNumber); + } + + public String getPacketsUploadedCount() { + return getVisibleValue(packetUploadedNumber); + } + + public void logPacketCounts() { + String created = getPacketsCreatedCount(); + String synced = getPacketsSyncedCount(); + String uploaded = getPacketsUploadedCount(); + logger.info("No. of Packets Created : " + created); + logger.info("No. of Packets Synced : " + synced); + logger.info("No. of Packets Uploaded : " + uploaded); + } + + public boolean isLoginUserActive() { + return isValuePresentInTable(userTable, KeycloakUserManager.moduleSpecificUser,2,"active"); + } } diff --git a/ui-test/src/main/java/regclient/pages/tamil/DashboardPageTamil.java b/ui-test/src/main/java/regclient/pages/tamil/DashboardPageTamil.java index 0f6a43b3e..b12e5ec0d 100644 --- a/ui-test/src/main/java/regclient/pages/tamil/DashboardPageTamil.java +++ b/ui-test/src/main/java/regclient/pages/tamil/DashboardPageTamil.java @@ -1,19 +1,30 @@ package regclient.pages.tamil; -import org.openqa.selenium.WebElement; +import org.openqa.selenium.WebElement; import io.appium.java_client.AppiumDriver; import io.appium.java_client.pagefactory.AndroidFindBy; +import regclient.api.KeycloakUserManager; import regclient.page.DashboardPage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + public class DashboardPageTamil extends DashboardPage{ + private static final Logger logger = LoggerFactory.getLogger(DashboardPageTamil.class); + + @AndroidFindBy(xpath = "//android.view.View[@content-desc=\"Dashboard\"]/following-sibling::android.view.View[3]") private WebElement packetUploadedNumber; @AndroidFindBy(xpath = "//android.view.View[@content-desc=\"Dashboard\"]/following-sibling::android.view.View[2]") private WebElement packetSyncedNumber; + @AndroidFindBy(xpath = "//android.view.View[@content-desc=\"Dashboard\"]/following-sibling::android.view.View[1]") + private WebElement packetCreatedNumber; + @AndroidFindBy(accessibility = "Dashboard") private WebElement dashboardPageTitle; @@ -26,6 +37,9 @@ public class DashboardPageTamil extends DashboardPage{ @AndroidFindBy(xpath = "//android.view.View[contains(@content-desc, \"Status\")]") private WebElement statusTitle; + @AndroidFindBy(xpath = "//android.view.View[contains(@content-desc,'User ID')]") + private WebElement userTable; + public DashboardPageTamil(AppiumDriver driver) { super(driver); } @@ -53,5 +67,30 @@ public boolean isUserNameDisplayed() { public boolean isStatusTitleDisplayed() { return isElementDisplayed(statusTitle); } + + public String getPacketsCreatedCount() { + return getVisibleValue(packetCreatedNumber); + } + + public String getPacketsSyncedCount() { + return getVisibleValue(packetSyncedNumber); + } + + public String getPacketsUploadedCount() { + return getVisibleValue(packetUploadedNumber); + } + + public void logPacketCounts() { + String created = getPacketsCreatedCount(); + String synced = getPacketsSyncedCount(); + String uploaded = getPacketsUploadedCount(); + logger.info("No. of Packets Created : " + created); + logger.info("No. of Packets Synced : " + synced); + logger.info("No. of Packets Uploaded : " + uploaded); + } + + public boolean isLoginUserActive() { + return isValuePresentInTable(userTable, KeycloakUserManager.moduleSpecificUser,2,"active"); + } }