diff --git a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/UIUtils.java b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/UIUtils.java index 08f5740e..dba918f2 100644 --- a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/UIUtils.java +++ b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/UIUtils.java @@ -24,6 +24,9 @@ import org.openqa.selenium.WebDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; +/** + * This class contains the constants and common methods used in pages. + */ public class UIUtils { public static long webDriverTimeOut = 10; public static long webDriverTime = 60; diff --git a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/devices/DevicesPage.java b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/devices/DevicesPage.java index 2d96d3bd..9c9b10bb 100644 --- a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/devices/DevicesPage.java +++ b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/devices/DevicesPage.java @@ -31,6 +31,14 @@ import org.wso2.iot.integration.ui.pages.samples.ConnectedCupDeviceViewPage; import java.io.IOException; import java.util.List; +/** + * Class to represent the IOT devices page. In this page, all the enrolled devices are listed. + * User can perform following functions on the enrolled devices. + * 1. View the device. + * 2. View device analytics. + * 3. Edit the device. + * 4. Delete the device. + */ public class DevicesPage { Log log = LogFactory.getLog(DevicesPage.class); private WebDriver driver; @@ -46,6 +54,11 @@ public class DevicesPage { } } + /** + * This method checks whether the given device is enrolled and visible in the UI of the IOT server. + * @param name : The name of the device to be checked. + * @return : True if the device is enrolled and visible. False otherwise. + */ public boolean isDeviceEnrolled(String name) { List deviceNames = driver.findElements(By.tagName("h4")); if (!deviceNames.isEmpty()) { @@ -58,6 +71,12 @@ public class DevicesPage { return false; } + /** + * This method performs the navigation to the Device view of the given device. + * Here the navigation happens to the Connected cup device. + * @param deviceName : Name of the device. + * @return : The corresponding device view page. Null if not visible. + */ public ConnectedCupDeviceViewPage viewDevice(String deviceName) throws IOException { WebElement deviceTable = driver.findElement(By.xpath(uiElementMapper.getElement("iot.devices.table.xpath"))); List data = deviceTable.findElements(By.cssSelector("a")); @@ -71,6 +90,12 @@ public class DevicesPage { return null; } + /** + * Method to extract the URL, which matches with the given parameters from an HTML element. + * @param element : WebElement, from which the URL should be extracted. + * @param lookupText : The parameters to be contained in the URL. + * @return : The URL String found. NULL if the URL is not found. + */ private String getLink(WebElement element, String... lookupText) { String link = element.getAttribute("href"); log.info("Link -----------------------> " + link); diff --git a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/devices/EnrollDevicePage.java b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/devices/EnrollDevicePage.java index 5d567b08..3e68e9c2 100644 --- a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/devices/EnrollDevicePage.java +++ b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/devices/EnrollDevicePage.java @@ -31,7 +31,8 @@ import org.wso2.iot.integration.ui.pages.samples.ConnectedCupDeviceTypeViewPage; import java.io.IOException; /** - * Device Enrollment page for new user + * Device Enrollment page. + * This page lists the all device types which are currently installed in the IOT server. */ public class EnrollDevicePage { private WebDriver driver; @@ -48,6 +49,11 @@ public class EnrollDevicePage { } } + /** + * This method checks whether the Connected cup device is installed. If the device is installed correctly, it is + * displayed in this page. + * @return : True if the device is visible in the page. False otherwise. + */ public boolean isInstalled() { boolean check = UIUtils.isElementPresent(log, driver, By.xpath( uiElementMapper.getElement("iot.sample.connectedcup.xpath"))); @@ -60,6 +66,10 @@ public class EnrollDevicePage { return false; } + /** + * Method to perform the navigation to Device type view page of the Connected cup. + * @return : The corresponding Device type view page. Null, if the element is not visible. + */ public ConnectedCupDeviceTypeViewPage gotoConnectedCupDeviceTypeViewPage() throws IOException { boolean check = UIUtils.isElementPresent(log, driver, By.xpath( uiElementMapper.getElement("iot.sample.connectedcup.xpath"))); diff --git a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/groups/DeviceAddGroupPage.java b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/groups/DeviceAddGroupPage.java index 3faf8623..ca7160c4 100644 --- a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/groups/DeviceAddGroupPage.java +++ b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/groups/DeviceAddGroupPage.java @@ -46,8 +46,9 @@ public class DeviceAddGroupPage { /** - * @param name The group name that is need to be created. - * @param description the description for the group + * This method performs creation of a new device group. + * @param name : The group name that is need to be created. + * @param description : the description for the group * @return The resultant page. */ public DeviceGroupsPage addNewGroup(String name, String description) throws IOException { @@ -68,6 +69,7 @@ public class DeviceAddGroupPage { } /** + * This method submits an empty form and returns the error message. * @return The error string when trying to submit an empty form. */ public String submitEmptyForm() { diff --git a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/groups/DeviceGroupsPage.java b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/groups/DeviceGroupsPage.java index e3b4dfc0..620c2ee0 100644 --- a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/groups/DeviceGroupsPage.java +++ b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/groups/DeviceGroupsPage.java @@ -28,6 +28,9 @@ import org.wso2.iot.integration.ui.pages.UIElementMapper; import java.io.IOException; import java.util.List; +/** + * This class represents the Groups page. + */ public class DeviceGroupsPage { private WebDriver driver; private UIElementMapper uiElementMapper; @@ -43,6 +46,10 @@ public class DeviceGroupsPage { } } + /** + * Method to go to the Add device group page, by clicking the Add group button. + * @return : Add device groups page. + */ public DeviceAddGroupPage addNewGroup() throws IOException { WebElement addNewGroupBtn = driver.findElement(By.xpath( uiElementMapper.getElement("iot.device.viewGroup.empty.addGroup.xpath"))); @@ -50,6 +57,11 @@ public class DeviceGroupsPage { return new DeviceAddGroupPage(driver); } + /** + * This method checks whether the created group is visible in the UI. + * @param groupName : Name of the group created. + * @return : True if the group is visible. False otherwise. + */ public boolean isGroupCreated(String groupName) { WebElement table = driver.findElement(By.id(uiElementMapper.getElement("iot.device.table.id"))); List allGroupNames = table.findElements(By.tagName("h4")); @@ -59,7 +71,6 @@ public class DeviceGroupsPage { return true; } } - return false; } } diff --git a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/home/IOTAdminDashboard.java b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/home/IOTAdminDashboard.java index 6d84d06e..67a9b156 100644 --- a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/home/IOTAdminDashboard.java +++ b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/home/IOTAdminDashboard.java @@ -67,6 +67,10 @@ public class IOTAdminDashboard { } } + /** + * Performs the logout action. + * @return : The IOT login page + */ public LoginPage logout() throws IOException { driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.registered.name"))).click(); WebElement logout = driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.logout.link.xpath"))); @@ -74,31 +78,55 @@ public class IOTAdminDashboard { return new LoginPage(driver); } + /** + * Performs the navigation to Add device group page. + * @return : Add Device Group page. + */ public DeviceAddGroupPage addGroup() throws IOException { driver.findElement(By.xpath(uiElementMapper.getElement("iot.device.group.addButton.xpath"))).click(); return new DeviceAddGroupPage(driver); } + /** + * Performs the navigation to Group listing page. + * @return : Groups page. + */ public DeviceGroupsPage viewGroups() throws IOException { driver.findElement(By.xpath(uiElementMapper.getElement("iot.device.group.viewButton.xpath"))).click(); return new DeviceGroupsPage(driver); } + /** + * Navigates to the Add User page. + * @return : Add user page. + */ public AddUserPage addUser() throws IOException { driver.findElement(By.xpath(uiElementMapper.getElement("iot.admin.user.addButton.xpath"))).click(); return new AddUserPage(driver); } + /** + * Navigates to the User Listing page. + * @return : User Listing page. + */ public UserListingPage viewUser() throws IOException { driver.findElement(By.xpath(uiElementMapper.getElement("iot.admin.user.viewButton.xpath"))).click(); return new UserListingPage(driver); } + /** + * Navigates to the New device enrollment page. + * @return : Enroll Device page. + */ public EnrollDevicePage enrollNewDevice() throws IOException { driver.findElement(By.xpath(uiElementMapper.getElement("iot.admin.device.addBtn.xpath"))).click(); return new EnrollDevicePage(driver); } + /** + * Navigates to the Devices listing page. + * @return : devices listing page. + */ public DevicesPage viewDevices() throws IOException { driver.findElement(By.xpath(uiElementMapper.getElement("iot.admin.device.viewBtn.xpath"))).click(); return new DevicesPage(driver); diff --git a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/home/IOTHomePage.java b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/home/IOTHomePage.java index 16d19ccd..cb345ef0 100644 --- a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/home/IOTHomePage.java +++ b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/home/IOTHomePage.java @@ -47,6 +47,10 @@ public class IOTHomePage { } } + /** + * Method to check the current User name + * @return : True if the user name matches the logged in user. False otherwise. + */ public boolean checkUserName() { String name = driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.registered.name"))).getText(); return name.contains(uiElementMapper.getElement("iot.user.login.username")); @@ -54,8 +58,9 @@ public class IOTHomePage { /** - * Perform the logout action. - * */ + * Performs the logout function. + * @return : IOT login page. + */ public LoginPage logout() throws IOException { driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.registered.name"))).click(); WebElement logout = driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.logout.link.xpath"))); @@ -63,7 +68,10 @@ public class IOTHomePage { return new LoginPage(driver); } - //To enroll devices as user + /** + * Navigates to the New device enrollment page. + * @return : Enroll Device page. + */ public EnrollDevicePage enrollNewDevice() throws IOException { driver.findElement(By.xpath("iot.home.page.uuf-menu.xpath")).click(); driver.findElement(By.xpath("iot.home.page.uuf-menu.devicemgt.xpath")).click(); @@ -71,13 +79,13 @@ public class IOTHomePage { return new EnrollDevicePage(driver); } - //To add new Device groups - public void goToGroupManagementPage() { + /** + * Performs the navigation to Add device group page. + * @return : Add Device Group page. + */ + public DeviceAddGroupPage addNewGroup() throws IOException { driver.findElement(By.xpath("iot.home.page.uuf-menu.xpath")).click(); driver.findElement(By.xpath("iot.home.page.uuf-menu.groupmgt.xpath")).click(); - } - - public DeviceAddGroupPage addNewGroup() throws IOException { driver.findElement(By.xpath("iot.device.viewGroup.empty.addGroup.xpath")).click(); return new DeviceAddGroupPage(driver); } diff --git a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/samples/ConnectedCupDeviceInterface.java b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/samples/ConnectedCupDeviceInterface.java index d1e0ce96..8dbb3136 100644 --- a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/samples/ConnectedCupDeviceInterface.java +++ b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/samples/ConnectedCupDeviceInterface.java @@ -52,6 +52,7 @@ public class ConnectedCupDeviceInterface { /** * Method to perform the order coffee functionality. + * @return : True if the element is present and action is performed. False otherwise. */ public boolean orderCoffee() { if (UIUtils.isElementPresent(log, driver, By.xpath( @@ -67,6 +68,7 @@ public class ConnectedCupDeviceInterface { /** * Method to change the temperature level. * @param temp : The value to be set. + * @return : True if the element is present and value is set. False otherwise. */ public boolean changeTemperature(String temp) { if (UIUtils.isElementPresent(log, driver, By.xpath( @@ -82,6 +84,7 @@ public class ConnectedCupDeviceInterface { /** * Method to change the Coffee level. * @param level : The value to be set. + * @return : True if the element is present and value is set. False otherwise. */ public boolean changeCoffeeLevel(String level) { if (UIUtils.isElementPresent(log, driver, By.xpath( diff --git a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/samples/ConnectedCupDeviceTypeViewPage.java b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/samples/ConnectedCupDeviceTypeViewPage.java index 85b42f1a..dec999dc 100644 --- a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/samples/ConnectedCupDeviceTypeViewPage.java +++ b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/samples/ConnectedCupDeviceTypeViewPage.java @@ -46,6 +46,7 @@ public class ConnectedCupDeviceTypeViewPage { /** * This method verifies that the pop up modal for inserting a name for device is present. + * @return : True if the Modal pop up is displayed. False otherwise. */ public boolean isPopUpPresent() throws InterruptedException { WebElement createInstanceBtn = driver.findElement(By.xpath( @@ -62,6 +63,7 @@ public class ConnectedCupDeviceTypeViewPage { * the popup, user should be navigated to the device type view page again. * This method checks the navigation and return true if navigation is correct. * @param name : Name for the device. + * @return : True if navigates to the Device type view page without errors. False otherwise. */ public boolean enrollDevice(String name) { diff --git a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/samples/ConnectedCupDeviceViewPage.java b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/samples/ConnectedCupDeviceViewPage.java index d22d5a55..4b3564be 100644 --- a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/samples/ConnectedCupDeviceViewPage.java +++ b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/samples/ConnectedCupDeviceViewPage.java @@ -66,6 +66,7 @@ public class ConnectedCupDeviceViewPage { /** * This method executes Connected cup sample web app. + * @return : The Connected cup web page. */ public ConnectedCupDeviceInterface gotoDevice() throws IOException { WebDriverWait wait = new WebDriverWait(driverServer, UIUtils.webDriverTime); diff --git a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/NewUserRegisterPage.java b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/NewUserRegisterPage.java index ba4c5fdd..86d821f7 100644 --- a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/NewUserRegisterPage.java +++ b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/NewUserRegisterPage.java @@ -94,7 +94,16 @@ public class NewUserRegisterPage { handleAction(firstName, lastName, email, userName, password, confirmPassword); } - public void handleAction(String firstName, String lastName, String email, String userName, String password, + /** + * Support method to populate the User registration form. + * @param firstName : First name of the user. + * @param lastName : Last name of the user. + * @param email : E mail of the user. + * @param userName : User name of the user. + * @param password : Password for the user. + * @param confirmPassword : Confirmation password. + */ + private void handleAction(String firstName, String lastName, String email, String userName, String password, String confirmPassword) { clearForm(); firstNameField.sendKeys(firstName); @@ -106,7 +115,10 @@ public class NewUserRegisterPage { registerButton.click(); } - public void clearForm() { + /** + * Support method to clear the Registration form. + */ + private void clearForm() { firstNameField.clear(); lastNameField.clear(); emailField.clear(); diff --git a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/UserAddedConfirmationPage.java b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/UserAddedConfirmationPage.java index 8d2b405b..6e5d55a0 100644 --- a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/UserAddedConfirmationPage.java +++ b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/UserAddedConfirmationPage.java @@ -27,10 +27,8 @@ import java.io.IOException; * This class represents the confirmation page for adding a new user. */ public class UserAddedConfirmationPage { - private WebDriver driver; public UserAddedConfirmationPage(WebDriver driver) throws IOException { - this.driver = driver; UIElementMapper uiElementMapper = UIElementMapper.getInstance(); driver.findElement(By.xpath(uiElementMapper.getElement("iot.admin.addUser.view.btn.xpath"))).click(); diff --git a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/UserListingPage.java b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/UserListingPage.java index 170cc2b5..b5a7b117 100644 --- a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/UserListingPage.java +++ b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/UserListingPage.java @@ -40,6 +40,7 @@ public class UserListingPage { } /** + * Performs the delete user action. * @return After deleting a user, returns back to the user listing page. */ public UserListingPage deleteUser() throws IOException, InterruptedException {