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