1 package vid.automation.test.sections;
3 import com.aventstack.extentreports.Status;
4 import org.junit.Assert;
5 import org.onap.sdc.ci.tests.execute.setup.ExtentTestActions;
6 import org.onap.sdc.ci.tests.utilities.GeneralUIUtils;
7 import org.openqa.selenium.By;
8 import org.openqa.selenium.JavascriptExecutor;
9 import org.openqa.selenium.WebDriver;
10 import org.openqa.selenium.WebElement;
11 import org.openqa.selenium.support.ui.ExpectedConditions;
12 import org.openqa.selenium.support.ui.WebDriverWait;
13 import vid.automation.test.Constants;
14 import vid.automation.test.Constants.ViewEdit;
15 import vid.automation.test.infra.*;
17 import java.io.IOException;
19 import java.net.URISyntaxException;
20 import java.text.SimpleDateFormat;
21 import java.util.Calendar;
22 import java.util.Date;
23 import java.util.List;
24 import java.util.function.Function;
26 import static java.util.stream.Collectors.toMap;
27 import static org.hamcrest.CoreMatchers.containsString;
28 import static org.hamcrest.MatcherAssert.assertThat;
29 import static org.onap.sdc.ci.tests.utilities.GeneralUIUtils.getDriver;
30 import static org.testng.Assert.assertEquals;
32 public class VidBasePage {
35 public VidBasePage setInstanceName(String name) {
36 setInputText(Constants.INSTANCE_NAME_SELECT_TESTS_ID, name);
41 public VidBasePage setLegacyRegion(String name) {
42 setInputText(Constants.ViewEdit.LEGACY_REGION_INPUT_TESTS_ID, name);
46 public String generateAndSetInstanceName(String prefix) {
47 String instanceName = generateInstanceName(prefix);
48 setInstanceName(instanceName);
52 public VidBasePage setInputText(String inputTestsId, String text) {
53 WebElement instanceNameInput = GeneralUIUtils.getInputElement(inputTestsId);
54 instanceNameInput.sendKeys(text);
58 public String getInputValue(String inputTestsId) {
59 WebElement instanceNameInput = GeneralUIUtils.getInputElement(inputTestsId);
60 String value =instanceNameInput.getAttribute("value");
64 public String generateInstanceName(String prefix) {
65 SimpleDateFormat sdf = new SimpleDateFormat(Constants.BrowseASDC.DATE_FORMAT);
66 Date now = Calendar.getInstance().getTime();
67 return prefix + sdf.format(now);
70 public VidBasePage selectServiceTypeByName(String serviceType) {
71 SelectOption.byTestIdAndVisibleText(serviceType, Constants.SERVICE_TYPE_SELECT_TESTS_ID);
74 public VidBasePage selectFromDropdownByTestId(String itemTestId, String dropdownButtonTestId) {
75 GeneralUIUtils.clickOnElementByTestId(dropdownButtonTestId, 60);
76 Assert.assertTrue(String.format(Constants.ViewEdit.OPTION_IN_DROPDOWN_NOT_EXISTS,itemTestId, dropdownButtonTestId),GeneralUIUtils.getWebElementByTestID(itemTestId) != null );
77 GeneralUIUtils.clickOnElementByTestId(itemTestId, 60);
80 public VidBasePage noOptionDropdownByTestId( String dropdownButtonTestId) {
81 List<WebElement> selectList= SelectOption.getList(dropdownButtonTestId);
82 Assert.assertTrue("The Select Input "+ dropdownButtonTestId+" should be empty",selectList.size()==1);
86 public static void selectSubscriberById(String subscriberId) {
87 SelectOption.byValue(subscriberId, Constants.SUBSCRIBER_NAME_SELECT_TESTS_ID);
90 public VidBasePage selectSubscriberByName(String subscriberName) {
91 SelectOption.byTestIdAndVisibleText(subscriberName, Constants.SUBSCRIBER_NAME_SELECT_TESTS_ID);
95 public VidBasePage selectProductFamily(String productFamily) {
96 SelectOption.byValue(productFamily, Constants.ViewEdit.PRODUCT_FAMILY_SELECT_TESTS_ID);
100 public VidBasePage selectSuppressRollback(String shouldSuppress) {
101 SelectOption.byTestIdAndVisibleText(shouldSuppress, Constants.SUPPRESS_ROLLBACK_SELECT_TESTS_ID);
105 public VidBasePage clickDeployServiceButtonByServiceUUID(String serviceUUID) {
106 Input.replaceText(serviceUUID, Constants.BROWSE_SEARCH);
107 GeneralUIUtils.ultimateWait();
108 String elementTestId = Constants.DEPLOY_BUTTON_TESTS_ID_PREFIX + serviceUUID;
109 GeneralUIUtils.clickOnElementByTestId(elementTestId, 30);
110 GeneralUIUtils.ultimateWait();
112 screenshotDeployDialog(serviceUUID);
117 public void screenshotDeployDialog(String serviceUUID) {
119 GeneralUIUtils.ultimateWait();
120 GeneralUIUtils.ultimateWait(); // better screenshot
121 String screenshotName = "deployService-" + serviceUUID;
122 ExtentTestActions.addScreenshot(Status.INFO, screenshotName, screenshotName);
123 } catch (IOException e) {
124 throw new RuntimeException(e);
129 public VidBasePage clickEditViewByInstanceId(String instanceId) {
130 String elementTestId = Constants.VIEW_EDIT_TEST_ID_PREFIX + instanceId;
131 GeneralUIUtils.clickOnElementByTestId(elementTestId, 100);
136 public Boolean checkEditOrViewExistsByInstanceId(String instanceId) {
137 String elementTestId = Constants.VIEW_EDIT_TEST_ID_PREFIX + instanceId;
138 return Exists.byTestId(elementTestId);
143 public VidBasePage clickSubmitButton() {
144 GeneralUIUtils.clickOnElementByText(Constants.SUBMIT_BUTTON_TEXT, 30);
148 public VidBasePage clickCancelButton() {
149 Click.byId(Constants.generalCancelButtonId);
153 public VidBasePage clickCancelButtonByTestID() {
154 GeneralUIUtils.clickOnElementByTestId(Constants.CANCEL_BUTTON_TEST_ID, 30);
159 public VidBasePage clickConfirmButton() {
160 GeneralUIUtils.clickOnElementByTestId(Constants.CONFIRM_BUTTON_TESTS_ID, 30);
164 public VidBasePage clickConfirmButtonInResumeDelete() {
165 GeneralUIUtils.clickOnElementByTestId(Constants.CONFIRM_RESUME_DELETE_TESTS_ID);
169 public VidBasePage clickButtonByTestId(String testId) {
170 GeneralUIUtils.clickOnElementByTestId(testId);
174 public VidBasePage clickCommitCloseButton() {
175 GeneralUIUtils.clickOnElementByTestId(Constants.COMMIT_CLOSE_BUTTON_ID, 30);
179 public VidBasePage clickCloseButton() {
180 return clickCloseButton(30);
183 public VidBasePage clickCloseButton(int customTimeout) {
184 GeneralUIUtils.clickOnElementByText(Constants.CLOSE_BUTTON_TEXT, customTimeout);
189 public VidBasePage selectLcpRegion(String lcpRegion) {
190 GeneralUIUtils.ultimateWait();
191 SelectOption.byValue(lcpRegion, Constants.ViewEdit.LCP_REGION_SELECT_TESTS_ID);
195 public VidBasePage selectLineOfBusiness(String lineOfBusines) {
196 GeneralUIUtils.ultimateWait();
197 SelectOption.byValue(lineOfBusines, Constants.ViewEdit.LINE_OF_BUSINESS_SELECT_TESTS_ID);
201 public VidBasePage selectTenant(String tenant) {
202 GeneralUIUtils.ultimateWait();
203 SelectOption.byValue(tenant, Constants.ViewEdit.TENANT_SELECT_TESTS_ID);
207 public VidBasePage selectAicZone(String aicZone) {
208 SelectOption.byValue(aicZone, Constants.ViewEdit.AIC_ZONE_TEST_ID);
212 public VidBasePage selectRollbackOption(boolean rollback) {
213 SelectOption.byValue(String.valueOf(rollback) , Constants.ViewEdit.ROLLBACK_TEST_ID);
217 public VidBasePage selectPlatform(String platform) {
218 SelectOption.byValue(platform, Constants.OwningEntity.PLATFORM_SELECT_TEST_ID);
223 public void assertButtonState(String dataTestId, boolean shouldBeEnabled) {
224 assertButtonStateInternal(dataTestId, shouldBeEnabled,
225 (dataTestIdInner) -> GeneralUIUtils.getWebElementByTestID(dataTestIdInner, 60));
228 public void assertButtonStateEvenIfButtonNotVisible(String dataTestId, boolean shouldBeEnabled) {
229 // getInputElement is quite similar to getWebElementByTestID, but doesn't use
230 // the visibility predicate, so button is reachable bhind the grayed-out panel
231 assertButtonStateInternal(dataTestId, shouldBeEnabled,
232 (dataTestIdInner) -> GeneralUIUtils.getInputElement(dataTestIdInner));
235 protected void assertButtonStateInternal(String dataTestId, boolean shouldBeEnabled, Function<String,WebElement> strategy) {
236 GeneralUIUtils.ultimateWait();
237 boolean enabledElement= strategy.apply(dataTestId).getAttribute("disabled") == null;
238 if(shouldBeEnabled) {
239 Assert.assertTrue(String.format(Constants.ViewEdit.DISABLE_ERROR_MESSAGE,dataTestId), enabledElement);
241 Assert.assertFalse(String.format(Constants.ViewEdit.ENABLE_ERROR_MESSAGE,dataTestId),enabledElement);
245 public VidBasePage assertMsoRequestModal(String statusMsg) {
246 boolean waitForTextResult = Wait.waitByClassAndText("status", statusMsg, 20);
247 Assert.assertTrue(statusMsg + " message didn't appear on time", waitForTextResult);
252 public VidBasePage refreshPage() {
253 getDriver().navigate().refresh();
257 public String navigateTo(String path) {
258 String envUrl = System.getProperty("ENV_URL");
261 uri = new URI(envUrl);
262 } catch (URISyntaxException e) {
263 throw new RuntimeException(e);
265 String target = uri.resolve(path).toString();
267 getDriver().navigate().to(target);
268 GeneralUIUtils.ultimateWait();
273 public String getTextByTestID(String testId){
274 WebElement webElement= GeneralUIUtils.getWebElementByTestID(testId);
275 return webElement.getText();
278 public void checkAndCloseAlert(String expectedText) {
279 String alertText= Get.alertText();
280 Assert.assertEquals(expectedText, alertText);
283 public static void goToIframe() {
284 final long start = System.currentTimeMillis();
286 GeneralUIUtils.ultimateWait();
287 System.out.println("ultimateWait waited " + (System.currentTimeMillis() - start));
288 final WebDriver iframeReady = new WebDriverWait(getDriver(), 20).until(
289 ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.tagName("iframe"))
291 Assert.assertNotNull("failed going into iframe", iframeReady);
293 final long start2 = System.currentTimeMillis();
294 GeneralUIUtils.ultimateWait();
295 System.out.println("ultimateWait waited " + (System.currentTimeMillis() - start2));
298 public static void goOutFromIframe(){
299 getDriver().switchTo().defaultContent();
303 public void verifyOpenOldViewEdit(String serviceInstanceName, String serviceInstanceId, boolean openShouldBeEnabled, boolean checkPortMirroring, boolean checkAddVnf) {
304 InstantiationStatusPage.checkMenuItem(serviceInstanceName, Constants.InstantiationStatus.CONTEXT_MENU_HEADER_OPEN_ITEM, openShouldBeEnabled, contextMenuOpen -> {
305 Click.byTestId(contextMenuOpen);
306 VidBasePage.goOutFromIframe();
307 GeneralUIUtils.ultimateWait();
309 Wait.byText("View/Edit Service Instance");
310 if (serviceInstanceId != null) {
311 Wait.byText(serviceInstanceId);
313 Wait.byText(serviceInstanceName);
315 if (checkPortMirroring) {
316 Wait.byText("Add node instance");
317 Wait.byText(ViewEdit.COMMON_PORT_MIRRORING_PORT_NAME);
321 // Validate bug fix - we open old popup in view/edit
322 Click.byTestId("addVNFButton");
323 Click.byTestId("addVNFOption-2017-488_PASQUALE-vPE 0");
324 assertThat(Get.byTestId("create-modal-title").getText(), containsString("a la carte"));
325 Click.byTestId("cancelButton");
326 //end of bug fix validation
329 screenshotDeployDialog("view-edit-" + serviceInstanceName);
330 SideMenu.navigateToMacroInstantiationStatus();
335 public static WebDriverWait waitUntilDriverIsReady(int time) {
336 return new WebDriverWait(getDriver(), (long)time);
339 public String getReduxState() {
340 final JavascriptExecutor javascriptExecutor = (JavascriptExecutor) GeneralUIUtils.getDriver();
341 String reduxState = (String)javascriptExecutor.executeScript("return window.sessionStorage.getItem('reduxState');");
342 System.out.println(reduxState);
346 public void setReduxState(String state) {
347 final JavascriptExecutor javascriptExecutor = (JavascriptExecutor) GeneralUIUtils.getDriver();
348 String script = String.format("window.sessionStorage.setItem('reduxState', '%s');", state);
349 System.out.println("executing script:");
350 System.out.println(script);
351 javascriptExecutor.executeScript(script);