Merge pull request #8394 from Seraphym-Tuhai/ui-tests-refactoring
UI Tests refactored (Rule chains smoke tests)
This commit is contained in:
commit
83dc7a048f
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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<RuleChain> 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<RuleChain> ruleChains = getRuleChainsByName(ruleChainName);
|
||||
if (!ruleChains.isEmpty()) {
|
||||
ruleChains.forEach(rc -> testRestClient.deleteRuleChain(rc.getId()));
|
||||
}
|
||||
}
|
||||
|
||||
public void setRootRuleChain(String ruleChainName) {
|
||||
List<RuleChain> ruleChains = getRuleChainsByName(ruleChainName);
|
||||
if (!ruleChains.isEmpty()) {
|
||||
testRestClient.setRootRuleChain(ruleChains.stream().findFirst().get().getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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";
|
||||
|
||||
@ -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));
|
||||
}
|
||||
|
||||
|
||||
@ -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));
|
||||
}
|
||||
|
||||
|
||||
@ -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")
|
||||
|
||||
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@ -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")
|
||||
|
||||
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<Boolean> 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);
|
||||
}
|
||||
}
|
||||
@ -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<Boolean> 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();
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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));
|
||||
}
|
||||
}
|
||||
@ -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}};
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
</run>
|
||||
</groups>
|
||||
<packages>
|
||||
<package name="org.thingsboard.server.msa.ui.tests.ruleChainsSmoke"/>
|
||||
<package name="org.thingsboard.server.msa.ui.tests.rulechainssmoke"/>
|
||||
</packages>
|
||||
</test>
|
||||
<test name="Smoke customers tests">
|
||||
|
||||
@ -29,7 +29,7 @@
|
||||
</run>
|
||||
</groups>
|
||||
<packages>
|
||||
<package name="org.thingsboard.server.msa.ui.tests.ruleChainsSmoke"/>
|
||||
<package name="org.thingsboard.server.msa.ui.tests.rulechainssmoke"/>
|
||||
</packages>
|
||||
</test>
|
||||
</suite>
|
||||
@ -29,7 +29,7 @@
|
||||
</run>
|
||||
</groups>
|
||||
<packages>
|
||||
<package name="org.thingsboard.server.msa.ui.tests.ruleChainsSmoke"/>
|
||||
<package name="org.thingsboard.server.msa.ui.tests.rulechainssmoke"/>
|
||||
</packages>
|
||||
</test>
|
||||
<test name="Smoke customers tests">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user