@digital-ai/devops-page-object-deploy 0.0.3 → 0.0.5

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
@@ -325,24 +325,110 @@ class $c2c31ea6199a3576$export$f14c0e3f98d164c0 extends (0, $7d546dcaafadc158$ex
325
325
 
326
326
 
327
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
+
328
377
 
329
- class $b6dcf2a94c3ae3f4$export$b477143f7ffae077 extends (0, $54bcd1bcf08dd053$export$d9b273488cd8ce6f) {
378
+
379
+ class $f6d52f442cf07ec8$export$3e41faf802a29e71 extends (0, $7d546dcaafadc158$export$2b65d1d97338f32b) {
330
380
  constructor(page){
331
- super(page.locator("#context-menu-popover"), page.locator("i[data-id=Applications].context-menu-button"), page.locator(".dropdown-menu.multi-level.dropdown-menu-0"));
381
+ super(page);
332
382
  this.page = page;
333
- this.newlinkLocator = page.getByRole("link", {
334
- name: "New",
335
- exact: true
336
- });
337
- this.importlinkLocator = page.getByRole("link", {
338
- name: "Import",
339
- exact: true
383
+ this.parentTabLocator = this.page.locator(".working-panel-section .xl-react-tab-system");
384
+ this.getTabTitleLocator = this.parentTabLocator.locator("li.active .tab-title");
385
+ this.closeIcon = this.page.locator(".xl-icon.close-ico");
386
+ this.tabSelector = this.parentTabLocator.locator(".tab-pane");
387
+ this.tabTitle = this.parentTabLocator.locator(".tab-title");
388
+ }
389
+ /**
390
+ * Assert active tab title with expected value.
391
+ * @param expectedCiType
392
+ * @returns
393
+ */ async assertActiveTabSelector(expectedCiType) {
394
+ return await (0, $lE6ZQ$expect)(this.getTabTitleLocator).toHaveText(expectedCiType, {
395
+ ignoreCase: true
340
396
  });
397
+ }
398
+ /**
399
+ * Close the active tab by clicking close button
400
+ */ async closeActiveTabs() {
401
+ if (await this.closeIcon.isVisible()) await this.parentTabLocator.locator(".nav .active .close-icon").click();
402
+ }
403
+ /**
404
+ * Verify there is no tabs are opened.
405
+ */ async noTabsOpened() {
406
+ await (0, $lE6ZQ$expect)(this.tabSelector).not.toBeVisible();
407
+ }
408
+ /**
409
+ * Expect the given tab title is present in tab opened
410
+ * @param tabTitle
411
+ * @returns
412
+ */ async expectTabOpened(tabTitle) {
413
+ return await (0, $lE6ZQ$expect)(this.tabTitle).toHaveText(tabTitle);
414
+ }
415
+ /**
416
+ * Expect the given tab title is not present in tab opened
417
+ * @param tabTitle
418
+ * @returns
419
+ */ async expectTabNotOpened(tabTitle) {
420
+ return await (0, $lE6ZQ$expect)(this.tabTitle).not.toHaveText(tabTitle);
421
+ }
422
+ }
423
+
424
+
425
+
426
+ class $6d0b1fc17db4a5fb$export$133beb65adbc45a3 extends (0, $54bcd1bcf08dd053$export$d9b273488cd8ce6f) {
427
+ constructor(page){
428
+ super(page.locator("#context-menu-popover"), page.locator("i[data-id=Applications].context-menu-button"), page.locator(".dropdown-menu.multi-level.dropdown-menu-0"));
429
+ this.page = page;
341
430
  this.applicationLocator = page.locator('div[data-id="Applications"]');
342
- this.deleteLinkLocator = page.getByRole("link", {
343
- name: "Delete",
344
- exact: true
345
- });
431
+ this.environmentLocator = page.locator('div[data-id="Environments"]');
346
432
  }
347
433
  /**
348
434
  * Click on application CI in contextual-menu option.
@@ -351,6 +437,12 @@ class $b6dcf2a94c3ae3f4$export$b477143f7ffae077 extends (0, $54bcd1bcf08dd053$ex
351
437
  await this.openContextualMenuDots();
352
438
  }
353
439
  /**
440
+ * Click on application CI in contextual-menu option.
441
+ */ async clickEnvironmentCi() {
442
+ await this.environmentLocator.click();
443
+ await this.openContextualMenuDots();
444
+ }
445
+ /**
354
446
  * Click on menu items from contextual-menu option using path navigation option
355
447
  * @param path: Provide menu navigation path using array
356
448
  * eg: ['new','Application'] -> to click on menu to create new application
@@ -377,7 +469,7 @@ class $9f5bc0f6324fb5ea$export$a7fed597f4b8afd8 extends (0, $b464119f5ec5aad0$ex
377
469
  }
378
470
 
379
471
 
380
- class $6cefee8b9be33b2d$export$60413e28724d3abd extends (0, $9f5bc0f6324fb5ea$export$a7fed597f4b8afd8) {
472
+ class $4baf6ba7e224a0ed$export$13ee474454c1948e extends (0, $9f5bc0f6324fb5ea$export$a7fed597f4b8afd8) {
381
473
  constructor(page){
382
474
  super(page.locator(".dip-view-body"));
383
475
  this.page = page;
@@ -395,6 +487,10 @@ class $6cefee8b9be33b2d$export$60413e28724d3abd extends (0, $9f5bc0f6324fb5ea$ex
395
487
  name: "Cancel",
396
488
  exact: true
397
489
  });
490
+ this.errorMessage = page.locator(".error");
491
+ this.formSection = page.locator(".xl-react-components.xl-react-dip-dynamic-form");
492
+ this.refreshButton = page.locator("i.refresh");
493
+ this.inputRename = page.locator(".infinite-tree-rename-input");
398
494
  }
399
495
  /**
400
496
  * Enter name in name field of the application form
@@ -440,87 +536,105 @@ class $6cefee8b9be33b2d$export$60413e28724d3abd extends (0, $9f5bc0f6324fb5ea$ex
440
536
  */ async assertSaveAndCloseButtonIsDisabled() {
441
537
  return await (0, $lE6ZQ$expect)(this.findElementInSection(this.saveAndCloseButton)).toBeDisabled();
442
538
  }
539
+ /**
540
+ * Verify Error message in the form
541
+ * @param errorMsg
542
+ * @returns
543
+ */ async verifyErrorMessage(errorMsg) {
544
+ return (0, $lE6ZQ$expect)(await this.findElementInSection(this.errorMessage).textContent()).toContain(errorMsg);
545
+ }
546
+ /**
547
+ * Verify field value in form using field name
548
+ * @param fieldName
549
+ * @param expectedValue
550
+ * @returns
551
+ */ async verifyFieldValue(fieldName, expectedValue) {
552
+ const label = this.formSection.locator('//label[text()="' + fieldName + '"]/parent::div/parent::div');
553
+ const input = label.locator(".xl-react-components-input input");
554
+ const result = await input.getAttribute("value");
555
+ return (0, $lE6ZQ$expect)(result).toEqual(expectedValue);
556
+ }
443
557
  }
444
558
 
445
559
 
446
560
 
447
- class $85032414fe55e0f1$export$7db63d2c950874b5 {
448
- constructor(page1, page){
449
- this.applicationPage = page1;
450
- this.page = page;
561
+ class $1f57a739e2592b82$export$2b77a92f1a5ad772 extends (0, $b464119f5ec5aad0$export$6e2c8f0811a474ce) {
562
+ constructor(page){
563
+ super(page.locator(".xl-react-modal-content"));
564
+ this.header = page.locator(".modal-header");
565
+ this.body = page.locator(".modal-body");
566
+ this.footer = page.locator(".modal-footer");
451
567
  }
452
- /**
453
- * Create New directory under applications CI.
454
- * @param appDirectoryName
455
- * @param expectedCiType
456
- */ async createNewApplicationDirectory(appDirectoryName, expectedCiType) {
457
- await this.applicationPage.appMenu.clickApplicationCi();
458
- await this.applicationPage.appMenu.clickMenuPath([
459
- "new",
460
- "directory"
461
- ]);
462
- await this.applicationPage.appForm.assertSaveButtonIsDisabled();
463
- await this.applicationPage.appForm.assertSaveAndCloseButtonIsDisabled();
464
- await this.applicationPage.appForm.enterName(appDirectoryName);
465
- await this.applicationPage.tab.assertActiveTabSelector(expectedCiType);
466
- await this.applicationPage.appForm.clickSaveAndClose();
568
+ }
569
+
570
+
571
+ class $9a8685efb2ff62b1$export$bd6452a745ffdb18 extends (0, $1f57a739e2592b82$export$2b77a92f1a5ad772) {
572
+ constructor(page){
573
+ super(page);
574
+ this.deleteButton = page.getByRole("button", {
575
+ name: "Delete",
576
+ exact: true
577
+ });
578
+ this.cancelButton = page.getByRole("button", {
579
+ name: "Cancel",
580
+ exact: true
581
+ });
467
582
  }
468
- /**
469
- * Create new application under Application ci
470
- * @param appName
471
- * @param expectedCiType
472
- */ async createNewApplication(appName, expectedCiType) {
473
- await this.applicationPage.appMenu.clickApplicationCi();
474
- await this.applicationPage.appMenu.clickMenuPath([
475
- "new",
476
- "application"
477
- ]);
478
- await this.applicationPage.appForm.assertSaveButtonIsDisabled();
479
- await this.applicationPage.appForm.assertSaveAndCloseButtonIsDisabled();
480
- await this.applicationPage.appForm.enterName(appName);
481
- await this.applicationPage.appForm.clickSaveAndClose();
482
- await this.applicationPage.tab.assertActiveTabSelector(expectedCiType);
583
+ async clickDelete() {
584
+ await this.footer.locator(this.deleteButton).click();
483
585
  }
484
- /**
485
- * TODO: It is half done just to check on menu path other than new. Need to create as per scenario.
486
- */ async createFromFileImport() {
487
- await this.applicationPage.appMenu.clickApplicationCi();
488
- await this.applicationPage.appMenu.clickMenuPath([
489
- "import",
490
- "fromComputer"
491
- ]);
586
+ async clickCancel() {
587
+ await this.footer.locator(this.cancelButton).click();
588
+ }
589
+ }
590
+
591
+
592
+
593
+
594
+
595
+
596
+
597
+
598
+ class $0ced90cc8a4c42e6$export$5a20f96f6e2d29e9 {
599
+ constructor(page){
600
+ this.page = page;
601
+ this.contextMenu = new (0, $6d0b1fc17db4a5fb$export$133beb65adbc45a3)(page);
602
+ this.tab = new (0, $f6d52f442cf07ec8$export$3e41faf802a29e71)(page);
603
+ this.form = new (0, $4baf6ba7e224a0ed$export$13ee474454c1948e)(page);
604
+ this.modal = new (0, $9a8685efb2ff62b1$export$bd6452a745ffdb18)(page);
492
605
  }
493
606
  /**
494
- * Create new ci (application, package) under applications by providing following parameters.
607
+ * Create new ci under any explorer package by providing following parameters.
495
608
  * @param parentNodeId
496
609
  * @param menuPath
497
610
  * @param expectedCiType
498
- * @param appName
499
- */ async createNewCi(parentNodeId, menuPath, appName) {
611
+ * @param fieldName
612
+ */ async createNewCi(parentNodeId, menuPath, fieldName) {
500
613
  await this.expandNodePath(parentNodeId);
501
614
  await this.page.locator('div[data-id="' + parentNodeId + '"]').click();
502
615
  await this.page.locator('i[data-id="' + parentNodeId + '"].context-menu-button').click();
503
- await this.applicationPage.appMenu.clickMenuPath(menuPath);
504
- await this.applicationPage.appForm.assertSaveButtonIsDisabled();
505
- await this.applicationPage.appForm.assertSaveAndCloseButtonIsDisabled();
506
- await this.applicationPage.tab.assertActiveTabSelector("Create udm." + menuPath[1] + "");
507
- await this.applicationPage.appForm.enterName(appName);
508
- await this.applicationPage.appForm.clickSaveAndClose();
616
+ await this.contextMenu.clickMenuPath(menuPath);
617
+ await this.form.assertSaveButtonIsDisabled();
618
+ await this.form.assertSaveAndCloseButtonIsDisabled();
619
+ await this.tab.assertActiveTabSelector("Create udm." + menuPath[1] + "");
620
+ await this.form.enterName(fieldName);
621
+ await this.form.clickSaveAndClose();
509
622
  }
510
623
  /**
511
624
  * Expand the ci path tree toggler.
512
625
  * @param pathnode
513
626
  */ async expandNode(pathnode) {
514
- 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();
627
+ const nodeLocator = await this.page.locator('div[data-id="' + pathnode + '"] a.infinite-tree-toggler.infinite-tree-closed').isVisible();
628
+ if (nodeLocator) await this.page.locator('div[data-id="' + pathnode + '"] a.infinite-tree-toggler.infinite-tree-closed').click();
515
629
  }
516
630
  /**
517
631
  * expands the path of CI by separating path from "/"
518
632
  * @param parentNodeId
519
633
  */ async expandNodePath(parentNodeId) {
520
634
  const nodeIdParts = $lE6ZQ$split("/", parentNodeId);
521
- for(let ind = 0; ind < nodeIdParts.length; ind += 1){
635
+ for(let ind = 0; ind < nodeIdParts.length; ind++){
522
636
  const path = $lE6ZQ$join("/", $lE6ZQ$take(ind + 1, nodeIdParts));
523
- this.expandNode(path);
637
+ await this.expandNode(path);
524
638
  }
525
639
  }
526
640
  /**
@@ -533,87 +647,519 @@ class $85032414fe55e0f1$export$7db63d2c950874b5 {
533
647
  * Delete the ci
534
648
  * @param node
535
649
  */ async deleteCi(node) {
536
- await this.page.locator('div[data-id="' + node + '"]').click();
650
+ const cipath = this.page.locator('div[data-id="' + node + '"]');
651
+ if (await cipath.isVisible()) await this.page.locator('div[data-id="' + node + '"]').click();
652
+ else {
653
+ await this.expandNodePath(node);
654
+ await this.page.locator('div[data-id="' + node + '"]').click();
655
+ }
537
656
  await this.page.locator('i[data-id="' + node + '"].context-menu-button').click();
538
- await this.applicationPage.appMenu.clickMenuPath([
657
+ await this.contextMenu.clickMenuPath([
539
658
  "delete"
540
659
  ]);
541
- await this.applicationPage.appModal.clickDelete();
660
+ await this.modal.clickDelete();
661
+ }
662
+ /**
663
+ * Click on specific node which is under Application CI.
664
+ * @param nodeId
665
+ */ async clickNode(nodeId) {
666
+ await this.page.locator('div[data-id="' + nodeId + '"]').dblclick();
667
+ }
668
+ /**
669
+ * Click on ci under any explorer package of contextual menus by providing following parameters.
670
+ * @param parentNodeId
671
+ * @param menuPath
672
+ * @param expectedCiType
673
+ * @param fieldName
674
+ */ async clickCi(parentNodeId, menuPath, expectedCiType) {
675
+ await this.expandNodePath(parentNodeId);
676
+ await this.page.locator('div[data-id="' + parentNodeId + '"]').click();
677
+ await this.page.locator('i[data-id="' + parentNodeId + '"].context-menu-button').click();
678
+ await this.contextMenu.clickMenuPath(menuPath);
679
+ await this.form.assertSaveButtonIsDisabled();
680
+ await this.form.assertSaveAndCloseButtonIsDisabled();
681
+ await this.tab.assertActiveTabSelector("Create " + expectedCiType + "");
682
+ }
683
+ /**
684
+ * Duplicate the CI node in explorer using context-menu
685
+ * @param nodeId
686
+ */ async duplicate(nodeId) {
687
+ await this.expandNodePath(nodeId);
688
+ await this.page.locator('div[data-id="' + nodeId + '"]').click();
689
+ await this.page.locator('i[data-id="' + nodeId + '"].context-menu-button').click();
690
+ await this.contextMenu.clickMenuPath([
691
+ "duplicate"
692
+ ]);
693
+ }
694
+ /**
695
+ * Validate the given node ID is visible in the page
696
+ * @param nodeId
697
+ */ async validateNodeExists(nodeId) {
698
+ await (0, $lE6ZQ$expect)(this.page.locator('div[data-id="' + nodeId + '"]')).toBeVisible();
699
+ }
700
+ /**
701
+ * Validate the given node does not exists in the list.
702
+ * @param nodeId
703
+ */ async validateNodeDoesNotExists(nodeId) {
704
+ await (0, $lE6ZQ$expect)(this.page.locator('div[data-id="' + nodeId + '"]')).not.toBeVisible();
705
+ }
706
+ /**
707
+ * Rename the node Id with new string in CI.
708
+ * @param nodeId
709
+ * @param renamedValue
710
+ */ async inlineRename(nodeId, renamedValue) {
711
+ await this.expandNodePath(nodeId);
712
+ await this.page.locator('div[data-id="' + nodeId + '"]').click();
713
+ await this.page.locator('i[data-id="' + nodeId + '"].context-menu-button').click();
714
+ await this.contextMenu.clickMenuPath([
715
+ "rename"
716
+ ]);
717
+ await this.form.inputRename.waitFor();
718
+ await this.form.inputRename.fill(renamedValue);
719
+ await this.form.refreshButton.click();
720
+ await (0, $lE6ZQ$expect)(this.page.locator('div[data-id="' + nodeId + '"]')).not.toBeVisible();
721
+ }
722
+ /**
723
+ * Open CI from explorer
724
+ * @param nodeId
725
+ */ async openCi(nodeId) {
726
+ if (await this.page.locator('.infinite-tree-item[data-id="' + nodeId + '"]').isVisible()) await this.page.locator('.infinite-tree-item[data-id="' + nodeId + '"]').dblclick();
727
+ else {
728
+ await this.expandNodePath(nodeId);
729
+ await this.page.waitForSelector('.infinite-tree-item[data-id="' + nodeId + '"]');
730
+ await this.page.locator('.infinite-tree-item[data-id="' + nodeId + '"]').dblclick();
731
+ }
732
+ }
733
+ /**
734
+ * Select the CI which need to get deleted.
735
+ * @param nodeId
736
+ */ async selectDeleteCi(nodeId) {
737
+ const cipath = this.page.locator('div[data-id="' + nodeId + '"]');
738
+ if (await cipath.isVisible()) await this.page.locator('div[data-id="' + nodeId + '"]').click();
739
+ else {
740
+ await this.expandNodePath(nodeId);
741
+ await this.page.locator('div[data-id="' + nodeId + '"]').click();
742
+ }
743
+ await this.page.locator('i[data-id="' + nodeId + '"].context-menu-button').click();
744
+ await this.contextMenu.clickMenuPath([
745
+ "delete"
746
+ ]);
747
+ }
748
+ /**
749
+ * Click cancel button on modal window to cancel deletion.
750
+ */ async clickCancelAndWait() {
751
+ await this.modal.clickCancel();
752
+ }
753
+ /**
754
+ * Click Delete button on modal window to delete the CI
755
+ */ async clickConfirmAndWait() {
756
+ await this.modal.clickDelete();
542
757
  }
543
758
  }
544
759
 
545
760
 
546
761
 
547
762
 
548
- class $f6d52f442cf07ec8$export$3e41faf802a29e71 extends (0, $7d546dcaafadc158$export$2b65d1d97338f32b) {
763
+ class $6cefee8b9be33b2d$export$60413e28724d3abd extends (0, $9f5bc0f6324fb5ea$export$a7fed597f4b8afd8) {
549
764
  constructor(page){
550
- super(page);
765
+ super(page.locator(".dip-view-body"));
551
766
  this.page = page;
552
- this.parentTabLocator = this.page.locator(".working-panel-section .xl-react-tab-system");
553
- this.getTabTitleLocator = this.page.locator("li.active .tab-title");
554
- }
555
- async assertActiveTabSelector(expectedCiType) {
556
- return await (0, $lE6ZQ$expect)(this.parentTabLocator.locator("li.active .tab-title")).toHaveText(expectedCiType, {
557
- ignoreCase: true
767
+ this.inputName = page.locator('input[name="name"]');
768
+ this.inputLatestVersion = page.locator('input[name="lastVersion"]');
769
+ this.saveButton = page.getByRole("button", {
770
+ name: "Save",
771
+ exact: true
558
772
  });
773
+ this.saveAndCloseButton = page.getByRole("button", {
774
+ name: "Save and close",
775
+ exact: true
776
+ });
777
+ this.cancelButton = page.getByRole("button", {
778
+ name: "Cancel",
779
+ exact: true
780
+ });
781
+ this.formSection = page.locator(".xl-react-components.xl-react-dip-dynamic-form");
782
+ this.addButton = page.locator(".xl-btn-add");
783
+ }
784
+ /**
785
+ * Enter name in name field of the application form
786
+ * @param name
787
+ * @returns
788
+ */ async enterName(name) {
789
+ return await this.findElementInSection(this.inputName).fill(name);
790
+ }
791
+ /**
792
+ * Enter latest version field
793
+ * @param version
794
+ * @returns
795
+ */ async enterLatestVersion(version) {
796
+ return await this.findElementInSection(this.inputLatestVersion).fill(version);
797
+ }
798
+ /**
799
+ * Click save button
800
+ * @returns
801
+ */ async clickSave() {
802
+ return await this.findElementInSection(this.saveButton).click();
803
+ }
804
+ /**
805
+ * Click save and close button
806
+ * @returns
807
+ */ async clickSaveAndClose() {
808
+ return await this.findElementInSection(this.saveAndCloseButton).click();
809
+ }
810
+ /**
811
+ * Click cancel button
812
+ * @returns
813
+ */ async clickCancel() {
814
+ return await this.findElementInSection(this.cancelButton).click();
815
+ }
816
+ /**
817
+ * Expecting save button is disabled
818
+ * @returns
819
+ */ async assertSaveButtonIsDisabled() {
820
+ return await (0, $lE6ZQ$expect)(this.findElementInSection(this.saveButton)).toBeDisabled();
821
+ }
822
+ /**
823
+ * Expecting Save and close button is disabled
824
+ * @returns
825
+ */ async assertSaveAndCloseButtonIsDisabled() {
826
+ return await (0, $lE6ZQ$expect)(this.findElementInSection(this.saveAndCloseButton)).toBeDisabled();
827
+ }
828
+ /**
829
+ * Enter Field Values using its label value around application forms
830
+ * @param fieldName
831
+ * @param expectedValue
832
+ * @returns
833
+ */ async addFieldValue(fieldName, expectedValue) {
834
+ const label = this.formSection.locator('//label[text()="' + fieldName + '"]/parent::div/parent::div');
835
+ const input = label.locator(".xl-react-components-input input");
836
+ await input.fill(expectedValue);
837
+ await input.press("Enter");
838
+ const result = await input.getAttribute("value");
839
+ return (0, $lE6ZQ$expect)(result).toEqual(expectedValue);
840
+ }
841
+ async addOrchestrator(fieldValue) {
842
+ const label = this.formSection.locator('//label[text()="Orchestrator"]/parent::div/parent::div');
843
+ const input = label.locator(".xl-react-components-input input");
844
+ await input.fill(fieldValue);
845
+ await this.addButton.click();
846
+ await this.saveButton.waitFor();
847
+ await this.saveButton.click();
848
+ const result = await this.page.locator("span.text-container").getAttribute("title");
849
+ return (0, $lE6ZQ$expect)(result).toEqual(fieldValue);
559
850
  }
560
851
  }
561
852
 
562
853
 
563
-
564
- class $1f57a739e2592b82$export$2b77a92f1a5ad772 extends (0, $b464119f5ec5aad0$export$6e2c8f0811a474ce) {
854
+ class $4e7e9f7ca5788871$export$bf4a5dd3be690f6b extends (0, $7d546dcaafadc158$export$2b65d1d97338f32b) {
565
855
  constructor(page){
566
- super(page.locator(".xl-react-modal-content"));
567
- this.header = page.locator(".modal-header");
568
- this.body = page.locator(".modal-body");
569
- this.footer = page.locator(".modal-footer");
856
+ super(page);
857
+ this.contextMenu = new (0, $6d0b1fc17db4a5fb$export$133beb65adbc45a3)(page);
858
+ this.form = new (0, $4baf6ba7e224a0ed$export$13ee474454c1948e)(page);
859
+ this.tab = new (0, $f6d52f442cf07ec8$export$3e41faf802a29e71)(page);
860
+ this.util = new (0, $85032414fe55e0f1$export$7db63d2c950874b5)(this, page);
861
+ this.modal = new (0, $9a8685efb2ff62b1$export$bd6452a745ffdb18)(page);
862
+ this.commonUtil = new (0, $0ced90cc8a4c42e6$export$5a20f96f6e2d29e9)(page);
863
+ this.appForm = new (0, $6cefee8b9be33b2d$export$60413e28724d3abd)(page);
570
864
  }
571
865
  }
572
866
 
573
867
 
574
- class $a2f3076183e2964c$export$51360b6aa3a7b134 extends (0, $1f57a739e2592b82$export$2b77a92f1a5ad772) {
868
+
869
+
870
+ class $736a7a3b2d786796$export$36d69433c4f81145 extends (0, $7d546dcaafadc158$export$2b65d1d97338f32b) {
575
871
  constructor(page){
576
872
  super(page);
577
- this.deleteButton = page.getByRole("button", {
578
- name: "Delete",
873
+ }
874
+ }
875
+
876
+
877
+
878
+
879
+
880
+
881
+
882
+
883
+
884
+
885
+
886
+ class $07a0aa0673096895$export$855563f8bdb36207 extends (0, $9f5bc0f6324fb5ea$export$a7fed597f4b8afd8) {
887
+ constructor(page){
888
+ super(page.locator(".dip-view-body"));
889
+ this.page = page;
890
+ this.inputName = page.locator('input[name="name"]');
891
+ this.inputLatestVersion = page.locator('input[name="lastVersion"]');
892
+ this.saveButton = page.getByRole("button", {
893
+ name: "Save",
894
+ exact: true
895
+ });
896
+ this.saveAndCloseButton = page.getByRole("button", {
897
+ name: "Save and close",
579
898
  exact: true
580
899
  });
581
900
  this.cancelButton = page.getByRole("button", {
582
901
  name: "Cancel",
583
902
  exact: true
584
903
  });
904
+ this.inputHost = page.locator('input[name="host"]');
905
+ this.inputPort = page.getByLabel("Port");
906
+ this.inputUsername = page.locator('input[name="username"]');
907
+ this.inputPassword = page.locator('input[name="password"]');
908
+ this.inputFromAddress = page.locator('input[name="fromAddress"]');
909
+ this.inputTestAddress = page.locator('input[name="testAddress"]');
910
+ this.inputHostName = page.locator('input[name="hostname"]');
585
911
  }
586
- async clickDelete() {
587
- await this.footer.locator(this.deleteButton).click();
912
+ /**
913
+ * Enter name in name field of the configuration form
914
+ * @param name
915
+ * @returns
916
+ */ async enterName(name) {
917
+ return await this.findElementInSection(this.inputName).fill(name);
588
918
  }
589
- async clickCancel() {
590
- await this.footer.locator(this.cancelButton).click();
919
+ /**
920
+ * Enter latest version field
921
+ * @param version
922
+ * @returns
923
+ */ async enterLatestVersion(version) {
924
+ return await this.findElementInSection(this.inputLatestVersion).fill(version);
925
+ }
926
+ /**
927
+ * Click save button
928
+ * @returns
929
+ */ async clickSave() {
930
+ return await this.findElementInSection(this.saveButton).click();
931
+ }
932
+ /**
933
+ * Click save and close button
934
+ * @returns
935
+ */ async clickSaveAndClose() {
936
+ return await this.findElementInSection(this.saveAndCloseButton).click();
937
+ }
938
+ /**
939
+ * Click cancel button
940
+ * @returns
941
+ */ async clickCancel() {
942
+ return await this.findElementInSection(this.cancelButton).click();
943
+ }
944
+ /**
945
+ * Expecting save button is disabled
946
+ * @returns
947
+ */ async assertSaveButtonIsDisabled() {
948
+ return await (0, $lE6ZQ$expect)(this.findElementInSection(this.saveButton)).toBeDisabled();
949
+ }
950
+ /**
951
+ * Expecting Save and close button is disabled
952
+ * @returns
953
+ */ async assertSaveAndCloseButtonIsDisabled() {
954
+ return await (0, $lE6ZQ$expect)(this.findElementInSection(this.saveAndCloseButton)).toBeDisabled();
955
+ }
956
+ /**
957
+ * Expecting field value with its field name
958
+ * @param fieldName
959
+ * @param value
960
+ * @returns
961
+ */ async expectFieldValue(fieldName, value) {
962
+ (0, $lE6ZQ$expect)(await this.page.locator('input[name="' + fieldName + '"]').getAttribute("value")).toEqual(value);
963
+ }
964
+ /**
965
+ * Set Host value to the Host field in configuration form
966
+ * @param host
967
+ * @returns
968
+ */ async setHostValue(host) {
969
+ await this.findElementInSection(this.inputHost).fill(host);
970
+ }
971
+ /**
972
+ * Setting port value in the configuration form
973
+ * @param port
974
+ * @returns
975
+ */ async setPortValue(port) {
976
+ await this.findElementInSection(this.inputPort).fill(port);
977
+ }
978
+ /**
979
+ * Setting from Address field value in configuration form
980
+ * @param address
981
+ * @returns
982
+ */ async setFromAddress(address) {
983
+ await this.findElementInSection(this.inputFromAddress).fill(address);
984
+ }
985
+ /**
986
+ * Setting username in configuration form
987
+ * @param username
988
+ * @returns
989
+ */ async setUserName(username) {
990
+ await this.findElementInSection(this.inputUsername).fill(username);
991
+ }
992
+ /**
993
+ * Setting password in configuration form
994
+ * @param password
995
+ * @returns
996
+ */ async setPassword(password) {
997
+ await this.findElementInSection(this.inputPassword).fill(password);
998
+ }
999
+ /**
1000
+ * Setting host name in configuration form
1001
+ * @param hostname
1002
+ * @returns
1003
+ */ async setHostName(hostname) {
1004
+ await this.findElementInSection(this.inputHostName).fill(hostname);
591
1005
  }
592
1006
  }
593
1007
 
594
1008
 
595
- class $4e7e9f7ca5788871$export$bf4a5dd3be690f6b extends (0, $7d546dcaafadc158$export$2b65d1d97338f32b) {
1009
+ class $e0ba9f6e7147a59d$export$ad55ec59bf82c4fc {
1010
+ constructor(page1, page){
1011
+ this.configPage = page1;
1012
+ this.page = page;
1013
+ }
1014
+ }
1015
+
1016
+
1017
+ class $c4efd1bbc33bdc4e$export$8ef81de2d4ebb0b9 extends (0, $7d546dcaafadc158$export$2b65d1d97338f32b) {
596
1018
  constructor(page){
597
1019
  super(page);
598
- this.appMenu = new (0, $b6dcf2a94c3ae3f4$export$b477143f7ffae077)(page);
599
- this.appForm = new (0, $6cefee8b9be33b2d$export$60413e28724d3abd)(page);
1020
+ this.contextMenu = new (0, $6d0b1fc17db4a5fb$export$133beb65adbc45a3)(page);
1021
+ this.form = new (0, $4baf6ba7e224a0ed$export$13ee474454c1948e)(page);
600
1022
  this.tab = new (0, $f6d52f442cf07ec8$export$3e41faf802a29e71)(page);
601
- this.util = new (0, $85032414fe55e0f1$export$7db63d2c950874b5)(this, page);
602
- this.appModal = new (0, $a2f3076183e2964c$export$51360b6aa3a7b134)(page);
1023
+ this.modal = new (0, $9a8685efb2ff62b1$export$bd6452a745ffdb18)(page);
1024
+ this.commonUtil = new (0, $0ced90cc8a4c42e6$export$5a20f96f6e2d29e9)(page);
1025
+ this.configForm = new (0, $07a0aa0673096895$export$855563f8bdb36207)(page);
1026
+ this.util = new (0, $e0ba9f6e7147a59d$export$ad55ec59bf82c4fc)(this, page);
603
1027
  }
604
1028
  }
605
1029
 
606
1030
 
607
1031
 
608
1032
 
609
- class $736a7a3b2d786796$export$36d69433c4f81145 extends (0, $7d546dcaafadc158$export$2b65d1d97338f32b) {
1033
+
1034
+
1035
+
1036
+
1037
+
1038
+
1039
+ class $6bd08aebb33e3379$export$21cde1e6a73cf500 extends (0, $9f5bc0f6324fb5ea$export$a7fed597f4b8afd8) {
1040
+ constructor(page){
1041
+ super(page.locator(".dip-view-body"));
1042
+ this.page = page;
1043
+ this.formSection = page.locator(".xl-react-components.xl-react-dip-dynamic-form");
1044
+ this.inputName = page.locator('input[name="name"]');
1045
+ this.inputLatestVersion = page.locator('input[name="lastVersion"]');
1046
+ this.saveButton = page.getByRole("button", {
1047
+ name: "Save",
1048
+ exact: true
1049
+ });
1050
+ this.saveAndCloseButton = page.getByRole("button", {
1051
+ name: "Save and close",
1052
+ exact: true
1053
+ });
1054
+ this.cancelButton = page.getByRole("button", {
1055
+ name: "Cancel",
1056
+ exact: true
1057
+ });
1058
+ this.inputVersion = page.locator("");
1059
+ }
1060
+ /**
1061
+ * Expect the label text is available in form.
1062
+ * @param label
1063
+ */ async assertLabelText(label) {
1064
+ await (0, $lE6ZQ$expect)(this.page.getByText(label, {
1065
+ exact: true
1066
+ })).toBeVisible();
1067
+ }
1068
+ /**
1069
+ * Enter name in name field of the application form
1070
+ * @param name
1071
+ * @returns
1072
+ */ async enterName(name) {
1073
+ return await this.findElementInSection(this.inputName).fill(name);
1074
+ }
1075
+ /**
1076
+ * Enter latest version field
1077
+ * @param version
1078
+ * @returns
1079
+ */ async enterLatestVersion(version) {
1080
+ return await this.findElementInSection(this.inputLatestVersion).fill(version);
1081
+ }
1082
+ /**
1083
+ * Click save button
1084
+ * @returns
1085
+ */ async clickSave() {
1086
+ return await this.findElementInSection(this.saveButton).click();
1087
+ }
1088
+ /**
1089
+ * Click save and close button
1090
+ * @returns
1091
+ */ async clickSaveAndClose() {
1092
+ return await this.findElementInSection(this.saveAndCloseButton).click();
1093
+ }
1094
+ /**
1095
+ * Click cancel button
1096
+ * @returns
1097
+ */ async clickCancel() {
1098
+ return await this.findElementInSection(this.cancelButton).click();
1099
+ }
1100
+ /**
1101
+ * Expecting save button is disabled
1102
+ * @returns
1103
+ */ async assertSaveButtonIsDisabled() {
1104
+ return await (0, $lE6ZQ$expect)(this.findElementInSection(this.saveButton)).toBeDisabled();
1105
+ }
1106
+ /**
1107
+ * Expecting Save and close button is disabled
1108
+ * @returns
1109
+ */ async assertSaveAndCloseButtonIsDisabled() {
1110
+ return await (0, $lE6ZQ$expect)(this.findElementInSection(this.saveAndCloseButton)).toBeDisabled();
1111
+ }
1112
+ /**
1113
+ * Enter options in the input field of dropdown to match with suggestion list in form
1114
+ * @param fieldName
1115
+ * @param value
1116
+ */ async selectVersionOption(fieldName, value) {
1117
+ const label = this.formSection.locator('//label[text()="' + fieldName + '"]/parent::div/parent::div');
1118
+ await label.locator(".xl-react-components-input input").fill(value);
1119
+ }
1120
+ }
1121
+
1122
+
1123
+ class $31f14a5153b274ab$export$b8a8d62f66d27fa1 {
1124
+ constructor(page1, page){
1125
+ this.environmentPage = page1;
1126
+ this.page = page;
1127
+ }
1128
+ }
1129
+
1130
+
1131
+ class $5a95c11425d050d8$export$2c95c5c5be4fb9b0 extends (0, $7d546dcaafadc158$export$2b65d1d97338f32b) {
610
1132
  constructor(page){
611
1133
  super(page);
1134
+ this.contextMenu = new (0, $6d0b1fc17db4a5fb$export$133beb65adbc45a3)(page);
1135
+ this.form = new (0, $4baf6ba7e224a0ed$export$13ee474454c1948e)(page);
1136
+ this.tab = new (0, $f6d52f442cf07ec8$export$3e41faf802a29e71)(page);
1137
+ this.modal = new (0, $9a8685efb2ff62b1$export$bd6452a745ffdb18)(page);
1138
+ this.commonUtil = new (0, $0ced90cc8a4c42e6$export$5a20f96f6e2d29e9)(page);
1139
+ this.envForm = new (0, $6bd08aebb33e3379$export$21cde1e6a73cf500)(page);
1140
+ this.util = new (0, $31f14a5153b274ab$export$b8a8d62f66d27fa1)(this, page);
612
1141
  }
613
1142
  }
614
1143
 
615
1144
 
616
1145
 
1146
+
1147
+
1148
+
1149
+
1150
+
1151
+ class $bf1ec3be2f174e87$export$1f6beddb119e759b extends (0, $7d546dcaafadc158$export$2b65d1d97338f32b) {
1152
+ constructor(page){
1153
+ super(page);
1154
+ this.contextMenu = new (0, $6d0b1fc17db4a5fb$export$133beb65adbc45a3)(page);
1155
+ this.form = new (0, $4baf6ba7e224a0ed$export$13ee474454c1948e)(page);
1156
+ this.tab = new (0, $f6d52f442cf07ec8$export$3e41faf802a29e71)(page);
1157
+ this.modal = new (0, $9a8685efb2ff62b1$export$bd6452a745ffdb18)(page);
1158
+ this.commonUtil = new (0, $0ced90cc8a4c42e6$export$5a20f96f6e2d29e9)(page);
1159
+ }
1160
+ }
1161
+
1162
+
617
1163
  const $114b0b206b8d644f$export$e0969da9b8fb378d = (0, $lE6ZQ$test).extend({
618
1164
  loginPage: async ({ page: page }, use)=>{
619
1165
  // Set up the fixture.
@@ -635,6 +1181,21 @@ const $114b0b206b8d644f$export$e0969da9b8fb378d = (0, $lE6ZQ$test).extend({
635
1181
  const tab = new (0, $f6d52f442cf07ec8$export$3e41faf802a29e71)(page);
636
1182
  await use(tab);
637
1183
  return tab;
1184
+ },
1185
+ environmentPage: async ({ page: page }, use)=>{
1186
+ const environmentPage = new (0, $5a95c11425d050d8$export$2c95c5c5be4fb9b0)(page);
1187
+ await use(environmentPage);
1188
+ return environmentPage;
1189
+ },
1190
+ configurePage: async ({ page: page }, use)=>{
1191
+ const configurePage = new (0, $c4efd1bbc33bdc4e$export$8ef81de2d4ebb0b9)(page);
1192
+ await use(configurePage);
1193
+ return configurePage;
1194
+ },
1195
+ infraPage: async ({ page: page }, use)=>{
1196
+ const infraPage = new (0, $bf1ec3be2f174e87$export$1f6beddb119e759b)(page);
1197
+ await use(infraPage);
1198
+ return infraPage;
638
1199
  }
639
1200
  });
640
1201