@digital-ai/devops-page-object-release 0.0.26 → 0.0.27

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
@@ -310,9 +310,12 @@ class $dfc4ce40cbd0eb71$export$f8e64fcf447db2bf extends (0, $9626bc9256ce31f7$ex
310
310
  await this.page.locator(".variable-label input").fill(labelname);
311
311
  if (description) await this.page.locator(".variable-description input").fill(description);
312
312
  }
313
- async selectVariableTextType(valuename) {
313
+ async selectVariableTextType(valueName, multiline) {
314
314
  await this.page.getByRole("combobox").selectOption("StringVariable");
315
- await this.page.locator(".variable-value").type(valuename);
315
+ if (multiline) {
316
+ await this.clickMultiline();
317
+ await this.page.locator(".variable-value textarea").fill(valueName);
318
+ } else await this.page.locator(".variable-value input").fill(valueName);
316
319
  }
317
320
  async selectVariableListboxType(possiblevalue, defaultValue, required) {
318
321
  await this.page.getByRole("combobox").selectOption("DropDownListBox");
@@ -326,7 +329,6 @@ class $dfc4ce40cbd0eb71$export$f8e64fcf447db2bf extends (0, $9626bc9256ce31f7$ex
326
329
  }
327
330
  await this.page.locator(".variable-value select").type(defaultValue);
328
331
  if (required) await this.page.getByRole("checkbox").check();
329
- else await this.page.getByRole("checkbox").uncheck();
330
332
  }
331
333
  async selectVariablePasswordType(possiblevalue) {
332
334
  await this.page.getByRole("combobox").selectOption("PasswordStringVariable");
@@ -351,9 +353,10 @@ class $dfc4ce40cbd0eb71$export$f8e64fcf447db2bf extends (0, $9626bc9256ce31f7$ex
351
353
  exact: true
352
354
  }).click();
353
355
  }
354
- async addVariableDate() {
356
+ async selectVariableByDate(date, monthYear) {
355
357
  await this.page.getByRole("combobox").selectOption("DateVariable");
356
358
  await this.page.getByText("Select date").click();
359
+ await this.setDate(date, monthYear);
357
360
  }
358
361
  async setDate(date, monthYear) {
359
362
  await this.dateUtil.setDate(date, monthYear);
@@ -431,12 +434,21 @@ class $dfc4ce40cbd0eb71$export$f8e64fcf447db2bf extends (0, $9626bc9256ce31f7$ex
431
434
  if (required) await this.page.getByRole("checkbox").check();
432
435
  else await this.page.getByRole("checkbox").uncheck();
433
436
  }
437
+ async clickMultiline() {
438
+ await this.page.locator("#multiline").click();
439
+ }
434
440
  async searchFolderVariable(variableName) {
435
441
  await this.page.locator(".searchFilter").fill(variableName);
436
442
  }
437
443
  async clearFolderVarSearch() {
438
444
  await this.page.locator(".searchFilter").clear();
439
445
  }
446
+ async clickFolderVariableButton() {
447
+ await this.page.getByText("Folder variables").click();
448
+ }
449
+ async clickReleaseVariableButton() {
450
+ await this.page.getByText("Release variables").click();
451
+ }
440
452
  }
441
453
  class $dfc4ce40cbd0eb71$var$VariableModal extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
442
454
  constructor(page){
@@ -548,6 +560,9 @@ class $dfc4ce40cbd0eb71$var$VariableModal extends (0, $9626bc9256ce31f7$export$2
548
560
  async setValue(value) {
549
561
  await this.page.locator(".variable-value input").fill(value);
550
562
  }
563
+ async clearValue() {
564
+ await this.page.locator(".variable-value input").clear();
565
+ }
551
566
  async clickMultiline() {
552
567
  await this.page.locator("#multiline").click();
553
568
  }
@@ -763,9 +778,21 @@ class $90bb70a7e909e500$export$519356f6c50361f7 extends (0, $9626bc9256ce31f7$ex
763
778
  async setVariable(propertyName, variableName) {
764
779
  await this.railLocator.locator(`input[id="${propertyName}"]`).fill(variableName);
765
780
  }
781
+ async expectVariable(propertyName) {
782
+ await (0, $hOLA6$expect)(this.railLocator.locator(`input[id="${propertyName}"]`)).toBeVisible();
783
+ }
766
784
  async expectValueFromString(propertyName, propertyValue) {
767
785
  return await (0, $hOLA6$expect)(this.railLocator.locator(`.input-scalar-fake-input[id="${propertyName}"]`)).toHaveText(propertyValue);
768
786
  }
787
+ async expectTo(value) {
788
+ return await (0, $hOLA6$expect)(this.railLocator.getByTestId(`dot-autocomplete-chip`)).toHaveText(value);
789
+ }
790
+ async expectSubjectToBe(value) {
791
+ return (0, $hOLA6$expect)(await this.page.locator("#notification-subject").getAttribute("value")).toContain(value);
792
+ }
793
+ async expectBodyToBe(value) {
794
+ return await (0, $hOLA6$expect)(this.page.locator(".notification-body-field p")).toHaveText(value);
795
+ }
769
796
  async setValueFromMap(propertyName, key, value) {
770
797
  await this.railLocator.locator(`.input-with-map[data-test-id="${propertyName}"] button.add-new-button`).click();
771
798
  await this.railLocator.locator(`.input-with-map[data-test-id="${propertyName}"] input[id="new-row-key-input"]`).fill(key);
@@ -853,21 +880,29 @@ class $90bb70a7e909e500$export$519356f6c50361f7 extends (0, $9626bc9256ce31f7$ex
853
880
  }).click();
854
881
  }
855
882
  }
856
- async validateAutoCompleteOptions(descriptionName, expectedDescription, variableSelection) {
883
+ async validateAutoCompleteOptionsInDescription(descriptionName, expectedVariableCount, variableToSelection) {
857
884
  await this.page.getByLabel("Double-click to edit").waitFor({
858
885
  timeout: 10000
859
886
  });
860
887
  await this.page.getByLabel("Double-click to edit").hover();
861
888
  await this.page.locator(".markdown-viewer-actions").getByTestId("edit-button").click();
862
889
  await this.page.locator("#task-description-input").fill(descriptionName);
863
- await (0, $hOLA6$expect)(this.page.locator(".dot-popper-content-wrapper .option-name")).toHaveCount(6);
864
- await this.page.locator(".dot-popper-content-wrapper .option-name").filter({
865
- hasText: variableSelection
890
+ await (0, $hOLA6$expect)(this.page.locator(".dot-popper-content-wrapper .option-name")).toHaveCount(expectedVariableCount);
891
+ if (variableToSelection) await this.page.locator(".dot-popper-content-wrapper .option-name").filter({
892
+ hasText: variableToSelection
866
893
  }).click();
867
894
  await this.page.getByRole("button", {
868
895
  name: "Save"
869
896
  }).click();
870
- await (0, $hOLA6$expect)(this.page.locator(".phase-link-container").locator(".variable").first()).toHaveText(expectedDescription);
897
+ }
898
+ // eslint-disable-next-line max-params
899
+ async validateAutoCompleteOptions(fieldLabel, value, expectedVariableCount, variableToSelect) {
900
+ await this.page.getByLabel(fieldLabel).click();
901
+ await this.page.getByLabel(fieldLabel).fill(value);
902
+ await (0, $hOLA6$expect)(this.page.getByRole("option")).toHaveCount(expectedVariableCount);
903
+ if (variableToSelect) await this.page.getByRole("option", {
904
+ name: variableToSelect
905
+ }).click();
871
906
  }
872
907
  async setReleaseTitle(releaseName) {
873
908
  await this.page.getByLabel("Release title *").fill(releaseName);
@@ -947,6 +982,51 @@ class $90bb70a7e909e500$export$519356f6c50361f7 extends (0, $9626bc9256ce31f7$ex
947
982
  name: "Abort"
948
983
  }).isVisible()).toBe(visible);
949
984
  }
985
+ async setPattern(patternName) {
986
+ await this.page.locator("#patternId").click();
987
+ await this.page.locator("#patternId").fill(patternName);
988
+ await this.page.getByRole("option", {
989
+ name: patternName
990
+ }).click();
991
+ }
992
+ async setStartDate(date) {
993
+ await this.page.locator("#startDate").click();
994
+ await this.page.locator("#startDate").fill(date);
995
+ }
996
+ async setEndDate(date) {
997
+ await this.page.locator("#endDate").click();
998
+ await this.page.locator("#endDate").fill(date);
999
+ }
1000
+ async clickVariableButton(objectID, variableValue) {
1001
+ await this.page.locator(`div[data-testid="${objectID}"] .icon-variable`).click();
1002
+ await this.page.locator(`#${objectID}`).fill(variableValue);
1003
+ await this.page.getByRole("option", {
1004
+ name: variableValue
1005
+ }).click();
1006
+ }
1007
+ async enableFallback() {
1008
+ await this.page.getByLabel("Fallback").check();
1009
+ }
1010
+ async expectDescription(description) {
1011
+ await (0, $hOLA6$expect)(this.page.getByTestId("dot-accordion-details")).toHaveText(description);
1012
+ }
1013
+ async editDescription(description) {
1014
+ await this.page.getByLabel("Double-click to edit").waitFor({
1015
+ timeout: 10000
1016
+ });
1017
+ await this.page.getByLabel("Double-click to edit").hover();
1018
+ await this.page.locator(".markdown-viewer-actions").getByTestId("edit-button").click();
1019
+ await this.page.locator("#task-description-input").clear();
1020
+ await this.page.locator("#task-description-input").fill(description);
1021
+ await this.page.getByRole("button", {
1022
+ name: "Save"
1023
+ }).click();
1024
+ }
1025
+ async expectedGateConditionDisplayed(title) {
1026
+ await (0, $hOLA6$expect)(this.page.locator(".gate-task-condition-input").filter({
1027
+ hasText: title
1028
+ })).toBeVisible();
1029
+ }
950
1030
  }
951
1031
  class $90bb70a7e909e500$export$fbbf45eff21470e3 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
952
1032
  constructor(page){
@@ -958,18 +1038,15 @@ class $90bb70a7e909e500$export$fbbf45eff21470e3 extends (0, $9626bc9256ce31f7$ex
958
1038
  }
959
1039
  async getRelease() {
960
1040
  await this.release.isVisible();
961
- const releaseValue = await this.release.getAttribute("value");
962
- return releaseValue;
1041
+ return await this.release.getAttribute("value");
963
1042
  }
964
1043
  async getPhase() {
965
1044
  await this.phase.isVisible();
966
- const phaseValue = await this.phase.getAttribute("value");
967
- return phaseValue;
1045
+ return await this.phase.getAttribute("value");
968
1046
  }
969
1047
  async getTask() {
970
1048
  await this.task.isVisible();
971
- const taskValue = await this.task.getAttribute("value");
972
- return taskValue;
1049
+ return await this.task.getAttribute("value");
973
1050
  }
974
1051
  async setRelease(releaseTitle) {
975
1052
  await this.release.click();
@@ -1013,8 +1090,8 @@ class $90bb70a7e909e500$export$fbbf45eff21470e3 extends (0, $9626bc9256ce31f7$ex
1013
1090
  }
1014
1091
  async expectVariableModeEnabled(mode) {
1015
1092
  await (0, $hOLA6$expect)(this.dependencyLocator.getByLabel("input-variable")).toBeVisible();
1016
- const variablemode = await this.dependencyLocator.getByLabel("input-variable").getAttribute("aria-pressed");
1017
- (0, $hOLA6$expect)(variablemode).toBe("" + mode + "");
1093
+ const variableMode = await this.dependencyLocator.getByLabel("input-variable").getAttribute("aria-pressed");
1094
+ (0, $hOLA6$expect)(variableMode).toBe("" + mode + "");
1018
1095
  }
1019
1096
  async clickVariable() {
1020
1097
  await this.dependencyLocator.getByLabel("input-variable").waitFor();
@@ -1028,15 +1105,15 @@ class $90bb70a7e909e500$export$fbbf45eff21470e3 extends (0, $9626bc9256ce31f7$ex
1028
1105
  (0, $hOLA6$expect)(options[i]).toContain(option);
1029
1106
  }
1030
1107
  }
1031
- async enterNewVariable(variablename) {
1108
+ async enterNewVariable(variableName) {
1032
1109
  await this.page.getByLabel("Please select a variable of").click();
1033
- await this.page.getByLabel("Please select a variable of").fill(variablename);
1110
+ await this.page.getByLabel("Please select a variable of").fill(variableName);
1034
1111
  await this.page.getByTestId("dot-action-item-btn").click();
1035
1112
  }
1036
- async selectVariable(variablename) {
1113
+ async selectVariable(variableName) {
1037
1114
  await this.page.getByLabel("Please select a variable of").click();
1038
1115
  await this.page.getByRole("option", {
1039
- name: variablename
1116
+ name: variableName
1040
1117
  }).click();
1041
1118
  }
1042
1119
  }
@@ -1045,11 +1122,11 @@ class $90bb70a7e909e500$export$fbbf45eff21470e3 extends (0, $9626bc9256ce31f7$ex
1045
1122
 
1046
1123
 
1047
1124
  class $69e86f559cdf2bd0$export$15d3f9b095bb5188 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
1048
- async expectCommentToContain(text) {
1049
- await (0, $hOLA6$expect)(this.page.locator(".task-comment .markdown-wrapper p")).toContainText(text);
1125
+ async expectCommentToContain(comment) {
1126
+ (0, $hOLA6$expect)(await this.page.locator(".markdown-wrapper").textContent()).toContain(comment);
1050
1127
  }
1051
1128
  async expectTaskIsCommentable(isCommentable) {
1052
- (0, $hOLA6$expect)(await this.page.locator("#task-comment").count()).toBe(isCommentable ? 1 : 0);
1129
+ return (0, $hOLA6$expect)(await this.page.locator("#task-comment").count()).toBe(isCommentable ? 1 : 0);
1053
1130
  }
1054
1131
  }
1055
1132
 
@@ -1107,9 +1184,12 @@ class $9c357602b6f466e7$export$aa59788fdecae2f2 extends (0, $9626bc9256ce31f7$ex
1107
1184
 
1108
1185
 
1109
1186
 
1110
- class $499d3d8c8706756b$export$b7be47b40aa877fc extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
1187
+
1188
+
1189
+ class $499d3d8c8706756b$export$e3515314c13bc477 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
1111
1190
  constructor(page){
1112
1191
  super(page);
1192
+ this.dateUtil = new (0, $71075ce65fcede1d$export$9b575f14aa5e09a1)(page);
1113
1193
  }
1114
1194
  async expectStartDateToBeDisplayed() {
1115
1195
  (0, $hOLA6$expect)(await this.page.locator(".flex-section.column").filter({
@@ -1121,6 +1201,66 @@ class $499d3d8c8706756b$export$b7be47b40aa877fc extends (0, $9626bc9256ce31f7$ex
1121
1201
  hasText: "End Date"
1122
1202
  }).locator(".task-date-view-content").isVisible()).toBe(true);
1123
1203
  }
1204
+ async switchWaitForScheduledDate() {
1205
+ await this.page.locator(".wait-for-start input").click();
1206
+ }
1207
+ async expectWaitForScheduledDateToBeChecked() {
1208
+ await (0, $hOLA6$expect)(this.page.locator(".wait-for-start input")).toBeChecked();
1209
+ }
1210
+ async expectWaitForScheduledDateToBeUnchecked() {
1211
+ await (0, $hOLA6$expect)(this.page.locator(".wait-for-start input")).not.toBeChecked();
1212
+ }
1213
+ async setDueTime(day, hour, minute) {
1214
+ await this.page.locator(".duration-view-content").click();
1215
+ if (day) {
1216
+ await this.page.locator("#days").clear();
1217
+ await this.page.locator("#days").fill(day);
1218
+ }
1219
+ if (hour) {
1220
+ await this.page.locator("#hours").clear();
1221
+ await this.page.locator("#hours").fill(hour);
1222
+ }
1223
+ if (minute) {
1224
+ await this.page.locator("#minutes").clear();
1225
+ await this.page.locator("#minutes").fill(minute);
1226
+ }
1227
+ await this.page.getByTestId("save-button").click();
1228
+ }
1229
+ async setStartDate(date, monthYear) {
1230
+ await this.page.locator(".flex-section.column").filter({
1231
+ hasText: "Start date"
1232
+ }).locator(".task-date").waitFor({
1233
+ timeout: 10000
1234
+ });
1235
+ await this.page.locator(".flex-section.column").filter({
1236
+ hasText: "Start date"
1237
+ }).locator(".task-date").click();
1238
+ await this.setDate(date, monthYear);
1239
+ }
1240
+ async setEndDate(date, monthYear) {
1241
+ await this.page.locator(".flex-section.column").filter({
1242
+ hasText: "End date"
1243
+ }).locator(".task-date").waitFor({
1244
+ timeout: 10000
1245
+ });
1246
+ await this.page.locator(".flex-section.column").filter({
1247
+ hasText: "End date"
1248
+ }).locator(".task-date").click();
1249
+ await this.setDate(date, monthYear);
1250
+ }
1251
+ async setDate(date, monthYear) {
1252
+ const prev = this.page.getByTestId("ArrowLeftIcon");
1253
+ const next = this.page.getByTestId("ArrowRightIcon");
1254
+ const monYear = this.page.locator(".MuiPickersCalendarHeader-label");
1255
+ const currentDate = await monYear.textContent();
1256
+ const thisMonth = (0, $hOLA6$moment)(monthYear, "MMMM YYYY").isBefore(currentDate);
1257
+ while(await monYear.textContent() != monthYear)if (thisMonth) await prev.click();
1258
+ else await next.click();
1259
+ await this.page.getByRole("gridcell", {
1260
+ name: "" + date + "",
1261
+ exact: true
1262
+ }).first().click();
1263
+ }
1124
1264
  }
1125
1265
 
1126
1266
 
@@ -1139,6 +1279,8 @@ class $8e39246218b802fc$export$e946776eae644790 extends (0, $9626bc9256ce31f7$ex
1139
1279
  this.config = new (0, $e44e9af564fb00f7$export$64c93bc7fb9ca44e)(page);
1140
1280
  this.condition = new (0, $3fa741329d8067d5$export$d4865631ba74f3e2)(page);
1141
1281
  this.overview = new (0, $90bb70a7e909e500$export$519356f6c50361f7)(page);
1282
+ this.scheduling = new (0, $499d3d8c8706756b$export$e3515314c13bc477)(page);
1283
+ this.startButton = this.page.getByTestId("single-action-button");
1142
1284
  this.skipMenu = this.page.getByRole("menuitem", {
1143
1285
  name: "Skip"
1144
1286
  });
@@ -1162,7 +1304,7 @@ class $8e39246218b802fc$export$e946776eae644790 extends (0, $9626bc9256ce31f7$ex
1162
1304
  }
1163
1305
  async openSchedulingRail() {
1164
1306
  await this.openRail("Scheduling");
1165
- return new (0, $499d3d8c8706756b$export$b7be47b40aa877fc)(this.page);
1307
+ return new (0, $499d3d8c8706756b$export$e3515314c13bc477)(this.page);
1166
1308
  }
1167
1309
  async openConditionRail() {
1168
1310
  await this.openRail("Conditions");
@@ -1208,6 +1350,12 @@ class $8e39246218b802fc$export$e946776eae644790 extends (0, $9626bc9256ce31f7$ex
1208
1350
  async expectTaskTitle(taskTitle) {
1209
1351
  await (0, $hOLA6$expect)(this.page.locator(".task-drawer .task-title-input .dot-view-mode-typography")).toContainText(taskTitle);
1210
1352
  }
1353
+ async setTitle(title) {
1354
+ await this.page.getByTestId("task-title-input-view-mode-typography").click();
1355
+ await this.page.getByTestId("task-title-input-input").clear();
1356
+ await this.page.getByTestId("task-title-input-input").fill(title);
1357
+ await this.page.getByTestId("task-title-input-input").press("Enter");
1358
+ }
1211
1359
  async expectTypeToContain(taskType) {
1212
1360
  await (0, $hOLA6$expect)(this.page.locator(".task-drawer .task-type")).toContainText(taskType);
1213
1361
  }
@@ -1232,26 +1380,16 @@ class $8e39246218b802fc$export$e946776eae644790 extends (0, $9626bc9256ce31f7$ex
1232
1380
  name: username
1233
1381
  })).toBeVisible();
1234
1382
  }
1235
- async expectStartNowButtonToBeVisible() {
1236
- await (0, $hOLA6$expect)(this.page.getByTestId("single-action-button")).toBeVisible();
1237
- }
1238
- async startNow(comment) {
1239
- await this.page.getByTestId("single-action-button").click();
1240
- await this.page.getByTestId("task-action-comment").fill(comment);
1241
- await this.page.getByTestId("dot-button").click();
1242
- await (0, $hOLA6$expect)(this.page.getByTestId("single-action-button")).not.toBeVisible();
1243
- }
1244
- async expectCommentsToContain(text) {
1245
- await (0, $hOLA6$expect)(this.page.locator(".task-comment-body .markdown-wrapper p")).toContainText(text);
1383
+ async expectStartButtonToBeEnabled(isEnabled = true) {
1384
+ if (isEnabled) await (0, $hOLA6$expect)(this.startButton).toBeEnabled();
1385
+ else await (0, $hOLA6$expect)(this.startButton).not.toBeEnabled();
1246
1386
  }
1247
- async switchWaitForScheduledDate() {
1248
- await this.page.locator(".wait-for-start input").click();
1249
- }
1250
- async expectWaitForScheduledDateToBeChecked() {
1251
- await (0, $hOLA6$expect)(this.page.locator(".wait-for-start input")).toBeChecked();
1252
- }
1253
- async expectWaitForScheduledDateToBeUnchecked() {
1254
- await (0, $hOLA6$expect)(this.page.locator(".wait-for-start input")).not.toBeChecked();
1387
+ async startTask(comment) {
1388
+ await this.startButton.click();
1389
+ await this.completeButton.click();
1390
+ await this.commentBox.fill(comment);
1391
+ await this.completeButton.click();
1392
+ await (0, $hOLA6$expect)(this.startButton).not.toBeVisible();
1255
1393
  }
1256
1394
  // Other locators are flaky and it can be replaced if we get locator change in the frontend
1257
1395
  async clickOnStartDate() {
@@ -1311,10 +1449,12 @@ class $8e39246218b802fc$export$e946776eae644790 extends (0, $9626bc9256ce31f7$ex
1311
1449
 
1312
1450
 
1313
1451
 
1452
+
1314
1453
  class $a546aadb4e6fa16a$export$5a82be0a2a261cc6 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
1315
1454
  constructor(page){
1316
1455
  super(page);
1317
1456
  this.releaseHeader = this.page.locator(".release-header");
1457
+ this.taskDrawer = new (0, $8e39246218b802fc$export$e946776eae644790)(page);
1318
1458
  }
1319
1459
  async enableShowDates() {
1320
1460
  await this.page.locator("#toggleIsDatesColumnsShown").check();
@@ -1328,6 +1468,105 @@ class $a546aadb4e6fa16a$export$5a82be0a2a261cc6 extends (0, $9626bc9256ce31f7$ex
1328
1468
  async expectPlanningDateColumnsShown() {
1329
1469
  (0, $hOLA6$expect)(await this.page.locator(`#gantt .gantt_grid_data .gantt_row`).first().locator(`.gantt_cell`).count()).toEqual(4);
1330
1470
  }
1471
+ async expectReleaseOnBreadcrumb(title) {
1472
+ await (0, $hOLA6$expect)(this.page.getByRole("link", {
1473
+ name: title
1474
+ })).toBeVisible();
1475
+ }
1476
+ async expectPhaseDisplayed(phaseName) {
1477
+ await (0, $hOLA6$expect)(this.page.getByTitle(phaseName, {
1478
+ exact: true
1479
+ })).toBeVisible();
1480
+ }
1481
+ async expectTaskDisplayed(taskName, isDisplayed = true) {
1482
+ if (isDisplayed) await (0, $hOLA6$expect)(this.page.getByTitle(taskName)).toBeVisible();
1483
+ else await (0, $hOLA6$expect)(this.page.getByTitle(taskName)).not.toBeVisible();
1484
+ }
1485
+ async expandGanttTree(title) {
1486
+ return await this.page.locator(".gantt_cell").filter({
1487
+ hasText: title
1488
+ }).locator(".gantt_open").click();
1489
+ }
1490
+ async expectDifferentWidth(title1, title2) {
1491
+ const releaseWidth = await this.page.locator(`.gantt_task_content`).getByText(title1, {
1492
+ exact: true
1493
+ }).getAttribute("style");
1494
+ const PhaseWidth = await this.page.locator(`.gantt_task_content`).getByText(title2, {
1495
+ exact: true
1496
+ }).getAttribute("style");
1497
+ return (0, $hOLA6$expect)(releaseWidth).not.toEqual(PhaseWidth);
1498
+ }
1499
+ async expectSameWidth(title1, title2) {
1500
+ const releaseWidth = await this.page.locator(`.gantt_task_content`).getByText(title1, {
1501
+ exact: true
1502
+ }).getAttribute("style");
1503
+ const PhaseWidth = await this.page.locator(`.gantt_task_content`).getByText(title2, {
1504
+ exact: true
1505
+ }).getAttribute("style");
1506
+ return (0, $hOLA6$expect)(releaseWidth).toEqual(PhaseWidth);
1507
+ }
1508
+ async expectElementWithClasses(title, classes) {
1509
+ const eleNumber = await this.page.locator(`.${classes.join(".")}`).locator(`.gantt_task_content`).getByText(title, {
1510
+ exact: true
1511
+ }).count();
1512
+ return (0, $hOLA6$expect)(eleNumber).toBe(1);
1513
+ }
1514
+ async resizeToDayIndex(title, index) {
1515
+ await this.page.locator(`#gantt .gantt_container .gantt_task_line`).filter({
1516
+ hasText: title
1517
+ }).click();
1518
+ await this.page.locator(`.gantt_task_line`).filter({
1519
+ hasText: title
1520
+ }).locator(`.gantt_task_drag.task_right`).hover();
1521
+ const objId = await this.page.locator(`.gantt_task_line`).filter({
1522
+ hasText: title
1523
+ }).getAttribute("task_id");
1524
+ await this.page.mouse.down();
1525
+ await this.page.locator(`div[task_id='${objId}']`).locator(".gantt_task_cell").nth(index).hover();
1526
+ await this.page.mouse.up();
1527
+ }
1528
+ async expectLinksToBeDisplayed(countOfLinks) {
1529
+ (0, $hOLA6$expect)(await this.page.locator(".gantt_task_link").count()).toEqual(countOfLinks);
1530
+ }
1531
+ async expectLeftHandleVisibility(title, visible) {
1532
+ const objId = await this.page.locator(`.gantt_task_line`).filter({
1533
+ hasText: title
1534
+ }).getAttribute("task_id");
1535
+ if (visible) {
1536
+ await this.page.locator("#gantt .gantt_container .gantt_task_line").filter({
1537
+ hasText: title
1538
+ }).hover();
1539
+ await (0, $hOLA6$expect)(this.page.locator("#gantt .gantt_container ").locator(`div[task_id="${objId}"].gantt-no-left-handle`)).not.toBeVisible();
1540
+ } else {
1541
+ await this.page.locator("#gantt .gantt_container .gantt_task_line").filter({
1542
+ hasText: title
1543
+ }).hover();
1544
+ await (0, $hOLA6$expect)(this.page.locator("#gantt .gantt_container ").locator(`div[task_id="${objId}"].gantt-no-left-handle`)).toBeVisible();
1545
+ }
1546
+ }
1547
+ async expectRightHandleVisibility(title, visible) {
1548
+ const objId = await this.page.locator(`.gantt_task_line`).filter({
1549
+ hasText: title
1550
+ }).getAttribute("task_id");
1551
+ if (visible) {
1552
+ await this.page.locator("#gantt .gantt_container .gantt_task_line").filter({
1553
+ hasText: title
1554
+ }).hover();
1555
+ await (0, $hOLA6$expect)(this.page.locator("#gantt .gantt_container").locator(`div[task_id='${objId}'].gantt-no-right-handle`)).not.toBeVisible();
1556
+ } else {
1557
+ await this.page.locator("#gantt .gantt_container .gantt_task_line").filter({
1558
+ hasText: title
1559
+ }).hover();
1560
+ await (0, $hOLA6$expect)(this.page.locator("#gantt .gantt_container").locator(`div[task_id='${objId}'].gantt-no-right-handle`)).toBeVisible();
1561
+ }
1562
+ }
1563
+ async openTaskDrawer(title) {
1564
+ await this.page.getByTitle(title).dblclick();
1565
+ return this.taskDrawer;
1566
+ }
1567
+ async openPhaseDetails(phaseName) {
1568
+ await this.page.getByTitle(phaseName).dblclick();
1569
+ }
1331
1570
  getRow(phaseName) {
1332
1571
  return new $a546aadb4e6fa16a$var$GanttRow(this.page, phaseName);
1333
1572
  }
@@ -1361,20 +1600,20 @@ class $a546aadb4e6fa16a$var$GanttRow extends (0, $9626bc9256ce31f7$export$2b65d1
1361
1600
  await this.dateUtil.setDate(date, monthYear);
1362
1601
  }
1363
1602
  async expectStartDateToBe(date) {
1364
- const dateTimePicker = await this.getFirstDate();
1365
- this.dateUtil.expectDateToBe(dateTimePicker, date);
1603
+ const dateTimePicker = this.getFirstDate();
1604
+ await this.dateUtil.expectDateToBe(await dateTimePicker, date);
1366
1605
  }
1367
1606
  async expectEndDateToBe(date) {
1368
- const dateTimePicker = await this.getLastDate();
1369
- this.dateUtil.expectDateToBe(dateTimePicker, date);
1607
+ const dateTimePicker = this.getLastDate();
1608
+ await this.dateUtil.expectDateToBe(await dateTimePicker, date);
1370
1609
  }
1371
1610
  async removeStartDate() {
1372
1611
  const dateTimePicker = await this.getFirstDateEditor();
1373
1612
  await this.dateUtil.removeDate(dateTimePicker);
1374
1613
  }
1375
1614
  async removeEndDate() {
1376
- const dateTimePicker = await this.getLastDateEditor();
1377
- await this.dateUtil.removeDate(dateTimePicker);
1615
+ const dateTimePicker = this.getLastDateEditor();
1616
+ await this.dateUtil.removeDate(await dateTimePicker);
1378
1617
  }
1379
1618
  async expectStartDateToBeInferred() {
1380
1619
  const dateTimePicker = await this.getFirstDateEditor();
@@ -1420,6 +1659,7 @@ class $c9bb587dd92143c3$export$d1077068a9cc9f17 extends (0, $9626bc9256ce31f7$ex
1420
1659
  await this.page.locator("#release-form-title").fill(name);
1421
1660
  }
1422
1661
  async setDescription(description) {
1662
+ await this.page.locator(".task-description").hover();
1423
1663
  await this.page.locator(".display > .xl-icon").first().click();
1424
1664
  await this.page.locator("textarea").click();
1425
1665
  await this.page.locator("textarea").clear();
@@ -1592,6 +1832,35 @@ class $c9bb587dd92143c3$export$d1077068a9cc9f17 extends (0, $9626bc9256ce31f7$ex
1592
1832
  async expectDescriptionToBe(description) {
1593
1833
  (0, $hOLA6$expect)(await this.page.locator(".release-description p").textContent()).toContain(description);
1594
1834
  }
1835
+ async expectReleaseNameToBe(name) {
1836
+ await (0, $hOLA6$expect)(this.page.locator('form[name="releasePropertiesForm"]')).toContainText("Properties for " + name);
1837
+ }
1838
+ async expectStartDateReadonly() {
1839
+ await (0, $hOLA6$expect)(this.page.locator("#release-properties .form-group").filter({
1840
+ hasText: "Start date"
1841
+ }).locator(".date-editor.readonly")).toBeVisible();
1842
+ }
1843
+ async expectEndDateReadonly() {
1844
+ await (0, $hOLA6$expect)(this.page.locator("#release-properties .form-group").filter({
1845
+ hasText: "End date"
1846
+ }).locator(".date-editor.readonly")).toBeVisible();
1847
+ }
1848
+ async setOwner(user) {
1849
+ await this.page.locator(".release-owner").click();
1850
+ await this.page.locator(".release-owner input").clear();
1851
+ await this.page.locator(".release-owner input").fill(user);
1852
+ }
1853
+ async expectPageTitleToBeInBreadcrumbLink(releaseName) {
1854
+ (0, $hOLA6$expect)(await this.page.locator(".dot-breadcrumbs a").allTextContents()).toContain(releaseName);
1855
+ }
1856
+ async reloadPage() {
1857
+ await this.page.reload({
1858
+ timeout: 3000
1859
+ });
1860
+ }
1861
+ async expectOwnerToBe(user) {
1862
+ await (0, $hOLA6$expect)(this.page.locator(".release-owner")).toContainText(user);
1863
+ }
1595
1864
  }
1596
1865
 
1597
1866
 
@@ -1617,6 +1886,212 @@ class $96c6280ff1c47b81$export$3bc3e140e0dcb075 extends (0, $9626bc9256ce31f7$ex
1617
1886
 
1618
1887
 
1619
1888
 
1889
+ class $19b7e7e46cfe3be0$export$649fde34d823ece7 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
1890
+ constructor(page){
1891
+ super(page);
1892
+ this.commentBox = this.page.locator(`.input-block-level`);
1893
+ this.dateUtil = new (0, $71075ce65fcede1d$export$9b575f14aa5e09a1)(page);
1894
+ this.refreshButton = this.page.getByTestId("refresh-btn");
1895
+ this.taskDrawer = new (0, $8e39246218b802fc$export$e946776eae644790)(page);
1896
+ }
1897
+ async openContextMenuForTask(taskTitle) {
1898
+ await this.page.locator(".name-cell-wrapper").filter({
1899
+ hasText: taskTitle
1900
+ }).locator(".context-menu-button").click();
1901
+ }
1902
+ // eslint-disable-next-line max-params
1903
+ async callMenuOptionsForTask(taskTitle, option, taskGroup, taskType) {
1904
+ await this.openContextMenuForTask(taskTitle);
1905
+ await this.page.locator(".dropdown-menu li").getByText(option).click();
1906
+ if (await this.commentBox.isVisible()) await this.commentBox.fill(" Automation Test Comment");
1907
+ else if (await this.page.getByRole("heading", {
1908
+ name: "Change task type"
1909
+ }).isVisible()) {
1910
+ await this.page.getByPlaceholder("Start typing to filter task").click();
1911
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1912
+ // @ts-ignore
1913
+ await this.page.locator("#task-selector").fill(taskGroup);
1914
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1915
+ // @ts-ignore
1916
+ await this.page.getByTestId(taskType).click();
1917
+ }
1918
+ if (await this.page.getByRole("button", {
1919
+ name: option,
1920
+ exact: true
1921
+ }).isVisible()) await this.page.getByRole("button", {
1922
+ name: option,
1923
+ exact: true
1924
+ }).click();
1925
+ }
1926
+ async expectAssignToUser(taskTitle, username) {
1927
+ await this.refreshButton.click();
1928
+ (0, $hOLA6$expect)(await this.page.locator(".ui-grid-row").filter({
1929
+ hasText: taskTitle
1930
+ }).locator(`span[display-user="row.entity.planItem.owner"] span`).textContent()).toContain(username);
1931
+ }
1932
+ async expectToHasGateIcon(taskTitle) {
1933
+ await (0, $hOLA6$expect)(this.page.locator(".ui-grid-row").filter({
1934
+ hasText: taskTitle
1935
+ }).locator(".marker-check-icon")).toBeVisible();
1936
+ }
1937
+ async expectTaskRowCountToBe(title, expectedCount) {
1938
+ await this.refreshButton.click();
1939
+ (0, $hOLA6$expect)(await this.page.locator(".name-cell-title").filter({
1940
+ hasText: title
1941
+ }).count()).toBe(expectedCount);
1942
+ }
1943
+ async setHeaderFilter(columnTitle, valueToFilter) {
1944
+ const filter = this.page.locator(`.ui-grid-header-cell`).filter({
1945
+ hasText: columnTitle
1946
+ }).locator(`input`);
1947
+ await filter.clear();
1948
+ await filter.fill(valueToFilter);
1949
+ }
1950
+ async expectRowCountToBe(cellCount) {
1951
+ const cont = await this.page.locator(".ui-grid-canvas .name-cell").count();
1952
+ (0, $hOLA6$expect)(cont).toBe(cellCount);
1953
+ }
1954
+ async filterStartDate(date, monthYear) {
1955
+ await this.page.locator(`.ui-grid-header-cell`).filter({
1956
+ hasText: "Start Date"
1957
+ }).locator(`input`).click();
1958
+ await this.dateUtil.setDate(date, monthYear);
1959
+ }
1960
+ async filterEndDate(date, monthYear) {
1961
+ await this.page.locator(`.ui-grid-header-cell`).filter({
1962
+ hasText: "End Date"
1963
+ }).locator(`input`).click();
1964
+ await this.dateUtil.setDate(date, monthYear);
1965
+ }
1966
+ async openTaskDrawer(taskTitle) {
1967
+ await this.page.locator(".name-cell-title").filter({
1968
+ hasText: taskTitle
1969
+ }).click();
1970
+ return this.taskDrawer;
1971
+ }
1972
+ async collapseNthRowByIndex(Indexnumber) {
1973
+ await this.page.locator(".task-group-toggle .xl-icon.arrow-down-icon").nth(Indexnumber).click();
1974
+ }
1975
+ async closePhaseModal() {
1976
+ await this.page.locator("button[type='button'] i[class='xl-icon close-icon']").click();
1977
+ }
1978
+ async expectTaskToHaveStatus(taskTitle, status) {
1979
+ await this.refreshButton.click();
1980
+ (0, $hOLA6$expect)(await this.page.locator(".ui-grid-row").filter({
1981
+ hasText: taskTitle
1982
+ }).locator(".label ").textContent()).toContain(status);
1983
+ }
1984
+ async expectOverdueOnEndDate(taskTitle) {
1985
+ (0, $hOLA6$expect)(await this.page.locator(`.ui-grid-row`).filter({
1986
+ hasText: taskTitle
1987
+ }).locator(`i.xl-icon.delay-icon.overdue-icon`).isVisible()).toBe(true);
1988
+ }
1989
+ async selectTask(taskTitle) {
1990
+ await this.page.locator(`.ui-grid-cell-contents`).filter({
1991
+ hasText: taskTitle
1992
+ }).locator(`.item-selector`).click({
1993
+ force: true
1994
+ });
1995
+ }
1996
+ async expectSelectedTasksCounter(text) {
1997
+ await (0, $hOLA6$expect)(this.page.getByTestId("release-grid-selected-tasks")).toBeVisible();
1998
+ (0, $hOLA6$expect)(await this.page.getByTestId("release-grid-selected-tasks").textContent()).toContain(text);
1999
+ }
2000
+ async clearSelection() {
2001
+ await this.page.getByTestId("release-grid-unselect-btn").click();
2002
+ return this;
2003
+ }
2004
+ async assignSelectedTasks(owner, team) {
2005
+ await this.page.getByText("Assign to").click();
2006
+ if (owner) {
2007
+ const ownerSelector = this.page.locator(".task-owner");
2008
+ await ownerSelector.focus();
2009
+ await ownerSelector.click();
2010
+ await this.page.getByLabel("*").fill(owner);
2011
+ await this.page.locator("a").filter({
2012
+ hasText: owner
2013
+ }).click();
2014
+ }
2015
+ if (team) {
2016
+ const teamSelector = this.page.locator(".task-team > .display");
2017
+ await teamSelector.focus();
2018
+ await teamSelector.click();
2019
+ await this.page.getByLabel(team, {
2020
+ exact: true
2021
+ }).selectOption(team);
2022
+ }
2023
+ await this.page.getByRole("button", {
2024
+ name: "Assign"
2025
+ }).click();
2026
+ return this;
2027
+ }
2028
+ async expectSuccessMessage(successMessage) {
2029
+ await (0, $hOLA6$expect)(this.page.getByLabel("success")).toContainText(successMessage);
2030
+ return this;
2031
+ }
2032
+ async completeSelectedTasks(comment) {
2033
+ await this.page.getByTestId("release-grid-complete-btn").click();
2034
+ await this.page.getByPlaceholder("Give feedback or place a").fill(comment);
2035
+ await this.page.getByRole("button", {
2036
+ name: "Complete"
2037
+ }).click();
2038
+ return this;
2039
+ }
2040
+ async selectFromMoreActions(menuItem) {
2041
+ await this.page.getByTestId("release-grid-dropdown-btn").click();
2042
+ await this.page.getByRole("menuitem", {
2043
+ name: menuItem
2044
+ }).click();
2045
+ if (await this.commentBox.isVisible() == true) await this.commentBox.fill(" Automation Test Comment");
2046
+ if (await this.page.getByRole("button", {
2047
+ name: menuItem,
2048
+ exact: true
2049
+ }).isVisible() == true) await this.page.getByRole("button", {
2050
+ name: menuItem,
2051
+ exact: true
2052
+ }).click();
2053
+ return this;
2054
+ }
2055
+ async addCommentToSelectedTask(comment) {
2056
+ await this.page.getByTestId("release-grid-comment-btn").click();
2057
+ await this.page.getByPlaceholder("Give feedback or place a").click();
2058
+ await this.page.getByPlaceholder("Give feedback or place a").fill(comment);
2059
+ await this.page.getByRole("button", {
2060
+ name: "Comment"
2061
+ }).click();
2062
+ await (0, $hOLA6$expect)(this.page.getByLabel("success")).toBeVisible();
2063
+ return this;
2064
+ }
2065
+ async selectSubtasks(item) {
2066
+ await this.page.locator(`.ui-grid-cell-contents`).filter({
2067
+ hasText: item
2068
+ }).locator(`.tasks-group-select`).click({
2069
+ force: true
2070
+ });
2071
+ return this;
2072
+ }
2073
+ async shiftSelectFromTo(taskFrom, taskTo) {
2074
+ await this.page.locator(`.ui-grid-cell-contents`).filter({
2075
+ hasText: taskFrom
2076
+ }).locator(`.item-selector`).click({
2077
+ force: true
2078
+ });
2079
+ await this.page.keyboard.down("Shift");
2080
+ await this.page.locator(`.ui-grid-cell-contents`).filter({
2081
+ hasText: taskTo
2082
+ }).locator(`.item-selector`).click({
2083
+ force: true
2084
+ });
2085
+ await this.page.keyboard.up("Shift");
2086
+ return this;
2087
+ }
2088
+ }
2089
+
2090
+
2091
+
2092
+
2093
+
2094
+
1620
2095
  class $87bbb6d35ad31a00$export$f8f26dd395d7e1bd extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
1621
2096
  constructor(page){
1622
2097
  super(page);
@@ -1700,8 +2175,10 @@ class $43cbcdfccb6c2a76$export$f43492e8ac3c566 extends (0, $9626bc9256ce31f7$exp
1700
2175
  defaultTimeout = 10000;
1701
2176
  constructor(page){
1702
2177
  super(page);
2178
+ this.addPhaseBtn = this.page.getByTestId("add-phase-btn");
1703
2179
  this.createPage = new (0, $05d91a1d3381a287$export$34addcca3f0ae43f)(page);
1704
2180
  this.ganttPage = new (0, $a546aadb4e6fa16a$export$5a82be0a2a261cc6)(page);
2181
+ this.tableView = new (0, $19b7e7e46cfe3be0$export$649fde34d823ece7)(page);
1705
2182
  this.taskDrawer = new (0, $8e39246218b802fc$export$e946776eae644790)(page);
1706
2183
  this.teamsPermissions = new (0, $96c6280ff1c47b81$export$3bc3e140e0dcb075)(page);
1707
2184
  this.phaseTitle = this.page.locator(".phase .phase-title");
@@ -1721,6 +2198,7 @@ class $43cbcdfccb6c2a76$export$f43492e8ac3c566 extends (0, $9626bc9256ce31f7$exp
1721
2198
  await this.page.getByRole("button", {
1722
2199
  name: "Abort"
1723
2200
  }).click();
2201
+ await this.page.locator(".progress-status-and-percentage").waitFor();
1724
2202
  await (0, $hOLA6$expect)(this.page.locator(".progress-status-and-percentage")).toContainText("Aborted");
1725
2203
  }
1726
2204
  getPhase(phaseName) {
@@ -1744,6 +2222,7 @@ class $43cbcdfccb6c2a76$export$f43492e8ac3c566 extends (0, $9626bc9256ce31f7$exp
1744
2222
  await this.page.getByRole("button", {
1745
2223
  name: "Start"
1746
2224
  }).click();
2225
+ await this.page.waitForSelector("#release");
1747
2226
  }
1748
2227
  async waitForCompletion(timeout = this.defaultTimeout) {
1749
2228
  await this.page.locator("#release.completed").waitFor({
@@ -1757,6 +2236,13 @@ class $43cbcdfccb6c2a76$export$f43492e8ac3c566 extends (0, $9626bc9256ce31f7$exp
1757
2236
  timeout: timeout
1758
2237
  });
1759
2238
  }
2239
+ async waitForTaskNeedsInput(taskTitle) {
2240
+ await (0, $hOLA6$expect)(this.page.locator(".task.waiting_for_input").getByText(taskTitle, {
2241
+ exact: true
2242
+ })).toBeVisible({
2243
+ timeout: 10000
2244
+ });
2245
+ }
1760
2246
  async waitForTaskCompletedInAdvance(taskTitle, timeout = this.defaultTimeout) {
1761
2247
  await (0, $hOLA6$expect)(this.page.locator(".task.completed_in_advance").getByText(taskTitle, {
1762
2248
  exact: true
@@ -1941,6 +2427,10 @@ class $43cbcdfccb6c2a76$export$f43492e8ac3c566 extends (0, $9626bc9256ce31f7$exp
1941
2427
  });
1942
2428
  (0, $hOLA6$expect)(await this.page.locator(".progress-status-and-percentage").textContent()).toContain("Aborted");
1943
2429
  }
2430
+ async expectInProgressStatusToBePresent() {
2431
+ await this.page.getByTestId("refresh-btn").click();
2432
+ (0, $hOLA6$expect)(await this.page.locator(".progress-status-and-percentage").textContent()).toContain("In progress");
2433
+ }
1944
2434
  async openTableView() {
1945
2435
  await this.util.openSideNavMenu("Table");
1946
2436
  await (0, $hOLA6$expect)(this.page.locator(".release-grid-container")).toBeVisible();
@@ -1973,7 +2463,7 @@ class $43cbcdfccb6c2a76$export$f43492e8ac3c566 extends (0, $9626bc9256ce31f7$exp
1973
2463
  })).toBeVisible();
1974
2464
  }
1975
2465
  async addNewPhase(phaseName) {
1976
- await this.page.getByTestId("add-phase-btn").click();
2466
+ await this.addPhaseBtn.click();
1977
2467
  if (phaseName) {
1978
2468
  await this.phaseTitle.getByText("New Phase").click();
1979
2469
  await this.phaseTitle.getByRole("textbox").clear();
@@ -2045,6 +2535,12 @@ class $43cbcdfccb6c2a76$export$f43492e8ac3c566 extends (0, $9626bc9256ce31f7$exp
2045
2535
  await this.page.getByTestId("restart-btn").click();
2046
2536
  return new $43cbcdfccb6c2a76$var$RestartPhaseModel(this.page);
2047
2537
  }
2538
+ async expectAddPhaseNotVisible() {
2539
+ await (0, $hOLA6$expect)(this.addPhaseBtn).not.toBeVisible();
2540
+ }
2541
+ async expectAddTaskNotVisible() {
2542
+ await (0, $hOLA6$expect)(this.page.locator(".add-task.link")).not.toBeVisible();
2543
+ }
2048
2544
  }
2049
2545
  class $43cbcdfccb6c2a76$var$Phase extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
2050
2546
  constructor(page, phaseName){
@@ -2137,6 +2633,23 @@ class $43cbcdfccb6c2a76$var$Phase extends (0, $9626bc9256ce31f7$export$2b65d1d97
2137
2633
  exact: true
2138
2634
  }).click();
2139
2635
  }
2636
+ async completeFromContextMenu(taskTitle, comment) {
2637
+ await this.openContextMenuForTask(taskTitle);
2638
+ await this.page.locator(".dropdown-menu li").getByText("Complete").click();
2639
+ await this.commentBox.fill(comment);
2640
+ await this.page.getByRole("button", {
2641
+ name: "Complete",
2642
+ exact: true
2643
+ }).click();
2644
+ }
2645
+ async assignToMeFromContextMenu(taskTitle) {
2646
+ await this.openContextMenuForTask(taskTitle);
2647
+ await this.page.locator(".dropdown-menu li").getByText("Assign to me").click();
2648
+ }
2649
+ async duplicateFromContextMenu(taskTitle) {
2650
+ await this.openContextMenuForTask(taskTitle);
2651
+ await this.page.locator(".dropdown-menu li").getByText("Duplicate").click();
2652
+ }
2140
2653
  async expectTemplateLabelNotToBePresent() {
2141
2654
  await (0, $hOLA6$expect)(this.page.locator(".dot-chip").filter({
2142
2655
  hasText: "TEMPLATE"
@@ -2215,7 +2728,15 @@ class $43cbcdfccb6c2a76$var$Phase extends (0, $9626bc9256ce31f7$export$2b65d1d97
2215
2728
  })).not.toBeVisible();
2216
2729
  }
2217
2730
  async expectCompletedPhase() {
2218
- await (0, $hOLA6$expect)(this.phaseLocator.locator("a")).toContainText("View all completed phases");
2731
+ await (0, $hOLA6$expect)(this.page.getByText("View all completed phases")).toBeVisible();
2732
+ }
2733
+ async clickViewAllCompletedPhase() {
2734
+ await this.page.getByText("View all completed phases").click();
2735
+ }
2736
+ async expectTaskToBePresent(taskName) {
2737
+ await (0, $hOLA6$expect)(this.phaseLocator.locator(".task").filter({
2738
+ hasText: taskName
2739
+ })).toBeVisible();
2219
2740
  }
2220
2741
  }
2221
2742
  class $43cbcdfccb6c2a76$var$RestartPhaseModel extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
@@ -2344,6 +2865,9 @@ class $4cdce1306be47ecd$export$eace2be4de1d3377 extends (0, $9626bc9256ce31f7$ex
2344
2865
  hasText: "Deleted release delivery successfully"
2345
2866
  })).toBeVisible();
2346
2867
  }
2868
+ async expectDeliveryDisplayed(deliveryName) {
2869
+ (0, $hOLA6$expect)(await this.page.locator(".fc-list-item-title").textContent()).toContain(deliveryName);
2870
+ }
2347
2871
  }
2348
2872
 
2349
2873
 
@@ -2890,6 +3414,14 @@ class $50c91328c9110668$export$b453f08936c58edb extends (0, $9626bc9256ce31f7$ex
2890
3414
  await (0, $hOLA6$expect)(this.page.getByLabel("breadcrumb").getByText("Variables")).toBeVisible();
2891
3415
  return this.variables;
2892
3416
  }
3417
+ async openCustomDashboard() {
3418
+ await this.util.openSideNavMenu("Custom dashboards");
3419
+ await (0, $hOLA6$expect)(this.page.getByLabel("breadcrumb").getByText("Custom dashboards")).toBeVisible();
3420
+ }
3421
+ async openReleaseByName(releaseName) {
3422
+ await this.page.getByTitle(releaseName).click();
3423
+ await (0, $hOLA6$expect)(this.page.getByLabel("breadcrumb").getByText("Flow")).toBeVisible();
3424
+ }
2893
3425
  }
2894
3426
 
2895
3427
 
@@ -5486,6 +6018,7 @@ class $2cbb78eec86d0a9f$export$2edf430132ca35d0 extends (0, $9626bc9256ce31f7$ex
5486
6018
  }
5487
6019
 
5488
6020
 
6021
+
5489
6022
  class $e72552cbf941ecfa$export$b8a61e5c71402559 {
5490
6023
  constructor(page){
5491
6024
  this.page = page;
@@ -5510,6 +6043,7 @@ class $e72552cbf941ecfa$export$b8a61e5c71402559 {
5510
6043
  this.releaseGroupPage = new (0, $cc2d15e53de5cef7$export$b6fbc3e67030138f)(page);
5511
6044
  this.releaseGroupTimelinePage = new (0, $cc231ea61b77c7a2$export$1a0994e9c202d529)(page);
5512
6045
  this.releaseListPage = new (0, $5359280e98d97ff9$export$a678525e79c4ccc4)(page);
6046
+ this.releaseGanttPage = new (0, $a546aadb4e6fa16a$export$5a82be0a2a261cc6)(page);
5513
6047
  this.rolesPage = new (0, $208f399edeb35aa2$export$7a5b979a220f477c)(page);
5514
6048
  this.util = new (0, $87bbb6d35ad31a00$export$f8f26dd395d7e1bd)(page);
5515
6049
  this.workflowCatalogPage = new (0, $2c7e9876d54521fb$export$5628dfd1b9e94785)(page);
@@ -5530,6 +6064,10 @@ class $e72552cbf941ecfa$export$b8a61e5c71402559 {
5530
6064
  async openRelease(id) {
5531
6065
  return this.openReleaseOrTemplate(id, true);
5532
6066
  }
6067
+ async openPlannerView(releaseId) {
6068
+ await this.page.goto(`#/releases/${releaseId}/planner`);
6069
+ return new (0, $a546aadb4e6fa16a$export$5a82be0a2a261cc6)(this.page);
6070
+ }
5533
6071
  async openApplicationsPage() {
5534
6072
  return new (0, $c313b10398604df2$export$1533b625ec0c75e2)(this.page).goToApplicationsPage();
5535
6073
  }
@@ -5737,7 +6275,9 @@ const $f86fbaaa8b4e8c61$export$45f0aca2596a2bb3 = function() {
5737
6275
  processTasks(subTask, task, idx);
5738
6276
  });
5739
6277
  (0, $hOLA6$lodasheach)(task.templateVariables, function(variable, idx) {
5740
- if (variable.value !== undefined) (0, $hOLA6$lodashdefaults)(variable, getVariableEntity(variable.value, variable.key, task.id, idx));
6278
+ if (variable.value !== undefined) // eslint-disable-next-line @typescript-eslint/ban-ts-comment
6279
+ // @ts-ignore
6280
+ (0, $hOLA6$lodashdefaults)(variable, getVariableEntity(variable.value, variable.key, task.id, idx));
5741
6281
  });
5742
6282
  (0, $hOLA6$lodasheach)(task.attachments, function(attachment, idx) {
5743
6283
  attachment.type = ATTACHMENT_TYPE;
@@ -5808,7 +6348,9 @@ const $f86fbaaa8b4e8c61$export$45f0aca2596a2bb3 = function() {
5808
6348
  attachment.id = `${release.id}/Attachment${index}`;
5809
6349
  });
5810
6350
  (0, $hOLA6$lodashforEach)(release.variables, function(variable, index) {
5811
- if (variable.value !== undefined) (0, $hOLA6$lodashdefaults)(variable, getVariableEntity(variable.value, variable.key, release.id, index));
6351
+ if (variable.value !== undefined) // eslint-disable-next-line @typescript-eslint/ban-ts-comment
6352
+ // @ts-ignore
6353
+ (0, $hOLA6$lodashdefaults)(variable, getVariableEntity(variable.value, variable.key, release.id, index));
5812
6354
  if (variable.valueProvider) (0, $hOLA6$lodashdefaults)(variable.valueProvider, getValueProviderConfigurationEntity(variable.id));
5813
6355
  });
5814
6356
  (0, $hOLA6$lodashforEach)((0, $hOLA6$lodashtoPairs)(release.variableValues), function(keyValue, index) {
@@ -5865,6 +6407,7 @@ class $80c3ae34677b4324$var$Fixtures {
5865
6407
  folderIds = [];
5866
6408
  usernames = [];
5867
6409
  userProfiles = [];
6410
+ folderVariableIds = [];
5868
6411
  constructor(request, page){
5869
6412
  this.request = request;
5870
6413
  this.page = page;
@@ -5916,18 +6459,26 @@ class $80c3ae34677b4324$var$Fixtures {
5916
6459
  folder.type = "xlrelease.Folder";
5917
6460
  let teams = folder.teams;
5918
6461
  delete folder.teams;
5919
- //ToDo: Add Children
5920
- /* eslint-disable @typescript-eslint/no-unused-vars */ const children = folder.children || [];
6462
+ const children = folder.children || [];
5921
6463
  delete folder.children;
6464
+ const folderVariables = (folder.variables || []).map((variable)=>{
6465
+ variable.folderId = folder.id;
6466
+ return variable;
6467
+ });
6468
+ delete folder.variables;
5922
6469
  const response = await this.doPost(`api/v1/folders/${parentId}`, folder);
5923
6470
  // Add the folder ID to the list
5924
6471
  this.folderIds.push(folder.id);
5925
6472
  // If teams are provided, send a request to add teams to the folder
5926
6473
  if (teams) {
5927
6474
  teams = this.addSystemTeams(teams);
5928
- const newresponse = await this.doPost(`api/v1/folders/${folder.id}/teams`, teams);
5929
- return newresponse;
6475
+ return await this.doPost(`api/v1/folders/${folder.id}/teams`, teams);
6476
+ }
6477
+ if (children && children.length > 0) {
6478
+ await this.folderVariable(folderVariables);
6479
+ return await this.folder(children[0]);
5930
6480
  }
6481
+ if (folderVariables && folderVariables.length > 0) return await this.folderVariable(folderVariables);
5931
6482
  return response;
5932
6483
  }
5933
6484
  createFolder(folderJson) {
@@ -5936,6 +6487,18 @@ class $80c3ae34677b4324$var$Fixtures {
5936
6487
  folderJson
5937
6488
  ]);
5938
6489
  }
6490
+ async folderVariable(variable) {
6491
+ // Flatten and process the variables
6492
+ const variables = [].concat(variable).flat()// eslint-disable-next-line @typescript-eslint/no-shadow
6493
+ .map((variable)=>{
6494
+ variable.id = null;
6495
+ variable.type = variable.type || "xlrelease.StringVariable";
6496
+ variable.requiresValue = false;
6497
+ variable.showOnReleaseStart = false;
6498
+ return variable;
6499
+ });
6500
+ return await this.doPost("fixtures/folders/variables", variables);
6501
+ }
5939
6502
  trigger(trigger) {
5940
6503
  this.triggerIds.push(trigger.id);
5941
6504
  return this.doPost("fixtures/trigger", trigger);
@@ -5949,6 +6512,9 @@ class $80c3ae34677b4324$var$Fixtures {
5949
6512
  globalRoles(rolePrincipals) {
5950
6513
  return this.doPost(`api/v1/roles/${rolePrincipals.name}`, rolePrincipals);
5951
6514
  }
6515
+ dashboard(dashboard) {
6516
+ return this.doPost("fixtures/dashboard", dashboard);
6517
+ }
5952
6518
  deleteGlobalRole(roleName) {
5953
6519
  return this.doDelete(`api/v1/roles/${roleName}`);
5954
6520
  }
@@ -6025,6 +6591,17 @@ class $80c3ae34677b4324$var$Fixtures {
6025
6591
  deleteRiskProfile(riskProfileId) {
6026
6592
  return this.doDelete(`fixtures/riskProfiles/${riskProfileId}`);
6027
6593
  }
6594
+ // Release delivery pattern
6595
+ createDeliveryPattern(delivery, shouldResetPattern = true) {
6596
+ return this.doPost(`fixtures/deliveries/patterns/${shouldResetPattern}`, delivery);
6597
+ }
6598
+ // Release deliveries
6599
+ createDelivery(delivery) {
6600
+ return this.doPost("fixtures/deliveries", delivery);
6601
+ }
6602
+ deleteDelivery(delivery) {
6603
+ return this.doDelete(`fixtures/deliveries/${delivery}`);
6604
+ }
6028
6605
  async cleanAll() {
6029
6606
  for (const username of this.usernames)await this.deleteUser(username);
6030
6607
  for (const userProfile of this.userProfiles)await this.deleteUserProfile(userProfile);