1 package org.openecomp.sdc.uici.tests.utilities;
3 import static org.openecomp.sdc.common.datastructure.FunctionalInterfaces.retryMethodOnException;
5 import java.util.ArrayList;
7 import java.util.Random;
8 import java.util.function.Function;
9 import java.util.function.Supplier;
11 import org.apache.commons.lang3.tuple.ImmutablePair;
12 import org.json.simple.JSONArray;
13 import org.json.simple.JSONObject;
14 import org.json.simple.JSONValue;
15 import org.openecomp.sdc.uici.tests.datatypes.DataTestIdEnum;
16 import org.openecomp.sdc.uici.tests.datatypes.DataTestIdEnum.Dashboard;
17 import org.openqa.selenium.By;
18 import org.openqa.selenium.Keys;
19 import org.openqa.selenium.WebElement;
20 import org.openqa.selenium.support.ui.ExpectedConditions;
21 import org.openqa.selenium.support.ui.WebDriverWait;
23 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
24 import org.openecomp.sdc.be.model.LifecycleStateEnum;
25 import org.openecomp.sdc.be.model.Resource;
26 import org.openecomp.sdc.be.model.User;
27 import org.openecomp.sdc.ci.tests.datatypes.ComponentReqDetails;
28 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
29 import org.openecomp.sdc.ci.tests.datatypes.enums.NormativeTypesEnum;
30 import org.openecomp.sdc.ci.tests.datatypes.enums.ResourceCategoryEnum;
31 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
32 import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser;
33 import org.openecomp.sdc.common.datastructure.FunctionalInterfaces;
35 public final class ResourceUIUtils {
36 public static final String RESOURCE_NAME_PREFIX = "ResourceCDTest-";
37 protected static final boolean IS_BEFORE_TEST = true;
38 public static final String INITIAL_VERSION = "0.1";
39 public static final String ICON_RESOURCE_NAME = "call_controll";
40 protected static final String UPDATED_RESOURCE_ICON_NAME = "objectStorage";
42 private ResourceUIUtils() {
45 public static void defineResourceName(String resourceName) {
47 WebElement resourceNameTextbox = GeneralUIUtils.getDriver().findElement(By.name("componentName"));
48 resourceNameTextbox.clear();
49 resourceNameTextbox.sendKeys(resourceName);
52 public static void defineResourceCategory(String category, String datatestsid) {
54 GeneralUIUtils.getSelectList(category, datatestsid);
57 public static void importFileWithSendKeyBrowse(String FilePath, String FileName) throws Exception {
58 WebElement browsebutton = GeneralUIUtils.getWebElementWaitForVisible("browseButton");
59 browsebutton.sendKeys(FilePath + FileName);
62 public static void defineTagsList(ResourceReqDetails resource, String[] resourceTags) {
63 List<String> taglist = new ArrayList<String>();
65 WebElement resourceTagsTextbox = GeneralUIUtils.getWebElementWaitForVisible("i-sdc-tag-input");
66 for (String tag : resourceTags) {
67 resourceTagsTextbox.clear();
68 resourceTagsTextbox.sendKeys(tag);
69 resourceTagsTextbox.sendKeys(Keys.ENTER);
72 resource.setTags(taglist);
75 public static void defineVendorRelease(String resourceVendorRelease) {
77 WebElement resourceVendorReleaseTextbox = GeneralUIUtils.getWebElementWaitForVisible("vendorRelease");
78 resourceVendorReleaseTextbox.clear();
79 resourceVendorReleaseTextbox.sendKeys(resourceVendorRelease);
82 public static void defineProjectCode(String projectCode) {
84 WebElement resourceNameTextbox = GeneralUIUtils.getDriver().findElement(By.name("projectCode"));
85 resourceNameTextbox.clear();
86 resourceNameTextbox.sendKeys(projectCode);
89 public static void clickButton(String selectButton) {
91 WebElement clickButton = GeneralUIUtils.getDriver()
92 .findElement(By.xpath("//*[@data-tests-id='" + selectButton + "']"));
96 public static WebElement Waitfunctionforbuttons(String element, int timeout) {
97 WebDriverWait wait = new WebDriverWait(GeneralUIUtils.getDriver(), timeout);
98 return wait.until(ExpectedConditions.elementToBeClickable(By.xpath(element)));
102 public static void fillGeneralInformationPage(ResourceReqDetails resource, User user) {
104 resource.setContactId(user.getUserId());
105 resource.setCreatorUserId(user.getUserId());
106 resource.setCreatorFullName(user.getFullName());
107 defineResourceName(resource.getName());
108 defineResourceCategory(resource.getCategories().get(0).getSubcategories().get(0).getName(),
109 "selectGeneralCategory");
110 GeneralUIUtils.defineDescription(resource.getDescription());
111 GeneralUIUtils.defineVendorName(resource.getVendorName());
112 defineVendorRelease(resource.getVendorRelease());
113 defineTagsList(resource, new String[] { resource.getName() });
114 GeneralUIUtils.defineUserId(resource.getCreatorUserId());
115 } catch (Exception e) {
116 throw new RuntimeException(e);
120 public static ResourceReqDetails createResourceInUI(User user) {
121 ResourceReqDetails defineResourceDetails = defineResourceDetails();
122 GeneralUIUtils.clickAddComponent(DataTestIdEnum.Dashboard.BUTTON_ADD_VF);
124 GeneralUIUtils.waitForLoader();
125 fillGeneralInformationPage(defineResourceDetails, user);
126 GeneralUIUtils.clickCreateButton();
127 return defineResourceDetails;
131 @SuppressWarnings("deprecation")
132 private static void openImportWithFile(String filePath, String fileName, Dashboard elementType) {
133 Runnable openImportTask = () -> {
134 GeneralUIUtils.moveToHTMLElementByDataTestId(Dashboard.IMPORT_AREA.getValue());
135 WebElement imoprtVFButton = GeneralUIUtils.getWebElementByDataTestId(elementType.getValue());
136 imoprtVFButton.sendKeys(filePath + fileName);
138 retryMethodOnException(openImportTask);
142 public static ResourceReqDetails importVfcInUI(User user, String filePath, String fileName) {
143 ResourceReqDetails defineResourceDetails = defineResourceDetails();
144 openImportWithFile(filePath, fileName, DataTestIdEnum.Dashboard.IMPORT_VFC_FILE);
145 // Fill the general page fields.
146 GeneralUIUtils.waitForLoader();
147 fillGeneralInformationPage(defineResourceDetails, user);
148 GeneralUIUtils.clickCreateButton();
149 return defineResourceDetails;
160 public static ResourceReqDetails importVfInUI(User user, String filePath, String fileName) {
161 ResourceReqDetails defineResourceDetails = defineResourceDetails();
162 openImportWithFile(filePath, fileName, DataTestIdEnum.Dashboard.IMPORT_VF_FILE);
163 // Fill the general page fields.
164 GeneralUIUtils.waitForLoader();
165 fillGeneralInformationPage(defineResourceDetails, user);
167 GeneralUIUtils.clickSaveButton();
169 return defineResourceDetails;
172 public static ResourceReqDetails importVfInUIWithoutCheckin(User user, String filePath, String fileName) {
173 ResourceReqDetails defineResourceDetails = defineResourceDetails();
174 openImportWithFile(filePath, fileName, DataTestIdEnum.Dashboard.IMPORT_VF_FILE);
175 // Fill the general page fields.
176 GeneralUIUtils.waitForLoader();
177 fillGeneralInformationPage(defineResourceDetails, user);
178 GeneralUIUtils.clickSaveButton();
179 GeneralUIUtils.waitForLoader(40);
180 // String okButtonId=DataTestIdEnum.ModalItems.OK.getValue();
181 // ResourceUIUtils.clickButton(okButtonId);
182 // ResourceUIUtils.Waitfunctionforbuttons("//*[@data-tests-id='"+okButtonId+"']",10);
183 // ResourceUIUtils.clickButton(okButtonId);
184 return defineResourceDetails;
187 public static ResourceReqDetails importVfFromOnBoardingModalWithoutCheckin(User user, String fileName) {
188 ResourceReqDetails defineResourceDetails = defineResourceDetails();
189 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.OnBoardingTable.OPEN_MODAL_BUTTON.getValue()).click();
190 GeneralUIUtils.getWebElementWaitForVisible(fileName).click();
191 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.OnBoardingTable.IMPORT_ICON.getValue()).click();
193 // Fill the general page fields.
194 GeneralUIUtils.waitForLoader();
195 GeneralUIUtils.clickSaveButton();
196 GeneralUIUtils.waitForLoader();
197 return defineResourceDetails;
200 @SuppressWarnings("deprecation")
201 public static void updateVfCsar(String filePath, String fileName) {
202 retryMethodOnException(
203 () -> GeneralUIUtils.getWebElementByDataTestId(DataTestIdEnum.GeneralSection.BROWSE_BUTTON.getValue())
204 .sendKeys(filePath + fileName));
205 GeneralUIUtils.clickSaveButton();
206 GeneralUIUtils.waitForLoader();
209 public static void updateVfCsarFromOnBoarding() {
210 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.GeneralSection.BROWSE_BUTTON.getValue()).click();
211 GeneralUIUtils.getWebElementsListWaitForVisible(DataTestIdEnum.OnBoardingTable.CSAR_ROW.getValue()).get(0)
213 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.OnBoardingTable.UPDATE_ICON.getValue()).click();
214 GeneralUIUtils.clickSaveButton();
215 GeneralUIUtils.waitForLoader();
218 public static ResourceReqDetails defineResourceDetails() {
219 ResourceReqDetails resource = new ResourceReqDetails();
220 resource = ElementFactory.getDefaultResource(NormativeTypesEnum.ROOT,
221 ResourceCategoryEnum.GENERIC_NETWORK_ELEMENTS);
222 resource.setVersion(INITIAL_VERSION);
223 resource.setIcon(ICON_RESOURCE_NAME);
224 resource.setResourceType(ResourceTypeEnum.VF.toString());
225 resource.setName(getRandomComponentName(RESOURCE_NAME_PREFIX));
230 protected static String getRandomComponentName(String prefix) {
231 return prefix + new Random().nextInt(10000);
234 public static ImmutablePair<String, String> getRIPosition(ResourceReqDetails createResourceInUI, User user) {
235 GeneralUIUtils.sleep(1000);
236 String responseAfterDrag = RestCDUtils.getResource(createResourceInUI).getResponse();
237 JSONObject jsonResource = (JSONObject) JSONValue.parse(responseAfterDrag);
238 String xPosPostDrag = (String) ((JSONObject) ((JSONArray) jsonResource.get("componentInstances")).get(0))
240 String yPosPostDrag = (String) ((JSONObject) ((JSONArray) jsonResource.get("componentInstances")).get(0))
242 return new ImmutablePair<String, String>(xPosPostDrag, yPosPostDrag);
246 public static void fillinDeploymentArtifactFormAndClickDone(
247 org.openecomp.sdc.ci.tests.datatypes.ArtifactReqDetails details, String filePath) {
248 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.ArtifactModal.LABEL.getValue())
249 .sendKeys(details.getArtifactLabel());
250 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.ModalItems.DESCRIPTION.getValue())
251 .sendKeys(details.getDescription());
252 GeneralUIUtils.getSelectList(details.getArtifactType(), DataTestIdEnum.ArtifactModal.TYPE.getValue());
253 retryMethodOnException(() -> GeneralUIUtils
254 .getWebElementByDataTestId(DataTestIdEnum.GeneralSection.BROWSE_BUTTON.getValue()).sendKeys(filePath));
255 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.ModalItems.DONE.getValue()).click();
256 GeneralUIUtils.waitForLoader();
260 * Tests and Accept resource or service
262 * @param createResourceInUI
264 public static void testAndAcceptElement(ComponentReqDetails createResourceInUI) {
265 GeneralUIUtils.waitForLoader();
266 GeneralUIUtils.getWebElementWaitForVisible(createResourceInUI.getName()).click();
267 GeneralUIUtils.waitForLoader();
268 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.LifeCyleChangeButtons.START_TESTING.getValue())
270 GeneralUIUtils.waitForLoader();
271 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.LifeCyleChangeButtons.ACCEPT.getValue()).click();
272 GeneralUIUtils.waitForLoader();
273 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.ModalItems.ACCEP_TESTING_MESSAGE.getValue())
274 .sendKeys("resource " + createResourceInUI.getName() + " tested successfuly");
275 GeneralUIUtils.waitForLoader();
276 GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.ModalItems.OK.getValue()).click();
277 GeneralUIUtils.waitForLoader();
278 GeneralUIUtils.waitForElementToDisappear(DataTestIdEnum.ModalItems.OK.getValue());
282 * Waits Until resource changed to requested lifeCycle State
284 * @param createResourceInUI
285 * @param requestedLifeCycleState
288 public static Resource waitForState(ResourceReqDetails createResourceInUI,
289 LifecycleStateEnum requestedLifeCycleState) {
290 Supplier<Resource> resourceGetter = () -> {
291 String resourceString = RestCDUtils.getResource(createResourceInUI).getResponse();
292 return ResponseParser.convertResourceResponseToJavaObject(resourceString);
294 Function<Resource, Boolean> verifier = res -> res.getLifecycleState() == requestedLifeCycleState;
295 return FunctionalInterfaces.retryMethodOnResult(resourceGetter, verifier);