refactoring

This commit is contained in:
Seraphym-Tuhai 2023-04-18 13:52:49 +03:00
parent c51d75a2cc
commit 2eecf7f066
16 changed files with 211 additions and 147 deletions

View File

@ -48,6 +48,7 @@ import java.io.ByteArrayInputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.time.Duration;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import static org.assertj.core.api.Assertions.assertThat;
@ -64,9 +65,12 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest {
private static final int WIDTH = 1680;
private static final int HEIGHT = 1050;
private static final String REMOTE_WEBDRIVER_HOST = "http://localhost:4444";
protected static final PageLink pageLink = new PageLink(10);
private static final ContainerTestSuite instance = ContainerTestSuite.getInstance();
protected final PageLink pageLink = new PageLink(10);
private final ContainerTestSuite instance = ContainerTestSuite.getInstance();
private JavascriptExecutor js;
public static final long WAIT_TIMEOUT = TimeUnit.SECONDS.toMillis(10);
private final Duration duration = Duration.ofMillis(WAIT_TIMEOUT);
private WebStorage webStorage;
@BeforeClass
public void startUp() throws MalformedURLException {
@ -104,8 +108,7 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest {
}
public String getJwtTokenFromLocalStorage() {
js = (JavascriptExecutor) driver;
return (String) js.executeScript("return window.localStorage.getItem('jwt_token');");
return (String) getJs().executeScript("return window.localStorage.getItem('jwt_token');");
}
public void openBaseUiUrl() {
@ -121,7 +124,7 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest {
}
protected boolean urlContains(String urlPath) {
WebDriverWait wait = new WebDriverWait(driver, Duration.ofMillis(5000));
WebDriverWait wait = new WebDriverWait(driver, duration);
try {
wait.until(ExpectedConditions.urlContains(urlPath));
} catch (WebDriverException e) {
@ -131,11 +134,10 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest {
}
public void jsClick(WebElement element) {
js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].click();", element);
getJs().executeScript("arguments[0].click();", element);
}
public static RuleChain getRuleChainByName(String name) {
public RuleChain getRuleChainByName(String name) {
try {
return testRestClient.getRuleChains(pageLink).getData().stream()
.filter(s -> s.getName().equals(name)).collect(Collectors.toList()).get(0);
@ -145,7 +147,7 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest {
}
}
public static Customer getCustomerByName(String name) {
public Customer getCustomerByName(String name) {
try {
return testRestClient.getCustomers(pageLink).getData().stream()
.filter(x -> x.getName().equals(name)).collect(Collectors.toList()).get(0);
@ -155,7 +157,7 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest {
}
}
public static DeviceProfile getDeviceProfileByName(String name) {
public DeviceProfile getDeviceProfileByName(String name) {
try {
return testRestClient.getDeviceProfiles(pageLink).getData().stream()
.filter(x -> x.getName().equals(name)).collect(Collectors.toList()).get(0);
@ -165,7 +167,7 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest {
}
}
public static AssetProfile getAssetProfileByName(String name) {
public AssetProfile getAssetProfileByName(String name) {
try {
return testRestClient.getAssetProfiles(pageLink).getData().stream()
.filter(x -> x.getName().equals(name)).collect(Collectors.toList()).get(0);
@ -182,14 +184,6 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest {
}
}
public WebStorage getWebStorage() {
if (driver instanceof WebStorage) {
return (WebStorage) driver;
} else {
throw new IllegalArgumentException("This test expects the driver to implement WebStorage");
}
}
public void clearStorage() {
getWebStorage().getLocalStorage().clear();
getWebStorage().getSessionStorage().clear();
@ -198,4 +192,12 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest {
public void assertIsDisplayed(WebElement element) {
assertThat(element.isDisplayed()).as(element + " is displayed").isTrue();
}
public JavascriptExecutor getJs() {
return js = (JavascriptExecutor) driver;
}
public WebStorage getWebStorage() {
return webStorage = (WebStorage) driver;
}
}

View File

@ -20,8 +20,8 @@ import org.openqa.selenium.WebElement;
import java.util.List;
public class AlarmElements extends OtherPageElements{
public AlarmElements(WebDriver driver) {
public class AlarmDetailsEntityTabElements extends OtherPageElements {
public AlarmDetailsEntityTabElements(WebDriver driver) {
super(driver);
}
@ -34,6 +34,7 @@ public class AlarmElements extends OtherPageElements{
private static final String UNASSIGNED = "//span[text() = '%s']/ancestor::mat-row//span[@class='assignee-cell']/mat-icon[text() = 'account_circle']/following-sibling::span";
private static final String ALARM_DETAILS_BTN = "//span[text() = '%s']/ancestor::mat-row//mat-icon[contains(text(),'more_horiz')]/parent::button";
private static final String ACCESS_FORBIDDEN_DIALOG_VIEW = "//h2[text() = 'Access Forbidden']/parent::tb-confirm-dialog";
private static final String ALARM_ASSIGNEE_DROPDOWN = "//tb-alarm-assignee-panel";
public WebElement assignBtn(String type) {
return waitUntilElementToBeClickable(String.format(ASSIGN_BTN, type));
@ -70,4 +71,8 @@ public class AlarmElements extends OtherPageElements{
public WebElement accessForbiddenDialogView() {
return waitUntilVisibilityOfElementLocated(ACCESS_FORBIDDEN_DIALOG_VIEW);
}
public WebElement alarmAssigneeDropdown() {
return waitUntilVisibilityOfElementLocated(ALARM_ASSIGNEE_DROPDOWN);
}
}

View File

@ -17,13 +17,12 @@ package org.thingsboard.server.msa.ui.pages;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.thingsboard.server.msa.ui.utils.Const;
import java.util.List;
import java.util.stream.Collectors;
public class AlarmHelper extends AlarmElements {
public AlarmHelper(WebDriver driver) {
public class AlarmDetailsEntityTabHelper extends AlarmDetailsEntityTabElements {
public AlarmDetailsEntityTabHelper(WebDriver driver) {
super(driver);
}
@ -33,12 +32,12 @@ public class AlarmHelper extends AlarmElements {
}
public void unassignedAlarm(String alarmType) {
assignBtn(alarmType).click();
jsClick(assignBtn(alarmType));
unassignedBtn().click();
}
public void searchAlarm(String alarmType, String emailOrName) {
assignBtn(alarmType).click();
jsClick(assignBtn(alarmType));
searchUserField().sendKeys(emailOrName);
}

View File

@ -24,7 +24,6 @@ public class AlarmDetailsViewElements extends AbstractBasePage {
super(driver);
}
//private static final String ASSIGN_FIELD = "//tb-alarm-assignee//mat-icon[contains(text(),'keyboard_arrow_down')]/parent::button";
private static final String ASSIGN_FIELD = "//mat-label[text()='Assignee']/parent::label/parent::div//input";
private static final String USER_FROM_DROP_DOWN = "//div[@class='user-display-name']/span[text() = '%s']";
private static final String CLOSE_ALARM_DETAILS_VIEW_BTN = "//mat-dialog-container//mat-icon[contains(text(),'close')]/parent::button";

View File

@ -17,7 +17,7 @@ package org.thingsboard.server.msa.ui.pages;
import org.openqa.selenium.WebDriver;
public class AlarmDetailsViewHelper extends AlarmDetailsViewElements{
public class AlarmDetailsViewHelper extends AlarmDetailsViewElements {
public AlarmDetailsViewHelper(WebDriver driver) {
super(driver);
}

View File

@ -18,27 +18,20 @@ package org.thingsboard.server.msa.ui.pages;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
public class AssetPageElements extends OtherPageElements{
public class AssetPageElements extends OtherPageElements {
public AssetPageElements(WebDriver driver) {
super(driver);
}
private static final String CUSTOMER_DETAILS_VIEW = "//tb-details-panel";
private static final String CUSTOMER_DETAILS_ALARMS = CUSTOMER_DETAILS_VIEW + "//span[text()='Alarms']";
private static final String ASSET_DETAILS_VIEW = "//tb-details-panel";
private static final String ASSET_DETAILS_ALARMS = ASSET_DETAILS_VIEW + "//span[text()='Alarms']";
public WebElement customerDetailsView() {
return waitUntilPresenceOfElementLocated(CUSTOMER_DETAILS_VIEW);
public WebElement assetDetailsView() {
return waitUntilPresenceOfElementLocated(ASSET_DETAILS_VIEW);
}
public WebElement customerDetailsAlarmsBtn() {
return waitUntilElementToBeClickable(CUSTOMER_DETAILS_ALARMS);
}
public void openAssetAlarms(String assetName) {
if (!customerDetailsView().isDisplayed()) {
entity(assetName).click();
}
customerDetailsAlarmsBtn().click();
public WebElement assetDetailsAlarmsBtn() {
return waitUntilElementToBeClickable(ASSET_DETAILS_ALARMS);
}
}

View File

@ -0,0 +1,32 @@
/**
* Copyright © 2016-2023 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.
*/
package org.thingsboard.server.msa.ui.pages;
import org.openqa.selenium.WebDriver;
public class AssetPageHelper extends AssetPageElements {
public AssetPageHelper(WebDriver driver) {
super(driver);
}
public void openAssetAlarms(String assetName) {
if (!assetDetailsView().isDisplayed()) {
entity(assetName).click();
}
assetDetailsAlarmsBtn().click();
}
}

View File

@ -18,7 +18,7 @@ package org.thingsboard.server.msa.ui.pages;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
public class DevicePageElements extends OtherPageElements{
public class DevicePageElements extends OtherPageElements {
public DevicePageElements(WebDriver driver) {
super(driver);
}
@ -32,6 +32,7 @@ public class DevicePageElements extends OtherPageElements{
private static final String CUSTOMER_FROM_ASSIGN_DROPDOWN = "//div[@role = 'listbox']//span[text() = '%s']";
private static final String CLOSE_DEVICE_DETAILS_VIEW = "//header//mat-icon[contains(text(),'close')]/parent::button";
private static final String SUBMIT_ASSIGN_TO_CUSTOMER_BTN = "//button[@type='submit']";
public WebElement device(String deviceName) {
return waitUntilElementToBeClickable(String.format(DEVICE, deviceName));
}

View File

@ -0,0 +1,37 @@
/**
* Copyright © 2016-2023 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.
*/
package org.thingsboard.server.msa.ui.pages;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
public class EntityViewPageElements extends OtherPageElementsHelper {
public EntityViewPageElements(WebDriver driver) {
super(driver);
}
private static final String ENTITY_VIEW_DETAILS_VIEW = "//tb-details-panel";
private static final String ENTITY_VIEW_DETAILS_ALARMS = ENTITY_VIEW_DETAILS_VIEW + "//span[text()='Alarms']";
public WebElement entityViewDetailsView() {
return waitUntilPresenceOfElementLocated(ENTITY_VIEW_DETAILS_VIEW);
}
public WebElement entityViewDetailsAlarmsBtn() {
return waitUntilElementToBeClickable(ENTITY_VIEW_DETAILS_ALARMS);
}
}

View File

@ -16,30 +16,17 @@
package org.thingsboard.server.msa.ui.pages;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
public class EntityViewPage extends OtherPageElementsHelper{
public EntityViewPage(WebDriver driver) {
public class EntityViewPageHelper extends EntityViewPageElements {
public EntityViewPageHelper(WebDriver driver) {
super(driver);
}
private static final String CUSTOMER_DETAILS_VIEW = "//tb-details-panel";
private static final String CUSTOMER_DETAILS_ALARMS = CUSTOMER_DETAILS_VIEW + "//span[text()='Alarms']";
public WebElement customerDetailsView() {
return waitUntilPresenceOfElementLocated(CUSTOMER_DETAILS_VIEW);
}
public WebElement customerDetailsAlarmsBtn() {
return waitUntilElementToBeClickable(CUSTOMER_DETAILS_ALARMS);
}
public void openEntityViewAlarms(String customerName) {
if (!customerDetailsView().isDisplayed()) {
if (!entityViewDetailsView().isDisplayed()) {
entity(customerName).click();
}
customerDetailsAlarmsBtn().click();
entityViewDetailsAlarmsBtn().click();
}
}

View File

@ -16,8 +16,6 @@
package org.thingsboard.server.msa.ui.pages;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.thingsboard.server.msa.ui.utils.Const;
public class LoginPageHelper extends LoginPageElements {
@ -25,18 +23,10 @@ public class LoginPageHelper extends LoginPageElements {
super(driver);
}
public void login(String username, String password) {
emailField().sendKeys(username);
passwordField().sendKeys(password);
public void authorizationTenant() {
emailField().sendKeys(Const.TENANT_EMAIL);
passwordField().sendKeys(Const.TENANT_PASSWORD);
submitBtn().click();
waitUntilUrlContainsText("/home");
}
public void authorizationTenant() {
login(Const.TENANT_EMAIL, Const.TENANT_PASSWORD);
}
public void authorizationCustomer() {
login("customer@thingsboard.org", "customer");
}
}

View File

@ -24,8 +24,8 @@ import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DeviceId;
import org.thingsboard.server.common.data.id.UserId;
import org.thingsboard.server.msa.ui.base.AbstractDriverBaseTest;
import org.thingsboard.server.msa.ui.pages.AlarmDetailsEntityTabHelper;
import org.thingsboard.server.msa.ui.pages.AlarmDetailsViewHelper;
import org.thingsboard.server.msa.ui.pages.AlarmHelper;
import org.thingsboard.server.msa.ui.pages.CustomerPageHelper;
import org.thingsboard.server.msa.ui.pages.DevicePageHelper;
import org.thingsboard.server.msa.ui.pages.LoginPageHelper;
@ -39,56 +39,68 @@ abstract public class AbstractAssignTest extends AbstractDriverBaseTest {
protected AlarmId alarmId;
protected AlarmId assignedAlarmId;
protected DeviceId deviceId;
protected UserId userId;
protected UserId userWithNameId;
protected CustomerId customerId;
protected String deviceName;
protected String userName;
protected String customerTitle;
protected String userEmail;
protected String userWithNameEmail;
protected String alarmType;
protected String assignedAlarmType;
protected SideBarMenuViewHelper sideBarMenuView;
protected AlarmHelper alarmPage;
protected AlarmDetailsEntityTabHelper alarmPage;
protected DevicePageHelper devicePage;
protected CustomerPageHelper customerPage;
protected AlarmDetailsViewHelper alarmDetailsView;
protected String userName = "User " + random();
protected String customerTitle = "Customer " + random();
protected String userEmail = random() + "@thingsboard.org";
protected String userWithNameEmail = random() + "@thingsboard.org";
protected String alarm = "Test alarm " + random();
protected String assignedAlarm = "Test assigned alarm " + random();
@BeforeClass
public void generateTestEntity() {
public void generateCommonTestEntity() {
new LoginPageHelper(driver).authorizationTenant();
sideBarMenuView = new SideBarMenuViewHelper(driver);
alarmPage = new AlarmHelper(driver);
alarmPage = new AlarmDetailsEntityTabHelper(driver);
devicePage = new DevicePageHelper(driver);
customerPage = new CustomerPageHelper(driver);
alarmDetailsView = new AlarmDetailsViewHelper(driver);
userName = "User " + random();
customerTitle = "Customer " + random();
userEmail = random() + "@thingsboard.org";
userWithNameEmail = random() + "@thingsboard.org";
alarmType = "Test alarm " + random();
assignedAlarmType = "Test assigned alarm " + random();
customerId = testRestClient.postCustomer(EntityPrototypes.defaultCustomerPrototype(customerTitle)).getId();
userId = testRestClient.postUser(EntityPrototypes.defaultUser(userEmail, getCustomerByName(customerTitle).getId())).getId();
userWithNameId = testRestClient.postUser(EntityPrototypes.defaultUser(userWithNameEmail, getCustomerByName(customerTitle).getId(), userName)).getId();
deviceName = testRestClient.postDevice("", EntityPrototypes.defaultDevicePrototype("", customerId)).getName();
deviceName = testRestClient.postDevice("", EntityPrototypes.defaultDevicePrototype("Device ", customerId)).getName();
deviceId = testRestClient.getDeviceByName(deviceName).getId();
}
@AfterClass
public void deleteEntities() {
public void deleteCommonEntities() {
testRestClient.deleteCustomer(customerId);
testRestClient.deleteDevice(deviceId);
}
@BeforeMethod
public void createTestAlarms() {
alarmId = testRestClient.postAlarm(EntityPrototypes.defaultAlarm(deviceId, alarm)).getId();
assignedAlarmId = testRestClient.postAlarm(EntityPrototypes.defaultAlarm(deviceId, assignedAlarm, userId)).getId();
public void createCommonTestAlarms() {
alarmId = testRestClient.postAlarm(EntityPrototypes.defaultAlarm(deviceId, alarmType)).getId();
assignedAlarmId = testRestClient.postAlarm(EntityPrototypes.defaultAlarm(deviceId, assignedAlarmType, userId)).getId();
}
@AfterMethod
public void deleteCreatedAlarms() {
public void deleteCommonCreatedAlarms() {
testRestClient.deleteAlarm(alarmId);
testRestClient.deleteAlarm(assignedAlarmId);
}
public void loginByUser(String userEmail) {
sideBarMenuView.customerBtn().click();
customerPage.manageCustomersUserBtn(customerTitle).click();
customerPage.getUserLoginBtnByEmail(userEmail).click();
}
}

View File

@ -24,8 +24,8 @@ import org.testng.annotations.Test;
import org.thingsboard.server.common.data.id.AlarmId;
import org.thingsboard.server.common.data.id.AssetId;
import org.thingsboard.server.common.data.id.EntityViewId;
import org.thingsboard.server.msa.ui.pages.AssetPageElements;
import org.thingsboard.server.msa.ui.pages.EntityViewPage;
import org.thingsboard.server.msa.ui.pages.AssetPageHelper;
import org.thingsboard.server.msa.ui.pages.EntityViewPageHelper;
import org.thingsboard.server.msa.ui.utils.Const;
import org.thingsboard.server.msa.ui.utils.EntityPrototypes;
@ -34,36 +34,49 @@ import static org.thingsboard.server.msa.ui.base.AbstractBasePage.random;
public class AssignDetailsTabAssignTest extends AbstractAssignTest {
private AssetId assetId;
private AlarmId propageteAlarmId;
private AlarmId propageteAssigneAlarmId;
private AlarmId customerAlarmId;
private AlarmId assetAlarmId;
private AlarmId entityViewAlarmId;
private EntityViewId entityViewId;
private String assetName;
private String entityViewName;
private final String propagateAlarm = "Test propagated alarm 1 " + random();
private final String propagateAssignedAlarm = "Test propagated alarm 2 " + random();
private final String customerAlarm = "Test customer alarm" + random();
private final String assetAlarm = "Test asset alarm" + random();
private final String entityViewAlarm = "Test entity view alarm" + random();
private AssetId assetId;
private EntityViewId entityViewId;
private String propagateAlarmType;
private String propagateAssignedAlarmType;
private String customerAlarmType;
private String assetAlarmType;
private String entityViewAlarmType;
private AssetPageHelper assetPage;
private EntityViewPageHelper entityViewPage;
@BeforeClass
public void generateTestEntities() {
customerAlarmId = testRestClient.postAlarm(EntityPrototypes.defaultAlarm(customerId, customerAlarm)).getId();
assetId = testRestClient.postAsset(EntityPrototypes.defaultAssetPrototype("", customerId)).getId();
assetPage = new AssetPageHelper(driver);
entityViewPage = new EntityViewPageHelper(driver);
customerAlarmType = "Test customer alarm" + random();
assetAlarmType = "Test asset alarm" + random();
entityViewAlarmType = "Test entity view alarm" + random();
propagateAlarmType = "Test propagated alarm " + random();
propagateAssignedAlarmType = "Test propagated alarm " + random();
customerAlarmId = testRestClient.postAlarm(EntityPrototypes.defaultAlarm(customerId, customerAlarmType)).getId();
assetId = testRestClient.postAsset(EntityPrototypes.defaultAssetPrototype("Asset", customerId)).getId();
assetName = testRestClient.getAssetById(assetId).getName();
assetAlarmId = testRestClient.postAlarm(EntityPrototypes.defaultAlarm(assetId, assetAlarm)).getId();
entityViewId = testRestClient.postEntityView(EntityPrototypes.defaultEntityViewPrototype("", "", "DEVICE")).getId();
assetAlarmId = testRestClient.postAlarm(EntityPrototypes.defaultAlarm(assetId, assetAlarmType)).getId();
entityViewId = testRestClient.postEntityView(EntityPrototypes.defaultEntityViewPrototype("Entity view", "", "DEVICE")).getId();
entityViewName = testRestClient.getEntityViewById(entityViewId).getName();
entityViewAlarmId = testRestClient.postAlarm(EntityPrototypes.defaultAlarm(entityViewId, entityViewAlarm)).getId();
entityViewAlarmId = testRestClient.postAlarm(EntityPrototypes.defaultAlarm(entityViewId, entityViewAlarmType)).getId();
}
@BeforeMethod
public void generateTestAlarms() {
propageteAlarmId = testRestClient.postAlarm(EntityPrototypes.defaultAlarm(deviceId, propagateAlarm, true)).getId();
propageteAssigneAlarmId = testRestClient.postAlarm(EntityPrototypes.defaultAlarm(deviceId, propagateAssignedAlarm, userId, true)).getId();
propageteAlarmId = testRestClient.postAlarm(EntityPrototypes.defaultAlarm(deviceId, propagateAlarmType, true)).getId();
propageteAssigneAlarmId = testRestClient.postAlarm(EntityPrototypes.defaultAlarm(deviceId, propagateAssignedAlarmType, userId, true)).getId();
}
@AfterClass
@ -84,15 +97,15 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
@DataProvider
public Object[][] alarms() {
return new Object[][]{
{alarm},
{propagateAlarm}};
{alarmType},
{propagateAlarmType}};
}
@DataProvider
public Object[][] assignedAlarms() {
return new Object[][]{
{assignedAlarm},
{propagateAssignedAlarm}};
{assignedAlarmType},
{propagateAssignedAlarmType}};
}
@Test(dataProvider = "alarms")
@ -135,7 +148,7 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
public void searchByEmail() {
sideBarMenuView.goToDevicesPage();
devicePage.openDeviceAlarms(deviceName);
alarmPage.searchAlarm(alarm, Const.TENANT_EMAIL);
alarmPage.searchAlarm(alarmType, Const.TENANT_EMAIL);
alarmPage.setUsers();
assertThat(alarmPage.getUsers()).hasSize(1).as("Search result contains search input").contains(Const.TENANT_EMAIL);
@ -146,7 +159,7 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
public void searchByName() {
sideBarMenuView.goToDevicesPage();
devicePage.openDeviceAlarms(deviceName);
alarmPage.searchAlarm(alarm, userName);
alarmPage.searchAlarm(alarmType, userName);
alarmPage.setUsers();
assertThat(alarmPage.getUsers()).hasSize(1).as("Search result contains search input").contains(userName);
@ -157,7 +170,7 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
public void assignAlarmToYourselfFromDetails() {
sideBarMenuView.goToDevicesPage();
devicePage.openDeviceAlarms(deviceName);
alarmPage.alarmDetailsBtn(alarm).click();
alarmPage.alarmDetailsBtn(alarmType).click();
alarmDetailsView.assignAlarmTo(Const.TENANT_EMAIL);
alarmDetailsView.closeAlarmDetailsViewBtn().click();
@ -168,7 +181,7 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
public void assignAlarmToAnotherUserFromDetails() {
sideBarMenuView.goToDevicesPage();
devicePage.openDeviceAlarms(deviceName);
alarmPage.alarmDetailsBtn(alarm).click();
alarmPage.alarmDetailsBtn(alarmType).click();
alarmDetailsView.assignAlarmTo(userEmail);
alarmDetailsView.closeAlarmDetailsViewBtn().click();
@ -179,18 +192,18 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
public void unassignedAlarmFromDetails() {
sideBarMenuView.goToDevicesPage();
devicePage.openDeviceAlarms(deviceName);
alarmPage.alarmDetailsBtn(assignedAlarm).click();
alarmPage.alarmDetailsBtn(assignedAlarmType).click();
alarmDetailsView.unassignedAlarm();
alarmDetailsView.closeAlarmDetailsViewBtn().click();
assertIsDisplayed(alarmPage.unassigned(assignedAlarm));
assertIsDisplayed(alarmPage.unassigned(assignedAlarmType));
}
@Test
public void reassignAlarmFromDetails() {
sideBarMenuView.goToDevicesPage();
devicePage.openDeviceAlarms(deviceName);
alarmPage.alarmDetailsBtn(assignedAlarm).click();
alarmPage.alarmDetailsBtn(assignedAlarmType).click();
alarmDetailsView.assignAlarmTo(Const.TENANT_EMAIL);
alarmDetailsView.closeAlarmDetailsViewBtn().click();
@ -201,27 +214,25 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
public void assignCustomerAlarmToYourself() {
sideBarMenuView.customerBtn().click();
customerPage.openCustomerAlarms(customerTitle);
alarmPage.assignAlarmTo(customerAlarm, Const.TENANT_EMAIL);
alarmPage.assignAlarmTo(customerAlarmType, Const.TENANT_EMAIL);
assertIsDisplayed(alarmPage.assignedUser(Const.TENANT_EMAIL));
}
@Test
public void assignAssetAlarmToYourself() {
AssetPageElements assetPageElements = new AssetPageElements(driver);
sideBarMenuView.goToAssetsPage();
assetPageElements.openAssetAlarms(assetName);
alarmPage.assignAlarmTo(assetAlarm, Const.TENANT_EMAIL);
assetPage.openAssetAlarms(assetName);
alarmPage.assignAlarmTo(assetAlarmType, Const.TENANT_EMAIL);
assertIsDisplayed(alarmPage.assignedUser(Const.TENANT_EMAIL));
}
@Test
public void assignEntityViewsAlarmToYourself() {
EntityViewPage entityViewPage = new EntityViewPage(driver);
sideBarMenuView.goToEntityViewsPage();
entityViewPage.openEntityViewAlarms(entityViewName);
alarmPage.assignAlarmTo(entityViewAlarm, Const.TENANT_EMAIL);
alarmPage.assignAlarmTo(entityViewAlarmType, Const.TENANT_EMAIL);
assertIsDisplayed(alarmPage.assignedUser(Const.TENANT_EMAIL));
}

View File

@ -28,29 +28,26 @@ import static org.thingsboard.server.msa.ui.base.AbstractBasePage.random;
public class AssignDetailsTabFromCustomerAssignTest extends AbstractAssignTest {
AlarmId tenantAlarmId;
DeviceId tenantDeviceId;
String tenantDeviceName;
String tenantAlarm = "Test tenant alarm " + random();
private AlarmId tenantAlarmId;
private DeviceId tenantDeviceId;
private String tenantDeviceName;
public void loginByUser(String userEmail) {
sideBarMenuView.customerBtn().click();
customerPage.manageCustomersUserBtn(customerTitle).click();
customerPage.getUserLoginBtnByEmail(userEmail).click();
}
private String tenantAlarmType;
@BeforeMethod
public void generateTenantEntity() {
if (getJwtTokenFromLocalStorage() == null) {
new LoginPageHelper(driver).authorizationTenant();
}
tenantAlarmType = "Test tenant alarm " + random();
tenantDeviceName = testRestClient.postDevice("", EntityPrototypes.defaultDevicePrototype("")).getName();
tenantDeviceId = testRestClient.getDeviceByName(tenantDeviceName).getId();
tenantAlarmId = testRestClient.postAlarm(EntityPrototypes.defaultAlarm(tenantDeviceId, tenantAlarm)).getId();
tenantAlarmId = testRestClient.postAlarm(EntityPrototypes.defaultAlarm(tenantDeviceId, tenantAlarmType)).getId();
}
@AfterMethod
public void clear() {
public void deleteTenantEntity() {
testRestClient.deleteAlarm(tenantAlarmId);
testRestClient.deleteDevice(tenantDeviceId);
clearStorage();
@ -61,7 +58,7 @@ public class AssignDetailsTabFromCustomerAssignTest extends AbstractAssignTest {
loginByUser(userEmail);
sideBarMenuView.goToDevicesPage();
devicePage.openDeviceAlarms(deviceName);
alarmPage.assignAlarmTo(alarm, userEmail);
alarmPage.assignAlarmTo(alarmType, userEmail);
assertIsDisplayed(alarmPage.assignedUser(userEmail));
}
@ -71,7 +68,7 @@ public class AssignDetailsTabFromCustomerAssignTest extends AbstractAssignTest {
loginByUser(userWithNameEmail);
sideBarMenuView.goToDevicesPage();
devicePage.openDeviceAlarms(deviceName);
alarmPage.assignAlarmTo(assignedAlarm, userName);
alarmPage.assignAlarmTo(assignedAlarmType, userName);
assertIsDisplayed(alarmPage.assignedUser(userName));
}
@ -81,9 +78,9 @@ public class AssignDetailsTabFromCustomerAssignTest extends AbstractAssignTest {
loginByUser(userWithNameEmail);
sideBarMenuView.goToDevicesPage();
devicePage.openDeviceAlarms(deviceName);
alarmPage.unassignedAlarm(assignedAlarm);
alarmPage.unassignedAlarm(assignedAlarmType);
assertIsDisplayed(alarmPage.unassigned(assignedAlarm));
assertIsDisplayed(alarmPage.unassigned(assignedAlarmType));
}
@Test
@ -91,16 +88,16 @@ public class AssignDetailsTabFromCustomerAssignTest extends AbstractAssignTest {
loginByUser(userEmail);
sideBarMenuView.goToDevicesPage();
devicePage.openDeviceAlarms(deviceName);
alarmPage.unassignedAlarm(assignedAlarm);
alarmPage.unassignedAlarm(assignedAlarmType);
assertIsDisplayed(alarmPage.unassigned(assignedAlarm));
assertIsDisplayed(alarmPage.unassigned(assignedAlarmType));
}
@Test
public void checkTheDisplayOfNamesEmailsFromCustomer() {
sideBarMenuView.goToDevicesPage();
devicePage.openDeviceAlarms(tenantDeviceName);
alarmPage.assignAlarmTo(tenantAlarm, Const.TENANT_EMAIL);
alarmPage.assignAlarmTo(tenantAlarmType, Const.TENANT_EMAIL);
devicePage.closeDeviceDetailsViewBtn().click();
devicePage.assignToCustomerBtn(tenantDeviceName).click();
devicePage.assignToCustomer(customerTitle);
@ -115,14 +112,14 @@ public class AssignDetailsTabFromCustomerAssignTest extends AbstractAssignTest {
public void reassignTenantForOldAlarm() {
sideBarMenuView.goToDevicesPage();
devicePage.openDeviceAlarms(tenantDeviceName);
alarmPage.assignAlarmTo(tenantAlarm, Const.TENANT_EMAIL);
alarmPage.assignAlarmTo(tenantAlarmType, Const.TENANT_EMAIL);
devicePage.closeDeviceDetailsViewBtn().click();
devicePage.assignToCustomerBtn(tenantDeviceName).click();
devicePage.assignToCustomer(customerTitle);
loginByUser(userEmail);
sideBarMenuView.goToDevicesPage();
devicePage.openDeviceAlarms(tenantDeviceName);
alarmPage.assignBtn(tenantAlarm).click();
jsClick(alarmPage.assignBtn(tenantAlarmType));
assertIsDisplayed(alarmPage.accessForbiddenDialogView());
}

View File

@ -149,5 +149,4 @@ public class DataProviderCredential {
{description, newDescription, description + newDescription},
{description, Keys.CONTROL + "A" + Keys.BACK_SPACE, ""}};
}
}

View File

@ -18,11 +18,11 @@
-->
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Customer Smoke Tests">
<suite name="Assignee ui tests">
<listeners>
<listener class-name="org.thingsboard.server.msa.ui.listeners.RetryTestListener"/>
</listeners>
<test name="Customer ui smoke tests">
<test name="Assignee ui tests">
<groups>
<run>
<exclude name="broken"/>