@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/main.js CHANGED
@@ -1029,6 +1029,18 @@ class $87643f2d97b0644e$export$a678525e79c4ccc4 extends (0, $f8721861c660dd88$ex
1029
1029
  await this.releaseCreatePage.create();
1030
1030
  await (0, $kKeXs$playwrighttest.expect)(this.page.getByLabel("breadcrumb").getByText("Flow")).toBeVisible();
1031
1031
  }
1032
+ async gotoListView() {
1033
+ await this.page.getByRole("tab", {
1034
+ name: "release icon List"
1035
+ }).click();
1036
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".release-list")).toBeVisible();
1037
+ }
1038
+ async gotoCalendarView() {
1039
+ await this.page.getByRole("tab", {
1040
+ name: "calendar icon Calendar"
1041
+ }).click();
1042
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".tl-viewport")).toBeVisible();
1043
+ }
1032
1044
  }
1033
1045
 
1034
1046
 
@@ -1330,18 +1342,12 @@ class $eb81c1b930e440ff$export$519356f6c50361f7 extends (0, $f8721861c660dd88$ex
1330
1342
  }
1331
1343
  async expectDependencyText(dependencies) {
1332
1344
  await (0, $kKeXs$playwrighttest.expect)(this.railLocator.locator(".gate-task-dependencies")).toBeVisible();
1333
- await (0, $kKeXs$playwrighttest.expect)(this.page.getByRole("link", {
1334
- name: dependencies,
1335
- exact: true
1336
- }).first()).toBeVisible();
1345
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(`.gate-task-dependencies`).getByLabel(dependencies).first()).toBeVisible();
1337
1346
  }
1338
1347
  async clickEditDependency(dependencies) {
1339
1348
  const depOptionsIcon = this.page.locator(".dependency").filter({
1340
- has: this.page.getByRole("link", {
1341
- name: dependencies,
1342
- exact: true
1343
- })
1344
- }).locator(".icon-options");
1349
+ has: this.page.getByLabel(dependencies)
1350
+ }).first().locator(".actions");
1345
1351
  await depOptionsIcon.isVisible();
1346
1352
  await depOptionsIcon.click();
1347
1353
  const frame = this.page.getByTestId("undefined-menu");
@@ -1396,12 +1402,18 @@ class $eb81c1b930e440ff$export$fbbf45eff21470e3 extends (0, $f8721861c660dd88$ex
1396
1402
  async setPhase(phaseTitle) {
1397
1403
  await this.phase.click();
1398
1404
  await this.phase.fill("");
1399
- await this.page.getByRole("option", {
1405
+ const count = await this.page.getByRole("option", {
1400
1406
  name: phaseTitle
1401
- }).waitFor();
1402
- await this.page.getByRole("option", {
1407
+ }).count();
1408
+ if (count > 0) await this.page.getByRole("option", {
1403
1409
  name: phaseTitle
1404
1410
  }).click();
1411
+ else {
1412
+ await this.page.locator(".phase-dependency").getByLabel("Open").click();
1413
+ await this.page.getByRole("option", {
1414
+ name: phaseTitle
1415
+ }).click();
1416
+ }
1405
1417
  }
1406
1418
  async setTask(taskTitle) {
1407
1419
  await this.task.click();
@@ -1529,6 +1541,9 @@ class $6a21661eb4695574$export$e946776eae644790 extends (0, $f8721861c660dd88$ex
1529
1541
  name: "arrow-down icon",
1530
1542
  exact: true
1531
1543
  });
1544
+ this.completeButton = this.page.getByRole("button", {
1545
+ name: "Complete"
1546
+ });
1532
1547
  }
1533
1548
  async openOverviewRail() {
1534
1549
  await this.openRail("Overview");
@@ -1575,6 +1590,11 @@ class $6a21661eb4695574$export$e946776eae644790 extends (0, $f8721861c660dd88$ex
1575
1590
  await this.commentBox.fill(comment);
1576
1591
  await this.confirm.click();
1577
1592
  }
1593
+ async completeTask(comment) {
1594
+ await this.completeButton.click();
1595
+ await this.commentBox.fill(comment);
1596
+ await this.confirm.click();
1597
+ }
1578
1598
  async expectTaskTitle(taskTitle) {
1579
1599
  (0, $kKeXs$playwrighttest.expect)(await this.page.locator(".task-drawer .task-title-input .dot-view-mode-typography").innerText()).toContain(taskTitle);
1580
1600
  }
@@ -1602,6 +1622,42 @@ class $6a21661eb4695574$export$e946776eae644790 extends (0, $f8721861c660dd88$ex
1602
1622
  name: username
1603
1623
  })).toBeVisible();
1604
1624
  }
1625
+ async expectStartNowButtonToBeVisible() {
1626
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByTestId("single-action-button")).toBeVisible();
1627
+ }
1628
+ async startNow(comment) {
1629
+ await this.page.getByTestId("single-action-button").click();
1630
+ await this.page.getByTestId("task-action-comment").fill(comment);
1631
+ await this.page.getByTestId("dot-button").click();
1632
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByTestId("single-action-button")).not.toBeVisible();
1633
+ }
1634
+ async expectCommentsToContain(text) {
1635
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task-comment-body .markdown-wrapper p")).toContainText(text);
1636
+ }
1637
+ async switchWaitForScheduledDate() {
1638
+ await this.page.locator(".wait-for-start input").click();
1639
+ }
1640
+ async expectWaitForScheduledDateToBeChecked() {
1641
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".wait-for-start input")).toBeChecked();
1642
+ }
1643
+ async expectWaitForScheduledDateToBeUnchecked() {
1644
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".wait-for-start input")).not.toBeChecked();
1645
+ }
1646
+ // Other locators are flaky and it can be replaced if we get locator change in the frontend
1647
+ async clickOnStartDate() {
1648
+ await this.page.getByTestId("month-and-year").first().click();
1649
+ }
1650
+ async removeStartDate() {
1651
+ await this.page.getByRole("button", {
1652
+ name: "Set by user"
1653
+ }).locator(".MuiChip-deleteIcon").click();
1654
+ }
1655
+ async setStartDate(date) {
1656
+ await this.clickOnStartDate();
1657
+ await this.page.locator(".MuiPickersDay-root", {
1658
+ hasText: date
1659
+ }).click();
1660
+ }
1605
1661
  async assignToMe(userName, existingUsername) {
1606
1662
  await this.page.getByRole("button", {
1607
1663
  name: existingUsername
@@ -1857,6 +1913,49 @@ class $880df57ffbf6e614$export$9b575f14aa5e09a1 extends (0, $f8721861c660dd88$ex
1857
1913
  const value = await input.inputValue();
1858
1914
  (0, $kKeXs$playwrighttest.expect)(value).toBe(formattedDate);
1859
1915
  }
1916
+ /**
1917
+ *
1918
+ * @returns Getting current month and year in the format "MonthName YYYY"
1919
+ */ async getCurrentMonthYear() {
1920
+ const monthNames = [
1921
+ "January",
1922
+ "February",
1923
+ "March",
1924
+ "April",
1925
+ "May",
1926
+ "June",
1927
+ "July",
1928
+ "August",
1929
+ "September",
1930
+ "October",
1931
+ "November",
1932
+ "December"
1933
+ ];
1934
+ const d = new Date();
1935
+ const month = monthNames[d.getMonth()];
1936
+ const year = d.getFullYear();
1937
+ return `${month} ${year}`;
1938
+ }
1939
+ /**
1940
+ *
1941
+ * @returns Getting current date in the format "dd MonthName YYYY"
1942
+ */ async getCurrentDate() {
1943
+ const d = new Date();
1944
+ const date = d.getDate();
1945
+ const monthYear = await this.getCurrentMonthYear();
1946
+ return `${date} ${monthYear}`;
1947
+ }
1948
+ /**
1949
+ *
1950
+ * @param days Number of days to add to current date within the current month
1951
+ * @returns
1952
+ */ async getFutureDate(days) {
1953
+ const d = new Date();
1954
+ d.setDate(d.getDate() + days);
1955
+ const date = d.getDate();
1956
+ const monthYear = await this.getCurrentMonthYear();
1957
+ return `${date} ${monthYear}`;
1958
+ }
1860
1959
  }
1861
1960
 
1862
1961
 
@@ -1889,11 +1988,56 @@ class $2c89ba54932fbba8$export$f8f26dd395d7e1bd extends (0, $f8721861c660dd88$ex
1889
1988
  async openSideNavMenu(menuItem) {
1890
1989
  await this.page.locator(`navigation-sidebar ul li`).getByText(menuItem, {
1891
1990
  exact: true
1991
+ }).scrollIntoViewIfNeeded();
1992
+ await this.page.locator(`navigation-sidebar ul li`).getByText(menuItem, {
1993
+ exact: true
1994
+ }).click();
1995
+ }
1996
+ async openNestedMenuItem(nestedMenuItem) {
1997
+ await this.page.locator(".MuiList-root li").getByText(nestedMenuItem, {
1998
+ exact: true
1999
+ }).scrollIntoViewIfNeeded();
2000
+ await this.page.locator(".MuiList-root li").getByText(nestedMenuItem, {
2001
+ exact: true
1892
2002
  }).click();
1893
2003
  }
1894
2004
  async clickCloseIcon() {
1895
2005
  await this.closeIcon.click();
1896
2006
  }
2007
+ async clickOnStatusField() {
2008
+ await this.page.locator(".ci-filter-status.ng-isolate-scope").click();
2009
+ }
2010
+ async clickOnStatus(statusNames) {
2011
+ await this.clickOnStatusClearAll();
2012
+ await this.clickOnStatusField();
2013
+ for(let i = 0; i < statusNames.length; i++)await this.page.locator(`i.xl-icon.icon-s.checkbox[data='${statusNames[i]}']`).click();
2014
+ // Clicking outside to close the grid dropdown
2015
+ await this.page.getByText("Status").click();
2016
+ }
2017
+ async clickOnStatusClearAll() {
2018
+ await this.clickOnStatusField();
2019
+ await this.page.locator("a.xl-react-link", {
2020
+ hasText: "Clear all"
2021
+ }).click();
2022
+ await this.page.getByText("Status").click();
2023
+ }
2024
+ async clickOnStatusSelectAll() {
2025
+ await this.clickOnStatusField();
2026
+ await this.page.locator("a.xl-react-link", {
2027
+ hasText: "Select all"
2028
+ }).click();
2029
+ await this.page.getByText("Status").click();
2030
+ }
2031
+ async setOrderBy(orderBy) {
2032
+ await this.page.locator(".order-by-filter .btn:first-child").click();
2033
+ await this.page.locator(`.order-by-filter .bootstrap-link:has-text('${orderBy}')`).click();
2034
+ }
2035
+ async setSearchFilter(filterText) {
2036
+ await this.page.locator(".searchFilter").fill(filterText);
2037
+ }
2038
+ async clearSearchFilter() {
2039
+ await this.page.locator(".searchFilter").clear();
2040
+ }
1897
2041
  }
1898
2042
 
1899
2043
 
@@ -1948,6 +2092,13 @@ class $9b9a8c3da392d020$export$f43492e8ac3c566 extends (0, $f8721861c660dd88$exp
1948
2092
  timeout: 10000
1949
2093
  });
1950
2094
  }
2095
+ async waitForTaskCompletedInAdvance(taskTitle) {
2096
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task.completed_in_advance").getByText(taskTitle, {
2097
+ exact: true
2098
+ })).toBeVisible({
2099
+ timeout: 10000
2100
+ });
2101
+ }
1951
2102
  async waitForTaskInProgress(taskTitle) {
1952
2103
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task.in_progress").getByText(taskTitle, {
1953
2104
  exact: true
@@ -1998,6 +2149,21 @@ class $9b9a8c3da392d020$export$f43492e8ac3c566 extends (0, $f8721861c660dd88$exp
1998
2149
  async waitForTaskPlanned(title) {
1999
2150
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator(`.task:has-text('${title}').planned`)).toBeVisible();
2000
2151
  }
2152
+ async expectTaskCompletedInAdvance(taskTitle) {
2153
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#release-content .completed_in_advance .task-title").filter({
2154
+ hasText: taskTitle
2155
+ })).toBeVisible();
2156
+ }
2157
+ async expectTaskPending(taskTitle) {
2158
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task.pending").getByText(taskTitle, {
2159
+ exact: true
2160
+ })).toBeVisible();
2161
+ }
2162
+ async expectCurrentTaskToContain(taskTitle) {
2163
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task.active .task-title").getByText(taskTitle, {
2164
+ exact: true
2165
+ })).toBeVisible();
2166
+ }
2001
2167
  async openManualTaskDetails(title) {
2002
2168
  await this.page.locator(`text=${title}`).click({
2003
2169
  force: true
@@ -2175,6 +2341,7 @@ class $9b9a8c3da392d020$var$Phase extends (0, $f8721861c660dd88$export$2b65d1d97
2175
2341
  });
2176
2342
  this.commentBox = this.page.locator(`.input-block-level`);
2177
2343
  this.confirm = this.page.getByTestId("dot-button");
2344
+ this.contextMenuButton = this.page.locator("#context-menu-container li");
2178
2345
  this.dateUtil = new (0, $880df57ffbf6e614$export$9b575f14aa5e09a1)(page);
2179
2346
  }
2180
2347
  async setTitle(title) {
@@ -2183,18 +2350,55 @@ class $9b9a8c3da392d020$var$Phase extends (0, $f8721861c660dd88$export$2b65d1d97
2183
2350
  await this.phaseLocator.locator(".phase-header input").fill(title);
2184
2351
  await this.phaseLocator.locator(".phase-header input").blur();
2185
2352
  }
2353
+ async isMenuItemEnabled(menuName, taskTitle) {
2354
+ await this.openContextMenuForTask(taskTitle);
2355
+ await (0, $kKeXs$playwrighttest.expect)(this.contextMenuButton.filter({
2356
+ hasText: menuName
2357
+ })).not.toHaveClass(/disabled/);
2358
+ await (0, $kKeXs$playwrighttest.expect)(this.contextMenuButton.filter({
2359
+ hasText: menuName
2360
+ }).locator("a")).not.toBeDisabled();
2361
+ await this.closeContextMenu();
2362
+ }
2363
+ async isMenuItemDisabled(menuName, taskTitle) {
2364
+ await this.openContextMenuForTask(taskTitle);
2365
+ await (0, $kKeXs$playwrighttest.expect)(this.contextMenuButton.filter({
2366
+ hasText: menuName
2367
+ })).toHaveClass(/disabled/);
2368
+ await (0, $kKeXs$playwrighttest.expect)(this.contextMenuButton.filter({
2369
+ hasText: menuName
2370
+ }).locator("a")).toBeDisabled();
2371
+ await this.closeContextMenu();
2372
+ }
2373
+ async expectMenuItemIsNotVisible(menuName, taskTitle) {
2374
+ await this.openContextMenuForTask(taskTitle);
2375
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#context-menu-container li").filter({
2376
+ hasText: menuName
2377
+ })).not.toBeVisible();
2378
+ await this.closeContextMenu();
2379
+ }
2380
+ async expectMenuItemIsVisible(menuName, taskTitle) {
2381
+ await this.openContextMenuForTask(taskTitle);
2382
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#context-menu-container li").filter({
2383
+ hasText: menuName
2384
+ })).toBeVisible();
2385
+ await this.closeContextMenu();
2386
+ }
2387
+ async closeContextMenu() {
2388
+ await this.page.locator("#release-header").click();
2389
+ }
2186
2390
  async expectTaskBorderWithColor(taskName, color) {
2187
2391
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator(`.task-box:has-text('${taskName}')`)).toHaveCSS("border-top-color", color);
2188
2392
  }
2189
2393
  async addTaskInPhase(taskTitle, taskGroup, taskType) {
2190
2394
  await this.phaseLocator.getByText("Add task").click();
2191
- await this.phaseLocator.getByLabel("Open", {
2192
- exact: true
2193
- }).click();
2194
- await this.phaseLocator.getByPlaceholder("Start typing to filter task").fill(taskGroup);
2395
+ await this.page.locator("#task-selector").hover();
2396
+ await this.page.locator('button[aria-label="Clear"]').click();
2397
+ await this.page.locator("#task-selector").fill(taskGroup);
2195
2398
  await this.page.getByTestId(taskType).click();
2196
- await this.phaseLocator.locator("#task-title").fill(taskTitle);
2197
- await this.phaseLocator.getByTestId("save-select-task-btn").click();
2399
+ await this.page.locator(".icon-close").click();
2400
+ await this.page.locator("#task-title").fill(taskTitle);
2401
+ await this.page.getByTestId("save-select-task-btn").click();
2198
2402
  await (0, $kKeXs$playwrighttest.expect)(this.phaseLocator.getByText(taskTitle)).toBeVisible();
2199
2403
  }
2200
2404
  async getNumberOfTasks() {
@@ -2206,11 +2410,6 @@ class $9b9a8c3da392d020$var$Phase extends (0, $f8721861c660dd88$export$2b65d1d97
2206
2410
  async expectToHaveTitle(phaseTitle) {
2207
2411
  await (0, $kKeXs$playwrighttest.expect)(this.phaseLocator.locator(".phase-title")).toContainText(phaseTitle);
2208
2412
  }
2209
- async expectTemplateLabelNotToBePresent() {
2210
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".dot-chip").filter({
2211
- hasText: "TEMPLATE"
2212
- })).not.toBeVisible();
2213
- }
2214
2413
  async openContextMenuForTask(taskTitle) {
2215
2414
  await this.phaseLocator.locator(".task").filter({
2216
2415
  hasText: taskTitle
@@ -2225,6 +2424,11 @@ class $9b9a8c3da392d020$var$Phase extends (0, $f8721861c660dd88$export$2b65d1d97
2225
2424
  exact: true
2226
2425
  }).click();
2227
2426
  }
2427
+ async expectTemplateLabelNotToBePresent() {
2428
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".dot-chip").filter({
2429
+ hasText: "TEMPLATE"
2430
+ })).not.toBeVisible();
2431
+ }
2228
2432
  async openPhaseDetails() {
2229
2433
  await this.phaseLocator.locator(".phase-details").click();
2230
2434
  }
@@ -2350,6 +2554,204 @@ class $ce55a4fc3c0aa96a$export$e40b5d3c74b04c89 {
2350
2554
 
2351
2555
 
2352
2556
 
2557
+ class $b2d8d8d82fc8146c$export$eace2be4de1d3377 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2558
+ constructor(page){
2559
+ super(page);
2560
+ this.util = new (0, $2c89ba54932fbba8$export$f8f26dd395d7e1bd)(page);
2561
+ this.addName = page.locator('.xl-react-components input[placeholder="Add..."]');
2562
+ this.addDescription = page.getByPlaceholder("Set description...");
2563
+ this.searchForDelivery = page.getByPlaceholder("Search for deliveries...", {
2564
+ exact: true
2565
+ });
2566
+ }
2567
+ async filterDeliveryByName(deliveryName) {
2568
+ await this.searchForDelivery.click();
2569
+ await this.searchForDelivery.clear();
2570
+ await this.searchForDelivery.fill(deliveryName);
2571
+ await this.searchForDelivery.press("Enter");
2572
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator("xlr-delivery-row").filter({
2573
+ hasText: deliveryName
2574
+ }).getByRole("link").first()).toBeVisible();
2575
+ }
2576
+ async editDelivery(deliveryName, newDeliveryName) {
2577
+ await this.page.locator("xlr-delivery-row").filter({
2578
+ hasText: deliveryName
2579
+ }).locator(".fc-list-item-actions .edit-icon").click();
2580
+ await this.util.openSideNavMenu("Properties");
2581
+ await this.addName.click();
2582
+ await this.addName.clear();
2583
+ await this.addName.fill(newDeliveryName);
2584
+ await this.page.getByRole("button", {
2585
+ name: "Save"
2586
+ }).click();
2587
+ (0, $kKeXs$playwrighttest.expect)(await this.page.locator(".saved-text").textContent()).toContain("Last saved on ");
2588
+ }
2589
+ async deleteDelivery(deliveryName) {
2590
+ await this.page.locator("xlr-delivery-row").filter({
2591
+ hasText: deliveryName
2592
+ }).locator(".fc-list-item-actions .delete-icon").click();
2593
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByText("Delete release delivery", {
2594
+ exact: true
2595
+ })).toBeVisible();
2596
+ await this.page.getByRole("button", {
2597
+ name: "Delete"
2598
+ }).click();
2599
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".success").filter({
2600
+ hasText: "Deleted release delivery successfully"
2601
+ })).toBeVisible();
2602
+ }
2603
+ }
2604
+
2605
+
2606
+
2607
+
2608
+
2609
+
2610
+ class $0767ec703ce1f9a5$export$572f40d328c1d028 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2611
+ constructor(page){
2612
+ super(page);
2613
+ this.dateUtil = new (0, $880df57ffbf6e614$export$9b575f14aa5e09a1)(page);
2614
+ this.util = new (0, $2c89ba54932fbba8$export$f8f26dd395d7e1bd)(page);
2615
+ this.newReleaseGroupButton = page.getByTestId("dot-button");
2616
+ this.dateMonth = new Date();
2617
+ }
2618
+ async createGroup(groupName, startDate, endDate) {
2619
+ await this.newReleaseGroupButton.click();
2620
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByText("Create new release group")).toBeVisible();
2621
+ await this.enterGroupName(groupName);
2622
+ const monthYear = await this.dateUtil.getCurrentMonthYear();
2623
+ if (startDate) await this.enterStartDate(startDate, monthYear);
2624
+ if (endDate) await this.enterEndDate(endDate, monthYear);
2625
+ await this.clickCreate();
2626
+ await this.expectSuccessMessageOnReleaseGroupCreation();
2627
+ }
2628
+ async addReleaseToGroup(releaseName) {
2629
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".action-toolbar-actions button").filter({
2630
+ hasText: "Add release"
2631
+ })).toBeEnabled();
2632
+ await this.page.locator(".action-toolbar-actions button").filter({
2633
+ hasText: "Add release"
2634
+ }).click({
2635
+ force: true
2636
+ });
2637
+ await this.page.getByPlaceholder("Search for a release...").click();
2638
+ await this.page.getByPlaceholder("Search for a release...").fill(releaseName);
2639
+ await this.page.keyboard.press("Enter");
2640
+ await this.page.locator("release-list-modal-release-row").filter({
2641
+ hasText: releaseName
2642
+ }).getByRole("checkbox").check();
2643
+ await this.page.getByRole("button", {
2644
+ name: "Add"
2645
+ }).click();
2646
+ await this.expectSuccessMessageOnAddingReleaseToGroup();
2647
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByRole("link", {
2648
+ name: releaseName
2649
+ })).toBeVisible();
2650
+ }
2651
+ async editReleaseGroupName(newGroupName) {
2652
+ await this.page.locator("#title").click();
2653
+ await this.page.locator("#title").clear();
2654
+ await this.page.locator("#title").fill(newGroupName);
2655
+ }
2656
+ async enterGroupName(groupName) {
2657
+ await this.page.locator("#title").click();
2658
+ await this.page.locator("#title").fill(groupName);
2659
+ }
2660
+ async enterStartDate(date, monthYear) {
2661
+ await this.page.locator(".form-group").filter({
2662
+ hasText: "start date"
2663
+ }).locator(".date input").click();
2664
+ await this.dateUtil.setDate(date, monthYear);
2665
+ }
2666
+ async enterEndDate(date, monthYear) {
2667
+ await this.page.locator(".form-group").filter({
2668
+ hasText: "end date"
2669
+ }).locator(".date input").click();
2670
+ await this.dateUtil.setDate(date, monthYear);
2671
+ }
2672
+ async clickCreate() {
2673
+ await this.page.getByRole("button", {
2674
+ name: "Create"
2675
+ }).click();
2676
+ }
2677
+ async expectSuccessMessageOnReleaseGroupCreation() {
2678
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByLabel("success")).toBeVisible();
2679
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".success").filter({
2680
+ hasText: "Created release group successfully"
2681
+ })).toBeVisible();
2682
+ }
2683
+ async expectSuccessMessageOnAddingReleaseToGroup() {
2684
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByLabel("success")).toBeVisible();
2685
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".success").filter({
2686
+ hasText: "Added release to release group successfully"
2687
+ })).toBeVisible();
2688
+ }
2689
+ async expectSuccessMessageOnUpdatingGroup() {
2690
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByLabel("success")).toBeVisible();
2691
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".success").filter({
2692
+ hasText: "Updated release group successfully"
2693
+ })).toBeVisible();
2694
+ }
2695
+ async searchReleaseGroupByTitle(title) {
2696
+ await this.page.getByPlaceholder("Search for groups...", {
2697
+ exact: true
2698
+ }).click();
2699
+ await this.page.getByPlaceholder("Search for groups...", {
2700
+ exact: true
2701
+ }).fill(title);
2702
+ await this.page.getByPlaceholder("Search for groups...", {
2703
+ exact: true
2704
+ }).press("Enter");
2705
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".fc-list-item-title")).toContainText(title);
2706
+ }
2707
+ async deleteReleaseGroup(title) {
2708
+ await this.page.locator(".fc-list-item-line").filter({
2709
+ hasText: title
2710
+ }).locator(".fc-item-delete").click();
2711
+ await this.page.getByRole("button", {
2712
+ name: "Delete"
2713
+ }).click();
2714
+ }
2715
+ async clickReleaseGroupEdit(title) {
2716
+ await this.page.locator(".fc-list-item-line").filter({
2717
+ hasText: title
2718
+ }).locator(".fc-item-update").click();
2719
+ }
2720
+ async clickSave() {
2721
+ await this.page.getByRole("button", {
2722
+ name: "Save"
2723
+ }).click();
2724
+ }
2725
+ async clickCancel() {
2726
+ await this.page.getByRole("button", {
2727
+ name: "Cancel"
2728
+ }).click();
2729
+ }
2730
+ async clickOnStatusField() {
2731
+ await this.page.locator(".ci-filter-status.ng-isolate-scope").click();
2732
+ }
2733
+ async statusFilter(statusNames) {
2734
+ await this.clickOnStatusClearAll();
2735
+ await this.clickOnStatusField();
2736
+ for(let i = 0; i < statusNames.length; i++)await this.page.locator(`i.xl-icon.icon-s.checkbox[data='${statusNames[i]}']`).click();
2737
+ }
2738
+ async clickOnStatusClearAll() {
2739
+ await this.clickOnStatusField();
2740
+ await this.page.locator("a.xl-react-link", {
2741
+ hasText: "Clear all"
2742
+ }).click();
2743
+ }
2744
+ async clickOnStatusSelectAll() {
2745
+ await this.clickOnStatusField();
2746
+ await this.page.locator("a.xl-react-link", {
2747
+ hasText: "Select all"
2748
+ }).click();
2749
+ }
2750
+ }
2751
+
2752
+
2753
+
2754
+
2353
2755
 
2354
2756
  class $ceb2e9e08e1837c2$export$9b9454a7f137e99b extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2355
2757
  constructor(page){
@@ -2395,12 +2797,14 @@ class $ceb2e9e08e1837c2$export$9b9454a7f137e99b extends (0, $f8721861c660dd88$ex
2395
2797
  await this.clickNewDeliveryPattern();
2396
2798
  await this.setPatternName(patternName);
2397
2799
  await this.setPatternDescription(patternDescription);
2398
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#action-toolbar").filter({
2800
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".action-toolbar-actions button").filter({
2399
2801
  hasText: "Create"
2400
2802
  })).toBeEnabled();
2401
- await this.page.locator("#action-toolbar").filter({
2803
+ await this.page.locator(".action-toolbar-actions button").filter({
2402
2804
  hasText: "Create"
2403
- }).dblclick();
2805
+ }).click({
2806
+ force: true
2807
+ });
2404
2808
  await (0, $kKeXs$playwrighttest.expect)(this.page.getByLabel("breadcrumb").getByText("Delivery flow")).toBeVisible();
2405
2809
  }
2406
2810
  async clickEditPatternIcon(patternName) {
@@ -2433,8 +2837,7 @@ class $ceb2e9e08e1837c2$export$9b9454a7f137e99b extends (0, $f8721861c660dd88$ex
2433
2837
  }
2434
2838
  async copyPattern(existingPatternName, NewPatternName) {
2435
2839
  await this.clickCopyPatternIcon(existingPatternName);
2436
- await this.page.locator('.confirmation-content .xl-react-component-input-wrapper input[placeholder="Add..."]').click();
2437
- await this.page.locator(".confirmation-content .close-icon").click();
2840
+ await this.page.locator(".xl-icon.close-icon").first().click();
2438
2841
  await this.addName.fill(NewPatternName);
2439
2842
  await this.page.getByRole("button", {
2440
2843
  name: "Continue"
@@ -2455,6 +2858,25 @@ class $ceb2e9e08e1837c2$export$9b9454a7f137e99b extends (0, $f8721861c660dd88$ex
2455
2858
  hasText: patternName
2456
2859
  })).not.toBeVisible();
2457
2860
  }
2861
+ async createNewDelivery(deliveryName, deliveryDes, setAutoComplete) {
2862
+ await this.page.getByTestId("dot-button").click();
2863
+ await this.addName.fill(deliveryName);
2864
+ await this.addDescription.click();
2865
+ if (deliveryDes) await this.addDescription.fill(deliveryDes);
2866
+ else await this.addDescription.fill("Description");
2867
+ if (setAutoComplete) await this.page.getByRole("checkbox").check();
2868
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".action-toolbar-actions button").filter({
2869
+ hasText: "Create"
2870
+ })).toBeEnabled();
2871
+ await this.page.locator(".action-toolbar-actions button").filter({
2872
+ hasText: "Create"
2873
+ }).click({
2874
+ force: true
2875
+ });
2876
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".MuiBreadcrumbs-li").getByRole("link", {
2877
+ name: `${deliveryName}`
2878
+ })).toBeVisible();
2879
+ }
2458
2880
  }
2459
2881
  class $ceb2e9e08e1837c2$var$Properties extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2460
2882
  constructor(page){
@@ -2492,14 +2914,18 @@ class $ceb2e9e08e1837c2$var$Properties extends (0, $f8721861c660dd88$export$2b65
2492
2914
  }
2493
2915
 
2494
2916
 
2917
+
2918
+
2495
2919
  class $9058d40a81bdb1f5$export$b453f08936c58edb extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2496
2920
  constructor(page){
2497
2921
  super(page);
2498
- this.patternPage = new (0, $ceb2e9e08e1837c2$export$9b9454a7f137e99b)(page);
2499
- this.util = new (0, $2c89ba54932fbba8$export$f8f26dd395d7e1bd)(page);
2922
+ this.deliveryPage = new (0, $b2d8d8d82fc8146c$export$eace2be4de1d3377)(page);
2500
2923
  this.expandButton = this.page.getByRole("button", {
2501
2924
  name: " Expand"
2502
2925
  });
2926
+ this.folderGroupsPage = new (0, $0767ec703ce1f9a5$export$572f40d328c1d028)(page);
2927
+ this.patternPage = new (0, $ceb2e9e08e1837c2$export$9b9454a7f137e99b)(page);
2928
+ this.util = new (0, $2c89ba54932fbba8$export$f8f26dd395d7e1bd)(page);
2503
2929
  }
2504
2930
  async openFoldersPage() {
2505
2931
  await this.page.goto("./#/folders");
@@ -2513,20 +2939,33 @@ class $9058d40a81bdb1f5$export$b453f08936c58edb extends (0, $f8721861c660dd88$ex
2513
2939
  return this;
2514
2940
  }
2515
2941
  async createFolder(folderName) {
2516
- await this.page.locator("button.btn-add-folder").click();
2517
- await this.page.locator("div.xl-react-component-input-wrapper").type(folderName);
2518
- await this.page.locator("button.xl-react-button.button.primary").click();
2519
- await this.page.locator(`//button[normalize-space()='Add release']`).isVisible();
2942
+ await this.page.getByRole("button", {
2943
+ name: " Add folder"
2944
+ }).click();
2945
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByText("Create a new folder in root")).toBeVisible();
2946
+ await this.page.getByRole("textbox").fill(folderName);
2947
+ await this.page.getByRole("button", {
2948
+ name: "Create"
2949
+ }).click();
2950
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByRole("link", {
2951
+ name: folderName
2952
+ })).toBeVisible();
2520
2953
  return this;
2521
2954
  }
2522
2955
  async openFolder(folderName) {
2523
- await this.page.locator(`.folder-row-wrapper span:text-is('${folderName}')`).click();
2956
+ await this.page.getByTitle(folderName).waitFor({
2957
+ timeout: 500
2958
+ });
2959
+ await this.page.getByTitle(folderName).click();
2960
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".MuiBreadcrumbs-li").getByRole("link", {
2961
+ name: `${folderName}`
2962
+ })).toBeVisible();
2524
2963
  return this;
2525
2964
  }
2526
2965
  async openGroups() {
2527
2966
  await this.util.openSideNavMenu("Groups");
2528
2967
  await (0, $kKeXs$playwrighttest.expect)(this.page.getByLabel("breadcrumb").getByText("Groups")).toBeVisible();
2529
- return this;
2968
+ return this.folderGroupsPage;
2530
2969
  }
2531
2970
  async createGroup(groupName) {
2532
2971
  await this.page.locator("//button[normalize-space()='New release group']").click();
@@ -2548,7 +2987,7 @@ class $9058d40a81bdb1f5$export$b453f08936c58edb extends (0, $f8721861c660dd88$ex
2548
2987
  return this;
2549
2988
  }
2550
2989
  async createSubFolder(parentFolder, subFolderName) {
2551
- await this.expandButton.click();
2990
+ await this.clickExpandButton();
2552
2991
  await this.page.getByRole("link", {
2553
2992
  name: parentFolder
2554
2993
  }).hover();
@@ -2562,7 +3001,7 @@ class $9058d40a81bdb1f5$export$b453f08936c58edb extends (0, $f8721861c660dd88$ex
2562
3001
  })).toBeVisible();
2563
3002
  }
2564
3003
  async renameFolder(existingFolderName, newFolderName) {
2565
- await this.expandButton.click();
3004
+ await this.clickExpandButton();
2566
3005
  await this.page.getByRole("link", {
2567
3006
  name: existingFolderName
2568
3007
  }).hover();
@@ -2575,7 +3014,7 @@ class $9058d40a81bdb1f5$export$b453f08936c58edb extends (0, $f8721861c660dd88$ex
2575
3014
  })).toBeVisible();
2576
3015
  }
2577
3016
  async deleteFolder(folderName) {
2578
- await this.expandButton.click();
3017
+ await this.clickExpandButton();
2579
3018
  await this.page.getByRole("link", {
2580
3019
  name: folderName
2581
3020
  }).hover();
@@ -2601,7 +3040,8 @@ class $9058d40a81bdb1f5$export$b453f08936c58edb extends (0, $f8721861c660dd88$ex
2601
3040
  })).toBeVisible();
2602
3041
  }
2603
3042
  async openPatterns() {
2604
- await this.util.openSideNavMenu("Patterns");
3043
+ await this.util.openSideNavMenu("Deliveries");
3044
+ await this.util.openNestedMenuItem("Patterns");
2605
3045
  await (0, $kKeXs$playwrighttest.expect)(this.page.getByLabel("breadcrumb").getByText("Patterns")).toBeVisible();
2606
3046
  return this.patternPage;
2607
3047
  }
@@ -2610,6 +3050,15 @@ class $9058d40a81bdb1f5$export$b453f08936c58edb extends (0, $f8721861c660dd88$ex
2610
3050
  hasText: folderName
2611
3051
  }).locator(`.xl-icon.${option}-icon`).click();
2612
3052
  }
3053
+ async clickExpandButton() {
3054
+ if (await this.expandButton.isEnabled()) await this.expandButton.click();
3055
+ }
3056
+ async openDeliveriesOverview() {
3057
+ await this.util.openSideNavMenu("Deliveries");
3058
+ await this.util.openNestedMenuItem("Deliveries overview");
3059
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByLabel("breadcrumb").getByText("Deliveries")).toBeVisible();
3060
+ return this.deliveryPage;
3061
+ }
2613
3062
  }
2614
3063
 
2615
3064
 
@@ -2759,6 +3208,143 @@ class $9ef669cf95557cb5$export$36d69433c4f81145 extends (0, $f8721861c660dd88$ex
2759
3208
 
2760
3209
 
2761
3210
 
3211
+
3212
+ class $00fc48341ebf7de4$export$2fb4351c41ce6e7a extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
3213
+ constructor(page){
3214
+ super(page);
3215
+ this.announcementIcon = this.page.getByLabel("Open Resource Center");
3216
+ this.settingsIcon = this.page.locator('i[aria-label="settings-admin-opaque icon"]');
3217
+ this.aboutMenu = this.page.getByText("About Digital.ai Release");
3218
+ this.util = new (0, $2c89ba54932fbba8$export$f8f26dd395d7e1bd)(page);
3219
+ }
3220
+ async verifyVersionNumber(versionNumber) {
3221
+ const year = new Date().getFullYear();
3222
+ await this.settingsIcon.click();
3223
+ await this.aboutMenu.click();
3224
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByText("Version " + versionNumber)).toBeVisible();
3225
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByRole("img", {
3226
+ name: "Release"
3227
+ })).toBeVisible();
3228
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByText(`ⓒ ${year} Digital.ai Software,`)).toBeVisible();
3229
+ await this.util.clickCloseIcon();
3230
+ }
3231
+ async verifyProductAnnouncements() {
3232
+ await (0, $kKeXs$playwrighttest.expect)(this.announcementIcon).toBeVisible();
3233
+ await this.announcementIcon.click();
3234
+ (0, $kKeXs$playwrighttest.expect)(await this.page.locator("#pendo-guide-container").innerText()).toContain("Product updates");
3235
+ }
3236
+ async clickHelpIcon() {
3237
+ await this.page.getByTestId("right-side-nav").getByRole("button", {
3238
+ name: "Help"
3239
+ }).click();
3240
+ }
3241
+ async verifyOnlineDocumentation() {
3242
+ const versionNumber = await this.getVersionNumber();
3243
+ await this.clickHelpIcon();
3244
+ const page2Promise = this.page.waitForEvent("popup");
3245
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByText("Online documentation")).toBeVisible();
3246
+ await this.page.getByText("Online documentation").click();
3247
+ const page2 = await page2Promise;
3248
+ (0, $kKeXs$playwrighttest.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");
3249
+ await this.page.bringToFront();
3250
+ }
3251
+ async verifySupportRequest() {
3252
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByRole("menuitem", {
3253
+ name: "Submit a support request"
3254
+ })).toBeVisible();
3255
+ const page2Promise = this.page.waitForEvent("popup");
3256
+ await this.page.getByRole("menuitem", {
3257
+ name: "Submit a support request"
3258
+ }).click();
3259
+ const page2 = await page2Promise;
3260
+ (0, $kKeXs$playwrighttest.expect)(page2.url()).toContain("https://support.digital.ai/hc/en-us/");
3261
+ await this.page.bringToFront();
3262
+ }
3263
+ async verifySuggestAFeature() {
3264
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByText("Suggest a feature")).toBeVisible();
3265
+ const page2Promise = this.page.waitForEvent("popup");
3266
+ await this.page.getByText("Suggest a feature").click();
3267
+ const page2 = await page2Promise;
3268
+ (0, $kKeXs$playwrighttest.expect)(page2.url()).toContain("https://ideas.digital.ai/devops");
3269
+ await this.page.bringToFront();
3270
+ }
3271
+ async verifyDigitalAiWebsite() {
3272
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByText("Digital.ai website")).toBeVisible();
3273
+ const page2Promise = this.page.waitForEvent("popup");
3274
+ await this.page.getByText("Digital.ai website").click();
3275
+ const page2 = await page2Promise;
3276
+ (0, $kKeXs$playwrighttest.expect)(page2.url()).toContain("https://digital.ai/");
3277
+ await this.page.bringToFront();
3278
+ }
3279
+ async clickAvatarIcon(username) {
3280
+ await this.page.getByLabel(username, {
3281
+ exact: true
3282
+ }).click();
3283
+ }
3284
+ async verifyUser(userFullName) {
3285
+ await this.page.getByText(userFullName).click();
3286
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByRole("heading", {
3287
+ name: "Personal settings for admin"
3288
+ })).toBeVisible();
3289
+ }
3290
+ async clickAccessTokens() {
3291
+ await this.page.getByText("Access tokens").click();
3292
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByLabel("breadcrumb").getByText("Access tokens")).toBeVisible();
3293
+ }
3294
+ async getVersionNumber() {
3295
+ await this.settingsIcon.click();
3296
+ await this.aboutMenu.click();
3297
+ const versionNumber = await this.page.locator(".version-text").innerText();
3298
+ await this.util.clickCloseIcon();
3299
+ return versionNumber;
3300
+ }
3301
+ }
3302
+
3303
+
3304
+
3305
+
3306
+
3307
+ class $b4d98f757ef92467$export$7b434e00c788d0bf extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
3308
+ constructor(page){
3309
+ super(page);
3310
+ this.util = new (0, $2c89ba54932fbba8$export$f8f26dd395d7e1bd)(page);
3311
+ }
3312
+ async openPluginGallery() {
3313
+ await this.util.openSideNavMenu("Plugin gallery");
3314
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByLabel("breadcrumb").getByText("Plugin gallery")).toBeVisible();
3315
+ }
3316
+ async openInstalledPlugins() {
3317
+ await this.util.openSideNavMenu("Installed plugins");
3318
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByLabel("breadcrumb").getByText("Installed plugins")).toBeVisible();
3319
+ }
3320
+ async searchForPlugins(searchText) {
3321
+ await this.page.getByPlaceholder("Search for plugin").fill(searchText);
3322
+ (0, $kKeXs$playwrighttest.expect)(await this.page.locator(".PluginTile__title-and-version___1HsNr span").count()).toBeGreaterThan(0);
3323
+ }
3324
+ async refreshPluginList() {
3325
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByTestId("plugin-refresh-btn")).toBeVisible();
3326
+ await this.page.getByTestId("plugin-refresh-btn").click();
3327
+ }
3328
+ async clickInstallNow(pluginName) {
3329
+ await this.page.locator("div").filter({
3330
+ hasText: "Install now" + pluginName
3331
+ }).getByRole("button").click();
3332
+ }
3333
+ async expectRestartInfo() {
3334
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByLabel("info")).toContainText("Restart Digital.ai Release to finish installing the plugin.");
3335
+ }
3336
+ async expectNewPluginInstallationInfo(pluginName) {
3337
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByText("New plugin installedPlugin")).toBeVisible();
3338
+ await (0, $kKeXs$playwrighttest.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");
3339
+ }
3340
+ async clickUpload() {
3341
+ await this.page.getByTestId("dot-button").click();
3342
+ }
3343
+ }
3344
+
3345
+
3346
+
3347
+
2762
3348
  class $be4dd73206d8e76b$export$3cac5fd37ae64b91 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2763
3349
  async openPersonalAccessTokenPage() {
2764
3350
  // await this.page.locator("button.dot-avatar").click()
@@ -2779,6 +3365,61 @@ class $be4dd73206d8e76b$export$3cac5fd37ae64b91 extends (0, $f8721861c660dd88$ex
2779
3365
 
2780
3366
 
2781
3367
 
3368
+ class $010122e1d9b28b80$export$3cf9c90f870f31bd extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
3369
+ constructor(page){
3370
+ super(page);
3371
+ this.util = new (0, $2c89ba54932fbba8$export$f8f26dd395d7e1bd)(page);
3372
+ }
3373
+ async openProfile() {
3374
+ await this.util.openSideNavMenu("Profile");
3375
+ }
3376
+ async openAccessToken() {
3377
+ await this.util.openSideNavMenu("Access tokens");
3378
+ }
3379
+ async editUserProfile(email) {
3380
+ await this.page.getByLabel("Email address").click();
3381
+ await this.page.getByLabel("Email address").fill(email);
3382
+ await this.page.getByTestId("dot-button").click();
3383
+ (0, $kKeXs$playwrighttest.expect)(await this.page.locator(".saved-text").textContent()).toContain("Last saved on ");
3384
+ }
3385
+ async generateNewAccessToken(tokenName, expiryOptions) {
3386
+ await this.page.getByRole("button", {
3387
+ name: "Generate token"
3388
+ }).click();
3389
+ await this.page.getByLabel("Token name").click();
3390
+ await this.page.getByLabel("Token name").fill(tokenName);
3391
+ await this.page.getByRole("textbox", {
3392
+ name: "Token expiration"
3393
+ }).getByLabel("Token expiration").selectOption(expiryOptions);
3394
+ await this.page.locator("label").filter({
3395
+ hasText: "Use all permissions"
3396
+ }).getByTestId("RadioButtonCheckedIcon").click();
3397
+ await this.page.getByRole("button", {
3398
+ name: "Generate",
3399
+ exact: true
3400
+ }).click();
3401
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByTestId("alert-button-tooltip").getByTestId("dot-button")).toBeVisible();
3402
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByText(tokenName)).toBeVisible();
3403
+ }
3404
+ async deleteAccessToken(tokenName) {
3405
+ await this.page.locator(".MuiTableRow-root").filter({
3406
+ hasText: tokenName
3407
+ }).getByTestId("button-icon-i").click();
3408
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByRole("heading", {
3409
+ name: "Delete token"
3410
+ })).toBeVisible();
3411
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByLabel("Delete token")).toContainText("Delete token");
3412
+ await this.page.getByRole("button", {
3413
+ name: "delete icon Delete token"
3414
+ }).click();
3415
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByText(tokenName)).not.toBeVisible();
3416
+ }
3417
+ }
3418
+
3419
+
3420
+
3421
+
3422
+
2782
3423
 
2783
3424
  class $bb5572a48b31014a$export$e2e2e1ffdce20c30 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2784
3425
  constructor(page){
@@ -2885,6 +3526,7 @@ class $3ceab7c613cabfd6$export$107317390f5aa598 extends (0, $f8721861c660dd88$ex
2885
3526
 
2886
3527
 
2887
3528
 
3529
+
2888
3530
  class $7867194f18360347$export$1d7840d5cdc861d5 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2889
3531
  constructor(page){
2890
3532
  super(page);
@@ -2905,6 +3547,7 @@ class $7867194f18360347$export$1d7840d5cdc861d5 extends (0, $f8721861c660dd88$ex
2905
3547
  async openManagePlugin() {
2906
3548
  await this.settingsIcon.click();
2907
3549
  await this.managePluginMenu.click();
3550
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByLabel("breadcrumb").getByText("Plugin gallery")).toBeVisible();
2908
3551
  }
2909
3552
  }
2910
3553
 
@@ -2921,7 +3564,7 @@ class $a642d735048996f9$export$922081b54f2ab994 extends (0, $f8721861c660dd88$ex
2921
3564
 
2922
3565
  class $a8855257f8bb2b12$export$43682cddead1dd78 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2923
3566
  async openReleaseCalendarPage() {
2924
- await this.page.goto("./#/calendar");
3567
+ await this.page.goto("./#/releases/calendar");
2925
3568
  //Define date format to verify different calendar views
2926
3569
  const today = new Date();
2927
3570
  let options = {
@@ -2939,7 +3582,7 @@ class $a8855257f8bb2b12$export$43682cddead1dd78 extends (0, $f8721861c660dd88$ex
2939
3582
  };
2940
3583
  this.monthFormat = today.toLocaleDateString("en-US", options);
2941
3584
  this.monthFormat = this.monthFormat.replace(/(\w+) (\d+)/, "$1, $2");
2942
- await (0, $kKeXs$playwrighttest.expect)(this.page).toHaveTitle("Release calendar / Home - Digital.ai Release");
3585
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".tl-viewport")).toBeVisible();
2943
3586
  return this;
2944
3587
  }
2945
3588
  async exportCalendar() {
@@ -3373,11 +4016,52 @@ class $ed2d4739e27d43c1$export$60c3bfa6385e2a10 extends (0, $f8721861c660dd88$ex
3373
4016
  async clickOnAssigneeButton(title) {
3374
4017
  await this.page.locator(`.btn-group-filter.btn-group button.btn.btn-flat[title="${title}"]`).click();
3375
4018
  }
3376
- async expectTaskNotDisplayed(taskTitle) {
4019
+ async clickOnAssignedToMe() {
4020
+ await this.page.locator(`button[title="Assigned to me"]`).click();
4021
+ }
4022
+ async clickOnAssignedToMyTeams() {
4023
+ await this.page.locator(`button[title="Assigned to my teams"]`).click();
4024
+ }
4025
+ async clickOnAssignedToAllAvailable() {
4026
+ await this.page.locator(`button[title="All available"]`).click();
4027
+ }
4028
+ async expectTaskToNotBeDisplayed(taskTitle) {
3377
4029
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator(`.row.task-inner`).filter({
3378
4030
  hasText: taskTitle
3379
4031
  }).getByText(taskTitle)).toHaveCount(0);
3380
4032
  }
4033
+ async expectTaskToBeDisplayed(taskTitle) {
4034
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(`.row.task-inner`).filter({
4035
+ hasText: taskTitle
4036
+ }).getByText(taskTitle)).toHaveCount(1);
4037
+ }
4038
+ async expectTasksToBeDisplayed(tasks) {
4039
+ for (const [taskTitle, shouldBeDisplayed] of Object.entries(tasks))if (shouldBeDisplayed) await this.expectTaskToBeDisplayed(taskTitle);
4040
+ else await this.expectTaskToNotBeDisplayed(taskTitle);
4041
+ }
4042
+ async expectTasksDisplayedInOrder(expectedTasks) {
4043
+ for (const task of expectedTasks){
4044
+ const taskElement = await this.page.locator(`[data-release-title='${task.releaseTitle}'] .row .task`).nth(task.taskPosition);
4045
+ await (0, $kKeXs$playwrighttest.expect)(taskElement).toHaveAttribute("data-task-title", task.taskTitle);
4046
+ }
4047
+ }
4048
+ async setOrderBy(orderBy) {
4049
+ await this.page.locator(".order-selector .btn:first-child").click();
4050
+ await this.page.locator(`.order-selector .bootstrap-link:has-text('${orderBy}')`).click();
4051
+ }
4052
+ async expectTaskCountForRelease(releaseTitle, expectedCount) {
4053
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(`#tasks-content #task-list-grouped-view div:has-text('${releaseTitle}') .task`)).toHaveCount(expectedCount);
4054
+ }
4055
+ async setSearchFilter(filterText) {
4056
+ await this.page.locator(".searchFilter").fill(filterText);
4057
+ }
4058
+ async clearSearchFilter() {
4059
+ await this.page.locator(".searchFilter").clear();
4060
+ }
4061
+ async setTagsFilter(filterText) {
4062
+ await this.page.locator(".tag-input").fill(filterText);
4063
+ await this.page.locator(".tag-input").press("Enter");
4064
+ }
3381
4065
  async clickOnStatusField() {
3382
4066
  await this.page.locator(".ci-filter-status.ng-isolate-scope").click();
3383
4067
  }
@@ -3767,13 +4451,13 @@ class $959d38250779aa22$var$Phase extends (0, $f8721861c660dd88$export$2b65d1d97
3767
4451
  * @param taskTypeSelector : Selector of the task
3768
4452
  */ async addTaskInPhase(taskTitle, taskGroup, taskType) {
3769
4453
  await this.phaseLocator.getByText("Add task").click();
3770
- await this.phaseLocator.getByLabel("Open", {
3771
- exact: true
3772
- }).click();
3773
- await this.phaseLocator.getByPlaceholder("Start typing to filter task").fill(taskGroup);
4454
+ await this.page.locator("#task-selector").hover();
4455
+ await this.page.locator('button[aria-label="Clear"]').click();
4456
+ await this.page.locator("#task-selector").fill(taskGroup);
3774
4457
  await this.page.getByTestId(taskType).click();
3775
- await this.phaseLocator.locator("#task-title").fill(taskTitle);
3776
- await this.phaseLocator.getByTestId("save-select-task-btn").click();
4458
+ await this.page.locator(".icon-close").click();
4459
+ await this.page.locator("#task-title").fill(taskTitle);
4460
+ await this.page.getByTestId("save-select-task-btn").click();
3777
4461
  await (0, $kKeXs$playwrighttest.expect)(this.phaseLocator.getByText(taskTitle)).toBeVisible();
3778
4462
  }
3779
4463
  async getNumberOfTasks() {
@@ -3846,16 +4530,16 @@ class $8b6ce149dd48e48b$export$7e1d435fa474ee21 extends (0, $f8721861c660dd88$ex
3846
4530
  await this.page.getByRole("button", {
3847
4531
  name: "Continue"
3848
4532
  }).click();
3849
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".dot-chip").filter({
3850
- hasText: "TEMPLATE"
3851
- })).toBeVisible();
4533
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByTestId("template-workflow-pill").getByText("Template")).toBeVisible();
3852
4534
  }
3853
4535
  async move(templateName, targetFolder) {
3854
- await this.page.locator(".title").filter({
4536
+ await this.page.locator(".template").filter({
3855
4537
  hasText: templateName
3856
- }).locator(".move").click();
4538
+ }).locator(".template-actions .move").click();
3857
4539
  await (0, $kKeXs$playwrighttest.expect)(this.page.getByText("Move template to")).toBeVisible();
3858
- await this.page.getByRole("button", {
4540
+ if (await this.page.getByRole("button", {
4541
+ name: "Expand"
4542
+ }).isEnabled()) await this.page.getByRole("button", {
3859
4543
  name: "Expand"
3860
4544
  }).click();
3861
4545
  await this.page.getByPlaceholder("Search folder...").click();
@@ -3962,9 +4646,13 @@ class $8b6ce149dd48e48b$export$7e1d435fa474ee21 extends (0, $f8721861c660dd88$ex
3962
4646
  class $4ef41cf96a5fae4c$export$b8a61e5c71402559 {
3963
4647
  constructor(page){
3964
4648
  this.page = page;
4649
+ this.dataRandomGenerator = new (0, $ce55a4fc3c0aa96a$export$e40b5d3c74b04c89)();
4650
+ this.dateUtil = new (0, $880df57ffbf6e614$export$9b575f14aa5e09a1)(page);
3965
4651
  this.folderPage = new (0, $9058d40a81bdb1f5$export$b453f08936c58edb)(page);
3966
4652
  this.globalvariable = new (0, $506d511737b3ea46$export$74ca1eaaa9a0054)(page);
3967
4653
  this.homePage = new (0, $9ef669cf95557cb5$export$36d69433c4f81145)(page);
4654
+ this.header = new (0, $00fc48341ebf7de4$export$2fb4351c41ce6e7a)(page);
4655
+ this.managePluginsPage = new (0, $b4d98f757ef92467$export$7b434e00c788d0bf)(page);
3968
4656
  this.releasePage = new (0, $9b9a8c3da392d020$export$f43492e8ac3c566)(page);
3969
4657
  this.settingsMenu = new (0, $7867194f18360347$export$1d7840d5cdc861d5)(page);
3970
4658
  this.usersPage = new (0, $3ceab7c613cabfd6$export$107317390f5aa598)(page);
@@ -3973,7 +4661,7 @@ class $4ef41cf96a5fae4c$export$b8a61e5c71402559 {
3973
4661
  this.taskListPage = new (0, $ed2d4739e27d43c1$export$60c3bfa6385e2a10)(page);
3974
4662
  this.templatePage = new (0, $959d38250779aa22$export$8c8e7207254accc2)(page);
3975
4663
  this.templateListPage = new (0, $8b6ce149dd48e48b$export$7e1d435fa474ee21)(page);
3976
- this.randomString = new (0, $ce55a4fc3c0aa96a$export$e40b5d3c74b04c89)();
4664
+ this.personalSettingsPage = new (0, $010122e1d9b28b80$export$3cf9c90f870f31bd)(page);
3977
4665
  this.releaseCalendarPage = new (0, $a8855257f8bb2b12$export$43682cddead1dd78)(page);
3978
4666
  this.releaseGroupPage = new (0, $a6a3c1345fc4767e$export$b6fbc3e67030138f)(page);
3979
4667
  this.releaseGroupTimelinePage = new (0, $3fad6a9449b6416f$export$1a0994e9c202d529)(page);
@@ -4079,12 +4767,12 @@ class $4ef41cf96a5fae4c$export$b8a61e5c71402559 {
4079
4767
  return new (0, $9b9a8c3da392d020$export$f43492e8ac3c566)(this.page);
4080
4768
  }
4081
4769
  async collapseSideView() {
4082
- await this.page.locator(".icon-collapse").click();
4083
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".icon-collapse")).not.toBeVisible();
4770
+ await this.page.getByLabel("Collapse Q").click();
4771
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByLabel("Collapse Q")).not.toBeVisible();
4084
4772
  }
4085
4773
  async expandSideView() {
4086
- await this.page.locator(".icon-expand").click();
4087
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".icon-expand")).not.toBeVisible();
4774
+ await this.page.getByLabel("Expand Q").click();
4775
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByLabel("Expand Q")).not.toBeVisible();
4088
4776
  }
4089
4777
  }
4090
4778
 
@@ -5037,6 +5725,13 @@ class $6998c6a53a9eb4fa$var$Fixtures {
5037
5725
  permissions(rolePermissions) {
5038
5726
  return this.doPost("fixtures/roles/permissions/global", rolePermissions);
5039
5727
  }
5728
+ updateUserProfile(username, profile) {
5729
+ profile.id = username;
5730
+ profile.type = "xlrelease.UserProfile";
5731
+ profile.canonicalId = username.toLowerCase();
5732
+ if (this.userProfiles.indexOf(profile.canonicalId) === -1) this.userProfiles.push(profile.canonicalId);
5733
+ return this.doPut("fixtures/userProfile", profile);
5734
+ }
5040
5735
  deleteRole(roleName) {
5041
5736
  return this.doDelete(`fixtures/role/${roleName}`);
5042
5737
  }