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 6384e17426..35639bc19f 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 @@ -117,7 +117,7 @@ abstract public class AbstractBasePage { try { return wait.until(ExpectedConditions.not(ExpectedConditions.visibilityOfElementLocated(By.xpath(locator)))); } catch (WebDriverException e) { - return fail("Element is present"); + return fail("Element is present: " + locator); } } @@ -125,7 +125,7 @@ abstract public class AbstractBasePage { try { return wait.until(ExpectedConditions.not(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath(locator)))); } catch (WebDriverException e) { - return fail("Elements is present"); + return fail("Elements is present: " + locator); } } 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 e88397b781..85493f39a3 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 @@ -47,8 +47,11 @@ import java.io.ByteArrayInputStream; import java.net.MalformedURLException; import java.net.URL; import java.time.Duration; +import java.util.List; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; +import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.fail; import static org.thingsboard.server.msa.TestProperties.getBaseUiUrl; import static org.thingsboard.server.msa.ui.utils.Const.TENANT_EMAIL; @@ -62,9 +65,11 @@ 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); @BeforeClass public void startUp() throws MalformedURLException { @@ -102,8 +107,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() { @@ -119,7 +123,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) { @@ -129,21 +133,22 @@ 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) { - try { - return testRestClient.getRuleChains(pageLink).getData().stream() - .filter(s -> s.getName().equals(name)).collect(Collectors.toList()).get(0); - } catch (Exception e) { - log.error("No such rule chain with name: " + name); - return null; - } + public RuleChain getRuleChainByName(String name) { + return testRestClient.getRuleChains(pageLink).getData().stream() + .filter(s -> s.getName().equals(name)) + .findFirst().orElse(null); } - public static Customer getCustomerByName(String name) { + public List getRuleChainsByName(String name) { + return testRestClient.getRuleChains(pageLink).getData().stream() + .filter(s -> s.getName().equals(name)) + .collect(Collectors.toList()); + } + + public Customer getCustomerByName(String name) { try { return testRestClient.getCustomers(pageLink).getData().stream() .filter(x -> x.getName().equals(name)).collect(Collectors.toList()).get(0); @@ -153,7 +158,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); @@ -163,7 +168,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); @@ -179,4 +184,30 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest { new ByteArrayInputStream(((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES))); } } + + public JavascriptExecutor getJs() { + return js = (JavascriptExecutor) driver; + } + + public void assertIsDisplayed(WebElement element) { + assertThat(element.isDisplayed()).as(element + " is displayed").isTrue(); + } + + public void assertIsDisable(WebElement element) { + assertThat(element.isEnabled()).as(element + " is disabled").isFalse(); + } + + public void deleteRuleChainByName(String ruleChainName) { + List ruleChains = getRuleChainsByName(ruleChainName); + if (!ruleChains.isEmpty()) { + ruleChains.forEach(rc -> testRestClient.deleteRuleChain(rc.getId())); + } + } + + public void setRootRuleChain(String ruleChainName) { + List ruleChains = getRuleChainsByName(ruleChainName); + if (!ruleChains.isEmpty()) { + testRestClient.setRootRuleChain(ruleChains.stream().findFirst().get().getId()); + } + } } 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 7cb5da3bc6..3fd43aa140 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 @@ -33,7 +33,7 @@ public class OtherPageElements extends AbstractBasePage { private static final String ENTITY_COUNT = "//div[@class='mat-paginator-range-label']"; private static final String WARNING_DELETE_POPUP_YES = "//tb-confirm-dialog//button[2]"; private static final String WARNING_DELETE_POPUP_TITLE = "//tb-confirm-dialog/h2"; - private static final String REFRESH_BTN = "//mat-icon[contains(text(),'refresh')]/.."; + private static final String REFRESH_BTN = "//mat-icon[contains(text(),'refresh')]/parent::button"; private static final String HELP_BTN = "//mat-icon[contains(text(),'help')]/ancestor::button"; private static final String CHECKBOX = "//mat-row//span[contains(text(),'%s')]/../..//mat-checkbox"; private static final String CHECKBOXES = "//tbody//mat-checkbox"; diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/OtherPageElementsHelper.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/OtherPageElementsHelper.java index 815e118a9b..7323c2cd75 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/OtherPageElementsHelper.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/OtherPageElementsHelper.java @@ -15,8 +15,6 @@ */ package org.thingsboard.server.msa.ui.pages; -import org.openqa.selenium.By; -import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; public class OtherPageElementsHelper extends OtherPageElements { @@ -34,7 +32,7 @@ public class OtherPageElementsHelper extends OtherPageElements { return headerName; } - public boolean entityIsNotPresent(String entityName) { + public boolean assertEntityIsNotPresent(String entityName) { return elementIsNotPresent(getEntity(entityName)); } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/RuleChainsPageHelper.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/RuleChainsPageHelper.java index 489b7e61e3..6c822b93be 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/RuleChainsPageHelper.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/pages/RuleChainsPageHelper.java @@ -107,7 +107,7 @@ public class RuleChainsPageHelper extends RuleChainsPageElements { return wait.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath(getDeleteRuleChainFromViewBtn()))); } - public boolean ruleChainsIsNotPresent(String ruleChainName) { + public boolean assertRuleChainsIsNotPresent(String ruleChainName) { return elementsIsNotPresent(getEntity(ruleChainName)); } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/assetProfileSmoke/CreateAssetProfileImportTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/assetProfileSmoke/CreateAssetProfileImportTest.java index 8816f878e7..7c0e6dee8f 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/assetProfileSmoke/CreateAssetProfileImportTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/assetProfileSmoke/CreateAssetProfileImportTest.java @@ -98,7 +98,7 @@ public class CreateAssetProfileImportTest extends AbstractDriverBaseTest { Assert.assertNotNull(profilesPage.importingFile(EMPTY_IMPORT_MESSAGE)); Assert.assertTrue(profilesPage.importingFile(EMPTY_IMPORT_MESSAGE).isDisplayed()); - Assert.assertTrue(profilesPage.entityIsNotPresent(IMPORT_ASSET_PROFILE_NAME)); + Assert.assertTrue(profilesPage.assertEntityIsNotPresent(IMPORT_ASSET_PROFILE_NAME)); } @Epic("Asset profiles smoke") diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/assetProfileSmoke/DeleteAssetProfileTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/assetProfileSmoke/DeleteAssetProfileTest.java index 8241685a25..064aa89ff5 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/assetProfileSmoke/DeleteAssetProfileTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/assetProfileSmoke/DeleteAssetProfileTest.java @@ -55,7 +55,7 @@ public class DeleteAssetProfileTest extends AbstractDriverBaseTest { profilesPage.warningPopUpYesBtn().click(); profilesPage.refreshBtn(); - Assert.assertTrue(profilesPage.entityIsNotPresent(name)); + Assert.assertTrue(profilesPage.assertEntityIsNotPresent(name)); } @Epic("Asset profiles smoke") @@ -72,7 +72,7 @@ public class DeleteAssetProfileTest extends AbstractDriverBaseTest { profilesPage.warningPopUpYesBtn().click(); profilesPage.refreshBtn(); - Assert.assertTrue(profilesPage.entityIsNotPresent(name)); + Assert.assertTrue(profilesPage.assertEntityIsNotPresent(name)); } @Epic("Asset profiles smoke") @@ -89,7 +89,7 @@ public class DeleteAssetProfileTest extends AbstractDriverBaseTest { profilesPage.warningPopUpYesBtn().click(); profilesPage.refreshBtn(); - Assert.assertTrue(profilesPage.entityIsNotPresent(name)); + Assert.assertTrue(profilesPage.assertEntityIsNotPresent(name)); } @Epic("Asset profiles smoke") @@ -136,6 +136,6 @@ public class DeleteAssetProfileTest extends AbstractDriverBaseTest { profilesPage.deleteBtn(name).click(); profilesPage.warningPopUpYesBtn().click(); - Assert.assertTrue(profilesPage.entityIsNotPresent(name)); + Assert.assertTrue(profilesPage.assertEntityIsNotPresent(name)); } } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/customerSmoke/DeleteCustomerTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/customerSmoke/DeleteCustomerTest.java index 6421c30c31..4e6b02ace7 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/customerSmoke/DeleteCustomerTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/customerSmoke/DeleteCustomerTest.java @@ -57,7 +57,7 @@ public class DeleteCustomerTest extends AbstractDriverBaseTest { String deletedCustomer = customerPage.deleteRuleChainTrash(customer); customerPage.refreshBtn().click(); - Assert.assertTrue(customerPage.entityIsNotPresent(deletedCustomer)); + Assert.assertTrue(customerPage.assertEntityIsNotPresent(deletedCustomer)); } @Epic("Customers smoke tests") @@ -72,7 +72,7 @@ public class DeleteCustomerTest extends AbstractDriverBaseTest { String deletedCustomer = customerPage.deleteSelected(customerName); ruleChainsPage.refreshBtn().click(); - Assert.assertTrue(ruleChainsPage.entityIsNotPresent(deletedCustomer)); + Assert.assertTrue(ruleChainsPage.assertEntityIsNotPresent(deletedCustomer)); } @Epic("Customers smoke tests") @@ -89,7 +89,7 @@ public class DeleteCustomerTest extends AbstractDriverBaseTest { customerPage.warningPopUpYesBtn().click(); jsClick(customerPage.refreshBtn()); - Assert.assertTrue(customerPage.entityIsNotPresent(customerName)); + Assert.assertTrue(customerPage.assertEntityIsNotPresent(customerName)); } @Epic("Customers smoke tests") @@ -104,6 +104,6 @@ public class DeleteCustomerTest extends AbstractDriverBaseTest { String deletedCustomer = customerPage.deleteRuleChainTrash(customer); customerPage.refreshBtn().click(); - Assert.assertTrue(customerPage.entityIsNotPresent(deletedCustomer)); + Assert.assertTrue(customerPage.assertEntityIsNotPresent(deletedCustomer)); } } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/deviceProfileSmoke/CreateDeviceProfileImportTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/deviceProfileSmoke/CreateDeviceProfileImportTest.java index 436f19c3d4..5923335a83 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/deviceProfileSmoke/CreateDeviceProfileImportTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/deviceProfileSmoke/CreateDeviceProfileImportTest.java @@ -98,7 +98,7 @@ public class CreateDeviceProfileImportTest extends AbstractDriverBaseTest { Assert.assertNotNull(profilesPage.importingFile(EMPTY_IMPORT_MESSAGE)); Assert.assertTrue(profilesPage.importingFile(EMPTY_IMPORT_MESSAGE).isDisplayed()); - Assert.assertTrue(profilesPage.entityIsNotPresent(IMPORT_DEVICE_PROFILE_NAME)); + Assert.assertTrue(profilesPage.assertEntityIsNotPresent(IMPORT_DEVICE_PROFILE_NAME)); } @Epic("Device profile smoke tests") 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 index ccc97b8c94..b4161a762b 100644 --- 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 @@ -55,7 +55,7 @@ public class DeleteDeviceProfileTest extends AbstractDriverBaseTest { profilesPage.warningPopUpYesBtn().click(); profilesPage.refreshBtn(); - Assert.assertTrue(profilesPage.entityIsNotPresent(name)); + Assert.assertTrue(profilesPage.assertEntityIsNotPresent(name)); } @Epic("Device profile smoke tests") @@ -72,7 +72,7 @@ public class DeleteDeviceProfileTest extends AbstractDriverBaseTest { profilesPage.warningPopUpYesBtn().click(); profilesPage.refreshBtn(); - Assert.assertTrue(profilesPage.entityIsNotPresent(name)); + Assert.assertTrue(profilesPage.assertEntityIsNotPresent(name)); } @Epic("Device profile smoke tests") @@ -89,7 +89,7 @@ public class DeleteDeviceProfileTest extends AbstractDriverBaseTest { profilesPage.warningPopUpYesBtn().click(); profilesPage.refreshBtn(); - Assert.assertTrue(profilesPage.entityIsNotPresent(name)); + Assert.assertTrue(profilesPage.assertEntityIsNotPresent(name)); } @Epic("Device profile smoke tests") @@ -135,6 +135,6 @@ public class DeleteDeviceProfileTest extends AbstractDriverBaseTest { profilesPage.deleteBtn(name).click(); profilesPage.warningPopUpYesBtn().click(); - Assert.assertTrue(profilesPage.entityIsNotPresent(name)); + Assert.assertTrue(profilesPage.assertEntityIsNotPresent(name)); } } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/OpenRuleChainTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/OpenRuleChainTest.java deleted file mode 100644 index 220b718ae8..0000000000 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/OpenRuleChainTest.java +++ /dev/null @@ -1,96 +0,0 @@ -/** - * 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.tests.ruleChainsSmoke; - -import io.qameta.allure.Description; -import io.qameta.allure.Epic; -import io.qameta.allure.Feature; -import org.testng.Assert; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeClass; -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.OpenRuleChainPageHelper; -import org.thingsboard.server.msa.ui.pages.RuleChainsPageHelper; -import org.thingsboard.server.msa.ui.pages.SideBarMenuViewElements; -import org.thingsboard.server.msa.ui.utils.EntityPrototypes; - -import static org.thingsboard.server.msa.ui.base.AbstractBasePage.random; -import static org.thingsboard.server.msa.ui.utils.Const.ENTITY_NAME; - -public class OpenRuleChainTest extends AbstractDriverBaseTest { - - private SideBarMenuViewElements sideBarMenuView; - private RuleChainsPageHelper ruleChainsPage; - private OpenRuleChainPageHelper openRuleChainPage; - private String ruleChainName; - - @BeforeClass - public void login() { - new LoginPageHelper(driver).authorizationTenant(); - sideBarMenuView = new SideBarMenuViewElements(driver); - ruleChainsPage = new RuleChainsPageHelper(driver); - openRuleChainPage = new OpenRuleChainPageHelper(driver); - } - - @AfterMethod - public void delete() { - if (ruleChainName != null) { - testRestClient.deleteRuleChain(getRuleChainByName(ruleChainName).getId()); - ruleChainName = null; - } - } - - @Epic("Rule chains smoke tests") - @Feature("Open rule chain") - @Test(priority = 10, groups = "smoke") - @Description("Open the rule chain by clicking on its name") - public void openRuleChainByRightCornerBtn() { - String ruleChainName = ENTITY_NAME + random(); - testRestClient.postRuleChain(EntityPrototypes.defaultRuleChainPrototype(ruleChainName)); - this.ruleChainName = ruleChainName; - - sideBarMenuView.ruleChainsBtn().click(); - ruleChainsPage.entity(ruleChainName).click(); - openRuleChainPage.setHeadName(); - - Assert.assertTrue(urlContains(String.valueOf(getRuleChainByName(ruleChainName).getId()))); - Assert.assertTrue(openRuleChainPage.headRuleChainName().isDisplayed()); - Assert.assertTrue(openRuleChainPage.inputNode().isDisplayed()); - Assert.assertEquals(ruleChainName, openRuleChainPage.getHeadName()); - } - - @Epic("Rule chains smoke tests") - @Feature("Open rule chain") - @Test(priority = 10, groups = "smoke") - @Description("Open the rule chain by clicking on the 'Open rule chain' button in the entity view") - public void openRuleChainByViewBtn() { - String ruleChainName = ENTITY_NAME + random(); - testRestClient.postRuleChain(EntityPrototypes.defaultRuleChainPrototype(ruleChainName)); - this.ruleChainName = ruleChainName; - - sideBarMenuView.ruleChainsBtn().click(); - ruleChainsPage.detailsBtn(ruleChainName).click(); - ruleChainsPage.openRuleChainFromViewBtn().click(); - openRuleChainPage.setHeadName(); - - Assert.assertTrue(urlContains(String.valueOf(getRuleChainByName(ruleChainName).getId()))); - Assert.assertTrue(openRuleChainPage.headRuleChainName().isDisplayed()); - Assert.assertTrue(openRuleChainPage.inputNode().isDisplayed()); - Assert.assertEquals(ruleChainName, openRuleChainPage.getHeadName()); - } -} diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/AbstractRuleChainTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/AbstractRuleChainTest.java new file mode 100644 index 0000000000..eb06858125 --- /dev/null +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/AbstractRuleChainTest.java @@ -0,0 +1,49 @@ +/** + * 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.tests.rulechainssmoke; + +import io.qameta.allure.Epic; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeClass; +import org.thingsboard.server.msa.ui.base.AbstractDriverBaseTest; +import org.thingsboard.server.msa.ui.pages.LoginPageHelper; +import org.thingsboard.server.msa.ui.pages.OpenRuleChainPageHelper; +import org.thingsboard.server.msa.ui.pages.RuleChainsPageHelper; +import org.thingsboard.server.msa.ui.pages.SideBarMenuViewElements; + +@Epic("Rule chains smoke tests") +abstract public class AbstractRuleChainTest extends AbstractDriverBaseTest { + + protected SideBarMenuViewElements sideBarMenuView; + protected RuleChainsPageHelper ruleChainsPage; + protected OpenRuleChainPageHelper openRuleChainPage; + protected String ruleChainName; + + @BeforeClass + public void login() { + new LoginPageHelper(driver).authorizationTenant(); + sideBarMenuView = new SideBarMenuViewElements(driver); + ruleChainsPage = new RuleChainsPageHelper(driver); + openRuleChainPage = new OpenRuleChainPageHelper(driver); + } + + @AfterMethod + public void delete() { + deleteRuleChainByName(ruleChainName); + ruleChainName = null; + } +} + diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/CreateRuleChainImportTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/CreateRuleChainImportTest.java similarity index 53% rename from msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/CreateRuleChainImportTest.java rename to msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/CreateRuleChainImportTest.java index dd2f8a5895..53ec75697e 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/CreateRuleChainImportTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/CreateRuleChainImportTest.java @@ -13,56 +13,26 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.thingsboard.server.msa.ui.tests.ruleChainsSmoke; +package org.thingsboard.server.msa.ui.tests.rulechainssmoke; import io.qameta.allure.Description; -import io.qameta.allure.Epic; import io.qameta.allure.Feature; import org.openqa.selenium.WebElement; -import org.testng.Assert; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeClass; 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.OpenRuleChainPageHelper; -import org.thingsboard.server.msa.ui.pages.RuleChainsPageHelper; -import org.thingsboard.server.msa.ui.pages.SideBarMenuViewElements; - -import java.util.ArrayList; +import static org.assertj.core.api.Assertions.assertThat; import static org.thingsboard.server.msa.ui.utils.Const.EMPTY_IMPORT_MESSAGE; import static org.thingsboard.server.msa.ui.utils.Const.IMPORT_RULE_CHAIN_FILE_NAME; import static org.thingsboard.server.msa.ui.utils.Const.IMPORT_RULE_CHAIN_NAME; import static org.thingsboard.server.msa.ui.utils.Const.IMPORT_TXT_FILE_NAME; import static org.thingsboard.server.msa.ui.utils.EntityPrototypes.defaultRuleChainPrototype; -public class CreateRuleChainImportTest extends AbstractDriverBaseTest { - private SideBarMenuViewElements sideBarMenuView; - private RuleChainsPageHelper ruleChainsPage; - private OpenRuleChainPageHelper openRuleChainPage; +@Feature("Import rule chain") +public class CreateRuleChainImportTest extends AbstractRuleChainTest { + private final String absolutePathToFileImportRuleChain = getClass().getClassLoader().getResource(IMPORT_RULE_CHAIN_FILE_NAME).getPath(); private final String absolutePathToFileImportTxt = getClass().getClassLoader().getResource(IMPORT_TXT_FILE_NAME).getPath(); - private String ruleChainName; - @BeforeClass - public void login() { - new LoginPageHelper(driver).authorizationTenant(); - sideBarMenuView = new SideBarMenuViewElements(driver); - ruleChainsPage = new RuleChainsPageHelper(driver); - openRuleChainPage = new OpenRuleChainPageHelper(driver); - } - - @AfterMethod - public void delete() { - if (ruleChainName != null) { - testRestClient.deleteRuleChain(getRuleChainByName(ruleChainName).getId()); - ruleChainName = null; - } - } - - @Epic("Rule chains smoke tests") - @Feature("Import rule chain") @Test(priority = 10, groups = "smoke") @Description("Drop json file") public void importRuleChain() { @@ -70,12 +40,9 @@ public class CreateRuleChainImportTest extends AbstractDriverBaseTest { ruleChainsPage.openImportRuleChainView(); ruleChainsPage.browseFile().sendKeys(absolutePathToFileImportRuleChain); - Assert.assertNotNull(ruleChainsPage.importingFile(IMPORT_RULE_CHAIN_FILE_NAME)); - Assert.assertTrue(ruleChainsPage.importingFile(IMPORT_RULE_CHAIN_FILE_NAME).isDisplayed()); + assertIsDisplayed(ruleChainsPage.importingFile(IMPORT_RULE_CHAIN_FILE_NAME)); } - @Epic("Rule chains smoke tests") - @Feature("Import rule chain") @Test(priority = 20, groups = "smoke") @Description("Drop json file and delete it") public void importRuleChainAndDeleteFile() { @@ -84,13 +51,10 @@ public class CreateRuleChainImportTest extends AbstractDriverBaseTest { ruleChainsPage.browseFile().sendKeys(absolutePathToFileImportRuleChain); ruleChainsPage.clearImportFileBtn().click(); - Assert.assertNotNull(ruleChainsPage.importingFile(EMPTY_IMPORT_MESSAGE)); - Assert.assertTrue(ruleChainsPage.importingFile(EMPTY_IMPORT_MESSAGE).isDisplayed()); - Assert.assertTrue(ruleChainsPage.entityIsNotPresent(IMPORT_RULE_CHAIN_FILE_NAME)); + assertIsDisplayed(ruleChainsPage.importingFile(EMPTY_IMPORT_MESSAGE)); + ruleChainsPage.assertEntityIsNotPresent(IMPORT_RULE_CHAIN_FILE_NAME); } - @Epic("Rule chains smoke tests") - @Feature("Import rule chain") @Test(priority = 20, groups = "smoke") @Description("Import txt file") public void importTxtFile() { @@ -98,12 +62,9 @@ public class CreateRuleChainImportTest extends AbstractDriverBaseTest { ruleChainsPage.openImportRuleChainView(); ruleChainsPage.browseFile().sendKeys(absolutePathToFileImportTxt); - Assert.assertNotNull(ruleChainsPage.importingFile(EMPTY_IMPORT_MESSAGE)); - Assert.assertTrue(ruleChainsPage.importingFile(EMPTY_IMPORT_MESSAGE).isDisplayed()); + assertIsDisplayed(ruleChainsPage.importingFile(EMPTY_IMPORT_MESSAGE)); } - @Epic("Rule chains smoke tests") - @Feature("Import rule chain") @Test(priority = 30, groups = "smoke") @Description("Import rule chain") public void importRuleChainAndSave() { @@ -116,18 +77,14 @@ public class CreateRuleChainImportTest extends AbstractDriverBaseTest { ruleChainName = IMPORT_RULE_CHAIN_NAME; sideBarMenuView.ruleChainsBtn().click(); - Assert.assertNotNull(ruleChainsPage.entity(IMPORT_RULE_CHAIN_NAME)); - Assert.assertTrue(ruleChainsPage.entity(IMPORT_RULE_CHAIN_NAME).isDisplayed()); + assertIsDisplayed(ruleChainsPage.entity(ruleChainName)); } - @Epic("Rule chains smoke tests") - @Feature("Import rule chain") @Test(priority = 40, groups = "smoke") @Description("Import rule chain with same name") public void importRuleChainAndSaveWithSameName() { - String ruleChainName = IMPORT_RULE_CHAIN_NAME; + ruleChainName = IMPORT_RULE_CHAIN_NAME; testRestClient.postRuleChain(defaultRuleChainPrototype(ruleChainName)); - this.ruleChainName = ruleChainName; sideBarMenuView.ruleChainsBtn().click(); ruleChainsPage.openImportRuleChainView(); @@ -137,15 +94,8 @@ public class CreateRuleChainImportTest extends AbstractDriverBaseTest { doneBtn.click(); sideBarMenuView.ruleChainsBtn().click(); - boolean entityNotNull = ruleChainsPage.entity(ruleChainName) != null; - boolean entitiesSizeMoreOne = ruleChainsPage.entities(ruleChainName).size() > 1; - ArrayList entityIsDisplayed = new ArrayList<>(); - ruleChainsPage.entities(ruleChainName).forEach(x -> entityIsDisplayed.add(x.isDisplayed())); - - testRestClient.deleteRuleChain(getRuleChainByName(ruleChainName).getId()); - - Assert.assertTrue(entityNotNull); - Assert.assertTrue(entitiesSizeMoreOne); - entityIsDisplayed.forEach(Assert::assertTrue); + assertThat(ruleChainsPage.entities(ruleChainName).size() > 1). + as("More than 1 rule chains have been created").isTrue(); + ruleChainsPage.entities(ruleChainName).forEach(this::assertIsDisplayed); } } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/CreateRuleChainTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/CreateRuleChainTest.java similarity index 53% rename from msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/CreateRuleChainTest.java rename to msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/CreateRuleChainTest.java index e8bdaff9da..f19fa7ccca 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/CreateRuleChainTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/CreateRuleChainTest.java @@ -13,54 +13,25 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.thingsboard.server.msa.ui.tests.ruleChainsSmoke; +package org.thingsboard.server.msa.ui.tests.rulechainssmoke; import io.qameta.allure.Description; -import io.qameta.allure.Epic; import io.qameta.allure.Feature; -import org.testng.Assert; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeClass; 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.RuleChainsPageHelper; -import org.thingsboard.server.msa.ui.pages.SideBarMenuViewElements; import org.thingsboard.server.msa.ui.utils.EntityPrototypes; -import java.util.ArrayList; - +import static org.assertj.core.api.Assertions.assertThat; import static org.thingsboard.server.msa.ui.base.AbstractBasePage.random; import static org.thingsboard.server.msa.ui.utils.Const.EMPTY_RULE_CHAIN_MESSAGE; import static org.thingsboard.server.msa.ui.utils.Const.ENTITY_NAME; -public class CreateRuleChainTest extends AbstractDriverBaseTest { +@Feature("Create rule chain") +public class CreateRuleChainTest extends AbstractRuleChainTest { - private SideBarMenuViewElements sideBarMenuView; - private RuleChainsPageHelper ruleChainsPage; - private String ruleChainName; - - @BeforeClass - public void login() { - new LoginPageHelper(driver).authorizationTenant(); - sideBarMenuView = new SideBarMenuViewElements(driver); - ruleChainsPage = new RuleChainsPageHelper(driver); - } - - @AfterMethod - public void delete() { - if (ruleChainName != null) { - testRestClient.deleteRuleChain(getRuleChainByName(ruleChainName).getId()); - ruleChainName = null; - } - } - - @Epic("Rule chains smoke tests") - @Feature("Create rule chain") @Test(priority = 10, groups = "smoke") @Description("Add rule chain after specifying the name (text/numbers /special characters)") public void createRuleChain() { - String ruleChainName = ENTITY_NAME + random(); + ruleChainName = ENTITY_NAME + random(); sideBarMenuView.ruleChainsBtn().click(); ruleChainsPage.openCreateRuleChainView(); @@ -68,18 +39,14 @@ public class CreateRuleChainTest extends AbstractDriverBaseTest { ruleChainsPage.nameField().sendKeys(ruleChainName); ruleChainsPage.addBtnC().click(); ruleChainsPage.refreshBtn().click(); - this.ruleChainName = ruleChainName; - Assert.assertNotNull(ruleChainsPage.entity(ruleChainName)); - Assert.assertTrue(ruleChainsPage.entity(ruleChainName).isDisplayed()); + assertIsDisplayed(ruleChainsPage.entity(ruleChainName)); } - @Epic("Rule chains smoke tests") - @Feature("Create rule chain") @Test(priority = 10, groups = "smoke") @Description("Add rule chain after specifying the name and description (text/numbers /special characters)") public void createRuleChainWithDescription() { - String ruleChainName = ENTITY_NAME + random(); + ruleChainName = ENTITY_NAME + random(); sideBarMenuView.ruleChainsBtn().click(); ruleChainsPage.openCreateRuleChainView(); @@ -87,27 +54,23 @@ public class CreateRuleChainTest extends AbstractDriverBaseTest { ruleChainsPage.descriptionAddEntityView().sendKeys(ruleChainName); ruleChainsPage.addBtnC().click(); ruleChainsPage.refreshBtn().click(); - this.ruleChainName = ruleChainName; ruleChainsPage.detailsBtn(ruleChainName).click(); ruleChainsPage.setHeaderName(); - Assert.assertEquals(ruleChainsPage.getHeaderName(), ruleChainName); - Assert.assertEquals(ruleChainsPage.descriptionEntityView().getAttribute("value"), ruleChainName); + assertThat(ruleChainsPage.getHeaderName()).as("Header of rule chain details tab").isEqualTo(ruleChainName); + assertThat(ruleChainsPage.descriptionEntityView().getAttribute("value")) + .as("Description in rule chain details tab").isEqualTo(ruleChainName); } - @Epic("Rule chains smoke tests") - @Feature("Create rule chain") @Test(priority = 20, groups = "smoke") @Description("Add rule chain without the name") public void createRuleChainWithoutName() { sideBarMenuView.ruleChainsBtn().click(); ruleChainsPage.openCreateRuleChainView(); - Assert.assertFalse(ruleChainsPage.addBtnV().isEnabled()); + assertIsDisable(ruleChainsPage.addBtnV()); } - @Epic("Rule chains smoke tests") - @Feature("Create rule chain") @Test(priority = 20, groups = "smoke") @Description("Create rule chain only with spase in name") public void createRuleChainWithOnlySpace() { @@ -116,21 +79,16 @@ public class CreateRuleChainTest extends AbstractDriverBaseTest { ruleChainsPage.nameField().sendKeys(" "); ruleChainsPage.addBtnC().click(); - Assert.assertNotNull(ruleChainsPage.warningMessage()); - Assert.assertTrue(ruleChainsPage.warningMessage().isDisplayed()); - Assert.assertEquals(ruleChainsPage.warningMessage().getText(), EMPTY_RULE_CHAIN_MESSAGE); - Assert.assertNotNull(ruleChainsPage.addEntityView()); - Assert.assertTrue(ruleChainsPage.addEntityView().isDisplayed()); + assertIsDisplayed(ruleChainsPage.warningMessage()); + assertThat(ruleChainsPage.warningMessage().getText()).as("Text of warning message").isEqualTo(EMPTY_RULE_CHAIN_MESSAGE); + assertIsDisplayed(ruleChainsPage.addEntityView()); } - @Epic("Rule chains smoke tests") - @Feature("Create rule chain") @Test(priority = 20, groups = "smoke") @Description("Create a rule chain with the same name") public void createRuleChainWithSameName() { - String ruleChainName = ENTITY_NAME + random(); + ruleChainName = ENTITY_NAME + random(); testRestClient.postRuleChain(EntityPrototypes.defaultRuleChainPrototype(ruleChainName)); - this.ruleChainName = ruleChainName; sideBarMenuView.ruleChainsBtn().click(); ruleChainsPage.openCreateRuleChainView(); @@ -138,37 +96,24 @@ public class CreateRuleChainTest extends AbstractDriverBaseTest { ruleChainsPage.addBtnC().click(); ruleChainsPage.refreshBtn().click(); - boolean entityNotNull = ruleChainsPage.entity(ruleChainName) != null; - boolean entitiesSizeMoreOne = ruleChainsPage.entities(ruleChainName).size() > 1; - ArrayList entityIsDisplayed = new ArrayList<>(); - ruleChainsPage.entities(ruleChainName).forEach(x -> entityIsDisplayed.add(x.isDisplayed())); - - testRestClient.deleteRuleChain(getRuleChainByName(ruleChainName).getId()); - - Assert.assertTrue(entityNotNull); - Assert.assertTrue(entitiesSizeMoreOne); - entityIsDisplayed.forEach(Assert::assertTrue); + assertThat(ruleChainsPage.entities(ruleChainName).size() > 1). + as("More than 1 rule chains have been created").isTrue(); + ruleChainsPage.entities(ruleChainName).forEach(this::assertIsDisplayed); } - @Epic("Rule chains smoke tests") - @Feature("Create rule chain") @Test(priority = 30, groups = "smoke") @Description("Add rule chain after specifying the name (text/numbers /special characters) without refresh") public void createRuleChainWithoutRefresh() { - String ruleChainName = ENTITY_NAME + random(); + ruleChainName = ENTITY_NAME + random(); sideBarMenuView.ruleChainsBtn().click(); ruleChainsPage.openCreateRuleChainView(); ruleChainsPage.nameField().sendKeys(ruleChainName); ruleChainsPage.addBtnC().click(); - this.ruleChainName = ruleChainName; - Assert.assertNotNull(ruleChainsPage.entity(ruleChainName)); - Assert.assertTrue(ruleChainsPage.entity(ruleChainName).isDisplayed()); + assertIsDisplayed(ruleChainsPage.entity(ruleChainName)); } - @Epic("Rule chains smoke tests") - @Feature("Create rule chain") @Test(priority = 40, groups = "smoke") @Description("Go to rule chain documentation page") public void documentation() { @@ -179,6 +124,6 @@ public class CreateRuleChainTest extends AbstractDriverBaseTest { ruleChainsPage.detailsBtn(ruleChainsPage.getRuleChainName()).click(); ruleChainsPage.goToHelpPage(); - Assert.assertTrue(urlContains(urlPath), "URL contains " + urlPath); + assertThat(urlContains(urlPath)).as("Redirected URL contains " + urlPath).isTrue(); } } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/DeleteRuleChainTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/DeleteRuleChainTest.java similarity index 65% rename from msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/DeleteRuleChainTest.java rename to msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/DeleteRuleChainTest.java index e1f27d7bab..b5eb8eaed5 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/DeleteRuleChainTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/DeleteRuleChainTest.java @@ -13,72 +13,53 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.thingsboard.server.msa.ui.tests.ruleChainsSmoke; +package org.thingsboard.server.msa.ui.tests.rulechainssmoke; import io.qameta.allure.Description; import io.qameta.allure.Epic; import io.qameta.allure.Feature; -import org.testng.Assert; -import org.testng.annotations.BeforeClass; 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.RuleChainsPageHelper; -import org.thingsboard.server.msa.ui.pages.SideBarMenuViewElements; +import static org.assertj.core.api.Assertions.assertThat; import static org.thingsboard.server.msa.ui.base.AbstractBasePage.random; import static org.thingsboard.server.msa.ui.utils.Const.DELETE_RULE_CHAIN_WITH_PROFILE_MESSAGE; import static org.thingsboard.server.msa.ui.utils.Const.ENTITY_NAME; import static org.thingsboard.server.msa.ui.utils.Const.ROOT_RULE_CHAIN_NAME; import static org.thingsboard.server.msa.ui.utils.EntityPrototypes.defaultRuleChainPrototype; -public class DeleteRuleChainTest extends AbstractDriverBaseTest { - private SideBarMenuViewElements sideBarMenuView; - private RuleChainsPageHelper ruleChainsPage; +@Feature("Delete rule chain") +public class DeleteRuleChainTest extends AbstractRuleChainTest { - @BeforeClass - public void login() { - new LoginPageHelper(driver).authorizationTenant(); - sideBarMenuView = new SideBarMenuViewElements(driver); - ruleChainsPage = new RuleChainsPageHelper(driver); - } - - @Epic("Rule chains smoke tests") - @Feature("Delete rule chain") @Test(priority = 10, groups = "smoke") @Description("Remove the rule chain by clicking on the trash icon in the right side of rule chain") public void removeRuleChainByRightSideBtn() { - String ruleChainName = ENTITY_NAME + random(); + ruleChainName = ENTITY_NAME + random(); testRestClient.postRuleChain(defaultRuleChainPrototype(ruleChainName)); sideBarMenuView.ruleChainsBtn().click(); String deletedRuleChain = ruleChainsPage.deleteRuleChainTrash(ruleChainName); ruleChainsPage.refreshBtn().click(); - Assert.assertTrue(ruleChainsPage.entityIsNotPresent(deletedRuleChain)); + ruleChainsPage.assertEntityIsNotPresent(deletedRuleChain); } - @Epic("Rule chains smoke tests") - @Feature("Delete rule chain") @Test(priority = 20, groups = "smoke") @Description("Remove rule chain by mark in the checkbox and then click on the trash can icon in the menu that appears at the top") public void removeSelectedRuleChain() { - String ruleChainName = ENTITY_NAME + random(); + ruleChainName = ENTITY_NAME + random(); testRestClient.postRuleChain(defaultRuleChainPrototype(ruleChainName)); sideBarMenuView.ruleChainsBtn().click(); String deletedRuleChain = ruleChainsPage.deleteSelected(ruleChainName); ruleChainsPage.refreshBtn().click(); - Assert.assertTrue(ruleChainsPage.entityIsNotPresent(deletedRuleChain)); + ruleChainsPage.assertEntityIsNotPresent(deletedRuleChain); } - @Epic("Rule chains smoke tests") - @Feature("Delete rule chain") @Test(priority = 20, groups = "smoke") @Description("Remove the rule chain by clicking on the 'Delete rule chain' btn in the entity view") public void removeFromRuleChainView() { - String ruleChainName = ENTITY_NAME + random(); + ruleChainName = ENTITY_NAME + random(); testRestClient.postRuleChain(defaultRuleChainPrototype(ruleChainName)); sideBarMenuView.ruleChainsBtn().click(); @@ -86,21 +67,17 @@ public class DeleteRuleChainTest extends AbstractDriverBaseTest { String deletedRuleChain = ruleChainsPage.deleteRuleChainFromView(ruleChainName); jsClick(ruleChainsPage.refreshBtn()); - Assert.assertTrue(ruleChainsPage.entityIsNotPresent(deletedRuleChain)); + ruleChainsPage.assertEntityIsNotPresent(deletedRuleChain); } - @Epic("Rule chains smoke tests") - @Feature("Delete rule chain") @Test(priority = 20, groups = "smoke") @Description("Remove the root rule chain by clicking on the trash icon in the right side of rule chain") public void removeRootRuleChain() { sideBarMenuView.ruleChainsBtn().click(); - Assert.assertFalse(ruleChainsPage.deleteBtn(ROOT_RULE_CHAIN_NAME).isEnabled()); + assertIsDisable(ruleChainsPage.deleteBtn(ROOT_RULE_CHAIN_NAME)); } - @Epic("Rule chains smoke tests") - @Feature("Delete rule chain") @Test(priority = 20, groups = "smoke") @Description("Remove root rule chain by mark in the checkbox and then click on the trash can icon in the menu that appears at the top") public void removeSelectedRootRuleChain() { @@ -117,7 +94,8 @@ public class DeleteRuleChainTest extends AbstractDriverBaseTest { sideBarMenuView.ruleChainsBtn().click(); ruleChainsPage.detailsBtn(ROOT_RULE_CHAIN_NAME).click(); - Assert.assertTrue(ruleChainsPage.deleteBtnInRootRuleChainIsNotDisplayed()); + assertThat(ruleChainsPage.deleteBtnInRootRuleChainIsNotDisplayed()) + .as("Delete btn isn't displayed in details tab").isTrue(); } @Epic("Rule chains smoke tests") @@ -132,15 +110,12 @@ public class DeleteRuleChainTest extends AbstractDriverBaseTest { ruleChainsPage.warningPopUpYesBtn().click(); ruleChainsPage.refreshBtn().click(); - Assert.assertNotNull(ruleChainsPage.entity(deletedRuleChain)); - Assert.assertTrue(ruleChainsPage.entity(deletedRuleChain).isDisplayed()); - Assert.assertNotNull(ruleChainsPage.warningMessage()); - Assert.assertTrue(ruleChainsPage.warningMessage().isDisplayed()); - Assert.assertEquals(ruleChainsPage.warningMessage().getText(), DELETE_RULE_CHAIN_WITH_PROFILE_MESSAGE); + assertIsDisplayed(ruleChainsPage.entity(deletedRuleChain)); + assertIsDisplayed(ruleChainsPage.warningMessage()); + assertThat(ruleChainsPage.warningMessage().getText()) + .as("Text of warning message").isEqualTo(DELETE_RULE_CHAIN_WITH_PROFILE_MESSAGE); } - @Epic("Rule chains smoke tests") - @Feature("Delete rule chain") @Test(priority = 20, groups = "smoke") @Description("Remove the rule chain with device profile by mark in the checkbox and then click on the trash can icon in the menu that appears at the top") public void removeSelectedProfileRuleChain() { @@ -148,11 +123,10 @@ public class DeleteRuleChainTest extends AbstractDriverBaseTest { String deletedRuleChain = ruleChainsPage.deleteSelected("Thermostat"); ruleChainsPage.refreshBtn().click(); - Assert.assertNotNull(ruleChainsPage.entity(deletedRuleChain)); - Assert.assertTrue(ruleChainsPage.entity(deletedRuleChain).isDisplayed()); - Assert.assertNotNull(ruleChainsPage.warningMessage()); - Assert.assertTrue(ruleChainsPage.warningMessage().isDisplayed()); - Assert.assertEquals(ruleChainsPage.warningMessage().getText(), DELETE_RULE_CHAIN_WITH_PROFILE_MESSAGE); + assertIsDisplayed(ruleChainsPage.entity(deletedRuleChain)); + assertIsDisplayed(ruleChainsPage.warningMessage()); + assertThat(ruleChainsPage.warningMessage().getText()) + .as("Text of warning message").isEqualTo(DELETE_RULE_CHAIN_WITH_PROFILE_MESSAGE); } @Epic("Rule chains smoke tests") @@ -167,10 +141,10 @@ public class DeleteRuleChainTest extends AbstractDriverBaseTest { jsClick(ruleChainsPage.deleteBtnFromView()); ruleChainsPage.warningPopUpYesBtn().click(); - Assert.assertNotNull(ruleChainsPage.entity(deletedRuleChain)); - Assert.assertNotNull(ruleChainsPage.warningMessage()); - Assert.assertTrue(ruleChainsPage.warningMessage().isDisplayed()); - Assert.assertEquals(ruleChainsPage.warningMessage().getText(), DELETE_RULE_CHAIN_WITH_PROFILE_MESSAGE); + assertIsDisplayed(ruleChainsPage.entity(deletedRuleChain)); + assertIsDisplayed(ruleChainsPage.warningMessage()); + assertThat(ruleChainsPage.warningMessage().getText()) + .as("Text of warning message").isEqualTo(DELETE_RULE_CHAIN_WITH_PROFILE_MESSAGE); } @Epic("Rule chains smoke tests") @@ -178,12 +152,12 @@ public class DeleteRuleChainTest extends AbstractDriverBaseTest { @Test(priority = 30, groups = "smoke") @Description("Remove the rule chain by clicking on the trash icon in the right side of rule chain without refresh") public void removeRuleChainByRightSideBtnWithoutRefresh() { - String ruleChainName = ENTITY_NAME + random(); + ruleChainName = ENTITY_NAME + random(); testRestClient.postRuleChain(defaultRuleChainPrototype(ruleChainName)); sideBarMenuView.ruleChainsBtn().click(); String deletedRuleChain = ruleChainsPage.deleteRuleChainTrash(ruleChainName); - Assert.assertTrue(ruleChainsPage.entityIsNotPresent(deletedRuleChain)); + ruleChainsPage.assertEntityIsNotPresent(deletedRuleChain); } } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/DeleteSeveralRuleChainsTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/DeleteSeveralRuleChainsTest.java similarity index 69% rename from msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/DeleteSeveralRuleChainsTest.java rename to msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/DeleteSeveralRuleChainsTest.java index 068fbbf71b..192bb6fe59 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/DeleteSeveralRuleChainsTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/DeleteSeveralRuleChainsTest.java @@ -13,43 +13,25 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.thingsboard.server.msa.ui.tests.ruleChainsSmoke; +package org.thingsboard.server.msa.ui.tests.rulechainssmoke; import io.qameta.allure.Description; -import io.qameta.allure.Epic; import io.qameta.allure.Feature; -import org.testng.Assert; -import org.testng.annotations.BeforeClass; 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.RuleChainsPageHelper; -import org.thingsboard.server.msa.ui.pages.SideBarMenuViewElements; import static org.thingsboard.server.msa.ui.base.AbstractBasePage.random; import static org.thingsboard.server.msa.ui.utils.Const.ENTITY_NAME; import static org.thingsboard.server.msa.ui.utils.Const.ROOT_RULE_CHAIN_NAME; import static org.thingsboard.server.msa.ui.utils.EntityPrototypes.defaultRuleChainPrototype; -public class DeleteSeveralRuleChainsTest extends AbstractDriverBaseTest { +@Feature("Delete several rule chains") +public class DeleteSeveralRuleChainsTest extends AbstractRuleChainTest { - private SideBarMenuViewElements sideBarMenuView; - private RuleChainsPageHelper ruleChainsPage; - - @BeforeClass - public void login() { - new LoginPageHelper(driver).authorizationTenant(); - sideBarMenuView = new SideBarMenuViewElements(driver); - ruleChainsPage = new RuleChainsPageHelper(driver); - } - - @Epic("Rule chains smoke tests") - @Feature("Delete several rule chains") @Test(priority = 10, groups = "smoke") @Description("Remove several rule chains by mark in the checkbox and then click on the trash can icon in the menu " + "that appears at the top") public void canDeleteSeveralRuleChainsByTopBtn() { - String ruleChainName = ENTITY_NAME + random(); + ruleChainName = ENTITY_NAME + random(); testRestClient.postRuleChain(defaultRuleChainPrototype(ruleChainName + 1)); testRestClient.postRuleChain(defaultRuleChainPrototype(ruleChainName)); @@ -57,16 +39,14 @@ public class DeleteSeveralRuleChainsTest extends AbstractDriverBaseTest { ruleChainsPage.deleteSelected(2); ruleChainsPage.refreshBtn().click(); - Assert.assertTrue(ruleChainsPage.ruleChainsIsNotPresent(ruleChainName)); + ruleChainsPage.assertRuleChainsIsNotPresent(ruleChainName); } - @Epic("Rule chains smoke tests") - @Feature("Delete several rule chains") @Test(priority = 10, groups = "smoke") @Description("Remove several rule chains by mark all the rule chains on the page by clicking in the topmost checkbox" + " and then clicking on the trash icon in the menu that appears") public void selectAllRuleChain() { - String ruleChainName = ENTITY_NAME + random(); + ruleChainName = ENTITY_NAME + random(); testRestClient.postRuleChain(defaultRuleChainPrototype(ruleChainName + 1)); testRestClient.postRuleChain(defaultRuleChainPrototype(ruleChainName)); @@ -76,11 +56,9 @@ public class DeleteSeveralRuleChainsTest extends AbstractDriverBaseTest { ruleChainsPage.warningPopUpYesBtn().click(); ruleChainsPage.refreshBtn().click(); - Assert.assertTrue(ruleChainsPage.ruleChainsIsNotPresent(ruleChainName)); + ruleChainsPage.assertRuleChainsIsNotPresent(ruleChainName); } - @Epic("Rule chains smoke tests") - @Feature("Delete several rule chains") @Test(priority = 20, groups = "smoke") @Description("Remove the root rule chain by mark in the checkbox and then click on the trash can icon in the menu " + "that appears at the top") @@ -88,11 +66,9 @@ public class DeleteSeveralRuleChainsTest extends AbstractDriverBaseTest { sideBarMenuView.ruleChainsBtn().click(); ruleChainsPage.selectAllCheckBox().click(); - Assert.assertFalse(ruleChainsPage.deleteBtn(ROOT_RULE_CHAIN_NAME).isEnabled()); + assertIsDisable(ruleChainsPage.deleteBtn(ROOT_RULE_CHAIN_NAME)); } - @Epic("Rule chains smoke tests") - @Feature("Delete several rule chains") @Test(priority = 20, groups = "smoke") @Description("Remove the root rule chain by mark all the rule chains on the page by clicking in the topmost checkbox" + " and then clicking on the trash icon in the menu that appears") @@ -103,8 +79,6 @@ public class DeleteSeveralRuleChainsTest extends AbstractDriverBaseTest { ruleChainsPage.assertCheckBoxIsNotDisplayed(ROOT_RULE_CHAIN_NAME); } - @Epic("Rule chains smoke tests") - @Feature("Delete several rule chains") @Test(priority = 30, groups = "smoke") @Description("Remove several rule chains by mark in the checkbox and then click on the trash can icon in the menu " + "that appears at the top without refresh") @@ -116,6 +90,6 @@ public class DeleteSeveralRuleChainsTest extends AbstractDriverBaseTest { sideBarMenuView.ruleChainsBtn().click(); ruleChainsPage.deleteSelected(2); - Assert.assertTrue(ruleChainsPage.ruleChainsIsNotPresent(ruleChainName)); + ruleChainsPage.assertRuleChainsIsNotPresent(ruleChainName); } } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/MakeRuleChainRootTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/MakeRuleChainRootTest.java similarity index 63% rename from msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/MakeRuleChainRootTest.java rename to msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/MakeRuleChainRootTest.java index cf252ea22a..809e6c02fb 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/MakeRuleChainRootTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/MakeRuleChainRootTest.java @@ -13,39 +13,23 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.thingsboard.server.msa.ui.tests.ruleChainsSmoke; +package org.thingsboard.server.msa.ui.tests.rulechainssmoke; import io.qameta.allure.Description; -import io.qameta.allure.Epic; import io.qameta.allure.Feature; -import org.testng.Assert; import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeClass; 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.RuleChainsPageHelper; -import org.thingsboard.server.msa.ui.pages.SideBarMenuViewElements; -public class MakeRuleChainRootTest extends AbstractDriverBaseTest { +import static org.assertj.core.api.Assertions.assertThat; - private SideBarMenuViewElements sideBarMenuView; - private RuleChainsPageHelper ruleChainsPage; - - @BeforeClass - public void login() { - new LoginPageHelper(driver).authorizationTenant(); - sideBarMenuView = new SideBarMenuViewElements(driver); - ruleChainsPage = new RuleChainsPageHelper(driver); - } +@Feature("Make rule chain root") +public class MakeRuleChainRootTest extends AbstractRuleChainTest { @AfterMethod public void makeRoot() { - testRestClient.setRootRuleChain(getRuleChainByName("Root Rule Chain").getId()); + setRootRuleChain("Root Rule Chain"); } - @Epic("Rule chains smoke tests") - @Feature("Make rule chain root") @Test(priority = 10, groups = "smoke") @Description("Make rule chain root by clicking on the 'Make rule chain root' icon in the right corner") public void makeRuleChainRootByRightCornerBtn() { @@ -55,11 +39,9 @@ public class MakeRuleChainRootTest extends AbstractDriverBaseTest { ruleChainsPage.makeRootBtn(ruleChain).click(); ruleChainsPage.warningPopUpYesBtn().click(); - Assert.assertTrue(ruleChainsPage.rootCheckBoxEnable(ruleChain).isDisplayed()); + assertIsDisplayed(ruleChainsPage.rootCheckBoxEnable(ruleChain)); } - @Epic("Rule chains smoke tests") - @Feature("Make rule chain root") @Test(priority = 20, groups = "smoke") @Description("Make rule chain root by clicking on the 'Make rule chain root' button in the entity view") public void makeRuleChainRootFromView() { @@ -71,11 +53,9 @@ public class MakeRuleChainRootTest extends AbstractDriverBaseTest { ruleChainsPage.warningPopUpYesBtn().click(); ruleChainsPage.closeEntityViewBtn().click(); - Assert.assertTrue(ruleChainsPage.rootCheckBoxEnable(ruleChain).isDisplayed()); + assertIsDisplayed(ruleChainsPage.rootCheckBoxEnable(ruleChain)); } - @Epic("Rule chains smoke tests") - @Feature("Make rule chain root") @Test(priority = 30, groups = "smoke") @Description("Make multiple root rule chains (only one rule chain can be root)") public void multiplyRoot() { @@ -87,6 +67,6 @@ public class MakeRuleChainRootTest extends AbstractDriverBaseTest { ruleChainsPage.warningPopUpYesBtn().click(); ruleChainsPage.closeEntityViewBtn().click(); - Assert.assertEquals(ruleChainsPage.rootCheckBoxesEnable().size(), 1); + assertThat(ruleChainsPage.rootCheckBoxesEnable()).as("Enable only 1 root checkbox").hasSize(1); } } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/OpenRuleChainTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/OpenRuleChainTest.java new file mode 100644 index 0000000000..8602fe982e --- /dev/null +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/OpenRuleChainTest.java @@ -0,0 +1,66 @@ +/** + * 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.tests.rulechainssmoke; + +import io.qameta.allure.Description; +import io.qameta.allure.Feature; +import org.testng.annotations.Test; +import org.thingsboard.server.common.data.rule.RuleChain; +import org.thingsboard.server.msa.ui.utils.EntityPrototypes; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.thingsboard.server.msa.ui.base.AbstractBasePage.random; +import static org.thingsboard.server.msa.ui.utils.Const.ENTITY_NAME; + +@Feature("Open rule chain") +public class OpenRuleChainTest extends AbstractRuleChainTest { + + @Test(priority = 10, groups = "smoke") + @Description("Open the rule chain by clicking on its name") + public void openRuleChainByRightCornerBtn() { + ruleChainName = ENTITY_NAME + random(); + testRestClient.postRuleChain(EntityPrototypes.defaultRuleChainPrototype(ruleChainName)); + RuleChain ruleChain = getRuleChainByName(ruleChainName); + + sideBarMenuView.ruleChainsBtn().click(); + ruleChainsPage.entity(ruleChainName).click(); + openRuleChainPage.setHeadName(); + + assertThat(urlContains(ruleChain.getUuidId().toString())).as("URL contains rule chain's ID").isTrue(); + assertIsDisplayed(openRuleChainPage.headRuleChainName()); + assertIsDisplayed(openRuleChainPage.inputNode()); + assertThat(openRuleChainPage.getHeadName()).as("Head of opened rule chain page text").isEqualTo(ruleChainName); + } + + @Test(priority = 10, groups = "smoke") + @Description("Open the rule chain by clicking on the 'Open rule chain' button in the entity view") + public void openRuleChainByViewBtn() { + ruleChainName = ENTITY_NAME + random(); + testRestClient.postRuleChain(EntityPrototypes.defaultRuleChainPrototype(ruleChainName)); + RuleChain ruleChain = getRuleChainByName(ruleChainName); + + sideBarMenuView.ruleChainsBtn().click(); + ruleChainsPage.detailsBtn(ruleChainName).click(); + ruleChainsPage.openRuleChainFromViewBtn().click(); + openRuleChainPage.setHeadName(); + + assertThat(ruleChain).as("Rule chain created").isNotNull(); + assertThat(urlContains(ruleChain.getUuidId().toString())).as("URL contains rule chain's ID").isTrue(); + assertIsDisplayed(openRuleChainPage.headRuleChainName()); + assertIsDisplayed(openRuleChainPage.inputNode()); + assertThat(openRuleChainPage.getHeadName()).as("Head of opened rule chain page text").isEqualTo(ruleChainName); + } +} diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/RuleChainEditMenuTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/RuleChainEditMenuTest.java similarity index 56% rename from msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/RuleChainEditMenuTest.java rename to msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/RuleChainEditMenuTest.java index 3c65bc8f0a..eaeaa6e61f 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/RuleChainEditMenuTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/RuleChainEditMenuTest.java @@ -13,58 +13,30 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.thingsboard.server.msa.ui.tests.ruleChainsSmoke; +package org.thingsboard.server.msa.ui.tests.rulechainssmoke; import io.qameta.allure.Description; -import io.qameta.allure.Epic; import io.qameta.allure.Feature; -import org.testng.Assert; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeClass; 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.RuleChainsPageHelper; -import org.thingsboard.server.msa.ui.pages.SideBarMenuViewElements; import org.thingsboard.server.msa.ui.utils.DataProviderCredential; import org.thingsboard.server.msa.ui.utils.EntityPrototypes; +import static org.assertj.core.api.Assertions.assertThat; import static org.thingsboard.server.msa.ui.base.AbstractBasePage.getRandomNumber; import static org.thingsboard.server.msa.ui.base.AbstractBasePage.random; import static org.thingsboard.server.msa.ui.utils.Const.EMPTY_RULE_CHAIN_MESSAGE; import static org.thingsboard.server.msa.ui.utils.Const.ENTITY_NAME; import static org.thingsboard.server.msa.ui.utils.EntityPrototypes.defaultRuleChainPrototype; -public class RuleChainEditMenuTest extends AbstractDriverBaseTest { +@Feature("Edit rule chain") +public class RuleChainEditMenuTest extends AbstractRuleChainTest { - private SideBarMenuViewElements sideBarMenuView; - private RuleChainsPageHelper ruleChainsPage; - private String ruleChainName; - - @BeforeClass - public void login() { - new LoginPageHelper(driver).authorizationTenant(); - sideBarMenuView = new SideBarMenuViewElements(driver); - ruleChainsPage = new RuleChainsPageHelper(driver); - } - - @AfterMethod - public void delete() { - if (ruleChainName != null) { - testRestClient.deleteRuleChain(getRuleChainByName(ruleChainName).getId()); - ruleChainName = null; - } - } - - @Epic("Rule chains smoke tests") - @Feature("Edit rule chain") @Test(priority = 10, groups = "smoke") @Description("Change name by edit menu") public void changeName() { String newRuleChainName = "Changed" + getRandomNumber(); - String ruleChainName = ENTITY_NAME + random(); + ruleChainName = ENTITY_NAME + random(); testRestClient.postRuleChain(defaultRuleChainPrototype(ruleChainName)); - this.ruleChainName = ruleChainName; sideBarMenuView.ruleChainsBtn().click(); ruleChainsPage.detailsBtn(ruleChainName).click(); @@ -73,39 +45,33 @@ public class RuleChainEditMenuTest extends AbstractDriverBaseTest { ruleChainsPage.editPencilBtn().click(); ruleChainsPage.changeNameEditMenu(newRuleChainName); ruleChainsPage.doneBtnEditView().click(); - this.ruleChainName = newRuleChainName; + ruleChainName = newRuleChainName; ruleChainsPage.setHeaderName(); String nameAfter = ruleChainsPage.getHeaderName(); - Assert.assertNotEquals(nameBefore, nameAfter); - Assert.assertEquals(newRuleChainName, nameAfter); + assertThat(nameAfter).as("The name has changed").isNotEqualTo(nameBefore); + assertThat(nameAfter).as("The name has changed correctly").isEqualTo(newRuleChainName); } - @Epic("Rule chains smoke tests") - @Feature("Edit rule chain") @Test(priority = 20, groups = "smoke") @Description("Delete name and save") public void deleteName() { - String ruleChainName = ENTITY_NAME + random(); + ruleChainName = ENTITY_NAME + random(); testRestClient.postRuleChain(defaultRuleChainPrototype(ruleChainName)); - this.ruleChainName = ruleChainName; sideBarMenuView.ruleChainsBtn().click(); ruleChainsPage.detailsBtn(ruleChainName).click(); ruleChainsPage.editPencilBtn().click(); ruleChainsPage.changeNameEditMenu(""); - Assert.assertFalse(ruleChainsPage.doneBtnEditViewVisible().isEnabled()); + assertIsDisable(ruleChainsPage.doneBtnEditViewVisible()); } - @Epic("Rule chains smoke tests") - @Feature("Edit rule chain") @Test(priority = 20, groups = "smoke") @Description("Save only with space") public void saveOnlyWithSpace() { - String ruleChainName = ENTITY_NAME +random(); + ruleChainName = ENTITY_NAME + random(); testRestClient.postRuleChain(defaultRuleChainPrototype(ruleChainName)); - this.ruleChainName = ruleChainName; sideBarMenuView.ruleChainsBtn().click(); ruleChainsPage.detailsBtn(ruleChainName).click(); @@ -113,50 +79,44 @@ public class RuleChainEditMenuTest extends AbstractDriverBaseTest { ruleChainsPage.changeNameEditMenu(" "); ruleChainsPage.doneBtnEditView().click(); - Assert.assertNotNull(ruleChainsPage.warningMessage()); - Assert.assertTrue(ruleChainsPage.warningMessage().isDisplayed()); - Assert.assertEquals(ruleChainsPage.warningMessage().getText(), EMPTY_RULE_CHAIN_MESSAGE); + assertIsDisplayed(ruleChainsPage.warningMessage()); + assertThat(ruleChainsPage.warningMessage().getText()).as("Text of warning message").isEqualTo(EMPTY_RULE_CHAIN_MESSAGE); } - @Epic("Rule chains smoke tests") - @Feature("Edit rule chain") @Test(priority = 20, groups = "smoke", dataProviderClass = DataProviderCredential.class, dataProvider = "editMenuDescription") @Description("Write the description and save the changes/Change the description and save the changes/Delete the description and save the changes") public void editDescription(String description, String newDescription, String finalDescription) { - String name = ENTITY_NAME + random(); - testRestClient.postRuleChain(EntityPrototypes.defaultRuleChainPrototype(name, description)); - ruleChainName = name; + ruleChainName = ENTITY_NAME + random(); + testRestClient.postRuleChain(EntityPrototypes.defaultRuleChainPrototype(ruleChainName, description)); sideBarMenuView.ruleChainsBtn().click(); - ruleChainsPage.detailsBtn(name).click(); + ruleChainsPage.detailsBtn(ruleChainName).click(); ruleChainsPage.editPencilBtn().click(); ruleChainsPage.descriptionEntityView().sendKeys(newDescription); ruleChainsPage.doneBtnEditView().click(); ruleChainsPage.setDescription(); - Assert.assertEquals(ruleChainsPage.getDescription(), finalDescription); + assertThat(ruleChainsPage.getDescription()).as("The description changed correctly").isEqualTo(finalDescription); } - @Epic("Rule chains smoke tests") - @Feature("Edit rule chain") - @Test(priority = 20, groups = "smoke") + @Test(priority = 20, groups = "smoke", dataProviderClass = DataProviderCredential.class, dataProvider = "debugMode") @Description("Enable debug mode/Disable debug mode") - public void debugMode() { - String ruleChainName = ENTITY_NAME + random(); - testRestClient.postRuleChain(defaultRuleChainPrototype(ruleChainName)); - this.ruleChainName = ruleChainName; + public void debugMode(boolean debugMode) { + ruleChainName = ENTITY_NAME + random(); + testRestClient.postRuleChain(defaultRuleChainPrototype(ruleChainName, debugMode)); sideBarMenuView.ruleChainsBtn().click(); ruleChainsPage.detailsBtn(ruleChainName).click(); ruleChainsPage.editPencilBtn().click(); ruleChainsPage.debugCheckboxEdit().click(); ruleChainsPage.doneBtnEditView().click(); - boolean debugMode = ruleChainsPage.debugCheckboxView().getAttribute("class").contains("selected"); - ruleChainsPage.editPencilBtn().click(); - ruleChainsPage.debugCheckboxEdit().click(); - ruleChainsPage.doneBtnEditView().click(); - Assert.assertFalse(ruleChainsPage.debugCheckboxView().getAttribute("class").contains("selected"), "Debug mode disable"); - Assert.assertTrue(debugMode, "Debug mode enable"); + if (debugMode) { + assertThat(ruleChainsPage.debugCheckboxView().getAttribute("class").contains("selected")) + .as("Debug mode is enable").isFalse(); + } else { + assertThat(ruleChainsPage.debugCheckboxView().getAttribute("class").contains("selected")) + .as("Debug mode is enable").isTrue(); + } } -} \ No newline at end of file +} diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/SearchRuleChainTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/SearchRuleChainTest.java similarity index 54% rename from msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/SearchRuleChainTest.java rename to msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/SearchRuleChainTest.java index b34f59d420..3360a645ed 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/SearchRuleChainTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/SearchRuleChainTest.java @@ -13,60 +13,39 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.thingsboard.server.msa.ui.tests.ruleChainsSmoke; +package org.thingsboard.server.msa.ui.tests.rulechainssmoke; import io.qameta.allure.Description; -import io.qameta.allure.Epic; import io.qameta.allure.Feature; -import org.testng.Assert; -import org.testng.annotations.BeforeClass; 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.RuleChainsPageHelper; -import org.thingsboard.server.msa.ui.pages.SideBarMenuViewElements; import org.thingsboard.server.msa.ui.utils.DataProviderCredential; +import static org.assertj.core.api.Assertions.assertThat; import static org.thingsboard.server.msa.ui.utils.EntityPrototypes.defaultRuleChainPrototype; -public class SearchRuleChainTest extends AbstractDriverBaseTest { +@Feature("Search rule chain") +public class SearchRuleChainTest extends AbstractRuleChainTest { - private SideBarMenuViewElements sideBarMenuView; - private RuleChainsPageHelper ruleChainsPage; - - @BeforeClass - public void login() { - new LoginPageHelper(driver).authorizationTenant(); - sideBarMenuView = new SideBarMenuViewElements(driver); - ruleChainsPage = new RuleChainsPageHelper(driver); - } - - @Epic("Rule chains smoke tests") - @Feature("Search rule chain") @Test(priority = 10, groups = "smoke", dataProviderClass = DataProviderCredential.class, dataProvider = "ruleChainNameForSearchByFirstAndSecondWord") @Description("Search rule chain by first word in the name/Search rule chain by second word in the name") public void searchFirstWord(String namePath) { sideBarMenuView.ruleChainsBtn().click(); ruleChainsPage.searchEntity(namePath); - ruleChainsPage.setRuleChainName(0); - Assert.assertTrue(ruleChainsPage.getRuleChainName().contains(namePath)); + ruleChainsPage.allNames().forEach(rc -> assertThat(rc.getText().contains(namePath)) + .as("All entity contains search input").isTrue()); } - @Epic("Rule chains smoke tests") - @Feature("Search rule chain") @Test(priority = 10, groups = "smoke", dataProviderClass = DataProviderCredential.class, dataProvider = "nameForSearchBySymbolAndNumber") @Description("Search rule chain by symbol in the name/Search rule chain by number in the name") public void searchNumber(String name, String namePath) { - testRestClient.postRuleChain(defaultRuleChainPrototype(name)); + ruleChainName = name; + testRestClient.postRuleChain(defaultRuleChainPrototype(ruleChainName)); sideBarMenuView.ruleChainsBtn().click(); ruleChainsPage.searchEntity(namePath); - ruleChainsPage.setRuleChainName(0); - boolean ruleChainContainsNamePath = ruleChainsPage.getRuleChainName().contains(namePath); - testRestClient.deleteRuleChain(getRuleChainByName(name).getId()); - - Assert.assertTrue(ruleChainContainsNamePath); + ruleChainsPage.allNames().forEach(rc -> assertThat(rc.getText().contains(namePath)) + .as("All entity contains search input").isTrue()); } } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/SortByNameTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/SortByNameTest.java similarity index 63% rename from msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/SortByNameTest.java rename to msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/SortByNameTest.java index 3a5f02d61d..03b637ed8e 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/SortByNameTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/SortByNameTest.java @@ -13,57 +13,31 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.thingsboard.server.msa.ui.tests.ruleChainsSmoke; +package org.thingsboard.server.msa.ui.tests.rulechainssmoke; import io.qameta.allure.Description; import io.qameta.allure.Epic; import io.qameta.allure.Feature; -import org.testng.Assert; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeClass; 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.RuleChainsPageHelper; -import org.thingsboard.server.msa.ui.pages.SideBarMenuViewElements; import org.thingsboard.server.msa.ui.utils.DataProviderCredential; +import static org.assertj.core.api.Assertions.assertThat; import static org.thingsboard.server.msa.ui.utils.EntityPrototypes.defaultRuleChainPrototype; -public class SortByNameTest extends AbstractDriverBaseTest { +@Feature("Sort rule chain by name") +public class SortByNameTest extends AbstractRuleChainTest { - private SideBarMenuViewElements sideBarMenuView; - private RuleChainsPageHelper ruleChainsPage; - private String ruleChainName; - - @BeforeClass - public void login() { - new LoginPageHelper(driver).authorizationTenant(); - sideBarMenuView = new SideBarMenuViewElements(driver); - ruleChainsPage = new RuleChainsPageHelper(driver); - } - - @AfterMethod - public void delete() { - if (ruleChainName != null) { - testRestClient.deleteRuleChain(getRuleChainByName(ruleChainName).getId()); - ruleChainName = null; - } - } - - @Epic("Rule chains smoke tests") - @Feature("Sort rule chain by name") @Test(priority = 10, groups = "smoke", dataProviderClass = DataProviderCredential.class, dataProvider = "nameForSort") @Description("Sort rule chain 'UP'") - public void specialCharacterUp(String ruleChainName) { + public void specialCharacterUp(String name) { + ruleChainName = name; testRestClient.postRuleChain(defaultRuleChainPrototype(ruleChainName)); - this.ruleChainName = ruleChainName; sideBarMenuView.ruleChainsBtn().click(); ruleChainsPage.sortByNameBtn().click(); ruleChainsPage.setRuleChainName(0); - Assert.assertEquals(ruleChainsPage.getRuleChainName(), ruleChainName); + assertThat(ruleChainsPage.getRuleChainName()).as("First rule chain after sort").isEqualTo(ruleChainName); } @Epic("Rule chains smoke tests") @@ -84,13 +58,13 @@ public class SortByNameTest extends AbstractDriverBaseTest { ruleChainsPage.setRuleChainName(2); String thirdRuleChain = ruleChainsPage.getRuleChainName(); - testRestClient.deleteRuleChain(getRuleChainByName(ruleChain).getId()); - testRestClient.deleteRuleChain(getRuleChainByName(ruleChainNumber).getId()); - testRestClient.deleteRuleChain(getRuleChainByName(ruleChainSymbol).getId()); + deleteRuleChainByName(ruleChain); + deleteRuleChainByName(ruleChainNumber); + deleteRuleChainByName(ruleChainSymbol); - Assert.assertEquals(firstRuleChain, ruleChainSymbol); - Assert.assertEquals(secondRuleChain, ruleChainNumber); - Assert.assertEquals(thirdRuleChain, ruleChain); + assertThat(firstRuleChain).as("First rule chain with symbol in name").isEqualTo(ruleChainSymbol); + assertThat(secondRuleChain).as("Second rule chain with number in name").isEqualTo(ruleChainNumber); + assertThat(thirdRuleChain).as("Third rule chain with number in name").isEqualTo(ruleChain); } @Epic("Rule chains smoke tests") @@ -105,7 +79,7 @@ public class SortByNameTest extends AbstractDriverBaseTest { ruleChainsPage.sortByNameDown(); ruleChainsPage.setRuleChainName(ruleChainsPage.allNames().size() - 1); - Assert.assertEquals(ruleChainsPage.getRuleChainName(), ruleChainName); + assertThat(ruleChainsPage.getRuleChainName()).as("Last rule chain after sort").isEqualTo(ruleChainName); } @Epic("Rule chains smoke tests") @@ -127,12 +101,12 @@ public class SortByNameTest extends AbstractDriverBaseTest { ruleChainsPage.setRuleChainName(lastIndex - 2); String thirdRuleChain = ruleChainsPage.getRuleChainName(); - testRestClient.deleteRuleChain(getRuleChainByName(ruleChain).getId()); - testRestClient.deleteRuleChain(getRuleChainByName(ruleChainNumber).getId()); - testRestClient.deleteRuleChain(getRuleChainByName(ruleChainSymbol).getId()); + deleteRuleChainByName(ruleChain); + deleteRuleChainByName(ruleChainNumber); + deleteRuleChainByName(ruleChainSymbol); - Assert.assertEquals(firstRuleChain, ruleChainSymbol); - Assert.assertEquals(secondRuleChain, ruleChainNumber); - Assert.assertEquals(thirdRuleChain, ruleChain); + assertThat(firstRuleChain).as("First from the end rule chain with symbol in name").isEqualTo(ruleChainSymbol); + assertThat(secondRuleChain).as("Second from the end rule chain with number in name").isEqualTo(ruleChainNumber); + assertThat(thirdRuleChain).as("Third rule from the end chain with number in name").isEqualTo(ruleChain); } -} \ No newline at end of file +} diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/SortByTimeTest.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/SortByTimeTest.java similarity index 52% rename from msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/SortByTimeTest.java rename to msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/SortByTimeTest.java index 6c8a912526..95265f8ee6 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/ruleChainsSmoke/SortByTimeTest.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/tests/rulechainssmoke/SortByTimeTest.java @@ -13,70 +13,39 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.thingsboard.server.msa.ui.tests.ruleChainsSmoke; +package org.thingsboard.server.msa.ui.tests.rulechainssmoke; import io.qameta.allure.Description; -import io.qameta.allure.Epic; import io.qameta.allure.Feature; -import org.testng.Assert; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeClass; 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.RuleChainsPageHelper; -import org.thingsboard.server.msa.ui.pages.SideBarMenuViewElements; +import static org.assertj.core.api.Assertions.assertThat; import static org.thingsboard.server.msa.ui.utils.Const.ENTITY_NAME; import static org.thingsboard.server.msa.ui.utils.EntityPrototypes.defaultRuleChainPrototype; -public class SortByTimeTest extends AbstractDriverBaseTest { +@Feature("Sort rule chain by time") +public class SortByTimeTest extends AbstractRuleChainTest { - private SideBarMenuViewElements sideBarMenuView; - private RuleChainsPageHelper ruleChainsPage; - private String ruleChainName; - - @BeforeClass - public void login() { - new LoginPageHelper(driver).authorizationTenant(); - sideBarMenuView = new SideBarMenuViewElements(driver); - ruleChainsPage = new RuleChainsPageHelper(driver); - } - - @AfterMethod - public void delete() { - if (ruleChainName != null) { - testRestClient.deleteRuleChain(getRuleChainByName(ruleChainName).getId()); - ruleChainName = null; - } - } - - @Epic("Rule chains smoke tests") - @Feature("Sort rule chain by time") @Test(priority = 10, groups = "smoke") @Description("Sort rule chain 'DOWN'") public void sortByTimeDown() { - String ruleChain = ENTITY_NAME; - testRestClient.postRuleChain(defaultRuleChainPrototype(ruleChain)); - ruleChainName = ruleChain; + ruleChainName = ENTITY_NAME; + testRestClient.postRuleChain(defaultRuleChainPrototype(ruleChainName)); sideBarMenuView.ruleChainsBtn().click(); ruleChainsPage.setSort(); String firstListElement = ruleChainsPage.getSort().get(ruleChainsPage.getSort().size() - 1); String lastCreated = ruleChainsPage.createdTime().get(0).getText(); - Assert.assertEquals(firstListElement, lastCreated); - Assert.assertNotNull(ruleChainsPage.createdTimeEntity(ruleChain, lastCreated)); + assertThat(firstListElement).as("Last in list is last created").isEqualTo(lastCreated); + assertIsDisplayed(ruleChainsPage.createdTimeEntity(ruleChainName, lastCreated)); } - @Epic("Rule chains smoke tests") - @Feature("Sort rule chain by time") @Test(priority = 10, groups = "smoke") @Description("Sort rule chain 'UP'") public void sortByTimeUp() { - String ruleChain = ENTITY_NAME; - testRestClient.postRuleChain(defaultRuleChainPrototype(ruleChain)); - ruleChainName = ruleChain; + ruleChainName = ENTITY_NAME; + testRestClient.postRuleChain(defaultRuleChainPrototype(ruleChainName)); sideBarMenuView.ruleChainsBtn().click(); ruleChainsPage.sortByTimeBtn().click(); @@ -84,7 +53,7 @@ public class SortByTimeTest extends AbstractDriverBaseTest { String firstListElement = ruleChainsPage.getSort().get(ruleChainsPage.getSort().size() - 1); String lastCreated = ruleChainsPage.createdTime().get(ruleChainsPage.createdTime().size() - 1).getText(); - Assert.assertEquals(firstListElement, lastCreated); - Assert.assertNotNull(ruleChainsPage.createdTimeEntity(ruleChain, lastCreated)); + assertThat(firstListElement).as("First in list is last created").isEqualTo(lastCreated); + assertIsDisplayed(ruleChainsPage.createdTimeEntity(ruleChainName, lastCreated)); } } 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 73783544a1..6e56abff2e 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,4 +149,11 @@ public class DataProviderCredential { {description, newDescription, description + newDescription}, {description, Keys.CONTROL + "A" + Keys.BACK_SPACE, ""}}; } + + @DataProvider + public static Object[][] debugMode() { + return new Object[][]{ + {false}, + {true}}; + } } diff --git a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/utils/EntityPrototypes.java b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/utils/EntityPrototypes.java index cfb438b59b..23119e6d83 100644 --- a/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/utils/EntityPrototypes.java +++ b/msa/black-box-tests/src/test/java/org/thingsboard/server/msa/ui/utils/EntityPrototypes.java @@ -63,6 +63,13 @@ public class EntityPrototypes { return ruleChain; } + public static RuleChain defaultRuleChainPrototype(String entityName, boolean debugMode) { + RuleChain ruleChain = new RuleChain(); + ruleChain.setName(entityName); + ruleChain.setDebugMode(debugMode); + return ruleChain; + } + public static DeviceProfile defaultDeviceProfile(String entityName) { DeviceProfile deviceProfile = new DeviceProfile(); deviceProfile.setName(entityName); diff --git a/msa/black-box-tests/src/test/resources/all.xml b/msa/black-box-tests/src/test/resources/all.xml index 1fdc4306a9..155aac38e1 100644 --- a/msa/black-box-tests/src/test/resources/all.xml +++ b/msa/black-box-tests/src/test/resources/all.xml @@ -34,7 +34,7 @@ - + diff --git a/msa/black-box-tests/src/test/resources/smokesRuleChain.xml b/msa/black-box-tests/src/test/resources/smokesRuleChain.xml index dbb22782ca..687c6329ba 100644 --- a/msa/black-box-tests/src/test/resources/smokesRuleChain.xml +++ b/msa/black-box-tests/src/test/resources/smokesRuleChain.xml @@ -29,7 +29,7 @@ - + \ No newline at end of file diff --git a/msa/black-box-tests/src/test/resources/uiTests.xml b/msa/black-box-tests/src/test/resources/uiTests.xml index f460c4398d..9dbf8dfc0c 100644 --- a/msa/black-box-tests/src/test/resources/uiTests.xml +++ b/msa/black-box-tests/src/test/resources/uiTests.xml @@ -29,7 +29,7 @@ - +