diff options
Diffstat (limited to 'ui-ci/src/main/java/org/openecomp/sdc/ci/tests/datatypes/CanvasManager.java')
-rw-r--r-- | ui-ci/src/main/java/org/openecomp/sdc/ci/tests/datatypes/CanvasManager.java | 197 |
1 files changed, 179 insertions, 18 deletions
diff --git a/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/datatypes/CanvasManager.java b/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/datatypes/CanvasManager.java index 910cc54dad..b3bf6c9fcb 100644 --- a/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/datatypes/CanvasManager.java +++ b/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/datatypes/CanvasManager.java @@ -22,12 +22,16 @@ package org.openecomp.sdc.ci.tests.datatypes; import com.aventstack.extentreports.Status; import com.clearspring.analytics.util.Pair; +import com.google.gson.JsonElement; +import com.google.gson.JsonParser; import org.apache.commons.lang3.tuple.ImmutablePair; import org.openecomp.sdc.ci.tests.datatypes.DataTestIdEnum.LeftPanelCanvasItems; import org.openecomp.sdc.ci.tests.datatypes.enums.CircleSize; import org.openecomp.sdc.ci.tests.execute.setup.ExtentTestActions; import org.openecomp.sdc.ci.tests.execute.setup.SetupCDTest; import org.openecomp.sdc.ci.tests.pages.CompositionPage; +import org.openecomp.sdc.ci.tests.pages.PropertiesAssignmentPage; +import org.openecomp.sdc.ci.tests.pages.PropertyNameBuilder; import org.openecomp.sdc.ci.tests.utilities.GeneralUIUtils; import org.openqa.selenium.By; import org.openqa.selenium.StaleElementReferenceException; @@ -79,6 +83,22 @@ public final class CanvasManager { } private void addCanvasElement(CanvasElement element) { + String prefix = element.getElementType(); + List<CanvasElement> canvasElementsFromSameTemplate = new ArrayList<>(); + + // collect all elements from from same template + for(CanvasElement currElement:canvasElements.values()){ + if(currElement.getElementNameOnCanvas().toLowerCase().startsWith(prefix.toLowerCase())){ + canvasElementsFromSameTemplate.add(currElement); + } + } + + // match element name to actual name on canvas + if( canvasElementsFromSameTemplate.size() > 0){ + String newName = prefix + " " + canvasElementsFromSameTemplate.size(); + element.setElementNameOnCanvas(newName); + } + canvasElements.put(element.getUniqueId(), element); } @@ -116,10 +136,13 @@ public final class CanvasManager { } public void clickOnCanvaElement(CanvasElement canvasElement) { - actions.moveToElement(canvas, canvasElement.getLocation().left, canvasElement.getLocation().right); +// actions.moveToElement(canvas, canvasElement.getLocation().left, canvasElement.getLocation().right); + ImmutablePair<Integer, Integer> coordinates = getElementCoordinates(canvasElement.getElementNameOnCanvas()); + actions.moveToElement(canvas, coordinates.left, coordinates.right); actions.clickAndHold(); actions.release(); actions.perform(); + GeneralUIUtils.ultimateWait(); actions.click().perform(); GeneralUIUtils.ultimateWait(); @@ -136,26 +159,54 @@ public final class CanvasManager { clickOnCanvasPosition(x,y); GeneralUIUtils.ultimateWait(); } + + public void openLinkPopupReqsCapsConnection(CanvasElement sourceElement, CanvasElement destElement) + { + ExtentTestActions.log(Status.INFO, "Open Link popup"); + ImmutablePair<Integer, Integer> sourceCoordinates = getElementCoordinates(sourceElement.getElementNameOnCanvas()); + ImmutablePair<Integer, Integer> destCoordinates = getElementCoordinates(destElement.getElementNameOnCanvas()); + ImmutablePair<Integer, Integer> linkPosition = calcMidOfLink(sourceCoordinates, destCoordinates); + + clickOnCanvasPosition(linkPosition.left, linkPosition.right); // click on link + int x = linkPosition.left + 30; + int y = linkPosition.right + 11; + clickOnCanvasPosition(x,y); // click on view popup + GeneralUIUtils.ultimateWait(); + } + public void closeLinkPopupReqsCapsConnection() { GeneralUIUtils.clickOnElementByTestId("Cancel"); - GeneralUIUtils.ultimateWait(); +// GeneralUIUtils.ultimateWait(); } public void clickSaveOnLinkPopup() { ExtentTestActions.log(Status.INFO, "Click save on link popup"); GeneralUIUtils.clickOnElementByTestId("Save"); - GeneralUIUtils.ultimateWait(); +// GeneralUIUtils.ultimateWait(); } public void deleteLinkPopupReqsCapsConnection(CanvasElement canvasElement) { + ExtentTestActions.log(Status.INFO, "Delete Link "); clickOnCanvasLink(canvasElement); int x = canvasElement.getLocation().getLeft() + 30; // delete button x delta int y = canvasElement.getLocation().getRight() + 30; // delete button x delta clickOnCanvasPosition(x,y); } + + public void deleteLinkPopupReqsCapsConnection(CanvasElement sourceElement, CanvasElement destElement) + { + ExtentTestActions.log(Status.INFO, "Delete Link "); + ImmutablePair<Integer, Integer> sourceCoordinates = getElementCoordinates(sourceElement.getElementNameOnCanvas()); + ImmutablePair<Integer, Integer> destCoordinates = getElementCoordinates(destElement.getElementNameOnCanvas()); + ImmutablePair<Integer, Integer> linkPosition = calcMidOfLink(sourceCoordinates, destCoordinates); + clickOnCanvasPosition(linkPosition.left, linkPosition.right); // click on link + int x = linkPosition.left + 30; // delete button x delta + int y = linkPosition.right + 30; // delete button y delta + clickOnCanvasPosition(x,y); + } public void clickOnCanvasLink(CanvasElement canvasElement) { actions.moveToElement(canvas, canvasElement.getLocation().left, canvasElement.getLocation().right); @@ -186,16 +237,20 @@ public final class CanvasManager { actions.moveToElement(canvas, canvasElement.getLocation().left, canvasElement.getLocation().right); actions.click(); actions.perform(); + ExtentTestActions.log(Status.INFO, String.format("Removing canvas element %s ", canvasElement.getElementType())); + GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.GeneralCanvasItems.DELETE_INSTANCE_BUTTON.getValue()) + .click(); + GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.ModalItems.DELETE_INSTANCE_CANCEL.getValue()).click(); GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.GeneralCanvasItems.DELETE_INSTANCE_BUTTON.getValue()) .click(); - GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.ModalItems.OK.getValue()).click(); + GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.ModalItems.DELETE_INSTANCE_OK.getValue()).click(); canvasElements.remove(canvasElement.getUniqueId()); GeneralUIUtils.ultimateWait(); if (canvasElement.getElementType().contains("-")){ - ExtentTestActions.log(Status.INFO, String.format("Canvas element %s removed", canvasElement.getElementType().split("-")[4])); + ExtentTestActions.log(Status.INFO, String.format("Canvas element %s is removed", canvasElement.getElementType().split("-")[4])); } else{ - ExtentTestActions.log(Status.INFO, String.format("Canvas element %s removed", canvasElement.getElementType())); + ExtentTestActions.log(Status.INFO, String.format("Canvas element %s is removed", canvasElement.getElementType())); } } @@ -280,16 +335,38 @@ public final class CanvasManager { // Will work only if 2 elements are big sized (VF size), if one of the elements is Small use the function linkElements public void linkElements(CanvasElement firstElement, CanvasElement secondElement) throws Exception { ExtentTestActions.log(Status.INFO, String.format("Linking between the %s instance and the %s instance.", firstElement.getElementType(), secondElement.getElementType())); - drawSimpleLink(firstElement, secondElement); + drawSimpleLink(firstElement.getElementNameOnCanvas(), secondElement.getElementNameOnCanvas()); selectReqAndCapAndConnect(); ExtentTestActions.log(Status.INFO, String.format("The instances %s and %s should now be connected.", firstElement.getElementType(), secondElement.getElementType())); } - + + // old version, depricated public void linkElements(CanvasElement firstElement, CircleSize firstElementSize, CanvasElement secondElement, CircleSize secondElementSize) throws Exception { drawSimpleLink(firstElement,firstElementSize, secondElement,secondElementSize); selectReqAndCapAndConnect(); ExtentTestActions.log(Status.INFO, String.format("The instances %s and %s should now be connected.", firstElement.getElementType(), secondElement.getElementType())); } + + public void linkElements(String firstElement, String secondElement) throws Exception { + drawSimpleLink(firstElement, secondElement); + selectReqAndCapAndConnect(); + ExtentTestActions.log(Status.INFO, String.format("The instances %s and %s should now be connected.", firstElement, secondElement)); + } + + // use JS to get coordinates of elements + private void drawSimpleLink(String firstElement, String secondElement) { + ImmutablePair<Integer, Integer> firstElementCoordinates = getGreenDotCoordinatesOfElement(firstElement); + ImmutablePair<Integer, Integer> secondElementCoordinates = getElementCoordinates(secondElement); + + actions.moveToElement(canvas, firstElementCoordinates.left, firstElementCoordinates.right); + actions.perform(); + actions.moveToElement(canvas, firstElementCoordinates.left, firstElementCoordinates.right); + actions.clickAndHold(); + actions.moveToElement(canvas, secondElementCoordinates.left, secondElementCoordinates.right); + actions.release(); + actions.perform(); + GeneralUIUtils.ultimateWait(); + } private void selectReqAndCapAndConnect() throws Exception { addFirstReqOrCapAndPressNext(); @@ -348,6 +425,7 @@ public final class CanvasManager { actions.moveToElement(canvas, secondElement.getLocation().left + xOffset, secondElement.getLocation().right - yOffset); actions.release(); + actions.build(); actions.perform(); GeneralUIUtils.ultimateWait(); } @@ -373,13 +451,14 @@ public final class CanvasManager { public String updateElementNameInCanvas(CanvasElement canvasElement, String newInstanceName) throws Exception { GeneralUIUtils.ultimateWait();; clickOnCanvaElement(canvasElement); - WebElement updateInstanceName = GeneralUIUtils.getWebElementBy(By.id("editPencil")); - updateInstanceName.click(); + GeneralUIUtils.getWebElementBy(By.id("editPencil")).click(); + GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.ModalItems.RENAME_INSTANCE_CANCEL.getValue()).click(); + GeneralUIUtils.getWebElementBy(By.id("editPencil")).click(); WebElement instanceNameField = GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.GeneralCanvasItems.INSTANCE_NAME_FIELD.getValue()); String oldInstanceName = instanceNameField.getAttribute("value"); instanceNameField.clear(); instanceNameField.sendKeys(newInstanceName); - GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.ModalItems.OK.getValue()).click(); + GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.ModalItems.RENAME_INSTANCE_OK.getValue()).click(); GeneralUIUtils.ultimateWait(); GeneralUIUtils.waitForElementInVisibilityByTestId(By.className("w-sdc-modal-resource-instance-name")); SetupCDTest.getExtendTest().log(Status.INFO, String.format("Name of element instance changed from %s to %s", oldInstanceName, newInstanceName)); @@ -408,7 +487,7 @@ public final class CanvasManager { sumOfWaiting += napPeriod; if (sumOfWaiting > maxWait) { - throw new SkipException(String.format("Open bug 342260, can't select instance properly, waited for %s seconds", (int) (maxWait/1000))); + throw new SkipException(String.format("Bug 342260, can't select instance properly, waited for %s seconds after click on instance", (int) (maxWait/1000))); } } while (!isInstanceSelected); } @@ -447,16 +526,81 @@ public final class CanvasManager { GeneralUIUtils.selectByValueTextContained(dataTestId, reqCapType); } - public void linkElementsAndSelectCapReqTypeAndCapReqName(CanvasElement firstElement, CircleSize firstElementSize, CanvasElement secondElement, CircleSize secondElementSize, ConnectionWizardPopUpObject connectionWizardPopUpObject) throws Exception { - SetupCDTest.getExtendTest().log(Status.INFO, String.format("Creating link between %s and %s", firstElement.getElementType(), secondElement.getElementType())); - drawSimpleLink(firstElement, firstElementSize, secondElement, secondElementSize); + public void linkElementsAndSelectCapReqTypeAndCapReqName(CanvasElement firstElement, CanvasElement secondElement, ConnectionWizardPopUpObject connectionWizardPopUpObject) throws Exception { + SetupCDTest.getExtendTest().log(Status.INFO, String.format("Creating link between %s and %s", firstElement.getElementType(), secondElement.getElementType())); +// drawSimpleLink(firstElement, firstElementSize, secondElement, secondElementSize); + drawSimpleLink(firstElement.getElementNameOnCanvas(), secondElement.getElementNameOnCanvas()); selectTypeOfReqCap(DataTestIdEnum.LinkMenuItems.REQ_CAP_SELECT_DATA_TESTS_ID.getValue(),connectionWizardPopUpObject.getCapabilityTypeSecondItem()); - addFirstReqOrCapAndPressNext(); - selectReqCapByName(connectionWizardPopUpObject.getCapabilityNameSecondItem()); - linkMenuClickOnNextButton(); + addFirstReqOrCapAndPressNext(); + selectReqCapByName(connectionWizardPopUpObject.getCapabilityNameSecondItem()); + linkMenuClickOnNextButton(); + linkMenuClickOnFinishButton(); + } + + public Map<String, String> linkElementsWithCapPropAssignment(CanvasElement firstElement, CanvasElement secondElement, ConnectionWizardPopUpObject connectionWizardPopUpObject) throws Exception { + SetupCDTest.getExtendTest().log(Status.INFO, String.format("Creating link between %s and %s", firstElement.getElementType(), secondElement.getElementType())); + drawSimpleLink(firstElement.getElementNameOnCanvas(), secondElement.getElementNameOnCanvas()); + selectTypeOfReqCap(DataTestIdEnum.LinkMenuItems.REQ_CAP_SELECT_DATA_TESTS_ID.getValue(),connectionWizardPopUpObject.getCapabilityTypeSecondItem()); + addFirstReqOrCapAndPressNext(); + selectReqCapByName(connectionWizardPopUpObject.getCapabilityNameSecondItem()); + linkMenuClickOnNextButton(); + Map<String, String> mapOfValues = connectionWizardAssignCapPropValues(); linkMenuClickOnFinishButton(); + Thread.sleep(5000); + return mapOfValues; + } + + + + public Map<String, String> connectionWizardAssignCapPropValues() throws Exception{ + //get list of capability property value fields data-tests-ids in connection wizard + List<String> valueField = getListOfValueFieldIDs(); + //get map of field ids and their values, fill in values if empty + Map<String, String> propValues = getMapOfCapPropValues(valueField, true); + return propValues; + } + + public Map<String, String> connectionWizardCollectCapPropValues() throws Exception{ + //get list of capability property value fields data-tests-ids in connection wizard + List<String> valueField = getListOfValueFieldIDs(); + //get map of field ids and their values, collect existing values + Map<String, String> propValues = getMapOfCapPropValues(valueField, false); + return propValues; } + private List<String> getListOfValueFieldIDs() { + String propName = GeneralUIUtils.getWebElementsListByContainsClassName("multiline-ellipsis-content").get(0).getText(); + List<WebElement> valueNameElement = GeneralUIUtils.findElementsByXpath("//div[@class='dynamic-property-row nested-level-1']/div[1]"); + List<String> valueName = new ArrayList<>(); + for(int i=0; i < valueNameElement.size(); i++){ + valueName.add(valueNameElement.get(i).getText()); + } + //get list of value field names as appear in data-tests-id + List<String> valueField = new ArrayList<>(); + for(int i=0; i < valueName.size(); i++){ + valueField.add(PropertyNameBuilder.buildIComplexField(propName, valueName.get(i))); + } + return valueField; + } + + private Map<String, String> getMapOfCapPropValues(List<String> valueField, boolean isValueAssign) throws Exception { + SetupCDTest.getExtendTest().log(Status.INFO, String.format("Assigning values to properties of capabilities and/or collecting existing ones")); + Map<String, String> propValues = new HashMap<>(); + for(int i=0; i < valueField.size(); i++){ + String fieldId = valueField.get(i); + if(GeneralUIUtils.getWebElementByTestID(fieldId).getAttribute("value").isEmpty() && isValueAssign) { + //add value and put into map + propValues.put(fieldId, "value" + i); + PropertiesAssignmentPage.editPropertyValue(fieldId, "value" + i); + } else { + //put existing value into map + propValues.put(fieldId, GeneralUIUtils.getWebElementByTestID(valueField.get(i)).getAttribute("value")); + } + } + return propValues; + } + + public ImmutablePair<Integer, Integer> calcMidOfLink(ImmutablePair<Integer, Integer> location1, ImmutablePair<Integer, Integer> location2) { int x = (location1.getLeft()+location2.getLeft())/2; @@ -465,4 +609,21 @@ public final class CanvasManager { ImmutablePair<Integer, Integer> location = new ImmutablePair<>(x,y); return location; } + + public ImmutablePair<Integer, Integer> getElementCoordinates(String elementName){ + Object position = GeneralUIUtils.getElementPositionOnCanvas(elementName); + return converJSJsonToCoordinates(position); + } + + public ImmutablePair<Integer, Integer> getGreenDotCoordinatesOfElement(String elementName){ + Object position = GeneralUIUtils.getElementGreenDotPositionOnCanvas(elementName); + return converJSJsonToCoordinates(position); + } + + public ImmutablePair<Integer, Integer> converJSJsonToCoordinates(Object position) { + JsonElement root = new JsonParser().parse(position.toString()); + int xElement = root.getAsJsonObject().get("x").getAsInt(); + int yElement = root.getAsJsonObject().get("y").getAsInt(); + return new ImmutablePair<Integer, Integer>(xElement, yElement); + } } |