@digital-ai/devops-page-object-deploy 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/module.js CHANGED
@@ -1,13 +1,14 @@
1
- import {test as $lE6ZQ$test} from "@playwright/test";
1
+ import {test as $lE6ZQ$test, expect as $lE6ZQ$expect} from "@playwright/test";
2
+ import {split as $lE6ZQ$split, join as $lE6ZQ$join, take as $lE6ZQ$take} from "rambda";
2
3
 
3
4
  class $b464119f5ec5aad0$export$6e2c8f0811a474ce {
4
5
  constructor(sectionRootLocator){
5
6
  this.sectionRoot = sectionRootLocator;
6
7
  }
7
8
  /**
8
- * Get child element in the section "this.sectionRoot" refers to
9
- * @param childElementLocator
10
- */ findElementInSection(childElementLocator) {
9
+ * Get child element in the section "this.sectionRoot" refers to
10
+ * @param childElementLocator
11
+ */ findElementInSection(childElementLocator) {
11
12
  return this.sectionRoot.locator(childElementLocator);
12
13
  }
13
14
  }
@@ -19,8 +20,8 @@ class $66de4f08dadae772$export$cc4f63927c41742f extends (0, $b464119f5ec5aad0$ex
19
20
  super(page.getByTestId("primaryNav"));
20
21
  }
21
22
  /**
22
- * Click on side navigation links
23
- */ async clickSideLink(sideLinkLocator) {
23
+ * Click on side navigation links
24
+ */ async clickSideLink(sideLinkLocator) {
24
25
  await this.sectionRoot.locator(sideLinkLocator).click();
25
26
  }
26
27
  }
@@ -42,59 +43,59 @@ class $26d8c96bf2341a59$export$110709f040143804 extends (0, $66de4f08dadae772$ex
42
43
  this.expandButtonLocator = page.locator("span[title='Expand']");
43
44
  }
44
45
  /**
45
- * Click on go back button on side naviation links
46
- */ async goBack() {
46
+ * Click on go back button on side naviation links
47
+ */ async goBack() {
47
48
  await this.backButtonLocator.waitFor();
48
49
  await this.backButtonLocator.click();
49
50
  }
50
51
  /**
51
- * Click on Explorer from left panel
52
- */ async clickExplorer() {
52
+ * Click on Explorer from left panel
53
+ */ async clickExplorer() {
53
54
  await this.clickSideLink(this.linkExploreLocator);
54
55
  }
55
56
  /**
56
- * Click on Compare from left panel
57
- */ async clickCompare() {
57
+ * Click on Compare from left panel
58
+ */ async clickCompare() {
58
59
  await this.clickSideLink(this.linkCompareLocator);
59
60
  }
60
61
  /**
61
- * Click on Reports from left panel
62
- */ async clickReports() {
62
+ * Click on Reports from left panel
63
+ */ async clickReports() {
63
64
  await this.clickSideLink(this.linkReportsLocator);
64
65
  }
65
66
  /**
66
- * Click on Rules and Macros from left panel
67
- */ async clickRulesAndMacros() {
67
+ * Click on Rules and Macros from left panel
68
+ */ async clickRulesAndMacros() {
68
69
  await this.clickSideLink(this.linkRulesAndMacrosLocator);
69
70
  }
70
71
  /**
71
- * Click on Gitops from left panel
72
- */ async clickGitOps() {
72
+ * Click on Gitops from left panel
73
+ */ async clickGitOps() {
73
74
  await this.clickSideLink(this.linkGitOps);
74
75
  }
75
76
  /**
76
- * Click on Local sources from left panel
77
- */ async clickLocalSources() {
77
+ * Click on Local sources from left panel
78
+ */ async clickLocalSources() {
78
79
  await this.clickSideLink(this.linkLocalSource);
79
80
  }
80
81
  /**
81
- * Click on Plugins from left panel
82
- */ async clickPlugins() {
82
+ * Click on Plugins from left panel
83
+ */ async clickPlugins() {
83
84
  await this.clickSideLink(this.linkPlugins);
84
85
  }
85
86
  /**
86
- * Click on User Managements from left panel
87
- */ async clickUserManagement() {
87
+ * Click on User Managements from left panel
88
+ */ async clickUserManagement() {
88
89
  await this.clickSideLink(this.linkUserManagement);
89
90
  }
90
91
  /**
91
- * Click on Collapse button from left panel
92
- */ async clickCollapse() {
92
+ * Click on Collapse button from left panel
93
+ */ async clickCollapse() {
93
94
  await this.clickSideLink(this.collapseButtonLocator);
94
95
  }
95
96
  /**
96
- * Click on Expand from left panel
97
- */ async clickExpand() {
97
+ * Click on Expand from left panel
98
+ */ async clickExpand() {
98
99
  await this.clickSideLink(this.expandButtonLocator);
99
100
  }
100
101
  }
@@ -120,38 +121,50 @@ class $5dbb03b38de032e2$export$7c6e2c02157bb7d2 extends (0, $b464119f5ec5aad0$ex
120
121
 
121
122
  class $54bcd1bcf08dd053$export$d9b273488cd8ce6f extends (0, $b464119f5ec5aad0$export$6e2c8f0811a474ce) {
122
123
  /**
123
- *
124
- * @param menuContentRootLocator menu content root locator
125
- * @param menuLinkLocator Menu link locator thats used to open/close the menu
126
- * @param menuItemsParentLocator Menu items that opens up when menu link is clicked
127
- */ constructor(menuContentRootLocator, menuLinkLocator, menuItemsParentLocator){
124
+ *
125
+ * @param menuContentRootLocator menu content root locator
126
+ * @param menuLinkLocator Menu link locator thats used to open/close the menu
127
+ * @param menuItemsParentLocator Menu items that opens up when menu link is clicked
128
+ */ constructor(menuContentRootLocator, menuLinkLocator, menuItemsParentLocator){
128
129
  super(menuContentRootLocator);
129
130
  this.menuLinkLocator = menuLinkLocator;
130
131
  this.menuItemsParentLocator = menuContentRootLocator.locator(menuItemsParentLocator);
131
132
  }
132
133
  /**
133
- * Click on a menu item
134
- * @param menuItemLocator
135
- */ async clickMenuItem(menuItemLocator) {
134
+ * Click on a menu item
135
+ * @param menuItemLocator
136
+ */ async clickMenuItem(menuItemLocator) {
136
137
  if (!await this.menuItemsParentLocator.locator(menuItemLocator).isVisible()) await this.menuLinkLocator.click();
137
138
  return await this.menuItemsParentLocator.locator(menuItemLocator).click();
138
139
  }
139
140
  /**
140
- * Close a menu item
141
- */ async close() {
141
+ * Close a menu item
142
+ */ async close() {
142
143
  await this.menuLinkLocator.click();
143
144
  }
144
145
  /**
145
- * Note : Support only one level of menu items not being open iow if the link to click
146
- * @param mouseOverLocator
147
- * @param menuItemLocator
148
- */ async hoverFlyoutAndClickMenuItem(mouseOverLocator, menuItemLocator) {
146
+ * Note : Support only one level of menu items not being open iow if the link to click
147
+ * @param mouseOverLocator
148
+ * @param menuItemLocator
149
+ */ async hoverFlyoutAndClickMenuItem(mouseOverLocator, menuItemLocator) {
149
150
  if (!await this.menuItemsParentLocator.locator(menuItemLocator).isVisible()) {
150
151
  await mouseOverLocator.hover();
151
152
  await this.menuLinkLocator.click();
152
153
  }
153
154
  await menuItemLocator.click();
154
155
  }
156
+ /**
157
+ * Open contextual menu dots of ci to work with contextual-menu items.
158
+ */ async openContextualMenuDots() {
159
+ await this.menuLinkLocator.click();
160
+ }
161
+ /**
162
+ * Find exact menu locators using menu parent locators.
163
+ * @param childElementLocator
164
+ * @returns
165
+ */ async findElementInMenu(childElementLocator) {
166
+ return this.menuItemsParentLocator.locator(childElementLocator);
167
+ }
155
168
  }
156
169
 
157
170
 
@@ -165,28 +178,28 @@ class $b4bd429df4806013$export$5929c05a25eed48f extends (0, $54bcd1bcf08dd053$ex
165
178
  this.getDataForSupport = page.locator('a[title="Get data for support"]');
166
179
  }
167
180
  /**
168
- * Click on online Documentation menu option
169
- */ async clickOnlineDocumentation() {
181
+ * Click on online Documentation menu option
182
+ */ async clickOnlineDocumentation() {
170
183
  await this.clickMenuItem(this.onlineDoc);
171
184
  }
172
185
  /**
173
- * Click on menu option
174
- */ async clickSupportRequest() {
186
+ * Click on menu option
187
+ */ async clickSupportRequest() {
175
188
  await this.clickMenuItem(this.supportRequest);
176
189
  }
177
190
  /**
178
- * Click on Digital.ai website menu option
179
- */ async clickOfficialWebsite() {
191
+ * Click on Digital.ai website menu option
192
+ */ async clickOfficialWebsite() {
180
193
  await this.clickMenuItem(this.website);
181
194
  }
182
195
  /**
183
- * Click on usage matrix menu option
184
- */ async clickUsageMatrix() {
196
+ * Click on usage matrix menu option
197
+ */ async clickUsageMatrix() {
185
198
  await this.clickMenuItem(this.usageMatrix);
186
199
  }
187
200
  /**
188
- * Click on Get data for support menu option
189
- */ async clickGetDataForSupport() {
201
+ * Click on Get data for support menu option
202
+ */ async clickGetDataForSupport() {
190
203
  await this.clickMenuItem(this.getDataForSupport);
191
204
  }
192
205
  }
@@ -219,33 +232,33 @@ class $e05e449fbf3516f1$export$1d7840d5cdc861d5 extends (0, $54bcd1bcf08dd053$ex
219
232
  this.systemInformation = page.getByTitle("System information");
220
233
  }
221
234
  /**
222
- * Click on settings menu option
223
- */ async clickSettings() {
235
+ * Click on settings menu option
236
+ */ async clickSettings() {
224
237
  await this.clickMenuItem(this.settings);
225
238
  }
226
239
  /**
227
- * Click on renew license menu option
228
- */ async clickRenewLicense() {
240
+ * Click on renew license menu option
241
+ */ async clickRenewLicense() {
229
242
  await this.clickMenuItem(this.renewLicense);
230
243
  }
231
244
  /**
232
- * Click on view as menu option
233
- */ async clickViewAs() {
245
+ * Click on view as menu option
246
+ */ async clickViewAs() {
234
247
  await this.clickMenuItem(this.viewAs);
235
248
  }
236
249
  /**
237
- * Click on maintenance mode menu option
238
- */ async clickMaintenanceMode() {
250
+ * Click on maintenance mode menu option
251
+ */ async clickMaintenanceMode() {
239
252
  await this.clickMenuItem(this.maintenanceMode);
240
253
  }
241
254
  /**
242
- * Click on About menu option
243
- */ async clickAbout() {
255
+ * Click on About menu option
256
+ */ async clickAbout() {
244
257
  await this.clickMenuItem(this.about);
245
258
  }
246
259
  /**
247
- * Click on System information menu option
248
- */ async clickSystemInfo() {
260
+ * Click on System information menu option
261
+ */ async clickSystemInfo() {
249
262
  await this.clickMenuItem(this.systemInformation);
250
263
  }
251
264
  }
@@ -312,17 +325,393 @@ class $c2c31ea6199a3576$export$f14c0e3f98d164c0 extends (0, $7d546dcaafadc158$ex
312
325
 
313
326
 
314
327
 
328
+ class $85032414fe55e0f1$export$7db63d2c950874b5 {
329
+ constructor(page1, page){
330
+ this.applicationPage = page1;
331
+ this.page = page;
332
+ }
333
+ /**
334
+ * Create New directory under applications CI.
335
+ * @param appDirectoryName
336
+ * @param expectedCiType
337
+ */ async createNewApplicationDirectory(appDirectoryName, expectedCiType) {
338
+ await this.applicationPage.contextMenu.clickApplicationCi();
339
+ await this.applicationPage.contextMenu.clickMenuPath([
340
+ "new",
341
+ "directory"
342
+ ]);
343
+ await this.applicationPage.form.assertSaveButtonIsDisabled();
344
+ await this.applicationPage.form.assertSaveAndCloseButtonIsDisabled();
345
+ await this.applicationPage.form.enterName(appDirectoryName);
346
+ await this.applicationPage.tab.assertActiveTabSelector("Create " + expectedCiType);
347
+ await this.applicationPage.form.clickSaveAndClose();
348
+ }
349
+ /**
350
+ * Create new application under Application ci
351
+ * @param appName
352
+ * @param expectedCiType
353
+ */ async createNewApplication(appName, expectedCiType) {
354
+ await this.applicationPage.contextMenu.clickApplicationCi();
355
+ await this.applicationPage.contextMenu.clickMenuPath([
356
+ "new",
357
+ "application"
358
+ ]);
359
+ await this.applicationPage.form.assertSaveButtonIsDisabled();
360
+ await this.applicationPage.form.assertSaveAndCloseButtonIsDisabled();
361
+ await this.applicationPage.form.enterName(appName);
362
+ await this.applicationPage.form.clickSaveAndClose();
363
+ await this.applicationPage.tab.assertActiveTabSelector("Create " + expectedCiType);
364
+ }
365
+ /**
366
+ * TODO: It is half done just to check on menu path other than new. Need to create as per scenario.
367
+ */ async createFromFileImport() {
368
+ await this.applicationPage.contextMenu.clickApplicationCi();
369
+ await this.applicationPage.contextMenu.clickMenuPath([
370
+ "import",
371
+ "fromComputer"
372
+ ]);
373
+ }
374
+ }
375
+
376
+
377
+
315
378
 
316
- class $b6dcf2a94c3ae3f4$export$b477143f7ffae077 extends (0, $54bcd1bcf08dd053$export$d9b273488cd8ce6f) {
379
+ class $f6d52f442cf07ec8$export$3e41faf802a29e71 extends (0, $7d546dcaafadc158$export$2b65d1d97338f32b) {
317
380
  constructor(page){
318
- super(page.locator("#context-menu-popover"), page.locator('.infinite-tree-closed.context-menu-button.pull-right[data-id="Applications"]'), page.locator(".dropdown-menu.multi-level.dropdown-menu-0"));
319
- this.mouseOverLocator = page.locator('css=[data-path=".1"]');
320
- this.newlinkLocator = page.getByRole("link", {
321
- name: "New"
381
+ super(page);
382
+ this.page = page;
383
+ this.parentTabLocator = this.page.locator(".working-panel-section .xl-react-tab-system");
384
+ this.getTabTitleLocator = this.page.locator("li.active .tab-title");
385
+ this.closeIcon = this.page.locator(".xl-icon.close-ico");
386
+ }
387
+ async assertActiveTabSelector(expectedCiType) {
388
+ return await (0, $lE6ZQ$expect)(this.parentTabLocator.locator("li.active .tab-title")).toHaveText(expectedCiType, {
389
+ ignoreCase: true
322
390
  });
323
391
  }
324
- async createNewApplicationDirectory() {
325
- await this.hoverFlyoutAndClickMenuItem(this.mouseOverLocator, this.newlinkLocator);
392
+ async closeActiveTabs() {
393
+ if (await this.closeIcon.isVisible()) await this.parentTabLocator.locator(".nav .active .close-icon").click();
394
+ }
395
+ }
396
+
397
+
398
+
399
+ class $6d0b1fc17db4a5fb$export$133beb65adbc45a3 extends (0, $54bcd1bcf08dd053$export$d9b273488cd8ce6f) {
400
+ constructor(page){
401
+ super(page.locator("#context-menu-popover"), page.locator("i[data-id=Applications].context-menu-button"), page.locator(".dropdown-menu.multi-level.dropdown-menu-0"));
402
+ this.page = page;
403
+ this.applicationLocator = page.locator('div[data-id="Applications"]');
404
+ this.environmentLocator = page.locator('div[data-id="Environments"]');
405
+ }
406
+ /**
407
+ * Click on application CI in contextual-menu option.
408
+ */ async clickApplicationCi() {
409
+ await this.applicationLocator.click();
410
+ await this.openContextualMenuDots();
411
+ }
412
+ /**
413
+ * Click on application CI in contextual-menu option.
414
+ */ async clickEnvironmentCi() {
415
+ await this.environmentLocator.click();
416
+ await this.openContextualMenuDots();
417
+ }
418
+ /**
419
+ * Click on menu items from contextual-menu option using path navigation option
420
+ * @param path: Provide menu navigation path using array
421
+ * eg: ['new','Application'] -> to click on menu to create new application
422
+ */ async clickMenuPath(path) {
423
+ const count = path.length - 1;
424
+ for(let i = 0; i < count; i++)await this.page.getByRole("link", {
425
+ name: "" + path[i] + ""
426
+ }).click();
427
+ await this.page.locator('.popover-content li[data-path="' + path.join("->") + '"]').click();
428
+ }
429
+ }
430
+
431
+
432
+
433
+
434
+ class $9f5bc0f6324fb5ea$export$a7fed597f4b8afd8 extends (0, $b464119f5ec5aad0$export$6e2c8f0811a474ce) {
435
+ constructor(mainContentRootLocator){
436
+ super(mainContentRootLocator);
437
+ }
438
+ async fillTextInput(textInput, textValue) {
439
+ await textInput.clear();
440
+ await textInput.fill(textValue);
441
+ }
442
+ }
443
+
444
+
445
+ class $4baf6ba7e224a0ed$export$13ee474454c1948e extends (0, $9f5bc0f6324fb5ea$export$a7fed597f4b8afd8) {
446
+ constructor(page){
447
+ super(page.locator(".dip-view-body"));
448
+ this.page = page;
449
+ this.inputName = page.locator('input[name="name"]');
450
+ this.inputLatestVersion = page.locator('input[name="lastVersion"]');
451
+ this.saveButton = page.getByRole("button", {
452
+ name: "Save",
453
+ exact: true
454
+ });
455
+ this.saveAndCloseButton = page.getByRole("button", {
456
+ name: "Save and close",
457
+ exact: true
458
+ });
459
+ this.cancelButton = page.getByRole("button", {
460
+ name: "Cancel",
461
+ exact: true
462
+ });
463
+ this.errorMessage = page.locator(".error");
464
+ this.formSection = page.locator(".xl-react-components.xl-react-dip-dynamic-form");
465
+ }
466
+ /**
467
+ * Enter name in name field of the application form
468
+ * @param name
469
+ * @returns
470
+ */ async enterName(name) {
471
+ return await this.findElementInSection(this.inputName).fill(name);
472
+ }
473
+ /**
474
+ * Enter latest version field
475
+ * @param version
476
+ * @returns
477
+ */ async enterLatestVersion(version) {
478
+ return await this.findElementInSection(this.inputLatestVersion).fill(version);
479
+ }
480
+ /**
481
+ * Click save button
482
+ * @returns
483
+ */ async clickSave() {
484
+ return await this.findElementInSection(this.saveButton).click();
485
+ }
486
+ /**
487
+ * Click save and close button
488
+ * @returns
489
+ */ async clickSaveAndClose() {
490
+ return await this.findElementInSection(this.saveAndCloseButton).click();
491
+ }
492
+ /**
493
+ * Click cancel button
494
+ * @returns
495
+ */ async clickCancel() {
496
+ return await this.findElementInSection(this.cancelButton).click();
497
+ }
498
+ /**
499
+ * Expecting save button is disabled
500
+ * @returns
501
+ */ async assertSaveButtonIsDisabled() {
502
+ return await (0, $lE6ZQ$expect)(this.findElementInSection(this.saveButton)).toBeDisabled();
503
+ }
504
+ /**
505
+ * Expecting Save and close button is disabled
506
+ * @returns
507
+ */ async assertSaveAndCloseButtonIsDisabled() {
508
+ return await (0, $lE6ZQ$expect)(this.findElementInSection(this.saveAndCloseButton)).toBeDisabled();
509
+ }
510
+ /**
511
+ * Verify Error message in the form
512
+ * @param errorMsg
513
+ * @returns
514
+ */ async verifyErrorMessage(errorMsg) {
515
+ return (0, $lE6ZQ$expect)(await this.findElementInSection(this.errorMessage).textContent()).toContain(errorMsg);
516
+ }
517
+ /**
518
+ * Verify field value in form using field name
519
+ * @param fieldName
520
+ * @param expectedValue
521
+ * @returns
522
+ */ async verifyFieldValue(fieldName, expectedValue) {
523
+ const label = this.formSection.locator('//label[text()="' + fieldName + '"]/parent::div/parent::div');
524
+ const input = label.locator(".xl-react-components-input input");
525
+ const result = await input.getAttribute("value");
526
+ return (0, $lE6ZQ$expect)(result).toEqual(expectedValue);
527
+ }
528
+ }
529
+
530
+
531
+
532
+ class $1f57a739e2592b82$export$2b77a92f1a5ad772 extends (0, $b464119f5ec5aad0$export$6e2c8f0811a474ce) {
533
+ constructor(page){
534
+ super(page.locator(".xl-react-modal-content"));
535
+ this.header = page.locator(".modal-header");
536
+ this.body = page.locator(".modal-body");
537
+ this.footer = page.locator(".modal-footer");
538
+ }
539
+ }
540
+
541
+
542
+ class $9a8685efb2ff62b1$export$bd6452a745ffdb18 extends (0, $1f57a739e2592b82$export$2b77a92f1a5ad772) {
543
+ constructor(page){
544
+ super(page);
545
+ this.deleteButton = page.getByRole("button", {
546
+ name: "Delete",
547
+ exact: true
548
+ });
549
+ this.cancelButton = page.getByRole("button", {
550
+ name: "Cancel",
551
+ exact: true
552
+ });
553
+ }
554
+ async clickDelete() {
555
+ await this.footer.locator(this.deleteButton).click();
556
+ }
557
+ async clickCancel() {
558
+ await this.footer.locator(this.cancelButton).click();
559
+ }
560
+ }
561
+
562
+
563
+
564
+
565
+
566
+
567
+
568
+ class $0ced90cc8a4c42e6$export$5a20f96f6e2d29e9 {
569
+ constructor(page){
570
+ this.page = page;
571
+ this.contextMenu = new (0, $6d0b1fc17db4a5fb$export$133beb65adbc45a3)(page);
572
+ this.tab = new (0, $f6d52f442cf07ec8$export$3e41faf802a29e71)(page);
573
+ this.form = new (0, $4baf6ba7e224a0ed$export$13ee474454c1948e)(page);
574
+ this.modal = new (0, $9a8685efb2ff62b1$export$bd6452a745ffdb18)(page);
575
+ }
576
+ /**
577
+ * Create new ci under any explorer package by providing following parameters.
578
+ * @param parentNodeId
579
+ * @param menuPath
580
+ * @param expectedCiType
581
+ * @param fieldName
582
+ */ async createNewCi(parentNodeId, menuPath, fieldName) {
583
+ await this.expandNodePath(parentNodeId);
584
+ await this.page.locator('div[data-id="' + parentNodeId + '"]').click();
585
+ await this.page.locator('i[data-id="' + parentNodeId + '"].context-menu-button').click();
586
+ await this.contextMenu.clickMenuPath(menuPath);
587
+ await this.form.assertSaveButtonIsDisabled();
588
+ await this.form.assertSaveAndCloseButtonIsDisabled();
589
+ await this.tab.assertActiveTabSelector("Create udm." + menuPath[1] + "");
590
+ await this.form.enterName(fieldName);
591
+ await this.form.clickSaveAndClose();
592
+ }
593
+ /**
594
+ * Expand the ci path tree toggler.
595
+ * @param pathnode
596
+ */ async expandNode(pathnode) {
597
+ if (await this.page.locator('div[data-id="' + pathnode + '"] a.infinite-tree-toggler.infinite-tree-closed').isVisible()) await this.page.locator('div[data-id="' + pathnode + '"] a').click();
598
+ }
599
+ /**
600
+ * expands the path of CI by separating path from "/"
601
+ * @param parentNodeId
602
+ */ async expandNodePath(parentNodeId) {
603
+ const nodeIdParts = $lE6ZQ$split("/", parentNodeId);
604
+ for(let ind = 0; ind < nodeIdParts.length; ind += 1){
605
+ const path = $lE6ZQ$join("/", $lE6ZQ$take(ind + 1, nodeIdParts));
606
+ this.expandNode(path);
607
+ }
608
+ }
609
+ /**
610
+ * Collapse the tree toggler of ci path.
611
+ * @param parentNodeId
612
+ */ async collapseNode(parentNodeId) {
613
+ if (await this.page.locator('div[data-id="' + parentNodeId + '"] a.infinite-tree-toggler.infinite-tree-closed').isHidden()) await this.page.locator('div[data-id="' + parentNodeId + '"] a').click();
614
+ }
615
+ /**
616
+ * Delete the ci
617
+ * @param node
618
+ */ async deleteCi(node) {
619
+ await this.page.locator('div[data-id="' + node + '"]').click();
620
+ await this.page.locator('i[data-id="' + node + '"].context-menu-button').click();
621
+ await this.contextMenu.clickMenuPath([
622
+ "delete"
623
+ ]);
624
+ await this.modal.clickDelete();
625
+ }
626
+ /**
627
+ * Click on specific node which is under Application CI.
628
+ * @param nodeId
629
+ */ async clickNode(nodeId) {
630
+ await this.page.locator('div[data-id="' + nodeId + '"]').dblclick();
631
+ }
632
+ /**
633
+ * Click on ci under any explorer package of contextual menus by providing following parameters.
634
+ * @param parentNodeId
635
+ * @param menuPath
636
+ * @param expectedCiType
637
+ * @param fieldName
638
+ */ async clickCi(parentNodeId, menuPath, expectedCiType) {
639
+ await this.expandNodePath(parentNodeId);
640
+ await this.page.locator('div[data-id="' + parentNodeId + '"]').click();
641
+ await this.page.locator('i[data-id="' + parentNodeId + '"].context-menu-button').click();
642
+ await this.contextMenu.clickMenuPath(menuPath);
643
+ await this.form.assertSaveButtonIsDisabled();
644
+ await this.form.assertSaveAndCloseButtonIsDisabled();
645
+ await this.tab.assertActiveTabSelector("Create " + expectedCiType + "");
646
+ }
647
+ }
648
+
649
+
650
+
651
+
652
+ class $6cefee8b9be33b2d$export$60413e28724d3abd extends (0, $9f5bc0f6324fb5ea$export$a7fed597f4b8afd8) {
653
+ constructor(page){
654
+ super(page.locator(".dip-view-body"));
655
+ this.page = page;
656
+ this.inputName = page.locator('input[name="name"]');
657
+ this.inputLatestVersion = page.locator('input[name="lastVersion"]');
658
+ this.saveButton = page.getByRole("button", {
659
+ name: "Save",
660
+ exact: true
661
+ });
662
+ this.saveAndCloseButton = page.getByRole("button", {
663
+ name: "Save and close",
664
+ exact: true
665
+ });
666
+ this.cancelButton = page.getByRole("button", {
667
+ name: "Cancel",
668
+ exact: true
669
+ });
670
+ this.formSection = page.locator(".xl-react-components.xl-react-dip-dynamic-form");
671
+ }
672
+ /**
673
+ * Enter name in name field of the application form
674
+ * @param name
675
+ * @returns
676
+ */ async enterName(name) {
677
+ return await this.findElementInSection(this.inputName).fill(name);
678
+ }
679
+ /**
680
+ * Enter latest version field
681
+ * @param version
682
+ * @returns
683
+ */ async enterLatestVersion(version) {
684
+ return await this.findElementInSection(this.inputLatestVersion).fill(version);
685
+ }
686
+ /**
687
+ * Click save button
688
+ * @returns
689
+ */ async clickSave() {
690
+ return await this.findElementInSection(this.saveButton).click();
691
+ }
692
+ /**
693
+ * Click save and close button
694
+ * @returns
695
+ */ async clickSaveAndClose() {
696
+ return await this.findElementInSection(this.saveAndCloseButton).click();
697
+ }
698
+ /**
699
+ * Click cancel button
700
+ * @returns
701
+ */ async clickCancel() {
702
+ return await this.findElementInSection(this.cancelButton).click();
703
+ }
704
+ /**
705
+ * Expecting save button is disabled
706
+ * @returns
707
+ */ async assertSaveButtonIsDisabled() {
708
+ return await (0, $lE6ZQ$expect)(this.findElementInSection(this.saveButton)).toBeDisabled();
709
+ }
710
+ /**
711
+ * Expecting Save and close button is disabled
712
+ * @returns
713
+ */ async assertSaveAndCloseButtonIsDisabled() {
714
+ return await (0, $lE6ZQ$expect)(this.findElementInSection(this.saveAndCloseButton)).toBeDisabled();
326
715
  }
327
716
  }
328
717
 
@@ -330,7 +719,13 @@ class $b6dcf2a94c3ae3f4$export$b477143f7ffae077 extends (0, $54bcd1bcf08dd053$ex
330
719
  class $4e7e9f7ca5788871$export$bf4a5dd3be690f6b extends (0, $7d546dcaafadc158$export$2b65d1d97338f32b) {
331
720
  constructor(page){
332
721
  super(page);
333
- this.appMenu = new (0, $b6dcf2a94c3ae3f4$export$b477143f7ffae077)(page);
722
+ this.contextMenu = new (0, $6d0b1fc17db4a5fb$export$133beb65adbc45a3)(page);
723
+ this.form = new (0, $4baf6ba7e224a0ed$export$13ee474454c1948e)(page);
724
+ this.tab = new (0, $f6d52f442cf07ec8$export$3e41faf802a29e71)(page);
725
+ this.util = new (0, $85032414fe55e0f1$export$7db63d2c950874b5)(this, page);
726
+ this.modal = new (0, $9a8685efb2ff62b1$export$bd6452a745ffdb18)(page);
727
+ this.commonUtil = new (0, $0ced90cc8a4c42e6$export$5a20f96f6e2d29e9)(page);
728
+ this.appForm = new (0, $6cefee8b9be33b2d$export$60413e28724d3abd)(page);
334
729
  }
335
730
  }
336
731
 
@@ -344,6 +739,292 @@ class $736a7a3b2d786796$export$36d69433c4f81145 extends (0, $7d546dcaafadc158$ex
344
739
  }
345
740
 
346
741
 
742
+
743
+
744
+
745
+
746
+
747
+
748
+
749
+
750
+
751
+ class $07a0aa0673096895$export$855563f8bdb36207 extends (0, $9f5bc0f6324fb5ea$export$a7fed597f4b8afd8) {
752
+ constructor(page){
753
+ super(page.locator(".dip-view-body"));
754
+ this.page = page;
755
+ this.inputName = page.locator('input[name="name"]');
756
+ this.inputLatestVersion = page.locator('input[name="lastVersion"]');
757
+ this.saveButton = page.getByRole("button", {
758
+ name: "Save",
759
+ exact: true
760
+ });
761
+ this.saveAndCloseButton = page.getByRole("button", {
762
+ name: "Save and close",
763
+ exact: true
764
+ });
765
+ this.cancelButton = page.getByRole("button", {
766
+ name: "Cancel",
767
+ exact: true
768
+ });
769
+ this.inputHost = page.locator('input[name="host"]');
770
+ this.inputPort = page.getByLabel("Port");
771
+ this.inputUsername = page.locator('input[name="username"]');
772
+ this.inputPassword = page.locator('input[name="password"]');
773
+ this.inputFromAddress = page.locator('input[name="fromAddress"]');
774
+ this.inputTestAddress = page.locator('input[name="testAddress"]');
775
+ this.inputHostName = page.locator('input[name="hostname"]');
776
+ }
777
+ /**
778
+ * Enter name in name field of the configuration form
779
+ * @param name
780
+ * @returns
781
+ */ async enterName(name) {
782
+ return await this.findElementInSection(this.inputName).fill(name);
783
+ }
784
+ /**
785
+ * Enter latest version field
786
+ * @param version
787
+ * @returns
788
+ */ async enterLatestVersion(version) {
789
+ return await this.findElementInSection(this.inputLatestVersion).fill(version);
790
+ }
791
+ /**
792
+ * Click save button
793
+ * @returns
794
+ */ async clickSave() {
795
+ return await this.findElementInSection(this.saveButton).click();
796
+ }
797
+ /**
798
+ * Click save and close button
799
+ * @returns
800
+ */ async clickSaveAndClose() {
801
+ return await this.findElementInSection(this.saveAndCloseButton).click();
802
+ }
803
+ /**
804
+ * Click cancel button
805
+ * @returns
806
+ */ async clickCancel() {
807
+ return await this.findElementInSection(this.cancelButton).click();
808
+ }
809
+ /**
810
+ * Expecting save button is disabled
811
+ * @returns
812
+ */ async assertSaveButtonIsDisabled() {
813
+ return await (0, $lE6ZQ$expect)(this.findElementInSection(this.saveButton)).toBeDisabled();
814
+ }
815
+ /**
816
+ * Expecting Save and close button is disabled
817
+ * @returns
818
+ */ async assertSaveAndCloseButtonIsDisabled() {
819
+ return await (0, $lE6ZQ$expect)(this.findElementInSection(this.saveAndCloseButton)).toBeDisabled();
820
+ }
821
+ /**
822
+ * Expecting field value with its field name
823
+ * @param fieldName
824
+ * @param value
825
+ * @returns
826
+ */ async expectFieldValue(fieldName, value) {
827
+ (0, $lE6ZQ$expect)(await this.page.locator('input[name="' + fieldName + '"]').getAttribute("value")).toEqual(value);
828
+ }
829
+ /**
830
+ * Set Host value to the Host field in configuration form
831
+ * @param host
832
+ * @returns
833
+ */ async setHostValue(host) {
834
+ await this.findElementInSection(this.inputHost).fill(host);
835
+ }
836
+ /**
837
+ * Setting port value in the configuration form
838
+ * @param port
839
+ * @returns
840
+ */ async setPortValue(port) {
841
+ await this.findElementInSection(this.inputPort).fill(port);
842
+ }
843
+ /**
844
+ * Setting from Address field value in configuration form
845
+ * @param address
846
+ * @returns
847
+ */ async setFromAddress(address) {
848
+ await this.findElementInSection(this.inputFromAddress).fill(address);
849
+ }
850
+ /**
851
+ * Setting username in configuration form
852
+ * @param username
853
+ * @returns
854
+ */ async setUserName(username) {
855
+ await this.findElementInSection(this.inputUsername).fill(username);
856
+ }
857
+ /**
858
+ * Setting password in configuration form
859
+ * @param password
860
+ * @returns
861
+ */ async setPassword(password) {
862
+ await this.findElementInSection(this.inputPassword).fill(password);
863
+ }
864
+ /**
865
+ * Setting host name in configuration form
866
+ * @param hostname
867
+ * @returns
868
+ */ async setHostName(hostname) {
869
+ await this.findElementInSection(this.inputHostName).fill(hostname);
870
+ }
871
+ }
872
+
873
+
874
+ class $e0ba9f6e7147a59d$export$ad55ec59bf82c4fc {
875
+ constructor(page1, page){
876
+ this.configPage = page1;
877
+ this.page = page;
878
+ }
879
+ }
880
+
881
+
882
+ class $c4efd1bbc33bdc4e$export$8ef81de2d4ebb0b9 extends (0, $7d546dcaafadc158$export$2b65d1d97338f32b) {
883
+ constructor(page){
884
+ super(page);
885
+ this.contextMenu = new (0, $6d0b1fc17db4a5fb$export$133beb65adbc45a3)(page);
886
+ this.form = new (0, $4baf6ba7e224a0ed$export$13ee474454c1948e)(page);
887
+ this.tab = new (0, $f6d52f442cf07ec8$export$3e41faf802a29e71)(page);
888
+ this.modal = new (0, $9a8685efb2ff62b1$export$bd6452a745ffdb18)(page);
889
+ this.commonUtil = new (0, $0ced90cc8a4c42e6$export$5a20f96f6e2d29e9)(page);
890
+ this.configForm = new (0, $07a0aa0673096895$export$855563f8bdb36207)(page);
891
+ this.util = new (0, $e0ba9f6e7147a59d$export$ad55ec59bf82c4fc)(this, page);
892
+ }
893
+ }
894
+
895
+
896
+
897
+
898
+
899
+
900
+
901
+
902
+
903
+
904
+ class $6bd08aebb33e3379$export$21cde1e6a73cf500 extends (0, $9f5bc0f6324fb5ea$export$a7fed597f4b8afd8) {
905
+ constructor(page){
906
+ super(page.locator(".dip-view-body"));
907
+ this.page = page;
908
+ this.formSection = page.locator(".xl-react-components.xl-react-dip-dynamic-form");
909
+ this.inputName = page.locator('input[name="name"]');
910
+ this.inputLatestVersion = page.locator('input[name="lastVersion"]');
911
+ this.saveButton = page.getByRole("button", {
912
+ name: "Save",
913
+ exact: true
914
+ });
915
+ this.saveAndCloseButton = page.getByRole("button", {
916
+ name: "Save and close",
917
+ exact: true
918
+ });
919
+ this.cancelButton = page.getByRole("button", {
920
+ name: "Cancel",
921
+ exact: true
922
+ });
923
+ this.inputVersion = page.locator("");
924
+ }
925
+ /**
926
+ * Expect the label text is available in form.
927
+ * @param label
928
+ */ async assertLabelText(label) {
929
+ await (0, $lE6ZQ$expect)(this.page.getByText(label, {
930
+ exact: true
931
+ })).toBeVisible();
932
+ }
933
+ /**
934
+ * Enter name in name field of the application form
935
+ * @param name
936
+ * @returns
937
+ */ async enterName(name) {
938
+ return await this.findElementInSection(this.inputName).fill(name);
939
+ }
940
+ /**
941
+ * Enter latest version field
942
+ * @param version
943
+ * @returns
944
+ */ async enterLatestVersion(version) {
945
+ return await this.findElementInSection(this.inputLatestVersion).fill(version);
946
+ }
947
+ /**
948
+ * Click save button
949
+ * @returns
950
+ */ async clickSave() {
951
+ return await this.findElementInSection(this.saveButton).click();
952
+ }
953
+ /**
954
+ * Click save and close button
955
+ * @returns
956
+ */ async clickSaveAndClose() {
957
+ return await this.findElementInSection(this.saveAndCloseButton).click();
958
+ }
959
+ /**
960
+ * Click cancel button
961
+ * @returns
962
+ */ async clickCancel() {
963
+ return await this.findElementInSection(this.cancelButton).click();
964
+ }
965
+ /**
966
+ * Expecting save button is disabled
967
+ * @returns
968
+ */ async assertSaveButtonIsDisabled() {
969
+ return await (0, $lE6ZQ$expect)(this.findElementInSection(this.saveButton)).toBeDisabled();
970
+ }
971
+ /**
972
+ * Expecting Save and close button is disabled
973
+ * @returns
974
+ */ async assertSaveAndCloseButtonIsDisabled() {
975
+ return await (0, $lE6ZQ$expect)(this.findElementInSection(this.saveAndCloseButton)).toBeDisabled();
976
+ }
977
+ /**
978
+ * Enter options in the input field of dropdown to match with suggestion list in form
979
+ * @param fieldName
980
+ * @param value
981
+ */ async selectVersionOption(fieldName, value) {
982
+ const label = this.formSection.locator('//label[text()="' + fieldName + '"]/parent::div/parent::div');
983
+ await label.locator(".xl-react-components-input input").fill(value);
984
+ }
985
+ }
986
+
987
+
988
+ class $31f14a5153b274ab$export$b8a8d62f66d27fa1 {
989
+ constructor(page1, page){
990
+ this.environmentPage = page1;
991
+ this.page = page;
992
+ }
993
+ }
994
+
995
+
996
+ class $5a95c11425d050d8$export$2c95c5c5be4fb9b0 extends (0, $7d546dcaafadc158$export$2b65d1d97338f32b) {
997
+ constructor(page){
998
+ super(page);
999
+ this.contextMenu = new (0, $6d0b1fc17db4a5fb$export$133beb65adbc45a3)(page);
1000
+ this.form = new (0, $4baf6ba7e224a0ed$export$13ee474454c1948e)(page);
1001
+ this.tab = new (0, $f6d52f442cf07ec8$export$3e41faf802a29e71)(page);
1002
+ this.modal = new (0, $9a8685efb2ff62b1$export$bd6452a745ffdb18)(page);
1003
+ this.commonUtil = new (0, $0ced90cc8a4c42e6$export$5a20f96f6e2d29e9)(page);
1004
+ this.envForm = new (0, $6bd08aebb33e3379$export$21cde1e6a73cf500)(page);
1005
+ this.util = new (0, $31f14a5153b274ab$export$b8a8d62f66d27fa1)(this, page);
1006
+ }
1007
+ }
1008
+
1009
+
1010
+
1011
+
1012
+
1013
+
1014
+
1015
+
1016
+ class $bf1ec3be2f174e87$export$1f6beddb119e759b extends (0, $7d546dcaafadc158$export$2b65d1d97338f32b) {
1017
+ constructor(page){
1018
+ super(page);
1019
+ this.contextMenu = new (0, $6d0b1fc17db4a5fb$export$133beb65adbc45a3)(page);
1020
+ this.form = new (0, $4baf6ba7e224a0ed$export$13ee474454c1948e)(page);
1021
+ this.tab = new (0, $f6d52f442cf07ec8$export$3e41faf802a29e71)(page);
1022
+ this.modal = new (0, $9a8685efb2ff62b1$export$bd6452a745ffdb18)(page);
1023
+ this.commonUtil = new (0, $0ced90cc8a4c42e6$export$5a20f96f6e2d29e9)(page);
1024
+ }
1025
+ }
1026
+
1027
+
347
1028
  const $114b0b206b8d644f$export$e0969da9b8fb378d = (0, $lE6ZQ$test).extend({
348
1029
  loginPage: async ({ page: page }, use)=>{
349
1030
  // Set up the fixture.
@@ -360,6 +1041,26 @@ const $114b0b206b8d644f$export$e0969da9b8fb378d = (0, $lE6ZQ$test).extend({
360
1041
  const applicationPage = new (0, $4e7e9f7ca5788871$export$bf4a5dd3be690f6b)(page);
361
1042
  await use(applicationPage);
362
1043
  return applicationPage;
1044
+ },
1045
+ tab: async ({ page: page }, use)=>{
1046
+ const tab = new (0, $f6d52f442cf07ec8$export$3e41faf802a29e71)(page);
1047
+ await use(tab);
1048
+ return tab;
1049
+ },
1050
+ environmentPage: async ({ page: page }, use)=>{
1051
+ const environmentPage = new (0, $5a95c11425d050d8$export$2c95c5c5be4fb9b0)(page);
1052
+ await use(environmentPage);
1053
+ return environmentPage;
1054
+ },
1055
+ configurePage: async ({ page: page }, use)=>{
1056
+ const configurePage = new (0, $c4efd1bbc33bdc4e$export$8ef81de2d4ebb0b9)(page);
1057
+ await use(configurePage);
1058
+ return configurePage;
1059
+ },
1060
+ infraPage: async ({ page: page }, use)=>{
1061
+ const infraPage = new (0, $bf1ec3be2f174e87$export$1f6beddb119e759b)(page);
1062
+ await use(infraPage);
1063
+ return infraPage;
363
1064
  }
364
1065
  });
365
1066