From fc304404a5264479563fa304f65c0c6d551054a3 Mon Sep 17 00:00:00 2001 From: Serafym Tuhai Date: Tue, 27 Dec 2022 14:00:58 +0200 Subject: [PATCH] add tests on delete one device profiles --- .../server/msa/ui/base/AbstractBasePage.java | 9 ++ .../msa/ui/pages/OtherPageElements.java | 4 + .../msa/ui/pages/ProfilesPageElements.java | 9 ++ .../msa/ui/pages/ProfilesPageHelper.java | 9 +- .../DeleteDeviceProfileTest.java | 105 ++++++++++++++++++ .../DeviceProfileEditMenuTest.java | 65 +++++++++++ .../src/test/resources/smokesProfiles.xml | 35 ++++++ 7 files changed, 235 insertions(+), 1 deletion(-) create mode 100644 msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/deviceProfileSmoke/DeleteDeviceProfileTest.java create mode 100644 msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/deviceProfileSmoke/DeviceProfileEditMenuTest.java create mode 100644 msa/black-box-tests/src/test/resources/smokesProfiles.xml diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractBasePage.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractBasePage.java index 9e32d6e917..169d621773 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractBasePage.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractBasePage.java @@ -56,6 +56,15 @@ abstract public class AbstractBasePage { } } + protected WebElement waitUntilPresenceOfElementLocated(String locator) { + try { + return wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(locator))); + } catch (WebDriverException e) { + log.error("No presence element: " + locator); + return null; + } + } + protected WebElement waitUntilElementToBeClickable(String locator) { try { return wait.until(ExpectedConditions.elementToBeClickable(By.xpath(locator))); diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/OtherPageElements.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/OtherPageElements.java index a70aae9fd1..f1714eec06 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/OtherPageElements.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/OtherPageElements.java @@ -116,6 +116,10 @@ public class OtherPageElements extends AbstractBasePage { return waitUntilElementToBeClickable(String.format(CHECKBOX, entityName)); } + public WebElement presentCheckBox(String name) { + return waitUntilPresenceOfElementLocated(getCheckbox(name)); + } + public WebElement deleteSelectedBtn() { return waitUntilElementToBeClickable(DELETE_SELECTED_BTN); } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/ProfilesPageElements.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/ProfilesPageElements.java index 47ff93fe23..16b986a159 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/ProfilesPageElements.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/ProfilesPageElements.java @@ -34,6 +34,11 @@ public class ProfilesPageElements extends OtherPageElementsHelper { private static final String QUEUE_FIELD = "//input[@formcontrolname='queueName']"; private static final String DESCRIPTION_FIELD = "//textarea[@formcontrolname='description']"; private static final String ADD_DEVICE_PROFILE_ADD_BTN = ADD_DEVICE_PROFILE_VIEW + "//span[text() = 'Add']/.."; + private static final String DEVISE_PROFILE_VIEW_DELETE_BTN = "//tb-device-profile//span[contains(text(),'Delete')]"; + + protected String getDeviseProfileViewDeleteBtn() { + return DEVISE_PROFILE_VIEW_DELETE_BTN; + } public WebElement createNewDeviceProfileBtn() { return waitUntilElementToBeClickable(CREATE_DEVICE_PROFILE_BTN); @@ -90,4 +95,8 @@ public class ProfilesPageElements extends OtherPageElementsHelper { public WebElement addDeviceProfileAddBtn() { return waitUntilElementToBeClickable(ADD_DEVICE_PROFILE_ADD_BTN); } + + public WebElement deviceProfileViewDeleteBtn() { + return waitUntilElementToBeClickable(DEVISE_PROFILE_VIEW_DELETE_BTN); + } } \ No newline at end of file diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/ProfilesPageHelper.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/ProfilesPageHelper.java index 0639f25bb8..66afee2b44 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/ProfilesPageHelper.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/ProfilesPageHelper.java @@ -15,7 +15,10 @@ */ package org.thingsboard.server.msa.ui.pages; +import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.ExpectedConditions; public class ProfilesPageHelper extends ProfilesPageElements { public ProfilesPageHelper(WebDriver driver) { @@ -101,5 +104,9 @@ public class ProfilesPageHelper extends ProfilesPageElements { plusBtn().click(); importDeviceProfileBtn().click(); } -} + + public boolean deleteDeviceProfileFromViewBtnIsNotDisplayed() { + return wait.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath(getDeviseProfileViewDeleteBtn()))); + } + } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/deviceProfileSmoke/DeleteDeviceProfileTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/deviceProfileSmoke/DeleteDeviceProfileTest.java new file mode 100644 index 0000000000..e2ef96c5cd --- /dev/null +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/deviceProfileSmoke/DeleteDeviceProfileTest.java @@ -0,0 +1,105 @@ +package org.thingsboard.server.msa.ui.tests.deviceProfileSmoke; + +import org.testng.Assert; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; +import org.thingsboard.server.msa.ui.base.AbstractDriverBaseTest; +import org.thingsboard.server.msa.ui.pages.LoginPageHelper; +import org.thingsboard.server.msa.ui.pages.ProfilesPageHelper; +import org.thingsboard.server.msa.ui.pages.SideBarMenuViewHelper; +import org.thingsboard.server.msa.ui.utils.EntityPrototypes; + +import static org.thingsboard.server.msa.ui.utils.Const.ENTITY_NAME; +import static org.thingsboard.server.msa.ui.utils.Const.TENANT_EMAIL; +import static org.thingsboard.server.msa.ui.utils.Const.TENANT_PASSWORD; + +public class DeleteDeviceProfileTest extends AbstractDriverBaseTest { + + private SideBarMenuViewHelper sideBarMenuView; + private ProfilesPageHelper profilesPage; + + @BeforeMethod + public void login() { + openLocalhost(); + new LoginPageHelper(driver).authorizationTenant(); + testRestClient.login(TENANT_EMAIL, TENANT_PASSWORD); + sideBarMenuView = new SideBarMenuViewHelper(driver); + profilesPage = new ProfilesPageHelper(driver); + } + + @Test + public void removeDeviceProfile() { + String name = ENTITY_NAME; + testRestClient.postDeviceProfile(EntityPrototypes.defaultDeviceProfile(name)); + + sideBarMenuView.openDeviceProfiles(); + profilesPage.deleteBtn(name).click(); + profilesPage.warningPopUpYesBtn().click(); + profilesPage.refreshBtn(); + + Assert.assertTrue(profilesPage.entityIsNotPresent(name)); + } + + @Test + public void removeDeviceProfileFromView() { + String name = ENTITY_NAME; + testRestClient.postDeviceProfile(EntityPrototypes.defaultDeviceProfile(name)); + + sideBarMenuView.openDeviceProfiles(); + profilesPage.entity(name).click(); + profilesPage.deviceProfileViewDeleteBtn().click(); + profilesPage.warningPopUpYesBtn().click(); + profilesPage.refreshBtn(); + + Assert.assertTrue(profilesPage.entityIsNotPresent(name)); + } + + @Test + public void removeSelectedDeviceProfile() { + String name = ENTITY_NAME; + testRestClient.postDeviceProfile(EntityPrototypes.defaultDeviceProfile(name)); + + sideBarMenuView.openDeviceProfiles(); + profilesPage.checkBox(name).click(); + profilesPage.deleteSelectedBtn().click(); + profilesPage.warningPopUpYesBtn().click(); + profilesPage.refreshBtn(); + + Assert.assertTrue(profilesPage.entityIsNotPresent(name)); + } + + @Test + public void removeDefaultDeviceProfile() { + sideBarMenuView.openDeviceProfiles(); + + Assert.assertFalse(profilesPage.deleteBtn("default").isEnabled()); + } + + @Test + public void removeDefaultDeviceProfileFromView() { + sideBarMenuView.openDeviceProfiles(); + profilesPage.entity("default").click(); + + Assert.assertTrue(profilesPage.deleteDeviceProfileFromViewBtnIsNotDisplayed()); + } + + @Test + public void removeSelectedDefaultDeviceProfile() { + sideBarMenuView.openDeviceProfiles(); + + Assert.assertNotNull(profilesPage.presentCheckBox("default")); + Assert.assertFalse(profilesPage.presentCheckBox("default").isDisplayed()); + } + + @Test + public void removeDeviceProfileWithoutRefresh() { + String name = ENTITY_NAME; + testRestClient.postDeviceProfile(EntityPrototypes.defaultDeviceProfile(name)); + + sideBarMenuView.openDeviceProfiles(); + profilesPage.deleteBtn(name).click(); + profilesPage.warningPopUpYesBtn().click(); + + Assert.assertTrue(profilesPage.entityIsNotPresent(name)); + } +} diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/deviceProfileSmoke/DeviceProfileEditMenuTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/deviceProfileSmoke/DeviceProfileEditMenuTest.java new file mode 100644 index 0000000000..deb30959d3 --- /dev/null +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/deviceProfileSmoke/DeviceProfileEditMenuTest.java @@ -0,0 +1,65 @@ +package org.thingsboard.server.msa.ui.tests.deviceProfileSmoke; + +import io.qameta.allure.Description; +import org.testng.Assert; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; +import org.thingsboard.server.msa.ui.base.AbstractDriverBaseTest; +import org.thingsboard.server.msa.ui.pages.LoginPageHelper; +import org.thingsboard.server.msa.ui.pages.ProfilesPageHelper; +import org.thingsboard.server.msa.ui.pages.SideBarMenuViewHelper; +import org.thingsboard.server.msa.ui.utils.EntityPrototypes; + +import static org.thingsboard.server.msa.ui.base.AbstractBasePage.getRandomNumber; +import static org.thingsboard.server.msa.ui.utils.Const.ENTITY_NAME; +import static org.thingsboard.server.msa.ui.utils.Const.TENANT_EMAIL; +import static org.thingsboard.server.msa.ui.utils.Const.TENANT_PASSWORD; +import static org.thingsboard.server.msa.ui.utils.EntityPrototypes.defaultCustomerPrototype; + +public class DeviceProfileEditMenuTest extends AbstractDriverBaseTest { + + private SideBarMenuViewHelper sideBarMenuView; + private ProfilesPageHelper profilesPage; + private String name; + + @BeforeMethod + public void login() { + openLocalhost(); + new LoginPageHelper(driver).authorizationTenant(); + testRestClient.login(TENANT_EMAIL, TENANT_PASSWORD); + sideBarMenuView = new SideBarMenuViewHelper(driver); + profilesPage = new ProfilesPageHelper(driver); + } + + @AfterMethod + public void delete() { + if (name != null) { + testRestClient.deleteDeviseProfile(getDeviceProfileByName(name).getId()); + name = null; + } + } + + @Test(priority = 10, groups = "smoke") + @Description + public void changeTitle() { + String name = ENTITY_NAME; + String newName = "Changed" + getRandomNumber(); + testRestClient.postDeviceProfile(EntityPrototypes.defaultDeviceProfile(name)); + this.name = name; + + sideBarMenuView.customerBtn().click(); + profilesPage.entity(name).click(); + profilesPage.setHeaderName(); + String titleBefore = profilesPage.getHeaderName(); + profilesPage.editPencilBtn().click(); + profilesPage.changeNameEditMenu(newName); + profilesPage.doneBtnEditView().click(); + profilesPage.setHeaderName(); + String titleAfter = profilesPage.getHeaderName(); + + + Assert.assertNotEquals(titleBefore, titleAfter); + Assert.assertEquals(titleAfter, newName); + } +} diff --git a/msa/black-box-tests/src/test/resources/smokesProfiles.xml b/msa/black-box-tests/src/test/resources/smokesProfiles.xml new file mode 100644 index 0000000000..0cd79e4c79 --- /dev/null +++ b/msa/black-box-tests/src/test/resources/smokesProfiles.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file