1 package vid.automation.test.test;
4 import com.google.common.collect.ImmutableList;
5 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateServiceInstanceGen2;
6 import org.onap.sdc.ci.tests.datatypes.UserCredentials;
7 import org.onap.sdc.ci.tests.utilities.GeneralUIUtils;
8 import org.openqa.selenium.WebDriver;
9 import org.testng.Assert;
10 import org.testng.annotations.AfterClass;
11 import org.testng.annotations.BeforeMethod;
12 import org.testng.annotations.Test;
13 import vid.automation.test.Constants;
14 import vid.automation.test.infra.*;
15 import vid.automation.test.model.User;
16 import vid.automation.test.sections.BrowseASDCPage;
17 import vid.automation.test.sections.DrawingBoardPage;
18 import vid.automation.test.sections.VidBasePage;
20 import static org.testng.AssertJUnit.assertFalse;
21 import static vid.automation.test.Constants.DrawingBoard.*;
22 import static vid.automation.test.infra.ModelInfo.macroDrawingBoardComplexService;
23 import static vid.automation.test.infra.ModelInfo.macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails;
25 public class DrawingBoardTest extends VidBaseTestCase {
27 private DrawingBoardPage drawingBoardPage = new DrawingBoardPage();
28 private String loadedServiceModelId = macroDrawingBoardComplexService.modelVersionId;
31 protected UserCredentials getUserCredentials() {
32 String userName = Constants.Users.SILVIA_ROBBINS_TYLER_SILVIA;
33 User user = usersService.getUser(userName);
34 return new UserCredentials(user.credentials.userId, user.credentials.password, userName, "", "");
37 public DrawingBoardTest() {
41 private void goOutFromIframe() {
42 VidBasePage.goOutFromIframe();
47 private void setNewServiceToDefault() throws Exception {
48 final String currentUrl = getDriver().getCurrentUrl();
49 System.out.println("currentUrl in @BeforeMethod setNewServiceToDefault: " + currentUrl);
51 if (currentUrl.endsWith("/servicePlanning?serviceModelId=" + macroDrawingBoardComplexService.modelVersionId)) {
52 getDriver().navigate().refresh();
54 setNewService(macroDrawingBoardComplexService, null);
56 GeneralUIUtils.ultimateWait();
57 drawingBoardPage.goToIframe();
60 private void setNewService(ModelInfo modelInfo, String instanceName) {
62 BrowseASDCPage browseASDCPage = new BrowseASDCPage();
64 prepareServicePreset(modelInfo.zipFileName, modelInfo.modelVersionId);
66 loadServicePopup(modelInfo.modelVersionId);
68 if (instanceName != null) {
69 Input.text(instanceName,Constants.BrowseASDC.NewServicePopup.INSTANCE_NAME);
72 Wait.waitByClassAndText("subscriber","",3);
73 GeneralUIUtils.ultimateWait();
74 VidBasePage.selectSubscriberById("e433710f-9217-458d-a79d-1c7aff376d89");
76 GeneralUIUtils.ultimateWait();
77 GeneralUIUtils.ultimateWait();
78 browseASDCPage.selectProductFamily("e433710f-9217-458d-a79d-1c7aff376d89");
79 GeneralUIUtils.ultimateWait();
80 String serviceType = "TYLER SILVIA";
81 // Wait.waitByClassAndText(Constants.CreateNewInstance.SERVICE_TYPE_OPTION_CLASS, serviceType, 30);
82 browseASDCPage.selectServiceTypeByName(serviceType);
83 GeneralUIUtils.ultimateWait();
84 GeneralUIUtils.ultimateWait();
85 browseASDCPage.selectLcpRegion("hvf6");
86 browseASDCPage.selectTenant("3f21eeea6c2c486bba31dab816c05a32");
87 Click.onFirstSelectOptionByTestId(Constants.OwningEntity.OWNING_ENTITY_SELECT_TEST_ID);
89 browseASDCPage.selectAicZone("NFT1");
90 Click.onFirstSelectOptionByTestId(Constants.OwningEntity.PROJECT_SELECT_TEST_ID);
92 // select mandatory field
93 Click.onFirstSelectOptionByTestId(Constants.ServiceModelInfo.ROLLBACK_ON_FAILURE_TEST_ID);
95 Click.byTestId("form-set");
96 VidBasePage.goOutFromIframe();
99 private void prepareServicePreset(String zipFileName, String serviceModelId) {
100 String modelInvariantId = "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0";
101 String subscriberId = "e433710f-9217-458d-a79d-1c7aff376d89";
102 registerExpectationForServiceDeployment(
104 new ModelInfo(serviceModelId, modelInvariantId, zipFileName)
106 subscriberId, new PresetMSOCreateServiceInstanceGen2());
109 static final String leftTreeNodeName = "VF_vGeraldine 0";
110 static final String leftTreeNodeNameWithoutChildren = "Port Mirroring Configuration By Policy 0";
111 static final String[] leftTreeNodeChildren = {"vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1", "vf_vgeraldine0..VfVgeraldine..vflorence_gpb..module-2", "vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0"};
112 static final String[] leftTreeInitialElements = new String[]{"VNF", "VF_vGeraldine 0", "1", "C","Port Mirroring Configuration By Policy 0"};
114 static final String rightTreeNodeName = "d6557200-ecf2-4641-8094-5393ae3aae60-VF_vGeraldine 0";
115 static final String rightTreeNodeNameWithoutChildren = "ddc3f20c-08b5-40fd-af72-c6d14636b986-ExtVL 0";
116 static final String[] rightTreeNodeChildren = {"522159d5-d6e0-4c2a-aa44-5a542a12a830-vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1", "41708296-e443-4c71-953f-d9a010f059e1-vf_vgeraldine0..VfVgeraldine..vflorence_gpb..module-2", "a27f5cfc-7f12-4f99-af08-0af9c3885c87-vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0"};
118 private static final String EMPTY_BOARD_TITLE = "Please add objects (VNF a-la-carteVNFs, network, modules etc.) from the left tree to design the service instance";
119 private static final String EMPTY_BOARD_SUBTITLE = "Once done, click Deploy to start instantiation";
122 static final String[] rightTreeInitialElements = new String[]{
126 "vf module instance 1",
128 "vf module instance 2",
131 "configuration instance 1",
133 "network instance 1"};
136 private void expandCollapseLeftTreeByClickOnRow() {
137 Wait.byText(leftTreeNodeName);
138 drawingBoardPage.expandTreeByClickingNode(leftTreeNodeName, leftTreeNodeChildren);
139 //should chec king with Golan if click also collapse
140 //drawingBoardPage.collapseTreeByClickingNode(leftTreeNodeName, leftTreeNodeChildren)));
141 drawingBoardPage.verifyNonCollapsableTreeByClickingNode(leftTreeNodeName, leftTreeNodeChildren);
145 private void expandCollapseLeftTreeByClickOnIcon() {
146 drawingBoardPage.expandFirstItemInTreeByExpanderIcon(AVAILABLE_MODELS_TREE, leftTreeNodeChildren);
147 drawingBoardPage.collapseFirstItemInTreeByCollapseIcon(AVAILABLE_MODELS_TREE, leftTreeNodeChildren);
151 private void checkInitialStateLeftTree() {
152 drawingBoardPage.assertInitalTextOfTree(AVAILABLE_MODELS_TREE, leftTreeInitialElements);
156 // private void checkAddButton() {
157 // drawingBoardPage.checkAddButton(leftTreeRootElements);
161 private void checkLeafNodeLeftTreeHasNoExpander() {
162 drawingBoardPage.checkLeafNodeHasNoExpander(leftTreeNodeNameWithoutChildren);
166 @Test(groups = { "underDevelopment" })
167 private void collapseExpandRightTreeByClickOnRow() {
168 drawingBoardPage.collapseFirstItemInTreeByCollapseIcon(DRAWING_BOARD_TREE, rightTreeNodeChildren);
169 //should checking with Golan if click also collapse
170 //drawingBoardPage.collapseTreeByClickingNode(rightTreeNodeName, rightTreeNodeChildren)));
171 drawingBoardPage.expandTreeByClickingNode(rightTreeNodeName, rightTreeNodeChildren);
174 @Test(groups = { "underDevelopment" })
175 private void collapseExpandRightTreeByClickOnIcon() {
176 drawingBoardPage.collapseFirstItemInTreeByCollapseIcon(DRAWING_BOARD_TREE, rightTreeNodeChildren);
177 drawingBoardPage.expandFirstItemInTreeByExpanderIcon(DRAWING_BOARD_TREE, rightTreeNodeChildren);
180 @Test(groups = { "underDevelopment" })
181 private void checkInitialStateRightTree() {
182 drawingBoardPage.assertInitalTextOfTree(DRAWING_BOARD_TREE, rightTreeInitialElements);
185 @Test(groups = { "underDevelopment" })
186 private void checkLeafNodeRightTreeHasNoExpander() {
187 drawingBoardPage.checkLeafNodeHasNoExpander(rightTreeNodeNameWithoutChildren);
190 @Test(groups = { "underDevelopment" })
191 private void clickRightTreeNode_verifyLeftTreeNodeIsBlueAndExpanded() {
194 drawingBoardPage.checkNodesVisible(leftTreeNodeChildren, false);
196 clickAndVerifyCrossTreeSync(
197 DrawingBoardTest.rightTreeNodeName,
198 DrawingBoardTest.leftTreeNodeName,
199 DrawingBoardTest.leftTreeNodeChildren
203 @Test(groups = { "underDevelopment" })
204 private void clickLeftTreeNode_verifyRightTreeNodeIsBlueAndExpanded() {
207 drawingBoardPage.collapseFirstItemInTreeByCollapseIcon(DRAWING_BOARD_TREE, rightTreeNodeChildren);
209 clickAndVerifyCrossTreeSync(
212 rightTreeNodeChildren
216 @Test(groups = { "underDevelopment" })
217 private void clickRightTreeChild_verifyLeftTreeChildIsBlueAndParentExpanded() {
220 drawingBoardPage.checkNodesVisible(leftTreeNodeChildren, false);
222 clickAndVerifyCrossTreeSync(
223 rightTreeNodeChildren[0],
224 leftTreeNodeChildren[0],
229 @Test(groups = { "underDevelopment" })
230 private void clickLeftTreeChild_verifyRightTreeChildIsBlueAndParentExpanded() {
233 drawingBoardPage.expandTreeByClickingNode(leftTreeNodeName, leftTreeNodeChildren);
234 drawingBoardPage.collapseFirstItemInTreeByCollapseIcon(DRAWING_BOARD_TREE, rightTreeNodeChildren);
236 clickAndVerifyCrossTreeSync(
237 leftTreeNodeChildren[0],
238 rightTreeNodeChildren[0],
239 rightTreeNodeChildren
243 private void clickAndVerifyCrossTreeSync(String clickOn, String verifyHighlight, String[] verifyVisible) {
245 drawingBoardPage.clickNode(clickOn);
248 drawingBoardPage.checkNodesHighlighted(new String[]{verifyHighlight});
249 drawingBoardPage.checkNodesVisible(verifyVisible, true);
259 private void insertTestInSerachBox_verifyMatchesMarkedAndVisible() {
260 Wait.byText("vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1");
261 drawingBoardPage.checkSearch();
263 final String searchTerm = "Vgeraldine..vflorence";
264 GeneralUIUtils.setWebElementByTestId(SEARCH_LEFT_TREE, searchTerm);
265 drawingBoardPage.checkNodesVisibleAndMatchIsHighlighted(searchTerm,"vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1", "vf_vgeraldine0..VfVgeraldine..vflorence_gpb..module-2");
273 @Test(groups = { "underDevelopment" })
274 private void clickOnParentEllipsis_menuIsVisible() {
275 drawingBoardPage.checkContextMenu(rightTreeNodeNameWithoutChildren);
278 @Test(groups = { "underDevelopment" })
279 private void clickOnNodeEllipsis_menuIsVisible() {
280 drawingBoardPage.checkContextMenu(rightTreeNodeChildren[1]);
285 - hover: text appears
287 - hover on no-icon: text does not appear
289 @Test(groups = { "underDevelopment" })
290 private void hoverAboveParentAlert_verifyDescriptionAppears() {
291 drawingBoardPage.showTooltipByHoverAboveAlertIcon(rightTreeNodeName);
294 @Test(groups = { "underDevelopment" })
295 private void hoverAboveNodeAlert_verifyDescriptionAppears() {
296 drawingBoardPage.showTooltipByHoverAboveAlertIcon(rightTreeNodeChildren[1]);
300 private void clickOnHeaderEllipsis_menuIsVisible() {
301 final String contextMenu = CONTEXT_MENU_HEADER_EDIT_ITEM;
302 drawingBoardPage.checkThatContextMenuNotExist(contextMenu);
303 Click.byTestId(CONTEXT_MENU_BUTTON_HEADER);
304 drawingBoardPage.checkThatContextMenuExist(contextMenu);
307 private void setAndAssertServiceWithName(String instanceName){
309 setNewService(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails, instanceName);
310 GeneralUIUtils.ultimateWait();
311 drawingBoardPage.goToIframe();
312 drawingBoardPage.checkServiceInstanceName(instanceName);
318 private void editPopup_quantityNumberAndNameAreUpdated() {
319 String initialInstanceName = "MyInstanceName";
320 String updatedInstanceName = "UpdatedInstanceName";
321 setAndAssertServiceWithName(initialInstanceName);
322 final int updatedQuantity = 10;
323 Click.byTestId(CONTEXT_MENU_BUTTON_HEADER);
324 Click.byTestId(CONTEXT_MENU_HEADER_EDIT_ITEM);
325 Assert.assertTrue(Exists.byId("instance-popup"), "context menu should not appear");
326 SelectOption.byIdAndVisibleText("quantity-select", String.valueOf(updatedQuantity));
327 Input.replaceText(updatedInstanceName,Constants.BrowseASDC.NewServicePopup.INSTANCE_NAME );
328 Click.byTestId(Constants.BrowseASDC.NewServicePopup.SET_BUTTON);
329 GeneralUIUtils.ultimateWait();
330 drawingBoardPage.checkQuantityNumberIsCorrect(updatedQuantity);
331 drawingBoardPage.checkServiceInstanceName(updatedInstanceName);
335 private void cancelEditPopup_quantityNumberAndNameNotUpdated() {
336 String initialInstanceName = "MyInstanceName";
337 String updatedInstanceName = "UpdatedInstanceName";
338 setAndAssertServiceWithName(initialInstanceName);
339 final int updatedQuantity = 10;
340 String initialQuantity = Get.byTestId(SERVICE_QUANTITY).getText();
341 Click.byTestId(CONTEXT_MENU_BUTTON_HEADER);
342 Click.byTestId(CONTEXT_MENU_HEADER_EDIT_ITEM);
343 Assert.assertTrue(Exists.byId("instance-popup"), "context menu should not appear");
344 SelectOption.byIdAndVisibleText("quantity-select", String.valueOf(updatedQuantity));
345 Input.replaceText(updatedInstanceName,Constants.BrowseASDC.NewServicePopup.INSTANCE_NAME );
346 Click.byTestId(Constants.BrowseASDC.NewServicePopup.CANCEL_BUTTON);
347 GeneralUIUtils.ultimateWait();
348 drawingBoardPage.checkQuantityNumberIsCorrect(Integer.valueOf(initialQuantity));
349 drawingBoardPage.checkServiceInstanceName(initialInstanceName);
354 private void checkHeader_verifyElementsExist(){
355 drawingBoardPage.checkExistsAndEnabled(BACK_BUTTON);
356 drawingBoardPage.checkServiceInstanceName(DEFAULT_SERVICE_NAME);
357 drawingBoardPage.checkQuantityNumberIsCorrect(1);
358 drawingBoardPage.checkExistsAndEnabled(CONTEXT_MENU_BUTTON_HEADER);
359 assertFalse(Get.byTestId("orchStatusLabel").isDisplayed());
360 assertFalse(Get.byTestId("orchStatusValue").isDisplayed());
363 private void assertResultsInBrowseAsdcPage(){
365 BrowseASDCPage browseASDCPage = new BrowseASDCPage();
366 browseASDCPage.assertSearchFilterValue(loadedServiceModelId);
370 private void BackButtonWithCancel_verifyStayInTheSamePage(){
371 String currentUrl = getCurrentUrl();
372 Click.byTestId(BACK_BUTTON);
373 Click.byTestId(Constants.DrawingBoard.CANCEL_BUTTON);
374 String newUrl = getCurrentUrl();
375 org.testng.Assert.assertEquals(currentUrl, newUrl);
378 private String getCurrentUrl(){
379 WebDriver driver = GeneralUIUtils.getDriver();
380 return driver.getCurrentUrl();
384 private void BackButton_verifyReturnToSearchResults(){
385 Click.byTestId(BACK_BUTTON);
386 Click.byTestId(Constants.DrawingBoard.STOP_INSTANTIATION_BUTTON);
387 assertResultsInBrowseAsdcPage();