Browse Source

add tests on delete one device profiles

pull/7897/head
Serafym Tuhai 4 years ago
parent
commit
fc304404a5
  1. 9
      msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractBasePage.java
  2. 4
      msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/OtherPageElements.java
  3. 9
      msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/ProfilesPageElements.java
  4. 9
      msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/ProfilesPageHelper.java
  5. 105
      msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/deviceProfileSmoke/DeleteDeviceProfileTest.java
  6. 65
      msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/deviceProfileSmoke/DeviceProfileEditMenuTest.java
  7. 35
      msa/black-box-tests/src/test/resources/smokesProfiles.xml

9
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)));

4
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);
}

9
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);
}
}

9
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())));
}
}

105
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));
}
}

65
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);
}
}

35
msa/black-box-tests/src/test/resources/smokesProfiles.xml

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
Copyright © 2016-2022 The Thingsboard Authors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Profiles Smoke Tests">
<listeners>
<listener class-name="org.thingsboard.server.msa.ui.listeners.RetryTestListener"/>
</listeners>
<test name="Profiles ui smoke tests">
<groups>
<run>
<exclude name="broken"/>
</run>
</groups>
<packages>
<package name="org.thingsboard.server.msa.ui.tests.deviceProfileSmoke"/>
</packages>
</test>
</suite>
Loading…
Cancel
Save