From 2eecf7f066f02901ca8536afd899d4c6ff73edb1 Mon Sep 17 00:00:00 2001 From: Seraphym-Tuhai Date: Tue, 18 Apr 2023 13:52:49 +0300 Subject: [PATCH] refactoring --- .../msa/ui/base/AbstractDriverBaseTest.java | 40 +++++----- ...ava => AlarmDetailsEntityTabElements.java} | 9 ++- ....java => AlarmDetailsEntityTabHelper.java} | 9 +-- .../ui/pages/AlarmDetailsViewElements.java | 1 - .../msa/ui/pages/AlarmDetailsViewHelper.java | 2 +- .../msa/ui/pages/AssetPageElements.java | 21 ++--- .../server/msa/ui/pages/AssetPageHelper.java | 32 ++++++++ .../msa/ui/pages/DevicePageElements.java | 3 +- .../msa/ui/pages/EntityViewPageElements.java | 37 +++++++++ ...iewPage.java => EntityViewPageHelper.java} | 21 +---- .../server/msa/ui/pages/LoginPageHelper.java | 16 +--- .../ui/tests/assignee/AbstractAssignTest.java | 48 +++++++----- .../assignee/AssignDetailsTabAssignTest.java | 77 +++++++++++-------- ...ssignDetailsTabFromCustomerAssignTest.java | 37 ++++----- .../msa/ui/utils/DataProviderCredential.java | 1 - .../src/test/resources/assignee.xml | 4 +- 16 files changed, 211 insertions(+), 147 deletions(-) rename msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/{AlarmElements.java => AlarmDetailsEntityTabElements.java} (90%) rename msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/{AlarmHelper.java => AlarmDetailsEntityTabHelper.java} (88%) create mode 100644 msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AssetPageHelper.java create mode 100644 msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/EntityViewPageElements.java rename msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/{EntityViewPage.java => EntityViewPageHelper.java} (55%) diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java index 3073ce506d..195d3367b8 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/base/AbstractDriverBaseTest.java @@ -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; + } } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AlarmElements.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AlarmDetailsEntityTabElements.java similarity index 90% rename from msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AlarmElements.java rename to msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AlarmDetailsEntityTabElements.java index 87baef8594..318b59965b 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AlarmElements.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AlarmDetailsEntityTabElements.java @@ -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); + } } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AlarmHelper.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AlarmDetailsEntityTabHelper.java similarity index 88% rename from msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AlarmHelper.java rename to msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AlarmDetailsEntityTabHelper.java index 7abb0006db..eac0ab889e 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AlarmHelper.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AlarmDetailsEntityTabHelper.java @@ -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); } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AlarmDetailsViewElements.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AlarmDetailsViewElements.java index 6e1e38a226..ced7ef43fc 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AlarmDetailsViewElements.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AlarmDetailsViewElements.java @@ -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"; diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AlarmDetailsViewHelper.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AlarmDetailsViewHelper.java index 89d572cf3c..63266804c1 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AlarmDetailsViewHelper.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AlarmDetailsViewHelper.java @@ -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); } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AssetPageElements.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AssetPageElements.java index f4424894dd..2c54cd4682 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AssetPageElements.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AssetPageElements.java @@ -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); } } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AssetPageHelper.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AssetPageHelper.java new file mode 100644 index 0000000000..4e7a8c04e7 --- /dev/null +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/AssetPageHelper.java @@ -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(); + } + +} diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/DevicePageElements.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/DevicePageElements.java index f5e6c2800a..b8fbda5135 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/DevicePageElements.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/DevicePageElements.java @@ -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)); } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/EntityViewPageElements.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/EntityViewPageElements.java new file mode 100644 index 0000000000..0de6773bd1 --- /dev/null +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/EntityViewPageElements.java @@ -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); + } + +} diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/EntityViewPage.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/EntityViewPageHelper.java similarity index 55% rename from msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/EntityViewPage.java rename to msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/EntityViewPageHelper.java index b62c13d8a7..d5a17e8c1f 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/EntityViewPage.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/EntityViewPageHelper.java @@ -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(); } } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/LoginPageHelper.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/LoginPageHelper.java index 5044ee1a65..83666006c2 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/LoginPageHelper.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/LoginPageHelper.java @@ -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"); - } } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/assignee/AbstractAssignTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/assignee/AbstractAssignTest.java index 182bf04fb4..5f45959d5d 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/assignee/AbstractAssignTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/assignee/AbstractAssignTest.java @@ -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(); + } } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/assignee/AssignDetailsTabAssignTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/assignee/AssignDetailsTabAssignTest.java index 5f65c94810..44d664af7a 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/assignee/AssignDetailsTabAssignTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/assignee/AssignDetailsTabAssignTest.java @@ -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)); } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/assignee/AssignDetailsTabFromCustomerAssignTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/assignee/AssignDetailsTabFromCustomerAssignTest.java index 7696b4cbe8..eb4918876b 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/assignee/AssignDetailsTabFromCustomerAssignTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/assignee/AssignDetailsTabFromCustomerAssignTest.java @@ -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()); } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/utils/DataProviderCredential.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/utils/DataProviderCredential.java index bce6e071f4..73783544a1 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/utils/DataProviderCredential.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/utils/DataProviderCredential.java @@ -149,5 +149,4 @@ public class DataProviderCredential { {description, newDescription, description + newDescription}, {description, Keys.CONTROL + "A" + Keys.BACK_SPACE, ""}}; } - } diff --git a/msa/black-box-tests/src/test/resources/assignee.xml b/msa/black-box-tests/src/test/resources/assignee.xml index 52499824cd..e0615ffefc 100644 --- a/msa/black-box-tests/src/test/resources/assignee.xml +++ b/msa/black-box-tests/src/test/resources/assignee.xml @@ -18,11 +18,11 @@ --> - + - +