fa7181c896f45ccacdbfdd58e2e79aff354e1492
[vid.git] / vid-automation / src / main / java / vid / automation / test / test / DrawingBoardTest.java
1 package vid.automation.test.test;
2
3
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;
19
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;
24
25 public class DrawingBoardTest extends VidBaseTestCase {
26
27     private DrawingBoardPage drawingBoardPage = new DrawingBoardPage();
28     private String loadedServiceModelId = macroDrawingBoardComplexService.modelVersionId;
29
30     @Override
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, "", "");
35     }
36
37     public DrawingBoardTest() {
38     }
39
40     @AfterClass
41     private void goOutFromIframe() {
42         VidBasePage.goOutFromIframe();
43     }
44
45
46     @BeforeMethod
47     private void setNewServiceToDefault() throws Exception {
48         final String currentUrl = getDriver().getCurrentUrl();
49         System.out.println("currentUrl in @BeforeMethod setNewServiceToDefault: " + currentUrl);
50
51         if (currentUrl.endsWith("/servicePlanning?serviceModelId=" + macroDrawingBoardComplexService.modelVersionId)) {
52             getDriver().navigate().refresh();
53         } else {
54             setNewService(macroDrawingBoardComplexService, null);
55         }
56         GeneralUIUtils.ultimateWait();
57         drawingBoardPage.goToIframe();
58     }
59
60     private void setNewService(ModelInfo modelInfo, String instanceName) {
61         goOutFromIframe();
62         BrowseASDCPage browseASDCPage = new BrowseASDCPage();
63
64         prepareServicePreset(modelInfo.zipFileName, modelInfo.modelVersionId);
65
66         loadServicePopup(modelInfo.modelVersionId);
67
68         if (instanceName != null) {
69             Input.text(instanceName,Constants.BrowseASDC.NewServicePopup.INSTANCE_NAME);
70         }
71
72         Wait.waitByClassAndText("subscriber","",3);
73         GeneralUIUtils.ultimateWait();
74         VidBasePage.selectSubscriberById("e433710f-9217-458d-a79d-1c7aff376d89");
75
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);
88
89         browseASDCPage.selectAicZone("NFT1");
90         Click.onFirstSelectOptionByTestId(Constants.OwningEntity.PROJECT_SELECT_TEST_ID);
91
92         // select mandatory field
93         Click.onFirstSelectOptionByTestId(Constants.ServiceModelInfo.ROLLBACK_ON_FAILURE_TEST_ID);
94
95         Click.byTestId("form-set");
96         VidBasePage.goOutFromIframe();
97     }
98
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(
103                 ImmutableList.of(
104                         new ModelInfo(serviceModelId, modelInvariantId, zipFileName)
105                 ),
106                 subscriberId, new PresetMSOCreateServiceInstanceGen2());
107     }
108
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"};
113
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"};
117
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";
120
121
122     static final String[] rightTreeInitialElements = new String[]{
123         "Vnf:",
124         "vnf instance 1",
125         "Vf Module:",
126         "vf module instance 1",
127         "Vf Module:",
128         "vf module instance 2",
129         "Vf Module",
130         "Configuration:",
131         "configuration instance 1",
132         "Network:",
133         "network instance 1"};
134
135     @Test
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);
142     }
143
144     @Test
145     private void expandCollapseLeftTreeByClickOnIcon() {
146         drawingBoardPage.expandFirstItemInTreeByExpanderIcon(AVAILABLE_MODELS_TREE, leftTreeNodeChildren);
147         drawingBoardPage.collapseFirstItemInTreeByCollapseIcon(AVAILABLE_MODELS_TREE, leftTreeNodeChildren);
148     }
149
150     @Test
151     private void checkInitialStateLeftTree() {
152         drawingBoardPage.assertInitalTextOfTree(AVAILABLE_MODELS_TREE, leftTreeInitialElements);
153     }
154
155 //    @Test
156 //    private void checkAddButton() {
157 //        drawingBoardPage.checkAddButton(leftTreeRootElements);
158 //    }
159
160     @Test
161     private void checkLeafNodeLeftTreeHasNoExpander() {
162         drawingBoardPage.checkLeafNodeHasNoExpander(leftTreeNodeNameWithoutChildren);
163     }
164
165
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);
172     }
173
174     @Test(groups = { "underDevelopment" })
175     private void collapseExpandRightTreeByClickOnIcon() {
176         drawingBoardPage.collapseFirstItemInTreeByCollapseIcon(DRAWING_BOARD_TREE, rightTreeNodeChildren);
177         drawingBoardPage.expandFirstItemInTreeByExpanderIcon(DRAWING_BOARD_TREE, rightTreeNodeChildren);
178     }
179
180     @Test(groups = { "underDevelopment" })
181     private void checkInitialStateRightTree() {
182         drawingBoardPage.assertInitalTextOfTree(DRAWING_BOARD_TREE, rightTreeInitialElements);
183     }
184
185     @Test(groups = { "underDevelopment" })
186     private void checkLeafNodeRightTreeHasNoExpander() {
187         drawingBoardPage.checkLeafNodeHasNoExpander(rightTreeNodeNameWithoutChildren);
188     }
189
190     @Test(groups = { "underDevelopment" })
191     private void clickRightTreeNode_verifyLeftTreeNodeIsBlueAndExpanded() {
192
193         //// setup
194         drawingBoardPage.checkNodesVisible(leftTreeNodeChildren, false);
195
196         clickAndVerifyCrossTreeSync(
197                 DrawingBoardTest.rightTreeNodeName,
198                 DrawingBoardTest.leftTreeNodeName,
199                 DrawingBoardTest.leftTreeNodeChildren
200         );
201     }
202
203     @Test(groups = { "underDevelopment" })
204     private void clickLeftTreeNode_verifyRightTreeNodeIsBlueAndExpanded() {
205
206         //// setup
207         drawingBoardPage.collapseFirstItemInTreeByCollapseIcon(DRAWING_BOARD_TREE, rightTreeNodeChildren);
208
209         clickAndVerifyCrossTreeSync(
210                 leftTreeNodeName,
211                 rightTreeNodeName,
212                 rightTreeNodeChildren
213         );
214     }
215
216     @Test(groups = { "underDevelopment" })
217     private void clickRightTreeChild_verifyLeftTreeChildIsBlueAndParentExpanded() {
218
219         //// setup
220         drawingBoardPage.checkNodesVisible(leftTreeNodeChildren, false);
221
222         clickAndVerifyCrossTreeSync(
223                 rightTreeNodeChildren[0],
224                 leftTreeNodeChildren[0],
225                 leftTreeNodeChildren
226         );
227     }
228
229     @Test(groups = { "underDevelopment" })
230     private void clickLeftTreeChild_verifyRightTreeChildIsBlueAndParentExpanded() {
231
232         //// setup
233         drawingBoardPage.expandTreeByClickingNode(leftTreeNodeName, leftTreeNodeChildren);
234         drawingBoardPage.collapseFirstItemInTreeByCollapseIcon(DRAWING_BOARD_TREE, rightTreeNodeChildren);
235
236         clickAndVerifyCrossTreeSync(
237                 leftTreeNodeChildren[0],
238                 rightTreeNodeChildren[0],
239                 rightTreeNodeChildren
240         );
241     }
242
243     private void clickAndVerifyCrossTreeSync(String clickOn, String verifyHighlight, String[] verifyVisible) {
244         //// test
245         drawingBoardPage.clickNode(clickOn);
246
247         //// verify
248         drawingBoardPage.checkNodesHighlighted(new String[]{verifyHighlight});
249         drawingBoardPage.checkNodesVisible(verifyVisible, true);
250     }
251
252
253     /*
254       + Search box
255         - exists
256         - works (skimmy)
257     */
258     @Test
259     private void insertTestInSerachBox_verifyMatchesMarkedAndVisible() {
260         Wait.byText("vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1");
261         drawingBoardPage.checkSearch();
262
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");
266     }
267
268     /*
269       + Context menu
270         - click opens popup
271         - click closes popup
272     */
273     @Test(groups = { "underDevelopment" })
274     private void clickOnParentEllipsis_menuIsVisible() {
275         drawingBoardPage.checkContextMenu(rightTreeNodeNameWithoutChildren);
276     }
277
278     @Test(groups = { "underDevelopment" })
279     private void clickOnNodeEllipsis_menuIsVisible() {
280         drawingBoardPage.checkContextMenu(rightTreeNodeChildren[1]);
281     }
282
283     /*
284       + Tooltip
285         - hover: text appears
286         - again for "child"
287         - hover on no-icon: text does not appear
288      */
289     @Test(groups = { "underDevelopment" })
290     private void hoverAboveParentAlert_verifyDescriptionAppears() {
291         drawingBoardPage.showTooltipByHoverAboveAlertIcon(rightTreeNodeName);
292     }
293
294     @Test(groups = { "underDevelopment" })
295     private void hoverAboveNodeAlert_verifyDescriptionAppears() {
296         drawingBoardPage.showTooltipByHoverAboveAlertIcon(rightTreeNodeChildren[1]);
297     }
298
299     @Test
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);
305     }
306
307     private void setAndAssertServiceWithName(String instanceName){
308         goOutFromIframe();
309         setNewService(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails, instanceName);
310         GeneralUIUtils.ultimateWait();
311         drawingBoardPage.goToIframe();
312         drawingBoardPage.checkServiceInstanceName(instanceName);
313     }
314
315
316
317     @Test
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);
332     }
333
334     @Test
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);
350     }
351
352
353     @Test
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());
361     }
362
363     private void assertResultsInBrowseAsdcPage(){
364         goOutFromIframe();
365         BrowseASDCPage browseASDCPage = new BrowseASDCPage();
366         browseASDCPage.assertSearchFilterValue(loadedServiceModelId);
367     }
368
369     @Test
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);
376     }
377
378     private String getCurrentUrl(){
379         WebDriver driver = GeneralUIUtils.getDriver();
380         return driver.getCurrentUrl();
381     }
382
383     @Test
384     private void BackButton_verifyReturnToSearchResults(){
385         Click.byTestId(BACK_BUTTON);
386         Click.byTestId(Constants.DrawingBoard.STOP_INSTANTIATION_BUTTON);
387         assertResultsInBrowseAsdcPage();
388     }
389
390 }
391