@digital-ai/devops-page-object-release 0.0.17 → 0.0.19

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
@@ -93,6 +93,18 @@ class $5359280e98d97ff9$export$a678525e79c4ccc4 extends (0, $9626bc9256ce31f7$ex
93
93
  await this.releaseCreatePage.create();
94
94
  await (0, $hOLA6$expect)(this.page.getByLabel("breadcrumb").getByText("Flow")).toBeVisible();
95
95
  }
96
+ async gotoListView() {
97
+ await this.page.getByRole("tab", {
98
+ name: "release icon List"
99
+ }).click();
100
+ await (0, $hOLA6$expect)(this.page.locator(".release-list")).toBeVisible();
101
+ }
102
+ async gotoCalendarView() {
103
+ await this.page.getByRole("tab", {
104
+ name: "calendar icon Calendar"
105
+ }).click();
106
+ await (0, $hOLA6$expect)(this.page.locator(".tl-viewport")).toBeVisible();
107
+ }
96
108
  }
97
109
 
98
110
 
@@ -394,18 +406,12 @@ class $90bb70a7e909e500$export$519356f6c50361f7 extends (0, $9626bc9256ce31f7$ex
394
406
  }
395
407
  async expectDependencyText(dependencies) {
396
408
  await (0, $hOLA6$expect)(this.railLocator.locator(".gate-task-dependencies")).toBeVisible();
397
- await (0, $hOLA6$expect)(this.page.getByRole("link", {
398
- name: dependencies,
399
- exact: true
400
- }).first()).toBeVisible();
409
+ await (0, $hOLA6$expect)(this.page.locator(`.gate-task-dependencies`).getByLabel(dependencies).first()).toBeVisible();
401
410
  }
402
411
  async clickEditDependency(dependencies) {
403
412
  const depOptionsIcon = this.page.locator(".dependency").filter({
404
- has: this.page.getByRole("link", {
405
- name: dependencies,
406
- exact: true
407
- })
408
- }).locator(".icon-options");
413
+ has: this.page.getByLabel(dependencies)
414
+ }).first().locator(".actions");
409
415
  await depOptionsIcon.isVisible();
410
416
  await depOptionsIcon.click();
411
417
  const frame = this.page.getByTestId("undefined-menu");
@@ -460,12 +466,18 @@ class $90bb70a7e909e500$export$fbbf45eff21470e3 extends (0, $9626bc9256ce31f7$ex
460
466
  async setPhase(phaseTitle) {
461
467
  await this.phase.click();
462
468
  await this.phase.fill("");
463
- await this.page.getByRole("option", {
469
+ const count = await this.page.getByRole("option", {
464
470
  name: phaseTitle
465
- }).waitFor();
466
- await this.page.getByRole("option", {
471
+ }).count();
472
+ if (count > 0) await this.page.getByRole("option", {
467
473
  name: phaseTitle
468
474
  }).click();
475
+ else {
476
+ await this.page.locator(".phase-dependency").getByLabel("Open").click();
477
+ await this.page.getByRole("option", {
478
+ name: phaseTitle
479
+ }).click();
480
+ }
469
481
  }
470
482
  async setTask(taskTitle) {
471
483
  await this.task.click();
@@ -593,6 +605,9 @@ class $8e39246218b802fc$export$e946776eae644790 extends (0, $9626bc9256ce31f7$ex
593
605
  name: "arrow-down icon",
594
606
  exact: true
595
607
  });
608
+ this.completeButton = this.page.getByRole("button", {
609
+ name: "Complete"
610
+ });
596
611
  }
597
612
  async openOverviewRail() {
598
613
  await this.openRail("Overview");
@@ -639,6 +654,11 @@ class $8e39246218b802fc$export$e946776eae644790 extends (0, $9626bc9256ce31f7$ex
639
654
  await this.commentBox.fill(comment);
640
655
  await this.confirm.click();
641
656
  }
657
+ async completeTask(comment) {
658
+ await this.completeButton.click();
659
+ await this.commentBox.fill(comment);
660
+ await this.confirm.click();
661
+ }
642
662
  async expectTaskTitle(taskTitle) {
643
663
  (0, $hOLA6$expect)(await this.page.locator(".task-drawer .task-title-input .dot-view-mode-typography").innerText()).toContain(taskTitle);
644
664
  }
@@ -666,6 +686,42 @@ class $8e39246218b802fc$export$e946776eae644790 extends (0, $9626bc9256ce31f7$ex
666
686
  name: username
667
687
  })).toBeVisible();
668
688
  }
689
+ async expectStartNowButtonToBeVisible() {
690
+ await (0, $hOLA6$expect)(this.page.getByTestId("single-action-button")).toBeVisible();
691
+ }
692
+ async startNow(comment) {
693
+ await this.page.getByTestId("single-action-button").click();
694
+ await this.page.getByTestId("task-action-comment").fill(comment);
695
+ await this.page.getByTestId("dot-button").click();
696
+ await (0, $hOLA6$expect)(this.page.getByTestId("single-action-button")).not.toBeVisible();
697
+ }
698
+ async expectCommentsToContain(text) {
699
+ await (0, $hOLA6$expect)(this.page.locator(".task-comment-body .markdown-wrapper p")).toContainText(text);
700
+ }
701
+ async switchWaitForScheduledDate() {
702
+ await this.page.locator(".wait-for-start input").click();
703
+ }
704
+ async expectWaitForScheduledDateToBeChecked() {
705
+ await (0, $hOLA6$expect)(this.page.locator(".wait-for-start input")).toBeChecked();
706
+ }
707
+ async expectWaitForScheduledDateToBeUnchecked() {
708
+ await (0, $hOLA6$expect)(this.page.locator(".wait-for-start input")).not.toBeChecked();
709
+ }
710
+ // Other locators are flaky and it can be replaced if we get locator change in the frontend
711
+ async clickOnStartDate() {
712
+ await this.page.getByTestId("month-and-year").first().click();
713
+ }
714
+ async removeStartDate() {
715
+ await this.page.getByRole("button", {
716
+ name: "Set by user"
717
+ }).locator(".MuiChip-deleteIcon").click();
718
+ }
719
+ async setStartDate(date) {
720
+ await this.clickOnStartDate();
721
+ await this.page.locator(".MuiPickersDay-root", {
722
+ hasText: date
723
+ }).click();
724
+ }
669
725
  async assignToMe(userName, existingUsername) {
670
726
  await this.page.getByRole("button", {
671
727
  name: existingUsername
@@ -921,6 +977,49 @@ class $71075ce65fcede1d$export$9b575f14aa5e09a1 extends (0, $9626bc9256ce31f7$ex
921
977
  const value = await input.inputValue();
922
978
  (0, $hOLA6$expect)(value).toBe(formattedDate);
923
979
  }
980
+ /**
981
+ *
982
+ * @returns Getting current month and year in the format "MonthName YYYY"
983
+ */ async getCurrentMonthYear() {
984
+ const monthNames = [
985
+ "January",
986
+ "February",
987
+ "March",
988
+ "April",
989
+ "May",
990
+ "June",
991
+ "July",
992
+ "August",
993
+ "September",
994
+ "October",
995
+ "November",
996
+ "December"
997
+ ];
998
+ const d = new Date();
999
+ const month = monthNames[d.getMonth()];
1000
+ const year = d.getFullYear();
1001
+ return `${month} ${year}`;
1002
+ }
1003
+ /**
1004
+ *
1005
+ * @returns Getting current date in the format "dd MonthName YYYY"
1006
+ */ async getCurrentDate() {
1007
+ const d = new Date();
1008
+ const date = d.getDate();
1009
+ const monthYear = await this.getCurrentMonthYear();
1010
+ return `${date} ${monthYear}`;
1011
+ }
1012
+ /**
1013
+ *
1014
+ * @param days Number of days to add to current date within the current month
1015
+ * @returns
1016
+ */ async getFutureDate(days) {
1017
+ const d = new Date();
1018
+ d.setDate(d.getDate() + days);
1019
+ const date = d.getDate();
1020
+ const monthYear = await this.getCurrentMonthYear();
1021
+ return `${date} ${monthYear}`;
1022
+ }
924
1023
  }
925
1024
 
926
1025
 
@@ -953,11 +1052,56 @@ class $87bbb6d35ad31a00$export$f8f26dd395d7e1bd extends (0, $9626bc9256ce31f7$ex
953
1052
  async openSideNavMenu(menuItem) {
954
1053
  await this.page.locator(`navigation-sidebar ul li`).getByText(menuItem, {
955
1054
  exact: true
1055
+ }).scrollIntoViewIfNeeded();
1056
+ await this.page.locator(`navigation-sidebar ul li`).getByText(menuItem, {
1057
+ exact: true
1058
+ }).click();
1059
+ }
1060
+ async openNestedMenuItem(nestedMenuItem) {
1061
+ await this.page.locator(".MuiList-root li").getByText(nestedMenuItem, {
1062
+ exact: true
1063
+ }).scrollIntoViewIfNeeded();
1064
+ await this.page.locator(".MuiList-root li").getByText(nestedMenuItem, {
1065
+ exact: true
956
1066
  }).click();
957
1067
  }
958
1068
  async clickCloseIcon() {
959
1069
  await this.closeIcon.click();
960
1070
  }
1071
+ async clickOnStatusField() {
1072
+ await this.page.locator(".ci-filter-status.ng-isolate-scope").click();
1073
+ }
1074
+ async clickOnStatus(statusNames) {
1075
+ await this.clickOnStatusClearAll();
1076
+ await this.clickOnStatusField();
1077
+ for(let i = 0; i < statusNames.length; i++)await this.page.locator(`i.xl-icon.icon-s.checkbox[data='${statusNames[i]}']`).click();
1078
+ // Clicking outside to close the grid dropdown
1079
+ await this.page.getByText("Status").click();
1080
+ }
1081
+ async clickOnStatusClearAll() {
1082
+ await this.clickOnStatusField();
1083
+ await this.page.locator("a.xl-react-link", {
1084
+ hasText: "Clear all"
1085
+ }).click();
1086
+ await this.page.getByText("Status").click();
1087
+ }
1088
+ async clickOnStatusSelectAll() {
1089
+ await this.clickOnStatusField();
1090
+ await this.page.locator("a.xl-react-link", {
1091
+ hasText: "Select all"
1092
+ }).click();
1093
+ await this.page.getByText("Status").click();
1094
+ }
1095
+ async setOrderBy(orderBy) {
1096
+ await this.page.locator(".order-by-filter .btn:first-child").click();
1097
+ await this.page.locator(`.order-by-filter .bootstrap-link:has-text('${orderBy}')`).click();
1098
+ }
1099
+ async setSearchFilter(filterText) {
1100
+ await this.page.locator(".searchFilter").fill(filterText);
1101
+ }
1102
+ async clearSearchFilter() {
1103
+ await this.page.locator(".searchFilter").clear();
1104
+ }
961
1105
  }
962
1106
 
963
1107
 
@@ -1012,6 +1156,13 @@ class $43cbcdfccb6c2a76$export$f43492e8ac3c566 extends (0, $9626bc9256ce31f7$exp
1012
1156
  timeout: 10000
1013
1157
  });
1014
1158
  }
1159
+ async waitForTaskCompletedInAdvance(taskTitle) {
1160
+ await (0, $hOLA6$expect)(this.page.locator(".task.completed_in_advance").getByText(taskTitle, {
1161
+ exact: true
1162
+ })).toBeVisible({
1163
+ timeout: 10000
1164
+ });
1165
+ }
1015
1166
  async waitForTaskInProgress(taskTitle) {
1016
1167
  await (0, $hOLA6$expect)(this.page.locator(".task.in_progress").getByText(taskTitle, {
1017
1168
  exact: true
@@ -1062,6 +1213,21 @@ class $43cbcdfccb6c2a76$export$f43492e8ac3c566 extends (0, $9626bc9256ce31f7$exp
1062
1213
  async waitForTaskPlanned(title) {
1063
1214
  await (0, $hOLA6$expect)(this.page.locator(`.task:has-text('${title}').planned`)).toBeVisible();
1064
1215
  }
1216
+ async expectTaskCompletedInAdvance(taskTitle) {
1217
+ await (0, $hOLA6$expect)(this.page.locator("#release-content .completed_in_advance .task-title").filter({
1218
+ hasText: taskTitle
1219
+ })).toBeVisible();
1220
+ }
1221
+ async expectTaskPending(taskTitle) {
1222
+ await (0, $hOLA6$expect)(this.page.locator(".task.pending").getByText(taskTitle, {
1223
+ exact: true
1224
+ })).toBeVisible();
1225
+ }
1226
+ async expectCurrentTaskToContain(taskTitle) {
1227
+ await (0, $hOLA6$expect)(this.page.locator(".task.active .task-title").getByText(taskTitle, {
1228
+ exact: true
1229
+ })).toBeVisible();
1230
+ }
1065
1231
  async openManualTaskDetails(title) {
1066
1232
  await this.page.locator(`text=${title}`).click({
1067
1233
  force: true
@@ -1239,6 +1405,7 @@ class $43cbcdfccb6c2a76$var$Phase extends (0, $9626bc9256ce31f7$export$2b65d1d97
1239
1405
  });
1240
1406
  this.commentBox = this.page.locator(`.input-block-level`);
1241
1407
  this.confirm = this.page.getByTestId("dot-button");
1408
+ this.contextMenuButton = this.page.locator("#context-menu-container li");
1242
1409
  this.dateUtil = new (0, $71075ce65fcede1d$export$9b575f14aa5e09a1)(page);
1243
1410
  }
1244
1411
  async setTitle(title) {
@@ -1247,18 +1414,55 @@ class $43cbcdfccb6c2a76$var$Phase extends (0, $9626bc9256ce31f7$export$2b65d1d97
1247
1414
  await this.phaseLocator.locator(".phase-header input").fill(title);
1248
1415
  await this.phaseLocator.locator(".phase-header input").blur();
1249
1416
  }
1417
+ async isMenuItemEnabled(menuName, taskTitle) {
1418
+ await this.openContextMenuForTask(taskTitle);
1419
+ await (0, $hOLA6$expect)(this.contextMenuButton.filter({
1420
+ hasText: menuName
1421
+ })).not.toHaveClass(/disabled/);
1422
+ await (0, $hOLA6$expect)(this.contextMenuButton.filter({
1423
+ hasText: menuName
1424
+ }).locator("a")).not.toBeDisabled();
1425
+ await this.closeContextMenu();
1426
+ }
1427
+ async isMenuItemDisabled(menuName, taskTitle) {
1428
+ await this.openContextMenuForTask(taskTitle);
1429
+ await (0, $hOLA6$expect)(this.contextMenuButton.filter({
1430
+ hasText: menuName
1431
+ })).toHaveClass(/disabled/);
1432
+ await (0, $hOLA6$expect)(this.contextMenuButton.filter({
1433
+ hasText: menuName
1434
+ }).locator("a")).toBeDisabled();
1435
+ await this.closeContextMenu();
1436
+ }
1437
+ async expectMenuItemIsNotVisible(menuName, taskTitle) {
1438
+ await this.openContextMenuForTask(taskTitle);
1439
+ await (0, $hOLA6$expect)(this.page.locator("#context-menu-container li").filter({
1440
+ hasText: menuName
1441
+ })).not.toBeVisible();
1442
+ await this.closeContextMenu();
1443
+ }
1444
+ async expectMenuItemIsVisible(menuName, taskTitle) {
1445
+ await this.openContextMenuForTask(taskTitle);
1446
+ await (0, $hOLA6$expect)(this.page.locator("#context-menu-container li").filter({
1447
+ hasText: menuName
1448
+ })).toBeVisible();
1449
+ await this.closeContextMenu();
1450
+ }
1451
+ async closeContextMenu() {
1452
+ await this.page.locator("#release-header").click();
1453
+ }
1250
1454
  async expectTaskBorderWithColor(taskName, color) {
1251
1455
  await (0, $hOLA6$expect)(this.page.locator(`.task-box:has-text('${taskName}')`)).toHaveCSS("border-top-color", color);
1252
1456
  }
1253
1457
  async addTaskInPhase(taskTitle, taskGroup, taskType) {
1254
1458
  await this.phaseLocator.getByText("Add task").click();
1255
- await this.phaseLocator.getByLabel("Open", {
1256
- exact: true
1257
- }).click();
1258
- await this.phaseLocator.getByPlaceholder("Start typing to filter task").fill(taskGroup);
1459
+ await this.page.locator("#task-selector").hover();
1460
+ await this.page.locator('button[aria-label="Clear"]').click();
1461
+ await this.page.locator("#task-selector").fill(taskGroup);
1259
1462
  await this.page.getByTestId(taskType).click();
1260
- await this.phaseLocator.locator("#task-title").fill(taskTitle);
1261
- await this.phaseLocator.getByTestId("save-select-task-btn").click();
1463
+ await this.page.locator(".icon-close").click();
1464
+ await this.page.locator("#task-title").fill(taskTitle);
1465
+ await this.page.getByTestId("save-select-task-btn").click();
1262
1466
  await (0, $hOLA6$expect)(this.phaseLocator.getByText(taskTitle)).toBeVisible();
1263
1467
  }
1264
1468
  async getNumberOfTasks() {
@@ -1270,11 +1474,6 @@ class $43cbcdfccb6c2a76$var$Phase extends (0, $9626bc9256ce31f7$export$2b65d1d97
1270
1474
  async expectToHaveTitle(phaseTitle) {
1271
1475
  await (0, $hOLA6$expect)(this.phaseLocator.locator(".phase-title")).toContainText(phaseTitle);
1272
1476
  }
1273
- async expectTemplateLabelNotToBePresent() {
1274
- await (0, $hOLA6$expect)(this.page.locator(".dot-chip").filter({
1275
- hasText: "TEMPLATE"
1276
- })).not.toBeVisible();
1277
- }
1278
1477
  async openContextMenuForTask(taskTitle) {
1279
1478
  await this.phaseLocator.locator(".task").filter({
1280
1479
  hasText: taskTitle
@@ -1289,6 +1488,11 @@ class $43cbcdfccb6c2a76$var$Phase extends (0, $9626bc9256ce31f7$export$2b65d1d97
1289
1488
  exact: true
1290
1489
  }).click();
1291
1490
  }
1491
+ async expectTemplateLabelNotToBePresent() {
1492
+ await (0, $hOLA6$expect)(this.page.locator(".dot-chip").filter({
1493
+ hasText: "TEMPLATE"
1494
+ })).not.toBeVisible();
1495
+ }
1292
1496
  async openPhaseDetails() {
1293
1497
  await this.phaseLocator.locator(".phase-details").click();
1294
1498
  }
@@ -1414,6 +1618,204 @@ class $b14c3492cf934ea2$export$e40b5d3c74b04c89 {
1414
1618
 
1415
1619
 
1416
1620
 
1621
+ class $4cdce1306be47ecd$export$eace2be4de1d3377 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
1622
+ constructor(page){
1623
+ super(page);
1624
+ this.util = new (0, $87bbb6d35ad31a00$export$f8f26dd395d7e1bd)(page);
1625
+ this.addName = page.locator('.xl-react-components input[placeholder="Add..."]');
1626
+ this.addDescription = page.getByPlaceholder("Set description...");
1627
+ this.searchForDelivery = page.getByPlaceholder("Search for deliveries...", {
1628
+ exact: true
1629
+ });
1630
+ }
1631
+ async filterDeliveryByName(deliveryName) {
1632
+ await this.searchForDelivery.click();
1633
+ await this.searchForDelivery.clear();
1634
+ await this.searchForDelivery.fill(deliveryName);
1635
+ await this.searchForDelivery.press("Enter");
1636
+ await (0, $hOLA6$expect)(this.page.locator("xlr-delivery-row").filter({
1637
+ hasText: deliveryName
1638
+ }).getByRole("link").first()).toBeVisible();
1639
+ }
1640
+ async editDelivery(deliveryName, newDeliveryName) {
1641
+ await this.page.locator("xlr-delivery-row").filter({
1642
+ hasText: deliveryName
1643
+ }).locator(".fc-list-item-actions .edit-icon").click();
1644
+ await this.util.openSideNavMenu("Properties");
1645
+ await this.addName.click();
1646
+ await this.addName.clear();
1647
+ await this.addName.fill(newDeliveryName);
1648
+ await this.page.getByRole("button", {
1649
+ name: "Save"
1650
+ }).click();
1651
+ (0, $hOLA6$expect)(await this.page.locator(".saved-text").textContent()).toContain("Last saved on ");
1652
+ }
1653
+ async deleteDelivery(deliveryName) {
1654
+ await this.page.locator("xlr-delivery-row").filter({
1655
+ hasText: deliveryName
1656
+ }).locator(".fc-list-item-actions .delete-icon").click();
1657
+ await (0, $hOLA6$expect)(this.page.getByText("Delete release delivery", {
1658
+ exact: true
1659
+ })).toBeVisible();
1660
+ await this.page.getByRole("button", {
1661
+ name: "Delete"
1662
+ }).click();
1663
+ await (0, $hOLA6$expect)(this.page.locator(".success").filter({
1664
+ hasText: "Deleted release delivery successfully"
1665
+ })).toBeVisible();
1666
+ }
1667
+ }
1668
+
1669
+
1670
+
1671
+
1672
+
1673
+
1674
+ class $27cd192f30944b0c$export$572f40d328c1d028 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
1675
+ constructor(page){
1676
+ super(page);
1677
+ this.dateUtil = new (0, $71075ce65fcede1d$export$9b575f14aa5e09a1)(page);
1678
+ this.util = new (0, $87bbb6d35ad31a00$export$f8f26dd395d7e1bd)(page);
1679
+ this.newReleaseGroupButton = page.getByTestId("dot-button");
1680
+ this.dateMonth = new Date();
1681
+ }
1682
+ async createGroup(groupName, startDate, endDate) {
1683
+ await this.newReleaseGroupButton.click();
1684
+ await (0, $hOLA6$expect)(this.page.getByText("Create new release group")).toBeVisible();
1685
+ await this.enterGroupName(groupName);
1686
+ const monthYear = await this.dateUtil.getCurrentMonthYear();
1687
+ if (startDate) await this.enterStartDate(startDate, monthYear);
1688
+ if (endDate) await this.enterEndDate(endDate, monthYear);
1689
+ await this.clickCreate();
1690
+ await this.expectSuccessMessageOnReleaseGroupCreation();
1691
+ }
1692
+ async addReleaseToGroup(releaseName) {
1693
+ await (0, $hOLA6$expect)(this.page.locator(".action-toolbar-actions button").filter({
1694
+ hasText: "Add release"
1695
+ })).toBeEnabled();
1696
+ await this.page.locator(".action-toolbar-actions button").filter({
1697
+ hasText: "Add release"
1698
+ }).click({
1699
+ force: true
1700
+ });
1701
+ await this.page.getByPlaceholder("Search for a release...").click();
1702
+ await this.page.getByPlaceholder("Search for a release...").fill(releaseName);
1703
+ await this.page.keyboard.press("Enter");
1704
+ await this.page.locator("release-list-modal-release-row").filter({
1705
+ hasText: releaseName
1706
+ }).getByRole("checkbox").check();
1707
+ await this.page.getByRole("button", {
1708
+ name: "Add"
1709
+ }).click();
1710
+ await this.expectSuccessMessageOnAddingReleaseToGroup();
1711
+ await (0, $hOLA6$expect)(this.page.getByRole("link", {
1712
+ name: releaseName
1713
+ })).toBeVisible();
1714
+ }
1715
+ async editReleaseGroupName(newGroupName) {
1716
+ await this.page.locator("#title").click();
1717
+ await this.page.locator("#title").clear();
1718
+ await this.page.locator("#title").fill(newGroupName);
1719
+ }
1720
+ async enterGroupName(groupName) {
1721
+ await this.page.locator("#title").click();
1722
+ await this.page.locator("#title").fill(groupName);
1723
+ }
1724
+ async enterStartDate(date, monthYear) {
1725
+ await this.page.locator(".form-group").filter({
1726
+ hasText: "start date"
1727
+ }).locator(".date input").click();
1728
+ await this.dateUtil.setDate(date, monthYear);
1729
+ }
1730
+ async enterEndDate(date, monthYear) {
1731
+ await this.page.locator(".form-group").filter({
1732
+ hasText: "end date"
1733
+ }).locator(".date input").click();
1734
+ await this.dateUtil.setDate(date, monthYear);
1735
+ }
1736
+ async clickCreate() {
1737
+ await this.page.getByRole("button", {
1738
+ name: "Create"
1739
+ }).click();
1740
+ }
1741
+ async expectSuccessMessageOnReleaseGroupCreation() {
1742
+ await (0, $hOLA6$expect)(this.page.getByLabel("success")).toBeVisible();
1743
+ await (0, $hOLA6$expect)(this.page.locator(".success").filter({
1744
+ hasText: "Created release group successfully"
1745
+ })).toBeVisible();
1746
+ }
1747
+ async expectSuccessMessageOnAddingReleaseToGroup() {
1748
+ await (0, $hOLA6$expect)(this.page.getByLabel("success")).toBeVisible();
1749
+ await (0, $hOLA6$expect)(this.page.locator(".success").filter({
1750
+ hasText: "Added release to release group successfully"
1751
+ })).toBeVisible();
1752
+ }
1753
+ async expectSuccessMessageOnUpdatingGroup() {
1754
+ await (0, $hOLA6$expect)(this.page.getByLabel("success")).toBeVisible();
1755
+ await (0, $hOLA6$expect)(this.page.locator(".success").filter({
1756
+ hasText: "Updated release group successfully"
1757
+ })).toBeVisible();
1758
+ }
1759
+ async searchReleaseGroupByTitle(title) {
1760
+ await this.page.getByPlaceholder("Search for groups...", {
1761
+ exact: true
1762
+ }).click();
1763
+ await this.page.getByPlaceholder("Search for groups...", {
1764
+ exact: true
1765
+ }).fill(title);
1766
+ await this.page.getByPlaceholder("Search for groups...", {
1767
+ exact: true
1768
+ }).press("Enter");
1769
+ await (0, $hOLA6$expect)(this.page.locator(".fc-list-item-title")).toContainText(title);
1770
+ }
1771
+ async deleteReleaseGroup(title) {
1772
+ await this.page.locator(".fc-list-item-line").filter({
1773
+ hasText: title
1774
+ }).locator(".fc-item-delete").click();
1775
+ await this.page.getByRole("button", {
1776
+ name: "Delete"
1777
+ }).click();
1778
+ }
1779
+ async clickReleaseGroupEdit(title) {
1780
+ await this.page.locator(".fc-list-item-line").filter({
1781
+ hasText: title
1782
+ }).locator(".fc-item-update").click();
1783
+ }
1784
+ async clickSave() {
1785
+ await this.page.getByRole("button", {
1786
+ name: "Save"
1787
+ }).click();
1788
+ }
1789
+ async clickCancel() {
1790
+ await this.page.getByRole("button", {
1791
+ name: "Cancel"
1792
+ }).click();
1793
+ }
1794
+ async clickOnStatusField() {
1795
+ await this.page.locator(".ci-filter-status.ng-isolate-scope").click();
1796
+ }
1797
+ async statusFilter(statusNames) {
1798
+ await this.clickOnStatusClearAll();
1799
+ await this.clickOnStatusField();
1800
+ for(let i = 0; i < statusNames.length; i++)await this.page.locator(`i.xl-icon.icon-s.checkbox[data='${statusNames[i]}']`).click();
1801
+ }
1802
+ async clickOnStatusClearAll() {
1803
+ await this.clickOnStatusField();
1804
+ await this.page.locator("a.xl-react-link", {
1805
+ hasText: "Clear all"
1806
+ }).click();
1807
+ }
1808
+ async clickOnStatusSelectAll() {
1809
+ await this.clickOnStatusField();
1810
+ await this.page.locator("a.xl-react-link", {
1811
+ hasText: "Select all"
1812
+ }).click();
1813
+ }
1814
+ }
1815
+
1816
+
1817
+
1818
+
1417
1819
 
1418
1820
  class $d13e78163af94d50$export$9b9454a7f137e99b extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
1419
1821
  constructor(page){
@@ -1459,12 +1861,14 @@ class $d13e78163af94d50$export$9b9454a7f137e99b extends (0, $9626bc9256ce31f7$ex
1459
1861
  await this.clickNewDeliveryPattern();
1460
1862
  await this.setPatternName(patternName);
1461
1863
  await this.setPatternDescription(patternDescription);
1462
- await (0, $hOLA6$expect)(this.page.locator("#action-toolbar").filter({
1864
+ await (0, $hOLA6$expect)(this.page.locator(".action-toolbar-actions button").filter({
1463
1865
  hasText: "Create"
1464
1866
  })).toBeEnabled();
1465
- await this.page.locator("#action-toolbar").filter({
1867
+ await this.page.locator(".action-toolbar-actions button").filter({
1466
1868
  hasText: "Create"
1467
- }).dblclick();
1869
+ }).click({
1870
+ force: true
1871
+ });
1468
1872
  await (0, $hOLA6$expect)(this.page.getByLabel("breadcrumb").getByText("Delivery flow")).toBeVisible();
1469
1873
  }
1470
1874
  async clickEditPatternIcon(patternName) {
@@ -1497,8 +1901,7 @@ class $d13e78163af94d50$export$9b9454a7f137e99b extends (0, $9626bc9256ce31f7$ex
1497
1901
  }
1498
1902
  async copyPattern(existingPatternName, NewPatternName) {
1499
1903
  await this.clickCopyPatternIcon(existingPatternName);
1500
- await this.page.locator('.confirmation-content .xl-react-component-input-wrapper input[placeholder="Add..."]').click();
1501
- await this.page.locator(".confirmation-content .close-icon").click();
1904
+ await this.page.locator(".xl-icon.close-icon").first().click();
1502
1905
  await this.addName.fill(NewPatternName);
1503
1906
  await this.page.getByRole("button", {
1504
1907
  name: "Continue"
@@ -1519,6 +1922,25 @@ class $d13e78163af94d50$export$9b9454a7f137e99b extends (0, $9626bc9256ce31f7$ex
1519
1922
  hasText: patternName
1520
1923
  })).not.toBeVisible();
1521
1924
  }
1925
+ async createNewDelivery(deliveryName, deliveryDes, setAutoComplete) {
1926
+ await this.page.getByTestId("dot-button").click();
1927
+ await this.addName.fill(deliveryName);
1928
+ await this.addDescription.click();
1929
+ if (deliveryDes) await this.addDescription.fill(deliveryDes);
1930
+ else await this.addDescription.fill("Description");
1931
+ if (setAutoComplete) await this.page.getByRole("checkbox").check();
1932
+ await (0, $hOLA6$expect)(this.page.locator(".action-toolbar-actions button").filter({
1933
+ hasText: "Create"
1934
+ })).toBeEnabled();
1935
+ await this.page.locator(".action-toolbar-actions button").filter({
1936
+ hasText: "Create"
1937
+ }).click({
1938
+ force: true
1939
+ });
1940
+ await (0, $hOLA6$expect)(this.page.locator(".MuiBreadcrumbs-li").getByRole("link", {
1941
+ name: `${deliveryName}`
1942
+ })).toBeVisible();
1943
+ }
1522
1944
  }
1523
1945
  class $d13e78163af94d50$var$Properties extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
1524
1946
  constructor(page){
@@ -1556,14 +1978,18 @@ class $d13e78163af94d50$var$Properties extends (0, $9626bc9256ce31f7$export$2b65
1556
1978
  }
1557
1979
 
1558
1980
 
1981
+
1982
+
1559
1983
  class $50c91328c9110668$export$b453f08936c58edb extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
1560
1984
  constructor(page){
1561
1985
  super(page);
1562
- this.patternPage = new (0, $d13e78163af94d50$export$9b9454a7f137e99b)(page);
1563
- this.util = new (0, $87bbb6d35ad31a00$export$f8f26dd395d7e1bd)(page);
1986
+ this.deliveryPage = new (0, $4cdce1306be47ecd$export$eace2be4de1d3377)(page);
1564
1987
  this.expandButton = this.page.getByRole("button", {
1565
1988
  name: " Expand"
1566
1989
  });
1990
+ this.folderGroupsPage = new (0, $27cd192f30944b0c$export$572f40d328c1d028)(page);
1991
+ this.patternPage = new (0, $d13e78163af94d50$export$9b9454a7f137e99b)(page);
1992
+ this.util = new (0, $87bbb6d35ad31a00$export$f8f26dd395d7e1bd)(page);
1567
1993
  }
1568
1994
  async openFoldersPage() {
1569
1995
  await this.page.goto("./#/folders");
@@ -1577,20 +2003,33 @@ class $50c91328c9110668$export$b453f08936c58edb extends (0, $9626bc9256ce31f7$ex
1577
2003
  return this;
1578
2004
  }
1579
2005
  async createFolder(folderName) {
1580
- await this.page.locator("button.btn-add-folder").click();
1581
- await this.page.locator("div.xl-react-component-input-wrapper").type(folderName);
1582
- await this.page.locator("button.xl-react-button.button.primary").click();
1583
- await this.page.locator(`//button[normalize-space()='Add release']`).isVisible();
2006
+ await this.page.getByRole("button", {
2007
+ name: " Add folder"
2008
+ }).click();
2009
+ await (0, $hOLA6$expect)(this.page.getByText("Create a new folder in root")).toBeVisible();
2010
+ await this.page.getByRole("textbox").fill(folderName);
2011
+ await this.page.getByRole("button", {
2012
+ name: "Create"
2013
+ }).click();
2014
+ await (0, $hOLA6$expect)(this.page.getByRole("link", {
2015
+ name: folderName
2016
+ })).toBeVisible();
1584
2017
  return this;
1585
2018
  }
1586
2019
  async openFolder(folderName) {
1587
- await this.page.locator(`.folder-row-wrapper span:text-is('${folderName}')`).click();
2020
+ await this.page.getByTitle(folderName).waitFor({
2021
+ timeout: 500
2022
+ });
2023
+ await this.page.getByTitle(folderName).click();
2024
+ await (0, $hOLA6$expect)(this.page.locator(".MuiBreadcrumbs-li").getByRole("link", {
2025
+ name: `${folderName}`
2026
+ })).toBeVisible();
1588
2027
  return this;
1589
2028
  }
1590
2029
  async openGroups() {
1591
2030
  await this.util.openSideNavMenu("Groups");
1592
2031
  await (0, $hOLA6$expect)(this.page.getByLabel("breadcrumb").getByText("Groups")).toBeVisible();
1593
- return this;
2032
+ return this.folderGroupsPage;
1594
2033
  }
1595
2034
  async createGroup(groupName) {
1596
2035
  await this.page.locator("//button[normalize-space()='New release group']").click();
@@ -1612,7 +2051,7 @@ class $50c91328c9110668$export$b453f08936c58edb extends (0, $9626bc9256ce31f7$ex
1612
2051
  return this;
1613
2052
  }
1614
2053
  async createSubFolder(parentFolder, subFolderName) {
1615
- await this.expandButton.click();
2054
+ await this.clickExpandButton();
1616
2055
  await this.page.getByRole("link", {
1617
2056
  name: parentFolder
1618
2057
  }).hover();
@@ -1626,7 +2065,7 @@ class $50c91328c9110668$export$b453f08936c58edb extends (0, $9626bc9256ce31f7$ex
1626
2065
  })).toBeVisible();
1627
2066
  }
1628
2067
  async renameFolder(existingFolderName, newFolderName) {
1629
- await this.expandButton.click();
2068
+ await this.clickExpandButton();
1630
2069
  await this.page.getByRole("link", {
1631
2070
  name: existingFolderName
1632
2071
  }).hover();
@@ -1639,7 +2078,7 @@ class $50c91328c9110668$export$b453f08936c58edb extends (0, $9626bc9256ce31f7$ex
1639
2078
  })).toBeVisible();
1640
2079
  }
1641
2080
  async deleteFolder(folderName) {
1642
- await this.expandButton.click();
2081
+ await this.clickExpandButton();
1643
2082
  await this.page.getByRole("link", {
1644
2083
  name: folderName
1645
2084
  }).hover();
@@ -1665,7 +2104,8 @@ class $50c91328c9110668$export$b453f08936c58edb extends (0, $9626bc9256ce31f7$ex
1665
2104
  })).toBeVisible();
1666
2105
  }
1667
2106
  async openPatterns() {
1668
- await this.util.openSideNavMenu("Patterns");
2107
+ await this.util.openSideNavMenu("Deliveries");
2108
+ await this.util.openNestedMenuItem("Patterns");
1669
2109
  await (0, $hOLA6$expect)(this.page.getByLabel("breadcrumb").getByText("Patterns")).toBeVisible();
1670
2110
  return this.patternPage;
1671
2111
  }
@@ -1674,6 +2114,15 @@ class $50c91328c9110668$export$b453f08936c58edb extends (0, $9626bc9256ce31f7$ex
1674
2114
  hasText: folderName
1675
2115
  }).locator(`.xl-icon.${option}-icon`).click();
1676
2116
  }
2117
+ async clickExpandButton() {
2118
+ if (await this.expandButton.isEnabled()) await this.expandButton.click();
2119
+ }
2120
+ async openDeliveriesOverview() {
2121
+ await this.util.openSideNavMenu("Deliveries");
2122
+ await this.util.openNestedMenuItem("Deliveries overview");
2123
+ await (0, $hOLA6$expect)(this.page.getByLabel("breadcrumb").getByText("Deliveries")).toBeVisible();
2124
+ return this.deliveryPage;
2125
+ }
1677
2126
  }
1678
2127
 
1679
2128
 
@@ -1823,6 +2272,143 @@ class $2174535b78371022$export$36d69433c4f81145 extends (0, $9626bc9256ce31f7$ex
1823
2272
 
1824
2273
 
1825
2274
 
2275
+
2276
+ class $aa1ba8c8de3c0679$export$2fb4351c41ce6e7a extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
2277
+ constructor(page){
2278
+ super(page);
2279
+ this.announcementIcon = this.page.getByLabel("Open Resource Center");
2280
+ this.settingsIcon = this.page.locator('i[aria-label="settings-admin-opaque icon"]');
2281
+ this.aboutMenu = this.page.getByText("About Digital.ai Release");
2282
+ this.util = new (0, $87bbb6d35ad31a00$export$f8f26dd395d7e1bd)(page);
2283
+ }
2284
+ async verifyVersionNumber(versionNumber) {
2285
+ const year = new Date().getFullYear();
2286
+ await this.settingsIcon.click();
2287
+ await this.aboutMenu.click();
2288
+ await (0, $hOLA6$expect)(this.page.getByText("Version " + versionNumber)).toBeVisible();
2289
+ await (0, $hOLA6$expect)(this.page.getByRole("img", {
2290
+ name: "Release"
2291
+ })).toBeVisible();
2292
+ await (0, $hOLA6$expect)(this.page.getByText(`ⓒ ${year} Digital.ai Software,`)).toBeVisible();
2293
+ await this.util.clickCloseIcon();
2294
+ }
2295
+ async verifyProductAnnouncements() {
2296
+ await (0, $hOLA6$expect)(this.announcementIcon).toBeVisible();
2297
+ await this.announcementIcon.click();
2298
+ (0, $hOLA6$expect)(await this.page.locator("#pendo-guide-container").innerText()).toContain("Product updates");
2299
+ }
2300
+ async clickHelpIcon() {
2301
+ await this.page.getByTestId("right-side-nav").getByRole("button", {
2302
+ name: "Help"
2303
+ }).click();
2304
+ }
2305
+ async verifyOnlineDocumentation() {
2306
+ const versionNumber = await this.getVersionNumber();
2307
+ await this.clickHelpIcon();
2308
+ const page2Promise = this.page.waitForEvent("popup");
2309
+ await (0, $hOLA6$expect)(this.page.getByText("Online documentation")).toBeVisible();
2310
+ await this.page.getByText("Online documentation").click();
2311
+ const page2 = await page2Promise;
2312
+ (0, $hOLA6$expect)(page2.url()).toContain("https://docs.digital.ai/bundle/devops-release-version-v." + versionNumber.substring(8, 12) + "/page/release/how-to/get-started-with-xl-release.html");
2313
+ await this.page.bringToFront();
2314
+ }
2315
+ async verifySupportRequest() {
2316
+ await (0, $hOLA6$expect)(this.page.getByRole("menuitem", {
2317
+ name: "Submit a support request"
2318
+ })).toBeVisible();
2319
+ const page2Promise = this.page.waitForEvent("popup");
2320
+ await this.page.getByRole("menuitem", {
2321
+ name: "Submit a support request"
2322
+ }).click();
2323
+ const page2 = await page2Promise;
2324
+ (0, $hOLA6$expect)(page2.url()).toContain("https://support.digital.ai/hc/en-us/");
2325
+ await this.page.bringToFront();
2326
+ }
2327
+ async verifySuggestAFeature() {
2328
+ await (0, $hOLA6$expect)(this.page.getByText("Suggest a feature")).toBeVisible();
2329
+ const page2Promise = this.page.waitForEvent("popup");
2330
+ await this.page.getByText("Suggest a feature").click();
2331
+ const page2 = await page2Promise;
2332
+ (0, $hOLA6$expect)(page2.url()).toContain("https://ideas.digital.ai/devops");
2333
+ await this.page.bringToFront();
2334
+ }
2335
+ async verifyDigitalAiWebsite() {
2336
+ await (0, $hOLA6$expect)(this.page.getByText("Digital.ai website")).toBeVisible();
2337
+ const page2Promise = this.page.waitForEvent("popup");
2338
+ await this.page.getByText("Digital.ai website").click();
2339
+ const page2 = await page2Promise;
2340
+ (0, $hOLA6$expect)(page2.url()).toContain("https://digital.ai/");
2341
+ await this.page.bringToFront();
2342
+ }
2343
+ async clickAvatarIcon(username) {
2344
+ await this.page.getByLabel(username, {
2345
+ exact: true
2346
+ }).click();
2347
+ }
2348
+ async verifyUser(userFullName) {
2349
+ await this.page.getByText(userFullName).click();
2350
+ await (0, $hOLA6$expect)(this.page.getByRole("heading", {
2351
+ name: "Personal settings for admin"
2352
+ })).toBeVisible();
2353
+ }
2354
+ async clickAccessTokens() {
2355
+ await this.page.getByText("Access tokens").click();
2356
+ await (0, $hOLA6$expect)(this.page.getByLabel("breadcrumb").getByText("Access tokens")).toBeVisible();
2357
+ }
2358
+ async getVersionNumber() {
2359
+ await this.settingsIcon.click();
2360
+ await this.aboutMenu.click();
2361
+ const versionNumber = await this.page.locator(".version-text").innerText();
2362
+ await this.util.clickCloseIcon();
2363
+ return versionNumber;
2364
+ }
2365
+ }
2366
+
2367
+
2368
+
2369
+
2370
+
2371
+ class $ecd0868a4240184d$export$7b434e00c788d0bf extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
2372
+ constructor(page){
2373
+ super(page);
2374
+ this.util = new (0, $87bbb6d35ad31a00$export$f8f26dd395d7e1bd)(page);
2375
+ }
2376
+ async openPluginGallery() {
2377
+ await this.util.openSideNavMenu("Plugin gallery");
2378
+ await (0, $hOLA6$expect)(this.page.getByLabel("breadcrumb").getByText("Plugin gallery")).toBeVisible();
2379
+ }
2380
+ async openInstalledPlugins() {
2381
+ await this.util.openSideNavMenu("Installed plugins");
2382
+ await (0, $hOLA6$expect)(this.page.getByLabel("breadcrumb").getByText("Installed plugins")).toBeVisible();
2383
+ }
2384
+ async searchForPlugins(searchText) {
2385
+ await this.page.getByPlaceholder("Search for plugin").fill(searchText);
2386
+ (0, $hOLA6$expect)(await this.page.locator(".PluginTile__title-and-version___1HsNr span").count()).toBeGreaterThan(0);
2387
+ }
2388
+ async refreshPluginList() {
2389
+ await (0, $hOLA6$expect)(this.page.getByTestId("plugin-refresh-btn")).toBeVisible();
2390
+ await this.page.getByTestId("plugin-refresh-btn").click();
2391
+ }
2392
+ async clickInstallNow(pluginName) {
2393
+ await this.page.locator("div").filter({
2394
+ hasText: "Install now" + pluginName
2395
+ }).getByRole("button").click();
2396
+ }
2397
+ async expectRestartInfo() {
2398
+ await (0, $hOLA6$expect)(this.page.getByLabel("info")).toContainText("Restart Digital.ai Release to finish installing the plugin.");
2399
+ }
2400
+ async expectNewPluginInstallationInfo(pluginName) {
2401
+ await (0, $hOLA6$expect)(this.page.getByText("New plugin installedPlugin")).toBeVisible();
2402
+ await (0, $hOLA6$expect)(this.page.getByLabel("info").locator("div")).toContainText("New plugin installedPlugin release-" + pluginName.toLowerCase() + "-integration has been installed, click here to reload the changes or refresh your browser");
2403
+ }
2404
+ async clickUpload() {
2405
+ await this.page.getByTestId("dot-button").click();
2406
+ }
2407
+ }
2408
+
2409
+
2410
+
2411
+
1826
2412
  class $6720a523bcb1cce0$export$3cac5fd37ae64b91 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
1827
2413
  async openPersonalAccessTokenPage() {
1828
2414
  // await this.page.locator("button.dot-avatar").click()
@@ -1843,6 +2429,61 @@ class $6720a523bcb1cce0$export$3cac5fd37ae64b91 extends (0, $9626bc9256ce31f7$ex
1843
2429
 
1844
2430
 
1845
2431
 
2432
+ class $a5932af323ac015a$export$3cf9c90f870f31bd extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
2433
+ constructor(page){
2434
+ super(page);
2435
+ this.util = new (0, $87bbb6d35ad31a00$export$f8f26dd395d7e1bd)(page);
2436
+ }
2437
+ async openProfile() {
2438
+ await this.util.openSideNavMenu("Profile");
2439
+ }
2440
+ async openAccessToken() {
2441
+ await this.util.openSideNavMenu("Access tokens");
2442
+ }
2443
+ async editUserProfile(email) {
2444
+ await this.page.getByLabel("Email address").click();
2445
+ await this.page.getByLabel("Email address").fill(email);
2446
+ await this.page.getByTestId("dot-button").click();
2447
+ (0, $hOLA6$expect)(await this.page.locator(".saved-text").textContent()).toContain("Last saved on ");
2448
+ }
2449
+ async generateNewAccessToken(tokenName, expiryOptions) {
2450
+ await this.page.getByRole("button", {
2451
+ name: "Generate token"
2452
+ }).click();
2453
+ await this.page.getByLabel("Token name").click();
2454
+ await this.page.getByLabel("Token name").fill(tokenName);
2455
+ await this.page.getByRole("textbox", {
2456
+ name: "Token expiration"
2457
+ }).getByLabel("Token expiration").selectOption(expiryOptions);
2458
+ await this.page.locator("label").filter({
2459
+ hasText: "Use all permissions"
2460
+ }).getByTestId("RadioButtonCheckedIcon").click();
2461
+ await this.page.getByRole("button", {
2462
+ name: "Generate",
2463
+ exact: true
2464
+ }).click();
2465
+ await (0, $hOLA6$expect)(this.page.getByTestId("alert-button-tooltip").getByTestId("dot-button")).toBeVisible();
2466
+ await (0, $hOLA6$expect)(this.page.getByText(tokenName)).toBeVisible();
2467
+ }
2468
+ async deleteAccessToken(tokenName) {
2469
+ await this.page.locator(".MuiTableRow-root").filter({
2470
+ hasText: tokenName
2471
+ }).getByTestId("button-icon-i").click();
2472
+ await (0, $hOLA6$expect)(this.page.getByRole("heading", {
2473
+ name: "Delete token"
2474
+ })).toBeVisible();
2475
+ await (0, $hOLA6$expect)(this.page.getByLabel("Delete token")).toContainText("Delete token");
2476
+ await this.page.getByRole("button", {
2477
+ name: "delete icon Delete token"
2478
+ }).click();
2479
+ await (0, $hOLA6$expect)(this.page.getByText(tokenName)).not.toBeVisible();
2480
+ }
2481
+ }
2482
+
2483
+
2484
+
2485
+
2486
+
1846
2487
 
1847
2488
  class $21185a378c23589e$export$e2e2e1ffdce20c30 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
1848
2489
  constructor(page){
@@ -1949,6 +2590,7 @@ class $2cb6a6ac6b17e85f$export$107317390f5aa598 extends (0, $9626bc9256ce31f7$ex
1949
2590
 
1950
2591
 
1951
2592
 
2593
+
1952
2594
  class $f1bf370bb7f683ca$export$1d7840d5cdc861d5 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
1953
2595
  constructor(page){
1954
2596
  super(page);
@@ -1969,6 +2611,7 @@ class $f1bf370bb7f683ca$export$1d7840d5cdc861d5 extends (0, $9626bc9256ce31f7$ex
1969
2611
  async openManagePlugin() {
1970
2612
  await this.settingsIcon.click();
1971
2613
  await this.managePluginMenu.click();
2614
+ await (0, $hOLA6$expect)(this.page.getByLabel("breadcrumb").getByText("Plugin gallery")).toBeVisible();
1972
2615
  }
1973
2616
  }
1974
2617
 
@@ -1985,7 +2628,7 @@ class $9ca6e63d357957dd$export$922081b54f2ab994 extends (0, $9626bc9256ce31f7$ex
1985
2628
 
1986
2629
  class $3a340a3f4fd8f04d$export$43682cddead1dd78 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
1987
2630
  async openReleaseCalendarPage() {
1988
- await this.page.goto("./#/calendar");
2631
+ await this.page.goto("./#/releases/calendar");
1989
2632
  //Define date format to verify different calendar views
1990
2633
  const today = new Date();
1991
2634
  let options = {
@@ -2003,7 +2646,7 @@ class $3a340a3f4fd8f04d$export$43682cddead1dd78 extends (0, $9626bc9256ce31f7$ex
2003
2646
  };
2004
2647
  this.monthFormat = today.toLocaleDateString("en-US", options);
2005
2648
  this.monthFormat = this.monthFormat.replace(/(\w+) (\d+)/, "$1, $2");
2006
- await (0, $hOLA6$expect)(this.page).toHaveTitle("Release calendar / Home - Digital.ai Release");
2649
+ await (0, $hOLA6$expect)(this.page.locator(".tl-viewport")).toBeVisible();
2007
2650
  return this;
2008
2651
  }
2009
2652
  async exportCalendar() {
@@ -2437,11 +3080,52 @@ class $c37c93912f458e81$export$60c3bfa6385e2a10 extends (0, $9626bc9256ce31f7$ex
2437
3080
  async clickOnAssigneeButton(title) {
2438
3081
  await this.page.locator(`.btn-group-filter.btn-group button.btn.btn-flat[title="${title}"]`).click();
2439
3082
  }
2440
- async expectTaskNotDisplayed(taskTitle) {
3083
+ async clickOnAssignedToMe() {
3084
+ await this.page.locator(`button[title="Assigned to me"]`).click();
3085
+ }
3086
+ async clickOnAssignedToMyTeams() {
3087
+ await this.page.locator(`button[title="Assigned to my teams"]`).click();
3088
+ }
3089
+ async clickOnAssignedToAllAvailable() {
3090
+ await this.page.locator(`button[title="All available"]`).click();
3091
+ }
3092
+ async expectTaskToNotBeDisplayed(taskTitle) {
2441
3093
  await (0, $hOLA6$expect)(this.page.locator(`.row.task-inner`).filter({
2442
3094
  hasText: taskTitle
2443
3095
  }).getByText(taskTitle)).toHaveCount(0);
2444
3096
  }
3097
+ async expectTaskToBeDisplayed(taskTitle) {
3098
+ await (0, $hOLA6$expect)(this.page.locator(`.row.task-inner`).filter({
3099
+ hasText: taskTitle
3100
+ }).getByText(taskTitle)).toHaveCount(1);
3101
+ }
3102
+ async expectTasksToBeDisplayed(tasks) {
3103
+ for (const [taskTitle, shouldBeDisplayed] of Object.entries(tasks))if (shouldBeDisplayed) await this.expectTaskToBeDisplayed(taskTitle);
3104
+ else await this.expectTaskToNotBeDisplayed(taskTitle);
3105
+ }
3106
+ async expectTasksDisplayedInOrder(expectedTasks) {
3107
+ for (const task of expectedTasks){
3108
+ const taskElement = await this.page.locator(`[data-release-title='${task.releaseTitle}'] .row .task`).nth(task.taskPosition);
3109
+ await (0, $hOLA6$expect)(taskElement).toHaveAttribute("data-task-title", task.taskTitle);
3110
+ }
3111
+ }
3112
+ async setOrderBy(orderBy) {
3113
+ await this.page.locator(".order-selector .btn:first-child").click();
3114
+ await this.page.locator(`.order-selector .bootstrap-link:has-text('${orderBy}')`).click();
3115
+ }
3116
+ async expectTaskCountForRelease(releaseTitle, expectedCount) {
3117
+ await (0, $hOLA6$expect)(this.page.locator(`#tasks-content #task-list-grouped-view div:has-text('${releaseTitle}') .task`)).toHaveCount(expectedCount);
3118
+ }
3119
+ async setSearchFilter(filterText) {
3120
+ await this.page.locator(".searchFilter").fill(filterText);
3121
+ }
3122
+ async clearSearchFilter() {
3123
+ await this.page.locator(".searchFilter").clear();
3124
+ }
3125
+ async setTagsFilter(filterText) {
3126
+ await this.page.locator(".tag-input").fill(filterText);
3127
+ await this.page.locator(".tag-input").press("Enter");
3128
+ }
2445
3129
  async clickOnStatusField() {
2446
3130
  await this.page.locator(".ci-filter-status.ng-isolate-scope").click();
2447
3131
  }
@@ -2831,13 +3515,13 @@ class $0c4084f199d70d72$var$Phase extends (0, $9626bc9256ce31f7$export$2b65d1d97
2831
3515
  * @param taskTypeSelector : Selector of the task
2832
3516
  */ async addTaskInPhase(taskTitle, taskGroup, taskType) {
2833
3517
  await this.phaseLocator.getByText("Add task").click();
2834
- await this.phaseLocator.getByLabel("Open", {
2835
- exact: true
2836
- }).click();
2837
- await this.phaseLocator.getByPlaceholder("Start typing to filter task").fill(taskGroup);
3518
+ await this.page.locator("#task-selector").hover();
3519
+ await this.page.locator('button[aria-label="Clear"]').click();
3520
+ await this.page.locator("#task-selector").fill(taskGroup);
2838
3521
  await this.page.getByTestId(taskType).click();
2839
- await this.phaseLocator.locator("#task-title").fill(taskTitle);
2840
- await this.phaseLocator.getByTestId("save-select-task-btn").click();
3522
+ await this.page.locator(".icon-close").click();
3523
+ await this.page.locator("#task-title").fill(taskTitle);
3524
+ await this.page.getByTestId("save-select-task-btn").click();
2841
3525
  await (0, $hOLA6$expect)(this.phaseLocator.getByText(taskTitle)).toBeVisible();
2842
3526
  }
2843
3527
  async getNumberOfTasks() {
@@ -2910,16 +3594,16 @@ class $171d52b372748c0b$export$7e1d435fa474ee21 extends (0, $9626bc9256ce31f7$ex
2910
3594
  await this.page.getByRole("button", {
2911
3595
  name: "Continue"
2912
3596
  }).click();
2913
- await (0, $hOLA6$expect)(this.page.locator(".dot-chip").filter({
2914
- hasText: "TEMPLATE"
2915
- })).toBeVisible();
3597
+ await (0, $hOLA6$expect)(this.page.getByTestId("template-workflow-pill").getByText("Template")).toBeVisible();
2916
3598
  }
2917
3599
  async move(templateName, targetFolder) {
2918
- await this.page.locator(".title").filter({
3600
+ await this.page.locator(".template").filter({
2919
3601
  hasText: templateName
2920
- }).locator(".move").click();
3602
+ }).locator(".template-actions .move").click();
2921
3603
  await (0, $hOLA6$expect)(this.page.getByText("Move template to")).toBeVisible();
2922
- await this.page.getByRole("button", {
3604
+ if (await this.page.getByRole("button", {
3605
+ name: "Expand"
3606
+ }).isEnabled()) await this.page.getByRole("button", {
2923
3607
  name: "Expand"
2924
3608
  }).click();
2925
3609
  await this.page.getByPlaceholder("Search folder...").click();
@@ -3026,9 +3710,13 @@ class $171d52b372748c0b$export$7e1d435fa474ee21 extends (0, $9626bc9256ce31f7$ex
3026
3710
  class $e72552cbf941ecfa$export$b8a61e5c71402559 {
3027
3711
  constructor(page){
3028
3712
  this.page = page;
3713
+ this.dataRandomGenerator = new (0, $b14c3492cf934ea2$export$e40b5d3c74b04c89)();
3714
+ this.dateUtil = new (0, $71075ce65fcede1d$export$9b575f14aa5e09a1)(page);
3029
3715
  this.folderPage = new (0, $50c91328c9110668$export$b453f08936c58edb)(page);
3030
3716
  this.globalvariable = new (0, $3df1257265fba073$export$74ca1eaaa9a0054)(page);
3031
3717
  this.homePage = new (0, $2174535b78371022$export$36d69433c4f81145)(page);
3718
+ this.header = new (0, $aa1ba8c8de3c0679$export$2fb4351c41ce6e7a)(page);
3719
+ this.managePluginsPage = new (0, $ecd0868a4240184d$export$7b434e00c788d0bf)(page);
3032
3720
  this.releasePage = new (0, $43cbcdfccb6c2a76$export$f43492e8ac3c566)(page);
3033
3721
  this.settingsMenu = new (0, $f1bf370bb7f683ca$export$1d7840d5cdc861d5)(page);
3034
3722
  this.usersPage = new (0, $2cb6a6ac6b17e85f$export$107317390f5aa598)(page);
@@ -3037,7 +3725,7 @@ class $e72552cbf941ecfa$export$b8a61e5c71402559 {
3037
3725
  this.taskListPage = new (0, $c37c93912f458e81$export$60c3bfa6385e2a10)(page);
3038
3726
  this.templatePage = new (0, $0c4084f199d70d72$export$8c8e7207254accc2)(page);
3039
3727
  this.templateListPage = new (0, $171d52b372748c0b$export$7e1d435fa474ee21)(page);
3040
- this.randomString = new (0, $b14c3492cf934ea2$export$e40b5d3c74b04c89)();
3728
+ this.personalSettingsPage = new (0, $a5932af323ac015a$export$3cf9c90f870f31bd)(page);
3041
3729
  this.releaseCalendarPage = new (0, $3a340a3f4fd8f04d$export$43682cddead1dd78)(page);
3042
3730
  this.releaseGroupPage = new (0, $cc2d15e53de5cef7$export$b6fbc3e67030138f)(page);
3043
3731
  this.releaseGroupTimelinePage = new (0, $cc231ea61b77c7a2$export$1a0994e9c202d529)(page);
@@ -3143,12 +3831,12 @@ class $e72552cbf941ecfa$export$b8a61e5c71402559 {
3143
3831
  return new (0, $43cbcdfccb6c2a76$export$f43492e8ac3c566)(this.page);
3144
3832
  }
3145
3833
  async collapseSideView() {
3146
- await this.page.locator(".icon-collapse").click();
3147
- await (0, $hOLA6$expect)(this.page.locator(".icon-collapse")).not.toBeVisible();
3834
+ await this.page.getByLabel("Collapse Q").click();
3835
+ await (0, $hOLA6$expect)(this.page.getByLabel("Collapse Q")).not.toBeVisible();
3148
3836
  }
3149
3837
  async expandSideView() {
3150
- await this.page.locator(".icon-expand").click();
3151
- await (0, $hOLA6$expect)(this.page.locator(".icon-expand")).not.toBeVisible();
3838
+ await this.page.getByLabel("Expand Q").click();
3839
+ await (0, $hOLA6$expect)(this.page.getByLabel("Expand Q")).not.toBeVisible();
3152
3840
  }
3153
3841
  }
3154
3842
 
@@ -3427,6 +4115,13 @@ class $80c3ae34677b4324$var$Fixtures {
3427
4115
  permissions(rolePermissions) {
3428
4116
  return this.doPost("fixtures/roles/permissions/global", rolePermissions);
3429
4117
  }
4118
+ updateUserProfile(username, profile) {
4119
+ profile.id = username;
4120
+ profile.type = "xlrelease.UserProfile";
4121
+ profile.canonicalId = username.toLowerCase();
4122
+ if (this.userProfiles.indexOf(profile.canonicalId) === -1) this.userProfiles.push(profile.canonicalId);
4123
+ return this.doPut("fixtures/userProfile", profile);
4124
+ }
3430
4125
  deleteRole(roleName) {
3431
4126
  return this.doDelete(`fixtures/role/${roleName}`);
3432
4127
  }