@digital-ai/devops-page-object-release 0.0.14 → 0.0.16

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
@@ -2,8 +2,8 @@ import {test as $hOLA6$test, expect as $hOLA6$expect} from "@playwright/test";
2
2
  import {execFile as $hOLA6$execFile} from "child_process";
3
3
  import $hOLA6$lodashisNil from "lodash/isNil";
4
4
  import {env as $hOLA6$env} from "process";
5
- import {promises as $hOLA6$promises} from "fs";
6
5
  import $hOLA6$moment from "moment";
6
+ import {promises as $hOLA6$promises} from "fs";
7
7
  import $hOLA6$lodashisUndefined from "lodash/isUndefined";
8
8
  import $hOLA6$lodasheach from "lodash/each";
9
9
  import $hOLA6$lodashforEach from "lodash/forEach";
@@ -504,13 +504,18 @@ class $9c357602b6f466e7$export$aa59788fdecae2f2 extends (0, $9626bc9256ce31f7$ex
504
504
  hasText: fileName
505
505
  }).click();
506
506
  await this.page.getByLabel("delete file").click();
507
+ await this.page.getByRole("button", {
508
+ name: "Delete"
509
+ }).waitFor({
510
+ state: "visible"
511
+ });
507
512
  await this.page.getByRole("button", {
508
513
  name: "Delete"
509
514
  }).click();
510
515
  }
511
516
  async expectWithNoAttachment(tempFile) {
512
- const test = await this.page.locator(".task-attachments-grid .file-item-text").isVisible();
513
- if (test) await (0, $hOLA6$expect)(this.page.locator(".task-attachments-grid .file-item-text")).not.toContainText(tempFile);
517
+ const test = await this.page.locator(".task-attachments-grid .file-item-text").count();
518
+ if (test > 0) await (0, $hOLA6$expect)(this.page.locator(".task-attachments-grid .file-item-text")).not.toContainText(tempFile);
514
519
  else await (0, $hOLA6$expect)(this.page.locator(".task-attachments-grid .file-item-text")).not.toBeVisible();
515
520
  }
516
521
  }
@@ -591,11 +596,40 @@ class $8e39246218b802fc$export$e946776eae644790 extends (0, $9626bc9256ce31f7$ex
591
596
  await this.page.locator(".icon-fullscreen-exit").click();
592
597
  await (0, $hOLA6$expect)(this.page.locator(".icon-fullscreen-exit")).not.toBeVisible();
593
598
  }
599
+ async expectAssignedTo(username) {
600
+ await (0, $hOLA6$expect)(this.page.getByRole("button", {
601
+ name: username
602
+ })).toBeVisible();
603
+ }
604
+ async assignToMe(userName, existingUsername) {
605
+ await this.page.getByRole("button", {
606
+ name: existingUsername
607
+ }).click();
608
+ await this.page.getByTestId(`render-option-${userName}`).click();
609
+ }
610
+ async setFlag(flagName, flagComment) {
611
+ await this.page.getByTestId("flag-btn").click();
612
+ await this.page.getByLabel(flagName).click();
613
+ await this.page.getByPlaceholder("Set message").click();
614
+ await this.page.getByPlaceholder("Set message").fill(flagComment);
615
+ await this.page.getByPlaceholder("Set message").press("Enter");
616
+ await (0, $hOLA6$expect)(this.page.getByRole("button", {
617
+ name: `flag icon ${flagComment}`
618
+ })).toBeVisible();
619
+ }
620
+ async expectFlaggedWith(flagName, flagComment) {
621
+ await this.page.getByRole("button", {
622
+ name: "flag icon"
623
+ }).click();
624
+ const regexPattern = new RegExp(`${flagComment}.*${flagName}`, "i");
625
+ await (0, $hOLA6$expect)(this.page.getByText(regexPattern)).toBeVisible();
626
+ }
594
627
  }
595
628
 
596
629
 
597
630
 
598
631
 
632
+
599
633
  class $c9bb587dd92143c3$export$d1077068a9cc9f17 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
600
634
  constructor(page){
601
635
  super(page);
@@ -628,9 +662,10 @@ class $c9bb587dd92143c3$export$d1077068a9cc9f17 extends (0, $9626bc9256ce31f7$ex
628
662
  async save() {
629
663
  await this.page.getByRole("button", {
630
664
  name: "Save"
631
- }).click({
632
- timeout: 2000
633
- });
665
+ }).waitFor();
666
+ await this.page.getByRole("button", {
667
+ name: "Save"
668
+ }).click();
634
669
  await (0, $hOLA6$expect)(this.page.locator(".form-footer .last-saved")).toBeVisible();
635
670
  }
636
671
  async reset() {
@@ -646,6 +681,128 @@ class $c9bb587dd92143c3$export$d1077068a9cc9f17 extends (0, $9626bc9256ce31f7$ex
646
681
  hasText: filename
647
682
  })).toBeVisible();
648
683
  }
684
+ async getAttachmentsListCount() {
685
+ return await this.page.locator(".attachments tr").count();
686
+ }
687
+ async uploadFile(filePath) {
688
+ const fileChooserPromise = this.page.waitForEvent("filechooser");
689
+ await this.page.locator('input[type="file"]').click();
690
+ const fileChooser = await fileChooserPromise;
691
+ await fileChooser.setFiles(filePath);
692
+ }
693
+ async expectWithNoAttachment(filename) {
694
+ const test = await this.page.locator(".attachments").isVisible();
695
+ if (test) await (0, $hOLA6$expect)(this.page.locator(".attachments tr td a").filter({
696
+ hasText: filename
697
+ })).not.toBeVisible();
698
+ }
699
+ async downloadFile(filename) {
700
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
701
+ const downloadPromise1 = this.page.waitForEvent("download");
702
+ await this.page.getByText(filename).click();
703
+ const download = await downloadPromise1;
704
+ // Wait for the download process to complete and save the downloaded file in given path.
705
+ await download.saveAs("./core/xlr-ui/build/playwright/" + download.suggestedFilename());
706
+ (0, $hOLA6$expect)(download.suggestedFilename()).toBe(filename);
707
+ }
708
+ async deleteAttachment(fileName) {
709
+ await this.page.getByRole("row", {
710
+ name: fileName
711
+ }).locator("span").click();
712
+ await this.page.getByText("Remove").click();
713
+ }
714
+ async expectVariableDisplayed(variable, present) {
715
+ if (present) await (0, $hOLA6$expect)(this.page.locator(`#release-properties .form-group`, {
716
+ hasText: variable
717
+ })).toHaveCount(1);
718
+ else await (0, $hOLA6$expect)(this.page.locator(`#release-properties .form-group`, {
719
+ hasText: variable
720
+ })).toHaveCount(0);
721
+ }
722
+ async setScheduledStartDate(date, monthYear) {
723
+ await this.page.locator(`.scheduled-start-date .date`).click();
724
+ const prev = this.page.locator(".datepicker-days .prev");
725
+ const next = this.page.locator(".datepicker-days .next");
726
+ const monYear = this.page.locator(".datepicker-days .datepicker-switch");
727
+ const thisMonth = (0, $hOLA6$moment)(monthYear, "MMMM YYYY").isBefore();
728
+ while(await monYear.textContent() != monthYear)if (thisMonth) await prev.click();
729
+ else await next.click();
730
+ await this.page.getByRole("cell", {
731
+ name: "" + date + ""
732
+ }).first().click();
733
+ }
734
+ async setScheduledStartTime(hrs, mins, meridian) {
735
+ await this.page.locator(".scheduled-start-date .time-picker-holder").click();
736
+ if (typeof hrs !== "undefined") {
737
+ await this.page.locator(".bootstrap-timepicker-hour").click();
738
+ await this.page.locator(".bootstrap-timepicker-hour").clear();
739
+ await this.page.locator(".bootstrap-timepicker-hour").fill(hrs);
740
+ }
741
+ if (typeof mins !== "undefined") {
742
+ await this.page.locator(".bootstrap-timepicker-minute").click();
743
+ await this.page.locator(".bootstrap-timepicker-minute").clear();
744
+ await this.page.locator(".bootstrap-timepicker-minute").fill(mins);
745
+ }
746
+ if (typeof meridian !== "undefined") {
747
+ await this.page.locator(".bootstrap-timepicker-meridian").click();
748
+ await this.page.locator(".bootstrap-timepicker-meridian").clear();
749
+ await this.page.locator(".bootstrap-timepicker-meridian").fill(meridian);
750
+ }
751
+ await this.page.keyboard.press("Escape");
752
+ }
753
+ async setDuration(days, hours, mins) {
754
+ await this.page.locator(".duration-editor").click();
755
+ if (typeof days !== "undefined") {
756
+ await this.page.locator(".days").click();
757
+ await this.page.locator(".days").clear();
758
+ await this.page.locator(".days").fill(days);
759
+ }
760
+ if (typeof hours !== "undefined") {
761
+ await this.page.locator(".hours").click();
762
+ await this.page.locator(".hours").clear();
763
+ await this.page.locator(".hours").fill(hours);
764
+ }
765
+ if (typeof mins !== "undefined") {
766
+ await this.page.locator(".minutes").click();
767
+ await this.page.locator(".minutes").clear();
768
+ await this.page.locator(".minutes").fill(mins);
769
+ }
770
+ await this.page.keyboard.press("Escape");
771
+ }
772
+ async expectScheduledStartDateToBe(date) {
773
+ (0, $hOLA6$expect)(await this.page.locator(`.scheduled-start-date .date input`).getAttribute("value")).toContain(date);
774
+ }
775
+ async expectScheduledStartTimeToBe(date) {
776
+ (0, $hOLA6$expect)(await this.page.locator(`.scheduled-start-date .time input`).getAttribute("value")).toContain(date);
777
+ }
778
+ async expectDueDateToBe(date) {
779
+ (0, $hOLA6$expect)(await this.page.locator(".due-date .date input").getAttribute("value")).toContain(date);
780
+ }
781
+ async expectedDueDateTime(time) {
782
+ (0, $hOLA6$expect)(await this.page.locator(".due-date .time input").getAttribute("value")).toContain(time);
783
+ }
784
+ async expectDurationToBe(duration) {
785
+ (0, $hOLA6$expect)(await this.page.locator(".duration-editor").textContent()).toBe(duration);
786
+ }
787
+ async setDueDate(hrs, min, meridian) {
788
+ await this.page.locator(".due-date .time-picker-holder").click();
789
+ if (typeof hrs !== "undefined") {
790
+ await this.page.locator(".bootstrap-timepicker-widget .bootstrap-timepicker-hour").click();
791
+ await this.page.locator(".bootstrap-timepicker-widget .bootstrap-timepicker-hour").clear();
792
+ await this.page.locator(".bootstrap-timepicker-widget .bootstrap-timepicker-hour").fill(hrs);
793
+ }
794
+ if (typeof min !== "undefined") {
795
+ await this.page.locator(".bootstrap-timepicker-widget .bootstrap-timepicker-minute").click();
796
+ await this.page.locator(".bootstrap-timepicker-widget .bootstrap-timepicker-minute").clear();
797
+ await this.page.locator(".bootstrap-timepicker-widget .bootstrap-timepicker-minute").fill(min);
798
+ }
799
+ if (typeof meridian !== "undefined") {
800
+ await this.page.locator(".bootstrap-timepicker-widget .bootstrap-timepicker-meridian").click();
801
+ await this.page.locator(".bootstrap-timepicker-widget .bootstrap-timepicker-meridian").clear();
802
+ await this.page.locator(".bootstrap-timepicker-widget .bootstrap-timepicker-meridian").fill(meridian);
803
+ }
804
+ await this.page.keyboard.press("Escape");
805
+ }
649
806
  }
650
807
 
651
808
 
@@ -670,6 +827,16 @@ class $43cbcdfccb6c2a76$export$f43492e8ac3c566 extends (0, $9626bc9256ce31f7$exp
670
827
  getPhase(phaseName) {
671
828
  return new $43cbcdfccb6c2a76$var$Phase(this.page, phaseName);
672
829
  }
830
+ async expectNotFlagged() {
831
+ await (0, $hOLA6$expect)(this.page.locator(".flag-none-icon")).toBeHidden();
832
+ }
833
+ async expectFlagOnTaskCard() {
834
+ await (0, $hOLA6$expect)(this.page.locator(".risk-flag-icon")).toBeVisible();
835
+ }
836
+ async refresh() {
837
+ await this.page.reload();
838
+ await this.page.waitForSelector("#release");
839
+ }
673
840
  async start() {
674
841
  await this.page.getByTestId("start-btn").click();
675
842
  await this.page.getByRole("button", {
@@ -723,6 +890,25 @@ class $43cbcdfccb6c2a76$export$f43492e8ac3c566 extends (0, $9626bc9256ce31f7$exp
723
890
  timeout: 10000
724
891
  });
725
892
  }
893
+ async waitForTaskPlanned(title) {
894
+ await (0, $hOLA6$expect)(this.page.locator(`.task:has-text('${title}').planned`)).toBeVisible();
895
+ }
896
+ async openManualTaskDetails(title) {
897
+ await this.page.locator(`text=${title}`).click({
898
+ force: true
899
+ });
900
+ await (0, $hOLA6$expect)(this.page.locator("div").filter({
901
+ hasText: title
902
+ }).first()).toBeVisible();
903
+ }
904
+ async reopenTask(comment) {
905
+ await this.page.locator("div").filter({
906
+ hasText: /^Reopen$/
907
+ }).click();
908
+ await this.page.getByTestId("task-action-comment").click();
909
+ await this.page.getByTestId("task-action-comment").fill(comment);
910
+ await this.page.getByTestId("task-action-confirm").click();
911
+ }
726
912
  async openTaskDrawer(taskName) {
727
913
  await this.page.locator(".task-header").getByText(taskName, {
728
914
  exact: true
@@ -818,6 +1004,16 @@ class $43cbcdfccb6c2a76$export$f43492e8ac3c566 extends (0, $9626bc9256ce31f7$exp
818
1004
  }
819
1005
  }
820
1006
  }
1007
+ async expectTitleToBeInBreadcrumbLink(title) {
1008
+ await (0, $hOLA6$expect)(this.page.locator(".dot-breadcrumbs a", {
1009
+ hasText: title
1010
+ })).toBeVisible();
1011
+ }
1012
+ async expectHasPhase(title) {
1013
+ await (0, $hOLA6$expect)(this.page.locator(`#release-content .phase-title`, {
1014
+ hasText: title
1015
+ })).toBeVisible();
1016
+ }
821
1017
  }
822
1018
  class $43cbcdfccb6c2a76$var$Phase extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
823
1019
  constructor(page, phaseName){
@@ -1270,15 +1466,46 @@ class $c37c93912f458e81$export$60c3bfa6385e2a10 extends (0, $9626bc9256ce31f7$ex
1270
1466
  }
1271
1467
  async openTask(taskName) {
1272
1468
  await this.filterTaskByTitle(taskName);
1273
- await this.page.getByText(taskName).click();
1469
+ await this.page.getByText(taskName).first().click();
1470
+ }
1471
+ async skip(taskName, comment) {
1472
+ await this.page.locator(`.row.task-inner`, {
1473
+ hasText: taskName
1474
+ }).locator("span.skip").click();
1475
+ await this.page.getByPlaceholder("Give feedback or place a comment...").click();
1476
+ await this.page.getByPlaceholder("Give feedback or place a comment...").fill(comment);
1477
+ await this.page.getByRole("button", {
1478
+ name: "Skip",
1479
+ exact: true
1480
+ }).click();
1481
+ }
1482
+ async waitForTaskInProgress(taskName) {
1483
+ await (0, $hOLA6$expect)(this.page.locator(`.row.task-inner`, {
1484
+ hasText: taskName
1485
+ }).getByText("In progress")).toBeVisible();
1486
+ }
1487
+ async openTaskInReleaseView(taskName) {
1488
+ await this.page.locator(`.row.task-inner`, {
1489
+ hasText: taskName
1490
+ }).locator("a.view-in-release").click();
1491
+ }
1492
+ async openCalendarViaTaskDueDate(taskName) {
1493
+ await this.page.locator(`.row.task-inner`, {
1494
+ hasText: taskName
1495
+ }).locator(`.calendar-link a`).click();
1496
+ }
1497
+ async openTaskDrawer(taskName) {
1498
+ await this.page.locator(`.row.task-inner`, {
1499
+ hasText: taskName
1500
+ }).getByText(taskName).click();
1274
1501
  }
1275
1502
  async filterTaskByTitle(taskname) {
1276
- await this.page.locator(".toggle-search-filter").click();
1503
+ await this.page.locator(".searchFilter").click();
1277
1504
  await this.page.locator(".searchFilter").fill(taskname);
1278
1505
  await this.page.locator(".searchFilter").press("Enter");
1279
1506
  await (0, $hOLA6$expect)(this.page.locator("//div[@data-task-title]").filter({
1280
1507
  hasText: taskname
1281
- })).toBeVisible();
1508
+ }).first()).toBeVisible();
1282
1509
  }
1283
1510
  async filterTasksByTag(tag, taskTitleForValidation) {
1284
1511
  await this.page.locator(".toggle-search-filter").click();
@@ -1313,9 +1540,41 @@ class $c37c93912f458e81$export$60c3bfa6385e2a10 extends (0, $9626bc9256ce31f7$ex
1313
1540
  await (0, $hOLA6$expect)(this.page.locator(".view-in-release")).not.toBeVisible();
1314
1541
  }
1315
1542
  }
1543
+ async openTaskList() {
1544
+ await this.page.goto("./#/tasks");
1545
+ }
1546
+ async clickOnAssigneeButton(title) {
1547
+ await this.page.locator(`.btn-group-filter.btn-group button.btn.btn-flat[title="${title}"]`).click();
1548
+ }
1549
+ async assignTaskToMe(title) {
1550
+ await this.page.locator(`.task-line`).filter({
1551
+ hasText: title
1552
+ }).locator(`.assign-to-me`).click();
1553
+ await this.page.locator('.modal:visible >> text="Assign to me"').click();
1554
+ }
1555
+ async expectTaskAssignedToMe(title) {
1556
+ await this.expectTaskAssignedTo(title, "me");
1557
+ }
1558
+ async expectTaskAssignedTo(title, user) {
1559
+ await (0, $hOLA6$expect)(this.page.locator(`.task-line:has-text("${title}") >> text="${user}"`).first()).toHaveCount(1);
1560
+ }
1316
1561
  async expectTaskTitle(taskTitle) {
1317
1562
  (0, $hOLA6$expect)(await this.page.locator("#tasks0").innerText()).toContain(taskTitle);
1318
1563
  }
1564
+ async expectGroupView(expected = true) {
1565
+ if (expected) {
1566
+ await (0, $hOLA6$expect)(this.page.locator("#group-tasks-by-release")).toBeChecked();
1567
+ await (0, $hOLA6$expect)(this.page.locator("#task-list-grouped-view")).toBeVisible();
1568
+ await (0, $hOLA6$expect)(this.page.locator("#task-ungrouped-view")).not.toBeVisible();
1569
+ } else {
1570
+ await (0, $hOLA6$expect)(this.page.locator("#group-tasks-by-release")).not.toBeChecked();
1571
+ await (0, $hOLA6$expect)(this.page.locator("#task-list-grouped-view")).not.toBeVisible();
1572
+ await (0, $hOLA6$expect)(this.page.locator("#task-ungrouped-view")).toBeVisible();
1573
+ }
1574
+ }
1575
+ async changeGroupView() {
1576
+ await this.page.locator("#group-tasks-by-release").click();
1577
+ }
1319
1578
  }
1320
1579
 
1321
1580
 
@@ -1673,6 +1932,143 @@ class $171d52b372748c0b$export$7e1d435fa474ee21 extends (0, $9626bc9256ce31f7$ex
1673
1932
  }
1674
1933
 
1675
1934
 
1935
+
1936
+
1937
+ class $cc2d15e53de5cef7$export$b6fbc3e67030138f extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
1938
+ async setStatus(status) {
1939
+ await this.page.locator(".react-tagsinput").click({
1940
+ force: true
1941
+ });
1942
+ await this.page.getByText("Clear all").click();
1943
+ await this.page.locator(".react-tagsinput").click({
1944
+ force: true
1945
+ });
1946
+ if (status === "Select all") await this.page.getByText(status).click();
1947
+ else await this.page.getByTitle(status).locator("i").first().click();
1948
+ }
1949
+ async openReleaseGroup(title) {
1950
+ await this.page.locator("xlr-release-group-row").filter({
1951
+ hasText: title
1952
+ }).getByRole("link").click();
1953
+ await this.page.getByTitle(title).click();
1954
+ await (0, $hOLA6$expect)(this.page).toHaveURL(/.*ReleaseGroup/);
1955
+ }
1956
+ async expectReleaseGroupStatus(status) {
1957
+ await (0, $hOLA6$expect)(this.page.locator(".release-status")).toContainText(status);
1958
+ }
1959
+ async expectReleaseGroupDisplayed(title) {
1960
+ await (0, $hOLA6$expect)(this.page.getByText(title, {
1961
+ exact: true
1962
+ })).toBeVisible();
1963
+ }
1964
+ async expectReleaseGroupNotDisplayed(title) {
1965
+ await (0, $hOLA6$expect)(this.page.getByText(title, {
1966
+ exact: true
1967
+ })).not.toBeVisible();
1968
+ }
1969
+ async searchReleaseGroupByTitle(title) {
1970
+ await this.page.getByPlaceholder("Search for groups...", {
1971
+ exact: true
1972
+ }).click();
1973
+ await this.page.getByPlaceholder("Search for groups...", {
1974
+ exact: true
1975
+ }).fill(title);
1976
+ await this.page.getByPlaceholder("Search for groups...", {
1977
+ exact: true
1978
+ }).press("Enter");
1979
+ }
1980
+ async deleteReleaseGroup(title) {
1981
+ await this.page.locator(".fc-list-item-line").filter({
1982
+ hasText: title
1983
+ }).locator(".fc-item-delete").click();
1984
+ await this.page.getByRole("button", {
1985
+ name: "Delete"
1986
+ }).click();
1987
+ }
1988
+ async clickReleaseGroupEdit(title) {
1989
+ await this.page.locator(".fc-list-item-line").filter({
1990
+ hasText: title
1991
+ }).locator(".fc-item-update").click();
1992
+ }
1993
+ async enterReleaseGroupDetails(new_title) {
1994
+ await this.page.locator(".modal-body").locator("#title").fill(new_title);
1995
+ }
1996
+ async clickSaveButton() {
1997
+ await this.page.locator(".modal-footer").getByRole("button", {
1998
+ name: "Save"
1999
+ }).click();
2000
+ }
2001
+ async clickCancelButton() {
2002
+ await this.page.locator(".modal-footer").getByRole("button", {
2003
+ name: "Cancel"
2004
+ }).click();
2005
+ }
2006
+ }
2007
+
2008
+
2009
+
2010
+
2011
+ class $cc231ea61b77c7a2$export$1a0994e9c202d529 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
2012
+ async expectReleaseDisplayed(title) {
2013
+ await (0, $hOLA6$expect)(this.page.getByText(title, {
2014
+ exact: true
2015
+ })).toBeVisible();
2016
+ }
2017
+ async expectReleaseNotDisplayed(title) {
2018
+ await (0, $hOLA6$expect)(this.page.getByText(title, {
2019
+ exact: true
2020
+ })).not.toBeVisible({
2021
+ timeout: 10000
2022
+ });
2023
+ }
2024
+ async expectPhaseDisplayed(title) {
2025
+ await (0, $hOLA6$expect)(this.page.getByText(title, {
2026
+ exact: true
2027
+ })).toBeVisible();
2028
+ }
2029
+ async openContextMenu(title) {
2030
+ await this.page.locator(".timeline-row-name").filter({
2031
+ hasText: title
2032
+ }).locator(".options-icon").click();
2033
+ }
2034
+ async removeFromReleaseGroup() {
2035
+ await this.page.getByRole("menuitem", {
2036
+ name: "Remove from group"
2037
+ }).locator("a").click();
2038
+ await this.page.getByRole("button", {
2039
+ name: "Remove"
2040
+ }).click();
2041
+ }
2042
+ async expectNumberOfReleases(num_of_release) {
2043
+ const elementCount = await this.page.locator(".timeline-row-name-release").count();
2044
+ (0, $hOLA6$expect)(elementCount).toBe(num_of_release);
2045
+ }
2046
+ async openAddReleaseList() {
2047
+ await this.page.getByRole("button", {
2048
+ name: "Add release"
2049
+ }).click();
2050
+ }
2051
+ async filterReleases(title) {
2052
+ await this.page.getByPlaceholder("Search for a release...").click();
2053
+ await this.page.getByPlaceholder("Search for a release...").fill(title);
2054
+ await this.page.waitForTimeout(5000);
2055
+ await this.page.getByPlaceholder("Search for a release...").press("Enter");
2056
+ }
2057
+ async expectNumberOfReleasesOnModal(num_of_release) {
2058
+ const elementCount = await this.page.locator(".release-modal-line").count();
2059
+ (0, $hOLA6$expect)(elementCount).toBe(num_of_release);
2060
+ }
2061
+ async selectAllReleaseCheckbox() {
2062
+ await this.page.getByLabel("Select all").check();
2063
+ }
2064
+ async addReleasesToGroup() {
2065
+ await this.page.getByRole("button", {
2066
+ name: "Add"
2067
+ }).click();
2068
+ }
2069
+ }
2070
+
2071
+
1676
2072
  class $e72552cbf941ecfa$export$b8a61e5c71402559 {
1677
2073
  constructor(page){
1678
2074
  this.page = page;
@@ -1686,6 +2082,8 @@ class $e72552cbf941ecfa$export$b8a61e5c71402559 {
1686
2082
  this.taskDetailsPage = new (0, $9ca6e63d357957dd$export$922081b54f2ab994)(page);
1687
2083
  this.releaseCalendarPage = new (0, $3a340a3f4fd8f04d$export$43682cddead1dd78)(page);
1688
2084
  this.releaseListPage = new (0, $5359280e98d97ff9$export$a678525e79c4ccc4)(page);
2085
+ this.releaseGroupPage = new (0, $cc2d15e53de5cef7$export$b6fbc3e67030138f)(page);
2086
+ this.releaseGroupTimelinePage = new (0, $cc231ea61b77c7a2$export$1a0994e9c202d529)(page);
1689
2087
  this.util = new (0, $aa992f812fb1e470$export$6adb8dd3f0d1e432)(page);
1690
2088
  }
1691
2089
  async openTemplate(id) {
@@ -1819,6 +2217,7 @@ class $4444bee76761dfb1$export$f14c0e3f98d164c0 extends (0, $9626bc9256ce31f7$ex
1819
2217
  timeout: 10000
1820
2218
  });
1821
2219
  await this.page.waitForTimeout(1000);
2220
+ await this.closePendoModalWindow();
1822
2221
  }
1823
2222
  /**
1824
2223
  * Logout as authenticated user
@@ -1841,6 +2240,10 @@ class $4444bee76761dfb1$export$f14c0e3f98d164c0 extends (0, $9626bc9256ce31f7$ex
1841
2240
  const val = await this.page.locator("top-toolbar .avatar-wrapper span.dot-tooltip").getAttribute("aria-label");
1842
2241
  (0, $hOLA6$expect)(val).toContain(username);
1843
2242
  }
2243
+ async closePendoModalWindow() {
2244
+ await this.page.waitForTimeout(1000);
2245
+ if (await this.page.locator("._pendo-close-guide").count() > 0) await this.page.locator("._pendo-close-guide").click();
2246
+ }
1844
2247
  }
1845
2248
 
1846
2249
 
@@ -2060,6 +2463,15 @@ class $80c3ae34677b4324$var$Fixtures {
2060
2463
  this.triggerIds.push(trigger.id);
2061
2464
  return this.doPost("fixtures/trigger", trigger);
2062
2465
  }
2466
+ roles(rolePrincipals) {
2467
+ return this.doPost("fixtures/roles/principals", rolePrincipals);
2468
+ }
2469
+ permissions(rolePermissions) {
2470
+ return this.doPost("fixtures/roles/permissions/global", rolePermissions);
2471
+ }
2472
+ deleteRole(roleName) {
2473
+ return this.doDelete(`fixtures/role/${roleName}`);
2474
+ }
2063
2475
  deleteArchivedRelease(id) {
2064
2476
  const releaseId = id.includes("Applications/") ? id : `Applications/${id}`;
2065
2477
  return this.doDelete("fixtures/cis", [
@@ -2088,8 +2500,7 @@ class $80c3ae34677b4324$var$Fixtures {
2088
2500
  ]);
2089
2501
  }
2090
2502
  deleteFolder(folderId) {
2091
- const id = this.doGet(`api/v1/folders/${folderId}`);
2092
- return this.doDelete(`api/v1/folders/${id}`);
2503
+ return this.doDelete(`api/v1/folders/${folderId}`);
2093
2504
  }
2094
2505
  activityLogs(id, logs) {
2095
2506
  return this.doPost(`fixtures/activityLogs/${id}`, logs);
@@ -2240,6 +2651,9 @@ class $80c3ae34677b4324$var$Fixtures {
2240
2651
  }
2241
2652
  ]);
2242
2653
  }
2654
+ async createReleaseGroup(releaseGroup) {
2655
+ return this.doPost("fixtures/release-groups", releaseGroup);
2656
+ }
2243
2657
  doPost(url, body) {
2244
2658
  return this.request.post(url, {
2245
2659
  data: body,