Merge pull request #8710 from Seraphym-Tuhai/fix_for_ui_tests
[3.5.2] Added UI smoke tests on make device public/private
This commit is contained in:
commit
cc0d8a6de4
@ -60,6 +60,12 @@ public class DevicePageElements extends OtherPageElementsHelper {
|
|||||||
private static final String DEVICE_STATE_SELECT = "//div[contains(@class,'tb-filter-panel')]//mat-select[@role='combobox']";
|
private static final String DEVICE_STATE_SELECT = "//div[contains(@class,'tb-filter-panel')]//mat-select[@role='combobox']";
|
||||||
private static final String LIST_OF_DEVICES_STATE = "//div[@class='status']";
|
private static final String LIST_OF_DEVICES_STATE = "//div[@class='status']";
|
||||||
private static final String LIST_OF_DEVICES_PROFILE = "//mat-cell[contains(@class,'deviceProfileName')]";
|
private static final String LIST_OF_DEVICES_PROFILE = "//mat-cell[contains(@class,'deviceProfileName')]";
|
||||||
|
private static final String MAKE_DEVICE_PUBLIC_BTN = DEVICE + "/ancestor::mat-row//mat-icon[contains(text(),'share')]/parent::button";
|
||||||
|
private static final String DEVICE_IS_PUBLIC_CHECKBOX = DEVICE + "/ancestor::mat-row//mat-icon[contains(text(),'check_box')]";
|
||||||
|
private static final String MAKE_DEVICE_PUBLIC_BTN_DETAILS_TAB = "//span[contains(text(),'Make device public')]/parent::button";
|
||||||
|
private static final String MAKE_DEVICE_PRIVATE_BTN = DEVICE + "/ancestor::mat-row//mat-icon[contains(text(),'reply')]/parent::button";
|
||||||
|
private static final String DEVICE_IS_PRIVATE_CHECKBOX = DEVICE + "/ancestor::mat-row//mat-icon[contains(text(),'check_box_outline_blank')]";
|
||||||
|
private static final String MAKE_DEVICE_PRIVATE_BTN_DETAILS_TAB = "//span[contains(text(),'Make device private')]/parent::button";
|
||||||
|
|
||||||
public WebElement device(String deviceName) {
|
public WebElement device(String deviceName) {
|
||||||
return waitUntilElementToBeClickable(String.format(DEVICE, deviceName));
|
return waitUntilElementToBeClickable(String.format(DEVICE, deviceName));
|
||||||
@ -204,4 +210,28 @@ public class DevicePageElements extends OtherPageElementsHelper {
|
|||||||
public List<WebElement> listOfDevicesProfile() {
|
public List<WebElement> listOfDevicesProfile() {
|
||||||
return waitUntilVisibilityOfElementsLocated(LIST_OF_DEVICES_PROFILE);
|
return waitUntilVisibilityOfElementsLocated(LIST_OF_DEVICES_PROFILE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public WebElement makeDevicePublicBtn(String deviceName) {
|
||||||
|
return waitUntilElementToBeClickable(String.format(MAKE_DEVICE_PUBLIC_BTN, deviceName));
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebElement deviceIsPublicCheckbox(String deviceName) {
|
||||||
|
return waitUntilVisibilityOfElementLocated(String.format(DEVICE_IS_PUBLIC_CHECKBOX, deviceName));
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebElement makeDevicePublicBtnDetailsTab() {
|
||||||
|
return waitUntilElementToBeClickable(MAKE_DEVICE_PUBLIC_BTN_DETAILS_TAB);
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebElement makeDevicePrivateBtn(String deviceName) {
|
||||||
|
return waitUntilElementToBeClickable(String.format(MAKE_DEVICE_PRIVATE_BTN, deviceName));
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebElement deviceIsPrivateCheckbox(String deviceName) {
|
||||||
|
return waitUntilVisibilityOfElementLocated(String.format(DEVICE_IS_PRIVATE_CHECKBOX, deviceName));
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebElement makeDevicePrivateBtnDetailsTab() {
|
||||||
|
return waitUntilElementToBeClickable(MAKE_DEVICE_PRIVATE_BTN_DETAILS_TAB);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -123,4 +123,24 @@ public class DevicePageHelper extends DevicePageElements {
|
|||||||
sleep(2); //wait until the action is counted
|
sleep(2); //wait until the action is counted
|
||||||
submitBtn().click();
|
submitBtn().click();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void makeDevicePublicByRightSideBtn(String deviceName) {
|
||||||
|
makeDevicePublicBtn(deviceName).click();
|
||||||
|
warningPopUpYesBtn().click();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void makeDevicePublicFromDetailsTab() {
|
||||||
|
makeDevicePublicBtnDetailsTab().click();
|
||||||
|
warningPopUpYesBtn().click();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void makeDevicePrivateByRightSideBtn(String deviceName) {
|
||||||
|
makeDevicePrivateBtn(deviceName).click();
|
||||||
|
warningPopUpYesBtn().click();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void makeDevicePrivateFromDetailsTab() {
|
||||||
|
makeDevicePrivateBtnDetailsTab().click();
|
||||||
|
warningPopUpYesBtn().click();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,6 +34,7 @@ import java.util.List;
|
|||||||
import static org.assertj.core.api.Assertions.assertThat;
|
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.base.AbstractBasePage.random;
|
||||||
import static org.thingsboard.server.msa.ui.utils.Const.ENTITY_NAME;
|
import static org.thingsboard.server.msa.ui.utils.Const.ENTITY_NAME;
|
||||||
|
import static org.thingsboard.server.msa.ui.utils.Const.PUBLIC_CUSTOMER_NAME;
|
||||||
|
|
||||||
@Feature("Assign to customer")
|
@Feature("Assign to customer")
|
||||||
public class AssignToCustomerTest extends AbstractDeviceTest {
|
public class AssignToCustomerTest extends AbstractDeviceTest {
|
||||||
@ -58,7 +59,7 @@ public class AssignToCustomerTest extends AbstractDeviceTest {
|
|||||||
@AfterClass
|
@AfterClass
|
||||||
public void deleteCustomer() {
|
public void deleteCustomer() {
|
||||||
deleteCustomerById(customerId);
|
deleteCustomerById(customerId);
|
||||||
deleteCustomerByName("Public");
|
deleteCustomerByName(PUBLIC_CUSTOMER_NAME);
|
||||||
deleteDeviceByName(device1.getName());
|
deleteDeviceByName(device1.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,79 @@
|
|||||||
|
/**
|
||||||
|
* 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.devicessmoke;
|
||||||
|
|
||||||
|
import io.qameta.allure.Description;
|
||||||
|
import io.qameta.allure.Feature;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
import org.testng.annotations.AfterClass;
|
||||||
|
import org.testng.annotations.BeforeMethod;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
import org.thingsboard.server.common.data.Device;
|
||||||
|
import org.thingsboard.server.msa.ui.pages.CustomerPageHelper;
|
||||||
|
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;
|
||||||
|
import static org.thingsboard.server.msa.ui.utils.Const.PUBLIC_CUSTOMER_NAME;
|
||||||
|
|
||||||
|
@Feature("Make device private")
|
||||||
|
public class MakeDevicePrivateTest extends AbstractDeviceTest {
|
||||||
|
|
||||||
|
private CustomerPageHelper customerPage;
|
||||||
|
|
||||||
|
@BeforeMethod
|
||||||
|
public void createPublicDevice() {
|
||||||
|
customerPage = new CustomerPageHelper(driver);
|
||||||
|
Device device = testRestClient.postDevice("", EntityPrototypes.defaultDevicePrototype(ENTITY_NAME + random()));
|
||||||
|
testRestClient.setDevicePublic(device.getId());
|
||||||
|
deviceName = device.getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterClass
|
||||||
|
public void deletePublicCustomer() {
|
||||||
|
deleteCustomerByName(PUBLIC_CUSTOMER_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(groups = "smoke")
|
||||||
|
@Description("Make device private by right side btn")
|
||||||
|
public void makeDevicePrivateByRightSideBtn() {
|
||||||
|
sideBarMenuView.goToDevicesPage();
|
||||||
|
devicePage.makeDevicePrivateByRightSideBtn(deviceName);
|
||||||
|
WebElement customerInColumn = devicePage.deviceCustomerOnPage(deviceName);
|
||||||
|
assertIsDisplayed(devicePage.deviceIsPrivateCheckbox(deviceName));
|
||||||
|
assertInvisibilityOfElement(customerInColumn);
|
||||||
|
|
||||||
|
sideBarMenuView.customerBtn().click();
|
||||||
|
customerPage.manageCustomersDevicesBtn(PUBLIC_CUSTOMER_NAME).click();
|
||||||
|
devicePage.assertEntityIsNotPresent(deviceName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(groups = "smoke")
|
||||||
|
@Description("Make device public by btn on details tab")
|
||||||
|
public void makeDevicePrivateFromDetailsTab() {
|
||||||
|
sideBarMenuView.goToDevicesPage();
|
||||||
|
devicePage.device(deviceName).click();
|
||||||
|
WebElement customerInColumn = devicePage.deviceCustomerOnPage(deviceName);
|
||||||
|
devicePage.makeDevicePrivateFromDetailsTab();
|
||||||
|
devicePage.closeDeviceDetailsViewBtn().click();
|
||||||
|
assertIsDisplayed(devicePage.deviceIsPrivateCheckbox(deviceName));
|
||||||
|
assertInvisibilityOfElement(customerInColumn);
|
||||||
|
|
||||||
|
sideBarMenuView.customerBtn().click();
|
||||||
|
customerPage.manageCustomersDevicesBtn(PUBLIC_CUSTOMER_NAME).click();
|
||||||
|
devicePage.assertEntityIsNotPresent(deviceName);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,127 @@
|
|||||||
|
/**
|
||||||
|
* 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.devicessmoke;
|
||||||
|
|
||||||
|
import io.qameta.allure.Description;
|
||||||
|
import io.qameta.allure.Feature;
|
||||||
|
import org.testng.annotations.AfterClass;
|
||||||
|
import org.testng.annotations.BeforeClass;
|
||||||
|
import org.testng.annotations.BeforeMethod;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
import org.thingsboard.server.msa.ui.pages.CustomerPageHelper;
|
||||||
|
import org.thingsboard.server.msa.ui.tabs.AssignDeviceTabHelper;
|
||||||
|
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;
|
||||||
|
import static org.thingsboard.server.msa.ui.utils.Const.PUBLIC_CUSTOMER_NAME;
|
||||||
|
|
||||||
|
@Feature("Make device public")
|
||||||
|
public class MakeDevicePublicTest extends AbstractDeviceTest {
|
||||||
|
|
||||||
|
private CustomerPageHelper customerPage;
|
||||||
|
private AssignDeviceTabHelper assignDeviceTab;
|
||||||
|
private String deviceName1;
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public void createFirstDevice() {
|
||||||
|
customerPage = new CustomerPageHelper(driver);
|
||||||
|
assignDeviceTab = new AssignDeviceTabHelper(driver);
|
||||||
|
|
||||||
|
deviceName1 = testRestClient.postDevice("", EntityPrototypes.defaultDevicePrototype(ENTITY_NAME + random())).getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterClass
|
||||||
|
public void cleanUp() {
|
||||||
|
deleteCustomerByName(PUBLIC_CUSTOMER_NAME);
|
||||||
|
deleteDeviceByName(deviceName1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@BeforeMethod
|
||||||
|
public void createSecondDevice() {
|
||||||
|
deviceName = testRestClient.postDevice("", EntityPrototypes.defaultDevicePrototype(ENTITY_NAME + random())).getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(groups = "smoke", priority = 10)
|
||||||
|
@Description("Make device public by right side btn")
|
||||||
|
public void makeDevicePublicByRightSideBtn() {
|
||||||
|
sideBarMenuView.goToDevicesPage();
|
||||||
|
devicePage.makeDevicePublicByRightSideBtn(deviceName);
|
||||||
|
|
||||||
|
assertIsDisplayed(devicePage.deviceIsPublicCheckbox(deviceName));
|
||||||
|
assertIsDisplayed(devicePage.deviceCustomerOnPage(deviceName));
|
||||||
|
assertThat(devicePage.deviceCustomerOnPage(deviceName).getText())
|
||||||
|
.as("Customer in customer column is Public customer")
|
||||||
|
.isEqualTo(PUBLIC_CUSTOMER_NAME);
|
||||||
|
|
||||||
|
sideBarMenuView.customerBtn().click();
|
||||||
|
customerPage.manageCustomersDevicesBtn(PUBLIC_CUSTOMER_NAME).click();
|
||||||
|
assertIsDisplayed(devicePage.device(deviceName));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(groups = "smoke", priority = 10)
|
||||||
|
@Description("Make device public by btn on details tab")
|
||||||
|
public void makeDevicePublicFromDetailsTab() {
|
||||||
|
sideBarMenuView.goToDevicesPage();
|
||||||
|
devicePage.device(deviceName).click();
|
||||||
|
devicePage.makeDevicePublicFromDetailsTab();
|
||||||
|
devicePage.closeDeviceDetailsViewBtn().click();
|
||||||
|
|
||||||
|
assertIsDisplayed(devicePage.deviceIsPublicCheckbox(deviceName));
|
||||||
|
assertIsDisplayed(devicePage.deviceCustomerOnPage(deviceName));
|
||||||
|
assertThat(devicePage.deviceCustomerOnPage(deviceName).getText())
|
||||||
|
.as("Customer in customer column is Public customer")
|
||||||
|
.isEqualTo(PUBLIC_CUSTOMER_NAME);
|
||||||
|
|
||||||
|
sideBarMenuView.customerBtn().click();
|
||||||
|
customerPage.manageCustomersDevicesBtn(PUBLIC_CUSTOMER_NAME).click();
|
||||||
|
assertIsDisplayed(devicePage.device(deviceName));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(groups = "smoke", priority = 20)
|
||||||
|
@Description("Make device public by assign to public customer")
|
||||||
|
public void makeDevicePublicByAssignToPublicCustomer() {
|
||||||
|
sideBarMenuView.goToDevicesPage();
|
||||||
|
devicePage.assignBtn(deviceName).click();
|
||||||
|
assignDeviceTab.assignOnCustomer(PUBLIC_CUSTOMER_NAME);
|
||||||
|
assertIsDisplayed(devicePage.deviceIsPublicCheckbox(deviceName));
|
||||||
|
assertIsDisplayed(devicePage.deviceCustomerOnPage(deviceName));
|
||||||
|
assertThat(devicePage.deviceCustomerOnPage(deviceName).getText()).isEqualTo(PUBLIC_CUSTOMER_NAME);
|
||||||
|
|
||||||
|
sideBarMenuView.customerBtn().click();
|
||||||
|
customerPage.manageCustomersDevicesBtn(PUBLIC_CUSTOMER_NAME).click();
|
||||||
|
assertIsDisplayed(devicePage.device(deviceName));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(groups = "smoke", priority = 20)
|
||||||
|
@Description("Make several devices public by assign to public customer")
|
||||||
|
public void makePublicSeveralDevicesByAssignOnPublicCustomer() {
|
||||||
|
sideBarMenuView.goToDevicesPage();
|
||||||
|
devicePage.assignSelectedDevices(deviceName, deviceName1);
|
||||||
|
assignDeviceTab.assignOnCustomer(PUBLIC_CUSTOMER_NAME);
|
||||||
|
assertIsDisplayed(devicePage.deviceIsPublicCheckbox(deviceName));
|
||||||
|
assertIsDisplayed(devicePage.deviceCustomerOnPage(deviceName));
|
||||||
|
assertThat(devicePage.deviceCustomerOnPage(deviceName).getText())
|
||||||
|
.as("Customer in customer column is Public customer")
|
||||||
|
.isEqualTo(PUBLIC_CUSTOMER_NAME);
|
||||||
|
|
||||||
|
sideBarMenuView.customerBtn().click();
|
||||||
|
customerPage.manageCustomersDevicesBtn(PUBLIC_CUSTOMER_NAME).click();
|
||||||
|
assertIsDisplayed(devicePage.device(deviceName));
|
||||||
|
assertIsDisplayed(devicePage.device(deviceName1));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -47,4 +47,5 @@ public class Const {
|
|||||||
public static final String DEVICE_PROFILE_IS_REQUIRED_MESSAGE = "Device profile is required";
|
public static final String DEVICE_PROFILE_IS_REQUIRED_MESSAGE = "Device profile is required";
|
||||||
public static final String DEVICE_ACTIVE_STATE = "Active";
|
public static final String DEVICE_ACTIVE_STATE = "Active";
|
||||||
public static final String DEVICE_INACTIVE_STATE = "Inactive";
|
public static final String DEVICE_INACTIVE_STATE = "Inactive";
|
||||||
|
public static final String PUBLIC_CUSTOMER_NAME = "Public";
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user