@digital-ai/devops-page-object-release 0.0.21 → 0.0.22

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
@@ -26,6 +26,7 @@ class $9626bc9256ce31f7$export$2b65d1d97338f32b {
26
26
 
27
27
 
28
28
 
29
+
29
30
  class $05d91a1d3381a287$export$34addcca3f0ae43f extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
30
31
  constructor(page){
31
32
  super(page);
@@ -56,6 +57,25 @@ class $05d91a1d3381a287$export$34addcca3f0ae43f extends (0, $9626bc9256ce31f7$ex
56
57
  name: "Create"
57
58
  }).click();
58
59
  }
60
+ async expectVariablesCountToBe(count) {
61
+ await (0, $hOLA6$expect)(this.page.locator(".variable-editor .form-group")).toHaveCount(count);
62
+ }
63
+ async expectContainingVariable(variableName, value) {
64
+ (0, $hOLA6$expect)(await this.page.locator(`#form-${variableName} .text span`).textContent()).toBe(value);
65
+ }
66
+ async selectTemplate(templateName) {
67
+ await this.page.getByPlaceholder("No template").click();
68
+ await this.page.getByPlaceholder("No template").clear();
69
+ await this.page.getByPlaceholder("No template").fill(templateName);
70
+ await this.page.getByText(templateName).click();
71
+ }
72
+ async removeTemplate() {
73
+ await this.page.locator(".template-select .close-icon").click();
74
+ }
75
+ async setValueForVariables(variableName, value) {
76
+ await this.page.locator(`#form-${variableName} .display`).click();
77
+ await this.page.locator(`input[name="${variableName}"]`).fill(value);
78
+ }
59
79
  }
60
80
 
61
81
 
@@ -154,25 +174,273 @@ async function $251ce8153733e46f$export$a0f926f04148e5d2(locators) {
154
174
  }
155
175
 
156
176
 
177
+
178
+
179
+
180
+ class $71075ce65fcede1d$export$9b575f14aa5e09a1 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
181
+ constructor(page){
182
+ super(page);
183
+ }
184
+ async openDatePicker(selector) {
185
+ await this.page.locator(`${selector} .date`).click();
186
+ }
187
+ /**
188
+ * Setting date, month and year from calendar picker
189
+ */ async setDate(date, monthYear) {
190
+ const prev = this.page.locator(".datepicker-days .prev");
191
+ const next = this.page.locator(".datepicker-days .next");
192
+ const monYear = this.page.locator(".datepicker-days .datepicker-switch");
193
+ const currentYear = await monYear.textContent();
194
+ const thisMonth = (0, $hOLA6$moment)(monthYear, "MMMM YYYY").isBefore(currentYear);
195
+ while(await monYear.textContent() != monthYear)if (thisMonth) await prev.click();
196
+ else await next.click();
197
+ await this.page.getByRole("cell", {
198
+ name: "" + date + "",
199
+ exact: true
200
+ }).first().click();
201
+ }
202
+ async expectDurationToBe(duration) {
203
+ (0, $hOLA6$expect)(await this.page.locator(".duration-editor").textContent()).toBe(duration);
204
+ }
205
+ async setDuration(days, hours, mins) {
206
+ if (typeof days !== "undefined") await this.page.locator(".days").fill(days);
207
+ if (typeof hours !== "undefined") await this.page.locator(".hours").fill(hours);
208
+ if (typeof mins !== "undefined") await this.page.locator(".minutes").fill(mins);
209
+ await this.page.keyboard.press("Enter");
210
+ }
211
+ async expectTimeToBe(selector, format, date) {
212
+ if (typeof date === "string") date = new Date(date);
213
+ const formattedDate = (0, $hOLA6$moment)(date).format(format);
214
+ const input = this.page.locator(`${selector}`);
215
+ await (0, $hOLA6$expect)(input).toBeVisible();
216
+ const value = await input.inputValue();
217
+ (0, $hOLA6$expect)(value).toBe(formattedDate);
218
+ }
219
+ /**
220
+ *
221
+ * @returns Getting current month and year in the format "MonthName YYYY"
222
+ */ async getCurrentMonthYear() {
223
+ const monthNames = [
224
+ "January",
225
+ "February",
226
+ "March",
227
+ "April",
228
+ "May",
229
+ "June",
230
+ "July",
231
+ "August",
232
+ "September",
233
+ "October",
234
+ "November",
235
+ "December"
236
+ ];
237
+ const d = new Date();
238
+ const month = monthNames[d.getMonth()];
239
+ const year = d.getFullYear();
240
+ return `${month} ${year}`;
241
+ }
242
+ /**
243
+ *
244
+ * @returns Getting current date in the format "dd MonthName YYYY"
245
+ */ async getCurrentDate() {
246
+ const d = new Date();
247
+ const date = d.getDate();
248
+ const monthYear = await this.getCurrentMonthYear();
249
+ return `${date} ${monthYear}`;
250
+ }
251
+ /**
252
+ *
253
+ * @param days Number of days to add to current date within the current month
254
+ * @returns
255
+ */ async getFutureDate(days) {
256
+ const d = new Date();
257
+ d.setDate(d.getDate() + days);
258
+ const date = d.getDate();
259
+ const monthYear = await this.getCurrentMonthYear();
260
+ return `${date} ${monthYear}`;
261
+ }
262
+ async removeDate(selector) {
263
+ return await selector.locator(`.remove`).click();
264
+ }
265
+ async expectDateNotDeletable(selector) {
266
+ await (0, $hOLA6$expect)(selector.locator(`.remove`)).not.toBeVisible();
267
+ }
268
+ async expectDateToBe(selector, date) {
269
+ return await this.expectInputContainingDate(selector, date);
270
+ }
271
+ async expectDateToBeInferred(selector) {
272
+ await (0, $hOLA6$expect)(selector.locator(`input.light-text`).first()).toBeVisible();
273
+ }
274
+ async expectNoDate(selector) {
275
+ (0, $hOLA6$expect)(selector.locator(`.date-placeholder`)).toBeVisible();
276
+ }
277
+ async expectInputContainingDate(inputLocator, date) {
278
+ await (0, $hOLA6$expect)(inputLocator).toBeVisible();
279
+ const attribute = await inputLocator.getAttribute("value");
280
+ (0, $hOLA6$expect)(attribute).toContain(date);
281
+ }
282
+ }
283
+
284
+
157
285
  class $f48771b486a3eb8f$export$a87f0ae8695e74be extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
286
+ constructor(page){
287
+ super(page);
288
+ this.addListValue = this.page.locator(".variable-selector .xl-components-input-full input");
289
+ this.addVariableValue = this.page.locator(".variable-value .xl-components-input-full input");
290
+ this.dateUtil = new (0, $71075ce65fcede1d$export$9b575f14aa5e09a1)(page);
291
+ this.listAddButton = this.page.getByRole("button", {
292
+ name: "Add"
293
+ });
294
+ }
158
295
  async openVariable(variableKey) {
159
296
  await this.page.locator(`.variables-list .variable`).getByText(variableKey).click();
160
297
  return new $f48771b486a3eb8f$var$ReleaseVariableModal(this.page);
161
298
  }
299
+ async addNewVariable(variableName, labelname, description) {
300
+ await this.page.locator("#action-toolbar").getByTestId("dot-button").click();
301
+ await this.page.fill(`[name="fieldKey"]`, variableName);
302
+ await this.page.locator(".variable-label input").fill(labelname);
303
+ if (description) await this.page.locator(".variable-description input").fill(description);
304
+ }
305
+ async selectVariableTextType(valuename) {
306
+ await this.page.getByRole("combobox").selectOption("StringVariable");
307
+ await this.page.locator(".variable-value").type(valuename);
308
+ }
309
+ async selectVariableListboxType(possiblevalue, defaultValue, required) {
310
+ await this.page.getByRole("combobox").selectOption("DropDownListBox");
311
+ if (possiblevalue instanceof Array) for (const value of possiblevalue){
312
+ await this.addListValue.fill(value);
313
+ await this.listAddButton.click();
314
+ }
315
+ else {
316
+ await this.addListValue.fill(possiblevalue);
317
+ await this.listAddButton.click();
318
+ }
319
+ await this.page.locator(".variable-value select").type(defaultValue);
320
+ if (required) await this.page.getByRole("checkbox").check();
321
+ else await this.page.getByRole("checkbox").uncheck();
322
+ }
323
+ async selectVariablePasswordType(possiblevalue) {
324
+ await this.page.getByRole("combobox").selectOption("PasswordStringVariable");
325
+ await this.page.locator('input[type="password"]').type(possiblevalue);
326
+ }
327
+ async selectVariableCheckboxType() {
328
+ await this.page.getByRole("combobox").selectOption("BooleanVariable");
329
+ await this.page.getByRole("checkbox").check();
330
+ }
331
+ async selectVariableNumberType(possiblevalue) {
332
+ await this.page.getByRole("combobox").selectOption("IntegerVariable");
333
+ await this.page.locator('input[ng-model="var.value"]').fill(possiblevalue);
334
+ }
335
+ async selectVariableMultiListType(possiblevalue1, possiblevalue2) {
336
+ await this.page.getByRole("combobox").selectOption("MultiSelectListBox");
337
+ await this.addListValue.fill(possiblevalue1);
338
+ await this.listAddButton.click();
339
+ await this.addListValue.fill(possiblevalue2);
340
+ await this.listAddButton.click();
341
+ await this.page.locator(".react-tagsinput").click();
342
+ await this.page.getByText("Select all", {
343
+ exact: true
344
+ }).click();
345
+ }
346
+ async addVariableDate() {
347
+ await this.page.getByRole("combobox").selectOption("DateVariable");
348
+ await this.page.getByText("Select date").click();
349
+ }
350
+ async setDate(date, monthYear) {
351
+ await this.dateUtil.setDate(date, monthYear);
352
+ }
353
+ async addVariableKeyValueMap(keys1, values1) {
354
+ await this.page.getByRole("combobox").selectOption("MapStringStringVariable");
355
+ await this.page.getByPlaceholder("key").fill(keys1);
356
+ await this.page.getByPlaceholder("Value").fill(values1);
357
+ await this.listAddButton.click();
358
+ await this.page.locator(".xl-map-string-string-div-buttons .search-icon").click();
359
+ await this.page.getByRole("row", {
360
+ name: "Search"
361
+ }).getByRole("textbox").fill(keys1);
362
+ const detail = await this.page.locator("table.table-condensed span").allInnerTexts();
363
+ (0, $hOLA6$expect)(detail[0]).toEqual(keys1);
364
+ (0, $hOLA6$expect)(detail[1]).toEqual(values1);
365
+ }
366
+ async addVariableSet(possiblevalue1) {
367
+ await this.page.getByRole("combobox").selectOption("SetStringVariable");
368
+ await this.page.locator(".dip-input input").fill(possiblevalue1);
369
+ await this.listAddButton.click();
370
+ }
371
+ async submitTheVariable() {
372
+ const createButton = this.page.locator(".modal-footer .save");
373
+ await (0, $hOLA6$expect)(createButton).toBeEnabled();
374
+ await createButton.scrollIntoViewIfNeeded();
375
+ await createButton.click();
376
+ // Expect is needed here to avoid flackiness on clicking create button
377
+ await (0, $hOLA6$expect)(createButton).not.toBeVisible();
378
+ }
379
+ async expectVariableWithNameValueAndType(name, value, type) {
380
+ const rowLocator = await this.page.locator(".variable .data-row").allTextContents();
381
+ (0, $hOLA6$expect)(rowLocator.toString()).toContain(name);
382
+ (0, $hOLA6$expect)(rowLocator.toString()).toContain(value);
383
+ (0, $hOLA6$expect)(rowLocator.toString()).toContain(type);
384
+ }
385
+ async clickEditVariable(variableName) {
386
+ await this.page.locator("[id='variables-filter']").fill(variableName);
387
+ await this.page.getByText("Edit").first().click();
388
+ return new $f48771b486a3eb8f$var$ReleaseVariableModal(this.page);
389
+ }
390
+ async clickDeleteVariable(variableName) {
391
+ await this.page.locator("[id='variables-filter']").fill(variableName);
392
+ await this.page.locator(".action .delete-icon").first().click();
393
+ return new $f48771b486a3eb8f$var$DeleteVariableModel(this.page);
394
+ }
395
+ async expectVariablesCountToBe(count) {
396
+ await (0, $hOLA6$expect)(this.page.locator(".variable .data-row")).toHaveCount(count);
397
+ }
398
+ async expectVariableNotPresent(variableName) {
399
+ await (0, $hOLA6$expect)(this.page.locator(".variable").filter({
400
+ hasText: variableName
401
+ })).not.toBeVisible();
402
+ }
403
+ async clearSearch() {
404
+ await this.page.locator("[id='variables-filter']").clear();
405
+ }
406
+ async switchPossibleValuesToVariable(variableName) {
407
+ await this.page.locator(".variable-toggle button").click();
408
+ await this.page.locator(".ui-autocomplete-input").fill(variableName);
409
+ await this.page.locator(".ui-menu-item-wrapper").filter({
410
+ hasText: `${variableName}`
411
+ }).click();
412
+ }
413
+ async selectVariableListboxTypeWithVariable(variableName, defaultValue, required) {
414
+ await this.page.getByRole("combobox").selectOption("DropDownListBox");
415
+ await this.page.locator(".variable-toggle button").click();
416
+ await this.page.locator(".ui-autocomplete-input").fill(variableName);
417
+ await this.page.locator(".ui-menu-item-wrapper").filter({
418
+ hasText: `${variableName}`
419
+ }).click();
420
+ await this.page.locator(".variable-value select").type(defaultValue);
421
+ if (required) await this.page.getByRole("checkbox").check();
422
+ else await this.page.getByRole("checkbox").uncheck();
423
+ }
162
424
  }
163
425
  class $f48771b486a3eb8f$var$ReleaseVariableModal extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
426
+ constructor(page){
427
+ super(page);
428
+ this.dateUtil = new (0, $71075ce65fcede1d$export$9b575f14aa5e09a1)(page);
429
+ }
164
430
  async expectValue(locators, expectFn) {
165
431
  const [index, locator] = await (0, $251ce8153733e46f$export$a0f926f04148e5d2)(locators);
166
- await expectFn[index](locator);
432
+ expectFn[index](locator);
167
433
  }
168
434
  async expectValueToBe(value) {
169
435
  await this.expectValue([
170
436
  this.page.locator("#modal .variable-value input"),
171
437
  this.page.locator("#modal .variable-value .field-readonly"),
172
- this.page.locator("#modal .variable-value .xl-map-string-string")
438
+ this.page.locator("#modal .variable-value .xl-map-string-string"),
439
+ this.page.locator("#modal .variable-value .xl-list-display-mode .text-container")
173
440
  ], [
174
441
  (l)=>(0, $hOLA6$expect)(l).toHaveValue(value),
175
442
  (l)=>(0, $hOLA6$expect)(l).toHaveText(value),
443
+ (l)=>(0, $hOLA6$expect)(l).toHaveText(value),
176
444
  (l)=>(0, $hOLA6$expect)(l).toHaveText(value)
177
445
  ]);
178
446
  }
@@ -180,16 +448,155 @@ class $f48771b486a3eb8f$var$ReleaseVariableModal extends (0, $9626bc9256ce31f7$e
180
448
  await this.expectValue([
181
449
  this.page.locator("#modal .variable-value input"),
182
450
  this.page.locator("#modal .variable-value .field-readonly"),
183
- this.page.locator("#modal .variable-value .xl-map-string-string")
451
+ this.page.locator("#modal .variable-value .xl-map-string-string"),
452
+ this.page.locator("#modal .variable-value .xl-list-display-mode")
184
453
  ], [
185
454
  (l)=>(0, $hOLA6$expect)(l.inputValue()).toContain(value),
186
455
  (l)=>(0, $hOLA6$expect)(l).toContainText(value),
456
+ (l)=>(0, $hOLA6$expect)(l).toContainText(value),
187
457
  (l)=>(0, $hOLA6$expect)(l).toContainText(value)
188
458
  ]);
189
459
  }
190
460
  async close() {
191
461
  await this.page.locator("#modal .modal-header button.close").click();
192
462
  }
463
+ async expectPossibleValues(possiblevalue) {
464
+ const listLocator = await this.page.locator(".editor .xl-list-row").allInnerTexts();
465
+ if (possiblevalue instanceof Array) for (const value of possiblevalue)(0, $hOLA6$expect)(listLocator).toContain(value);
466
+ else (0, $hOLA6$expect)(listLocator).toContain(possiblevalue);
467
+ }
468
+ async expectPossibleVariableValues(possiblevariablevalue) {
469
+ await (0, $hOLA6$expect)(this.page.locator(".variable-dropdown input")).toHaveValue(possiblevariablevalue);
470
+ }
471
+ async addPossibleValue(value) {
472
+ if (value instanceof Array) for (const li of value){
473
+ await this.page.locator(".xl-components-input-full input").fill(li);
474
+ await this.page.getByRole("button", {
475
+ name: "Add"
476
+ }).click();
477
+ }
478
+ else {
479
+ await this.page.locator(".xl-components-input-full input").fill(value);
480
+ await this.page.getByRole("button", {
481
+ name: "Add"
482
+ }).click();
483
+ }
484
+ }
485
+ async selectVariableValue(defaultValue) {
486
+ await this.page.locator(".variable-value select").selectOption(defaultValue);
487
+ }
488
+ async save() {
489
+ const saveButton = this.page.locator("#modal .modal-footer .save");
490
+ await saveButton.scrollIntoViewIfNeeded();
491
+ await saveButton.click({
492
+ delay: 2000
493
+ });
494
+ // Expect is needed here to avoid flackiness on clicking save button on modal window
495
+ await (0, $hOLA6$expect)(saveButton).not.toBeVisible();
496
+ }
497
+ async createPossibleValuesVariable(variableName) {
498
+ await this.page.locator(".variable-toggle button").click();
499
+ await this.page.locator(".ui-autocomplete-input").fill(variableName);
500
+ await this.page.locator(".ui-menu-item-wrapper").filter({
501
+ hasText: `${variableName}`
502
+ }).click();
503
+ }
504
+ async expectVariableValueToBe(value) {
505
+ (0, $hOLA6$expect)(await this.page.locator('.variable-value select option[selected="selected"]').textContent()).toBe(value);
506
+ }
507
+ async expectNoVariablesInList() {
508
+ await (0, $hOLA6$expect)(this.page.getByText("No variables defined.")).toBeVisible();
509
+ }
510
+ async expectNameInput(value) {
511
+ await (0, $hOLA6$expect)(this.page.locator(`#modal .variable-name input`)).toHaveValue(value);
512
+ }
513
+ async expectLabel(value) {
514
+ await (0, $hOLA6$expect)(this.page.locator("#modal .variable-label input")).toHaveValue(value);
515
+ }
516
+ async expectRequired(value) {
517
+ if (value == true) await (0, $hOLA6$expect)(this.page.locator('.form-group input[ng-model="var.requiresValue"]')).toBeChecked();
518
+ else await (0, $hOLA6$expect)(this.page.locator('.form-group input[ng-model="var.requiresValue"]')).not.toBeChecked();
519
+ }
520
+ async setDescription(description) {
521
+ await this.page.locator(".variable-description input").click();
522
+ await this.page.locator(".variable-description input").clear();
523
+ await this.page.locator(".variable-description input").fill(description);
524
+ }
525
+ async setLabel(labelValue) {
526
+ await this.page.locator(".variable-label input").fill(labelValue);
527
+ }
528
+ async setDate(date, monthYear) {
529
+ await this.page.locator("#modal .date").click();
530
+ await this.dateUtil.setDate(date, monthYear);
531
+ }
532
+ async setValue(value) {
533
+ await this.page.locator(".variable-value input").fill(value);
534
+ }
535
+ }
536
+ class $f48771b486a3eb8f$var$DeleteVariableModel extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
537
+ constructor(page){
538
+ super(page);
539
+ this.model = new $f48771b486a3eb8f$var$ReleaseVariableModal(page);
540
+ this.dateUtil = new (0, $71075ce65fcede1d$export$9b575f14aa5e09a1)(page);
541
+ }
542
+ async deleteVariable() {
543
+ await (0, $hOLA6$expect)(this.page.getByRole("heading", {
544
+ name: "Replace and delete"
545
+ })).toBeVisible();
546
+ await this.page.getByRole("button", {
547
+ name: "Delete"
548
+ }).click();
549
+ }
550
+ async replaceItWithVariable(variable) {
551
+ await this.model.createPossibleValuesVariable(variable);
552
+ }
553
+ async replaceItwithValue(value) {
554
+ await this.page.locator(".display").click();
555
+ await this.page.getByLabel("*").fill(value);
556
+ }
557
+ async clickReplaceAndDelete() {
558
+ await this.page.getByRole("button", {
559
+ name: "Replace and delete"
560
+ }).click();
561
+ }
562
+ async addValue(value) {
563
+ await this.page.locator(".xl-components-input-full input").fill(value);
564
+ await this.page.getByRole("button", {
565
+ name: "Add"
566
+ }).click();
567
+ }
568
+ async remove(value) {
569
+ await this.page.locator("li").filter({
570
+ hasText: value
571
+ }).locator("i.close-icon").click();
572
+ }
573
+ async expectReplacementPromptDisplayed() {
574
+ await (0, $hOLA6$expect)(this.page.getByRole("heading", {
575
+ name: "Replace and delete"
576
+ })).toBeVisible();
577
+ }
578
+ async close() {
579
+ await this.page.locator("#modal .modal-header button.close").click();
580
+ }
581
+ async removeItemOnSet(value) {
582
+ await this.page.locator("tr").filter({
583
+ hasText: value
584
+ }).locator("i.close-icon").click();
585
+ }
586
+ async addValueForSet(key, value) {
587
+ await this.page.locator(".input-key").fill(key);
588
+ await this.page.locator(".input-value").fill(value);
589
+ }
590
+ async replaceWithIntegerValue(value) {
591
+ await this.page.locator(".editable").fill(value);
592
+ }
593
+ async replaceForBooleanValue() {
594
+ await this.page.locator(".editor input").click();
595
+ }
596
+ async deleteBySettingDate(date, monthYear) {
597
+ await this.page.locator("#modal .date").click();
598
+ await this.dateUtil.setDate(date, monthYear);
599
+ }
193
600
  }
194
601
 
195
602
 
@@ -425,6 +832,22 @@ class $90bb70a7e909e500$export$519356f6c50361f7 extends (0, $9626bc9256ce31f7$ex
425
832
  }).click();
426
833
  }
427
834
  }
835
+ async validateAutoCompleteOptions(descriptionName, expectedDescription, variableSelection) {
836
+ await this.page.getByLabel("Double-click to edit").waitFor({
837
+ timeout: 10000
838
+ });
839
+ await this.page.getByLabel("Double-click to edit").hover();
840
+ await this.page.locator(".markdown-viewer-actions").getByTestId("edit-button").click();
841
+ await this.page.locator("#task-description-input").fill(descriptionName);
842
+ await (0, $hOLA6$expect)(this.page.locator(".dot-popper-content-wrapper .option-name")).toHaveCount(6);
843
+ await this.page.locator(".dot-popper-content-wrapper .option-name").filter({
844
+ hasText: variableSelection
845
+ }).click();
846
+ await this.page.getByRole("button", {
847
+ name: "Save"
848
+ }).click();
849
+ await (0, $hOLA6$expect)(this.page.locator(".phase-link-container").locator(".variable").first()).toHaveText(expectedDescription);
850
+ }
428
851
  }
429
852
  class $90bb70a7e909e500$export$fbbf45eff21470e3 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
430
853
  constructor(page){
@@ -526,6 +949,9 @@ class $69e86f559cdf2bd0$export$15d3f9b095bb5188 extends (0, $9626bc9256ce31f7$ex
526
949
  async expectCommentToContain(text) {
527
950
  await (0, $hOLA6$expect)(this.page.locator(".task-comment .markdown-wrapper p")).toContainText(text);
528
951
  }
952
+ async expectTaskIsCommentable(isCommentable) {
953
+ (0, $hOLA6$expect)(await this.page.locator("#task-comment").count()).toBe(isCommentable ? 1 : 0);
954
+ }
529
955
  }
530
956
 
531
957
 
@@ -589,7 +1015,7 @@ class $8e39246218b802fc$export$e946776eae644790 extends (0, $9626bc9256ce31f7$ex
589
1015
  });
590
1016
  this.cancelButton = this.page.getByTestId("task-action-cancel");
591
1017
  this.commentBox = this.page.getByTestId("task-action-comment");
592
- this.confirm = this.page.getByTestId("dot-button");
1018
+ this.confirm = this.page.locator(".popper-action-buttons").getByTestId("dot-button");
593
1019
  this.activity = new (0, $69e86f559cdf2bd0$export$15d3f9b095bb5188)(page);
594
1020
  this.attachment = new (0, $9c357602b6f466e7$export$aa59788fdecae2f2)(page);
595
1021
  this.config = new (0, $e44e9af564fb00f7$export$64c93bc7fb9ca44e)(page);
@@ -707,52 +1133,153 @@ class $8e39246218b802fc$export$e946776eae644790 extends (0, $9626bc9256ce31f7$ex
707
1133
  async expectWaitForScheduledDateToBeUnchecked() {
708
1134
  await (0, $hOLA6$expect)(this.page.locator(".wait-for-start input")).not.toBeChecked();
709
1135
  }
710
- // Other locators are flaky and it can be replaced if we get locator change in the frontend
711
- async clickOnStartDate() {
712
- await this.page.getByTestId("month-and-year").first().click();
1136
+ // Other locators are flaky and it can be replaced if we get locator change in the frontend
1137
+ async clickOnStartDate() {
1138
+ await this.page.getByTestId("month-and-year").first().click();
1139
+ }
1140
+ async removeStartDate() {
1141
+ await this.page.getByRole("button", {
1142
+ name: "Set by user"
1143
+ }).locator(".MuiChip-deleteIcon").click();
1144
+ }
1145
+ async setStartDate(date) {
1146
+ await this.clickOnStartDate();
1147
+ await this.page.locator(".MuiPickersDay-root", {
1148
+ hasText: date
1149
+ }).click();
1150
+ }
1151
+ async assignToMe(userName, existingUsername) {
1152
+ await this.page.getByRole("button", {
1153
+ name: existingUsername
1154
+ }).click();
1155
+ await this.page.getByTestId(`render-option-${userName}`).click();
1156
+ }
1157
+ async setFlag(flagName, flagComment) {
1158
+ await this.page.getByTestId("flag-btn").click();
1159
+ await this.page.getByLabel(flagName).click();
1160
+ await this.page.getByPlaceholder("Set message").click();
1161
+ await this.page.getByPlaceholder("Set message").fill(flagComment);
1162
+ await this.page.getByPlaceholder("Set message").press("Enter");
1163
+ await (0, $hOLA6$expect)(this.page.getByRole("button", {
1164
+ name: `flag icon ${flagComment}`
1165
+ })).toBeVisible();
1166
+ }
1167
+ async expectFlaggedWith(flagName, flagComment) {
1168
+ await this.page.getByRole("button", {
1169
+ name: "flag icon"
1170
+ }).click();
1171
+ const regexPattern = new RegExp(`${flagComment}.*${flagName}`, "i");
1172
+ await (0, $hOLA6$expect)(this.page.getByText(regexPattern)).toBeVisible();
1173
+ }
1174
+ async expectStartDateToBeDisplayed() {
1175
+ await (0, $hOLA6$expect)(this.page.getByTestId("start-date-title")).toHaveCount(1);
1176
+ }
1177
+ async expectEndDateToBeDisplayed() {
1178
+ await (0, $hOLA6$expect)(this.page.getByTestId("end-date-title")).toHaveCount(1);
1179
+ }
1180
+ async expectStartDateAndEndDateToBeDisplayed() {
1181
+ await (0, $hOLA6$expect)(this.page.getByTestId("month-and-year")).toHaveCount(2);
1182
+ }
1183
+ }
1184
+
1185
+
1186
+
1187
+
1188
+
1189
+
1190
+ class $a546aadb4e6fa16a$export$5a82be0a2a261cc6 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
1191
+ constructor(page){
1192
+ super(page);
1193
+ this.releaseHeader = this.page.locator(".release-header");
1194
+ }
1195
+ async enableShowDates() {
1196
+ await this.page.locator("#toggleIsDatesColumnsShown").check();
1197
+ }
1198
+ async disableShowDates() {
1199
+ await this.page.locator("#toggleIsDatesColumnsShown").uncheck();
1200
+ }
1201
+ async expectPlanningDataColumnsHidden() {
1202
+ (0, $hOLA6$expect)(await this.page.locator(`#gantt .gantt_grid_data .gantt_row`).first().locator(`.gantt_cell`).count()).toEqual(1);
1203
+ }
1204
+ async expectPlanningDateColumnsShown() {
1205
+ (0, $hOLA6$expect)(await this.page.locator(`#gantt .gantt_grid_data .gantt_row`).first().locator(`.gantt_cell`).count()).toEqual(4);
1206
+ }
1207
+ getRow(phaseName) {
1208
+ return new $a546aadb4e6fa16a$var$GanttRow(this.page, phaseName);
1209
+ }
1210
+ }
1211
+ class $a546aadb4e6fa16a$var$GanttRow extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
1212
+ constructor(page, phaseName){
1213
+ super(page);
1214
+ this.phaseName = page.locator(".gantt_row").filter({
1215
+ hasText: phaseName
1216
+ });
1217
+ this.dateUtil = new (0, $71075ce65fcede1d$export$9b575f14aa5e09a1)(page);
1218
+ }
1219
+ async getFirstDate() {
1220
+ return this.phaseName.locator(".date-editor .date input").first();
1221
+ }
1222
+ async getLastDate() {
1223
+ return this.phaseName.locator(".date-editor .date input").last();
1224
+ }
1225
+ async getFirstDateEditor() {
1226
+ return this.phaseName.locator(".date-editor").first();
1227
+ }
1228
+ async getLastDateEditor() {
1229
+ return this.phaseName.locator(".date-editor").last();
1230
+ }
1231
+ async setStartDate(date, monthYear) {
1232
+ await (await this.getFirstDate()).click();
1233
+ await this.dateUtil.setDate(date, monthYear);
1234
+ }
1235
+ async setEndDate(date, monthYear) {
1236
+ await (await this.getLastDate()).click();
1237
+ await this.dateUtil.setDate(date, monthYear);
1238
+ }
1239
+ async expectStartDateToBe(date) {
1240
+ const dateTimePicker = await this.getFirstDate();
1241
+ this.dateUtil.expectDateToBe(dateTimePicker, date);
1242
+ }
1243
+ async expectEndDateToBe(date) {
1244
+ const dateTimePicker = await this.getLastDate();
1245
+ this.dateUtil.expectDateToBe(dateTimePicker, date);
713
1246
  }
714
1247
  async removeStartDate() {
715
- await this.page.getByRole("button", {
716
- name: "Set by user"
717
- }).locator(".MuiChip-deleteIcon").click();
1248
+ const dateTimePicker = await this.getFirstDateEditor();
1249
+ await this.dateUtil.removeDate(dateTimePicker);
718
1250
  }
719
- async setStartDate(date) {
720
- await this.clickOnStartDate();
721
- await this.page.locator(".MuiPickersDay-root", {
722
- hasText: date
723
- }).click();
1251
+ async removeEndDate() {
1252
+ const dateTimePicker = await this.getLastDateEditor();
1253
+ await this.dateUtil.removeDate(dateTimePicker);
724
1254
  }
725
- async assignToMe(userName, existingUsername) {
726
- await this.page.getByRole("button", {
727
- name: existingUsername
728
- }).click();
729
- await this.page.getByTestId(`render-option-${userName}`).click();
1255
+ async expectStartDateToBeInferred() {
1256
+ const dateTimePicker = await this.getFirstDateEditor();
1257
+ await this.dateUtil.expectDateToBeInferred(dateTimePicker);
730
1258
  }
731
- async setFlag(flagName, flagComment) {
732
- await this.page.getByTestId("flag-btn").click();
733
- await this.page.getByLabel(flagName).click();
734
- await this.page.getByPlaceholder("Set message").click();
735
- await this.page.getByPlaceholder("Set message").fill(flagComment);
736
- await this.page.getByPlaceholder("Set message").press("Enter");
737
- await (0, $hOLA6$expect)(this.page.getByRole("button", {
738
- name: `flag icon ${flagComment}`
739
- })).toBeVisible();
1259
+ async expectEndDateToBeInferred() {
1260
+ const dateTimePicker = await this.getLastDateEditor();
1261
+ await this.dateUtil.expectDateToBeInferred(dateTimePicker);
740
1262
  }
741
- async expectFlaggedWith(flagName, flagComment) {
742
- await this.page.getByRole("button", {
743
- name: "flag icon"
744
- }).click();
745
- const regexPattern = new RegExp(`${flagComment}.*${flagName}`, "i");
746
- await (0, $hOLA6$expect)(this.page.getByText(regexPattern)).toBeVisible();
1263
+ async expectStartDateNotDeletable() {
1264
+ const dateTimePicker = await this.getFirstDate();
1265
+ await this.dateUtil.expectDateNotDeletable(dateTimePicker);
747
1266
  }
748
- async expectStartDateToBeDisplayed() {
749
- await (0, $hOLA6$expect)(this.page.getByTestId("start-date-title")).toHaveCount(1);
1267
+ async expectEndDateNotDeletable() {
1268
+ const dateTimePicker = await this.getLastDate();
1269
+ await this.dateUtil.expectDateNotDeletable(dateTimePicker);
750
1270
  }
751
- async expectEndDateToBeDisplayed() {
752
- await (0, $hOLA6$expect)(this.page.getByTestId("end-date-title")).toHaveCount(1);
1271
+ async expectDurationToBe(duration) {
1272
+ (0, $hOLA6$expect)(await this.phaseName.locator(".duration-editor").textContent()).toBe(duration);
753
1273
  }
754
- async expectStartDateAndEndDateToBeDisplayed() {
755
- await (0, $hOLA6$expect)(this.page.getByTestId("month-and-year")).toHaveCount(2);
1274
+ async clickDuration() {
1275
+ await this.phaseName.locator(".duration-editor").first().click();
1276
+ }
1277
+ async removeDuration() {
1278
+ await this.phaseName.click();
1279
+ return await this.phaseName.locator(`.remove-duration`).click();
1280
+ }
1281
+ async expectNoDuration() {
1282
+ (0, $hOLA6$expect)(await this.phaseName.locator(".duration-editor").textContent()).toContain("");
756
1283
  }
757
1284
  }
758
1285
 
@@ -858,7 +1385,8 @@ class $c9bb587dd92143c3$export$d1077068a9cc9f17 extends (0, $9626bc9256ce31f7$ex
858
1385
  while(await monYear.textContent() != monthYear)if (thisMonth) await prev.click();
859
1386
  else await next.click();
860
1387
  await this.page.getByRole("cell", {
861
- name: "" + date + ""
1388
+ name: "" + date + "",
1389
+ exact: true
862
1390
  }).first().click();
863
1391
  }
864
1392
  async setScheduledStartTime(hrs, mins, meridian) {
@@ -937,92 +1465,26 @@ class $c9bb587dd92143c3$export$d1077068a9cc9f17 extends (0, $9626bc9256ce31f7$ex
937
1465
  await this.page.locator("#release-form-abort-on-failure").check();
938
1466
  await (0, $hOLA6$expect)(this.page.locator("#release-form-abort-on-failure")).toBeChecked();
939
1467
  }
1468
+ async expectDescriptionToBe(description) {
1469
+ (0, $hOLA6$expect)(await this.page.locator(".release-description p").textContent()).toContain(description);
1470
+ }
940
1471
  }
941
1472
 
942
1473
 
943
1474
 
944
1475
 
945
-
946
- class $71075ce65fcede1d$export$9b575f14aa5e09a1 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
1476
+ class $96c6280ff1c47b81$export$3bc3e140e0dcb075 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
947
1477
  constructor(page){
948
1478
  super(page);
1479
+ this.resetButton = this.page.getByRole("button", {
1480
+ name: "Reset"
1481
+ });
1482
+ this.saveButton = this.page.getByRole("button", {
1483
+ name: "Save"
1484
+ });
949
1485
  }
950
- async openDatePicker(selector) {
951
- await this.page.locator(`${selector} .date`).click();
952
- }
953
- /**
954
- * Setting date, month and year from calendar picker
955
- */ async setDate(date, monthYear) {
956
- const prev = this.page.locator(".datepicker-days .prev");
957
- const next = this.page.locator(".datepicker-days .next");
958
- const monYear = this.page.locator(".datepicker-days .datepicker-switch");
959
- const thisMonth = (0, $hOLA6$moment)(monthYear, "MMMM YYYY").isBefore();
960
- while(await monYear.textContent() != monthYear)if (thisMonth) await prev.click();
961
- else await next.click();
962
- await this.page.getByRole("cell", {
963
- name: "" + date + ""
964
- }).first().click();
965
- }
966
- async expectDurationToBe(duration) {
967
- (0, $hOLA6$expect)(await this.page.locator(".duration-editor").textContent()).toBe(duration);
968
- }
969
- async setDuration(days, hours, mins) {
970
- await this.page.locator(".duration-editor").click();
971
- if (typeof days !== "undefined") await this.page.locator(".days").fill(days);
972
- if (typeof hours !== "undefined") await this.page.locator(".hours").fill(hours);
973
- if (typeof mins !== "undefined") await this.page.locator(".minutes").fill(mins);
974
- await this.page.keyboard.press("Enter");
975
- }
976
- async expectTimeToBe(selector, format, date) {
977
- if (typeof date === "string") date = new Date(date);
978
- const formattedDate = (0, $hOLA6$moment)(date).format(format);
979
- const input = this.page.locator(`${selector}`);
980
- await (0, $hOLA6$expect)(input).toBeVisible();
981
- const value = await input.inputValue();
982
- (0, $hOLA6$expect)(value).toBe(formattedDate);
983
- }
984
- /**
985
- *
986
- * @returns Getting current month and year in the format "MonthName YYYY"
987
- */ async getCurrentMonthYear() {
988
- const monthNames = [
989
- "January",
990
- "February",
991
- "March",
992
- "April",
993
- "May",
994
- "June",
995
- "July",
996
- "August",
997
- "September",
998
- "October",
999
- "November",
1000
- "December"
1001
- ];
1002
- const d = new Date();
1003
- const month = monthNames[d.getMonth()];
1004
- const year = d.getFullYear();
1005
- return `${month} ${year}`;
1006
- }
1007
- /**
1008
- *
1009
- * @returns Getting current date in the format "dd MonthName YYYY"
1010
- */ async getCurrentDate() {
1011
- const d = new Date();
1012
- const date = d.getDate();
1013
- const monthYear = await this.getCurrentMonthYear();
1014
- return `${date} ${monthYear}`;
1015
- }
1016
- /**
1017
- *
1018
- * @param days Number of days to add to current date within the current month
1019
- * @returns
1020
- */ async getFutureDate(days) {
1021
- const d = new Date();
1022
- d.setDate(d.getDate() + days);
1023
- const date = d.getDate();
1024
- const monthYear = await this.getCurrentMonthYear();
1025
- return `${date} ${monthYear}`;
1486
+ async expectSaveButtonDisabled() {
1487
+ (0, $hOLA6$expect)(this.saveButton).toBeDisabled();
1026
1488
  }
1027
1489
  }
1028
1490
 
@@ -1030,6 +1492,7 @@ class $71075ce65fcede1d$export$9b575f14aa5e09a1 extends (0, $9626bc9256ce31f7$ex
1030
1492
 
1031
1493
 
1032
1494
 
1495
+
1033
1496
  class $87bbb6d35ad31a00$export$f8f26dd395d7e1bd extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
1034
1497
  constructor(page){
1035
1498
  super(page);
@@ -1112,7 +1575,10 @@ class $87bbb6d35ad31a00$export$f8f26dd395d7e1bd extends (0, $9626bc9256ce31f7$ex
1112
1575
  class $43cbcdfccb6c2a76$export$f43492e8ac3c566 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
1113
1576
  constructor(page){
1114
1577
  super(page);
1578
+ this.createPage = new (0, $05d91a1d3381a287$export$34addcca3f0ae43f)(page);
1579
+ this.ganttPage = new (0, $a546aadb4e6fa16a$export$5a82be0a2a261cc6)(page);
1115
1580
  this.taskDrawer = new (0, $8e39246218b802fc$export$e946776eae644790)(page);
1581
+ this.teamsPermissions = new (0, $96c6280ff1c47b81$export$3bc3e140e0dcb075)(page);
1116
1582
  this.phaseTitle = this.page.locator(".phase .phase-title");
1117
1583
  this.properties = new (0, $c9bb587dd92143c3$export$d1077068a9cc9f17)(page);
1118
1584
  this.variables = new (0, $f48771b486a3eb8f$export$a87f0ae8695e74be)(page);
@@ -1123,11 +1589,14 @@ class $43cbcdfccb6c2a76$export$f43492e8ac3c566 extends (0, $9626bc9256ce31f7$exp
1123
1589
  return new (0, $862f65268e488e83$export$fb932093f944abe4)(this.page);
1124
1590
  }
1125
1591
  async abort(comment = "Abort for testing") {
1126
- await this.page.locator("action-toolbar button", {
1127
- hasText: "Abort"
1592
+ await this.page.getByTestId("abort-btn").waitFor();
1593
+ await this.page.getByTestId("abort-btn").click();
1594
+ await this.page.getByPlaceholder("Give feedback or place a").click();
1595
+ await this.page.getByPlaceholder("Give feedback or place a").fill(comment);
1596
+ await this.page.getByRole("button", {
1597
+ name: "Abort"
1128
1598
  }).click();
1129
- await this.page.locator(".modal textarea").fill(comment);
1130
- await this.page.locator(".modal .continue").click();
1599
+ await (0, $hOLA6$expect)(this.page.locator(".progress-status-and-percentage")).toContainText("Aborted");
1131
1600
  }
1132
1601
  getPhase(phaseName) {
1133
1602
  return new $43cbcdfccb6c2a76$var$Phase(this.page, phaseName);
@@ -1337,6 +1806,12 @@ class $43cbcdfccb6c2a76$export$f43492e8ac3c566 extends (0, $9626bc9256ce31f7$exp
1337
1806
  hasText: "TEMPLATE"
1338
1807
  })).not.toBeVisible();
1339
1808
  }
1809
+ async expectAbortedStatusToBePresent() {
1810
+ await this.page.locator(".progress-status-and-percentage").waitFor({
1811
+ timeout: 10000
1812
+ });
1813
+ (0, $hOLA6$expect)(await this.page.locator(".progress-status-and-percentage").textContent()).toContain("Aborted");
1814
+ }
1340
1815
  async openTableView() {
1341
1816
  await this.util.openSideNavMenu("Table");
1342
1817
  await (0, $hOLA6$expect)(this.page.locator(".release-grid-container")).toBeVisible();
@@ -1435,6 +1910,9 @@ class $43cbcdfccb6c2a76$export$f43492e8ac3c566 extends (0, $9626bc9256ce31f7$exp
1435
1910
  hasText: title
1436
1911
  }).locator(`.task-infos .delay-count`)).toBeVisible();
1437
1912
  }
1913
+ async expectOnePhaseDisplayed() {
1914
+ (0, $hOLA6$expect)(await this.page.locator(".phase-content").count()).toBe(1);
1915
+ }
1438
1916
  }
1439
1917
  class $43cbcdfccb6c2a76$var$Phase extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
1440
1918
  constructor(page, phaseName){
@@ -1565,10 +2043,12 @@ class $43cbcdfccb6c2a76$var$Phase extends (0, $9626bc9256ce31f7$export$2b65d1d97
1565
2043
  await this.dateUtil.expectDurationToBe(duration);
1566
2044
  }
1567
2045
  async setDurationFromPhaseDetails(days, hours, mins) {
2046
+ await this.page.locator(".duration-editor").click();
1568
2047
  await this.dateUtil.setDuration(days, hours, mins);
1569
2048
  }
1570
2049
  async expectDueTimeToBe(format, date) {
1571
- await this.dateUtil.expectTimeToBe(".modal .due-date .time-picker-holder input", format, date);
2050
+ const selector = this.page.locator(".modal .due-date .time-picker-holder input");
2051
+ await this.dateUtil.expectTimeToBe(selector, format, date);
1572
2052
  }
1573
2053
  async deleteTaskInPhase(taskName) {
1574
2054
  await this.page.locator(".task").filter({
@@ -2227,6 +2707,10 @@ class $50c91328c9110668$export$b453f08936c58edb extends (0, $9626bc9256ce31f7$ex
2227
2707
  await this.util.openSideNavMenu("Notifications");
2228
2708
  await (0, $hOLA6$expect)(this.page.getByLabel("breadcrumb").getByText("Notifications")).toBeVisible();
2229
2709
  }
2710
+ async openTemplates() {
2711
+ await this.util.openSideNavMenu("Templates");
2712
+ await (0, $hOLA6$expect)(this.page.getByLabel("breadcrumb").getByText("Templates")).toBeVisible();
2713
+ }
2230
2714
  }
2231
2715
 
2232
2716
 
@@ -2712,7 +3196,7 @@ class $a5932af323ac015a$export$3cf9c90f870f31bd extends (0, $9626bc9256ce31f7$ex
2712
3196
  })).toBeVisible();
2713
3197
  await (0, $hOLA6$expect)(this.page.getByLabel("Delete token")).toContainText("Delete token");
2714
3198
  await this.page.getByRole("button", {
2715
- name: "delete icon Delete token"
3199
+ name: "delete icon Delete"
2716
3200
  }).click();
2717
3201
  await (0, $hOLA6$expect)(this.page.getByText(tokenName)).not.toBeVisible();
2718
3202
  }
@@ -3188,7 +3672,7 @@ class $3a340a3f4fd8f04d$export$43682cddead1dd78 extends (0, $9626bc9256ce31f7$ex
3188
3672
  await this.page.getByRole("button", {
3189
3673
  name: "Today"
3190
3674
  }).click();
3191
- await this.page.getByText(release_title).click();
3675
+ await this.page.locator(".tl-event-title").getByText(release_title).click();
3192
3676
  await this.page.locator(".release-modal-container").locator(".xl-icon.release-icon").click();
3193
3677
  const releaseurl = `/#/releases/${release_id}`;
3194
3678
  const currentURL = await this.page.url();
@@ -3370,6 +3854,7 @@ class $cc231ea61b77c7a2$export$1a0994e9c202d529 extends (0, $9626bc9256ce31f7$ex
3370
3854
 
3371
3855
 
3372
3856
 
3857
+
3373
3858
  class $c37c93912f458e81$export$60c3bfa6385e2a10 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
3374
3859
  constructor(page){
3375
3860
  super(page);
@@ -3588,6 +4073,8 @@ class $c37c93912f458e81$export$60c3bfa6385e2a10 extends (0, $9626bc9256ce31f7$ex
3588
4073
  class $880dec03c4eca8dc$export$ccf2756779bad715 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
3589
4074
  constructor(page){
3590
4075
  super(page);
4076
+ this.dateUtil = new (0, $71075ce65fcede1d$export$9b575f14aa5e09a1)(page);
4077
+ this.scheduledStartDate = this.page.locator(`.scheduled-start-date .date`);
3591
4078
  }
3592
4079
  async getAttachmentsListCount() {
3593
4080
  return await this.page.locator(".attachments tr").count();
@@ -3644,16 +4131,8 @@ class $880dec03c4eca8dc$export$ccf2756779bad715 extends (0, $9626bc9256ce31f7$ex
3644
4131
  await this.page.locator(".due-date .close-icon").click();
3645
4132
  }
3646
4133
  async setScheduledStartDate(date, monthYear) {
3647
- await this.page.locator(`.scheduled-start-date .date`).click();
3648
- const prev = this.page.locator(".datepicker-days .prev");
3649
- const next = this.page.locator(".datepicker-days .next");
3650
- const monYear = this.page.locator(".datepicker-days .datepicker-switch");
3651
- const thisMonth = (0, $hOLA6$moment)(monthYear, "MMMM YYYY").isBefore();
3652
- while(await monYear.textContent() != monthYear)if (thisMonth) await prev.click();
3653
- else await next.click();
3654
- await this.page.getByRole("cell", {
3655
- name: "" + date + ""
3656
- }).first().click();
4134
+ await this.scheduledStartDate.click();
4135
+ await this.dateUtil.setDate(date, monthYear);
3657
4136
  }
3658
4137
  async setDuration(days, hours, mins) {
3659
4138
  await this.page.locator(".duration-editor").click();
@@ -3755,6 +4234,30 @@ class $8f36d138075416d2$export$899a7095bab1879d extends (0, $9626bc9256ce31f7$ex
3755
4234
 
3756
4235
 
3757
4236
 
4237
+ class $527f56b2e41ad18d$export$e0f84914460c3382 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
4238
+ constructor(page){
4239
+ super(page);
4240
+ }
4241
+ async clickEditVariable(variableName) {
4242
+ await this.page.locator("[id='variables-filter']").fill(variableName);
4243
+ await this.page.getByText("Edit").click();
4244
+ return new $527f56b2e41ad18d$var$TemplateVariableModal(this.page);
4245
+ }
4246
+ }
4247
+ class $527f56b2e41ad18d$var$TemplateVariableModal extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
4248
+ async setLabel(label) {
4249
+ await this.page.locator(".variable-label input").fill(label);
4250
+ }
4251
+ async setDefalutValue(value) {
4252
+ await this.page.locator(".variable-value input").fill(value);
4253
+ }
4254
+ async save() {
4255
+ await this.page.locator("#modal .button.save").click();
4256
+ }
4257
+ }
4258
+
4259
+
4260
+
3758
4261
  class $0c4084f199d70d72$export$8c8e7207254accc2 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
3759
4262
  constructor(page){
3760
4263
  super(page);
@@ -3764,6 +4267,7 @@ class $0c4084f199d70d72$export$8c8e7207254accc2 extends (0, $9626bc9256ce31f7$ex
3764
4267
  this.createTemplatePage = new (0, $e83a7515970cee7f$export$98de9bca7d44fc1a)(page);
3765
4268
  this.triggers = new (0, $8f36d138075416d2$export$899a7095bab1879d)(page);
3766
4269
  this.util = new (0, $87bbb6d35ad31a00$export$f8f26dd395d7e1bd)(page);
4270
+ this.variables = new (0, $527f56b2e41ad18d$export$e0f84914460c3382)(page);
3767
4271
  }
3768
4272
  async openTemplateMenu(menuItem) {
3769
4273
  await this.page.locator(`navigation-sidebar ul li`).getByText(menuItem, {
@@ -3882,6 +4386,10 @@ class $0c4084f199d70d72$export$8c8e7207254accc2 extends (0, $9626bc9256ce31f7$ex
3882
4386
  hasText: newPhaseName
3883
4387
  })).toBeVisible();
3884
4388
  }
4389
+ async clickNewRelease() {
4390
+ await this.page.getByTestId("new-release-btn").click();
4391
+ await (0, $hOLA6$expect)(this.page.locator(".release-properties-form")).toBeVisible();
4392
+ }
3885
4393
  getPhase(phaseName) {
3886
4394
  return new $0c4084f199d70d72$var$Phase(this.page, phaseName);
3887
4395
  }
@@ -4228,9 +4736,184 @@ class $208f399edeb35aa2$export$7a5b979a220f477c extends (0, $9626bc9256ce31f7$ex
4228
4736
 
4229
4737
 
4230
4738
 
4739
+ class $a4ba753fcd18eb4a$export$539d82a5d70c4909 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
4740
+ constructor(page){
4741
+ super(page);
4742
+ }
4743
+ async getValue(classIdentifier) {
4744
+ return await this.page.locator(`.rz-bubble.${classIdentifier}-label`).innerText();
4745
+ }
4746
+ async setPointerValue(elem, value, isIncrease) {
4747
+ await elem.waitFor({
4748
+ state: "visible"
4749
+ });
4750
+ await elem.click();
4751
+ for(let i = 0; i < value; i++){
4752
+ if (isIncrease) await this.page.keyboard.press("ArrowRight");
4753
+ else await this.page.keyboard.press("ArrowLeft");
4754
+ await elem.click();
4755
+ }
4756
+ }
4757
+ async setValue(identifier, newValue) {
4758
+ const value = await this.getValue(identifier);
4759
+ const initialDiff = newValue - parseInt(value);
4760
+ const elem = this.page.locator(`.rz-pointer-${identifier}`);
4761
+ const diffValue = Math.abs(initialDiff);
4762
+ await this.setPointerValue(elem, diffValue, initialDiff > 0);
4763
+ await this.checkValue(identifier, newValue);
4764
+ }
4765
+ async checkValue(identifier, value) {
4766
+ (0, $hOLA6$expect)(await this.getValue(identifier)).toEqual(value.toString());
4767
+ }
4768
+ async shouldHaveEditButton(present = true) {
4769
+ (0, $hOLA6$expect)(await this.page.locator("#editRisk").isVisible()).toBe(present);
4770
+ }
4771
+ async shouldHaveSaveButton(present = true) {
4772
+ (0, $hOLA6$expect)(await this.page.getByTestId("save-btn").isVisible()).toBe(present);
4773
+ }
4774
+ async startEditGlobalRiskThreshold() {
4775
+ await this.page.locator("#editRisk").click();
4776
+ }
4777
+ async setInitialValues() {
4778
+ await this.setValue("min", 10);
4779
+ await this.setValue("max", 50);
4780
+ }
4781
+ async changeValuesAndSave(minValue, maxValue) {
4782
+ await this.setValue("min", minValue);
4783
+ await this.setValue("max", maxValue);
4784
+ await this.page.locator("#submit").click();
4785
+ }
4786
+ async checkValuesChanged(minValue, maxValue) {
4787
+ await this.checkValue("min", minValue);
4788
+ await this.checkValue("max", maxValue);
4789
+ }
4790
+ async expectRiskProfileToBePresent(title, present = true) {
4791
+ await this.page.locator("#risk-profile-table").waitFor({
4792
+ state: "visible"
4793
+ });
4794
+ (0, $hOLA6$expect)(await this.page.locator(".risk-profile .data-row").filter({
4795
+ hasText: title
4796
+ }).isVisible()).toBe(present);
4797
+ }
4798
+ async expectDefaultRiskProfileToBeFirst() {
4799
+ await this.page.locator("#risk-profile-table").waitFor({
4800
+ state: "visible"
4801
+ });
4802
+ await (0, $hOLA6$expect)(this.page.locator(".risk-profile .data-row .ng-binding").first()).toHaveText("Default risk profile");
4803
+ }
4804
+ async openRiskProfile(title) {
4805
+ await this.page.locator("#risk-profile-table").waitFor({
4806
+ state: "visible"
4807
+ });
4808
+ await this.page.locator(".risk-profile .data-row").filter({
4809
+ hasText: title
4810
+ }).click();
4811
+ return new $a4ba753fcd18eb4a$var$RisksProfilePage(this.page);
4812
+ }
4813
+ async shouldHaveCopyButtonEnabledForRiskProfile(title, enabled = true) {
4814
+ await this.page.locator(".risk-profile .data-row").filter({
4815
+ hasText: title
4816
+ }).waitFor({
4817
+ state: "visible"
4818
+ });
4819
+ (0, $hOLA6$expect)(await this.page.locator(".risk-profile .data-row").filter({
4820
+ hasText: title
4821
+ }).locator(".copy-action").isVisible()).toBe(enabled);
4822
+ }
4823
+ async shouldHaveDeleteButtonEnabledForRiskProfile(title, enabled = true) {
4824
+ await this.page.locator(".risk-profile .data-row").filter({
4825
+ hasText: title
4826
+ }).waitFor({
4827
+ state: "visible"
4828
+ });
4829
+ (0, $hOLA6$expect)(await this.page.locator(`.risk-profile .data-row`).filter({
4830
+ hasText: title
4831
+ }).locator(`.remove-action`).isVisible()).toBe(enabled);
4832
+ }
4833
+ async clickNewRiskProfile() {
4834
+ await this.page.getByTestId("new-risk-btn").waitFor({
4835
+ state: "visible"
4836
+ });
4837
+ await this.page.getByTestId("new-risk-btn").click();
4838
+ return new $a4ba753fcd18eb4a$var$RisksProfilePage(this.page);
4839
+ }
4840
+ async deleteRiskProfile(title) {
4841
+ await this.page.locator(".risk-profile .data-row").filter({
4842
+ hasText: title
4843
+ }).locator(".remove-action").waitFor({
4844
+ state: "visible"
4845
+ });
4846
+ await this.page.locator(".risk-profile .data-row").filter({
4847
+ hasText: title
4848
+ }).locator(".remove-action").click();
4849
+ await this.page.locator(".modal-footer .button.save").click();
4850
+ }
4851
+ async expectSuccessMessageOnRisksPage() {
4852
+ await (0, $hOLA6$expect)(this.page.getByLabel("success")).toBeVisible();
4853
+ await (0, $hOLA6$expect)(this.page.locator(".success").filter({
4854
+ hasText: "Risk Profile Created Successfully"
4855
+ })).toBeVisible();
4856
+ }
4857
+ async copyRiskProfile(title) {
4858
+ await this.page.locator(".risk-profile .data-row").filter({
4859
+ hasText: title
4860
+ }).waitFor({
4861
+ state: "visible"
4862
+ });
4863
+ await this.page.locator(".risk-profile .data-row").filter({
4864
+ hasText: title
4865
+ }).locator(".copy-action").click();
4866
+ }
4867
+ async expectSuccessMessageOnUpdateRiskProfile() {
4868
+ await (0, $hOLA6$expect)(this.page.getByLabel("success")).toBeVisible();
4869
+ await (0, $hOLA6$expect)(this.page.locator(".success").filter({
4870
+ hasText: "Risk Profile Updated Successfully"
4871
+ })).toBeVisible();
4872
+ }
4873
+ async filter(filterText) {
4874
+ await this.page.locator("#risk-profile-filter").waitFor({
4875
+ state: "visible"
4876
+ });
4877
+ await this.page.locator("#risk-profile-filter").clear();
4878
+ await this.page.locator("#risk-profile-filter").fill(filterText);
4879
+ }
4880
+ async shouldHaveNVisibleRiskProfiles(numberOfVisibleRiskProfiles) {
4881
+ await this.page.locator("#risk-profile-table").waitFor({
4882
+ state: "visible"
4883
+ });
4884
+ (0, $hOLA6$expect)(await this.page.locator("#risk-profile-table .data-row").count()).toEqual(numberOfVisibleRiskProfiles);
4885
+ }
4886
+ async shouldHaveNewRiskProfileButton(present = true) {
4887
+ (0, $hOLA6$expect)(await this.page.getByTestId("new-risk-btn").isVisible()).toBe(present);
4888
+ }
4889
+ }
4890
+ class $a4ba753fcd18eb4a$var$RisksProfilePage extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
4891
+ async shouldBeEditable(editable) {
4892
+ const elem = this.page.locator("#riskProfileTitle");
4893
+ if (editable) await (0, $hOLA6$expect)(elem).toBeEnabled();
4894
+ else await (0, $hOLA6$expect)(elem).toBeDisabled();
4895
+ }
4896
+ async setName(name) {
4897
+ await this.page.locator("#riskProfileTitle").waitFor({
4898
+ state: "visible"
4899
+ });
4900
+ await this.page.locator("#riskProfileTitle").click();
4901
+ await this.page.locator("#riskProfileTitle").clear();
4902
+ await this.page.locator("#riskProfileTitle").fill(name);
4903
+ }
4904
+ async save() {
4905
+ await this.page.getByTestId("save-btn").click();
4906
+ await (0, $hOLA6$expect)(this.page.locator("#risk-profile-table")).toBeVisible();
4907
+ }
4908
+ }
4909
+
4910
+
4911
+
4912
+
4231
4913
  class $2cbb78eec86d0a9f$export$2edf430132ca35d0 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
4232
4914
  constructor(page){
4233
4915
  super(page);
4916
+ this.risksPage = new (0, $a4ba753fcd18eb4a$export$539d82a5d70c4909)(page);
4234
4917
  this.util = new (0, $87bbb6d35ad31a00$export$f8f26dd395d7e1bd)(page);
4235
4918
  }
4236
4919
  async openGeneralSettings() {
@@ -4264,6 +4947,7 @@ class $2cbb78eec86d0a9f$export$2edf430132ca35d0 extends (0, $9626bc9256ce31f7$ex
4264
4947
  async openRiskProfiles() {
4265
4948
  await this.util.openSideNavMenu("Risk profiles");
4266
4949
  await (0, $hOLA6$expect)(this.page.getByLabel("breadcrumb").getByText("Risk profiles")).toBeVisible();
4950
+ return new (0, $a4ba753fcd18eb4a$export$539d82a5d70c4909)(this.page);
4267
4951
  }
4268
4952
  async openWorkflowCategories() {
4269
4953
  await this.util.openSideNavMenu("Workflow categories");
@@ -4307,6 +4991,16 @@ class $e72552cbf941ecfa$export$b8a61e5c71402559 {
4307
4991
  async openTemplate(id) {
4308
4992
  return this.openReleaseOrTemplate(id, false);
4309
4993
  }
4994
+ async openFolder(id) {
4995
+ await this.page.goto(`./#/folders/${id}/releases`);
4996
+ await this.page.waitForSelector("#releases-content");
4997
+ return new (0, $50c91328c9110668$export$b453f08936c58edb)(this.page);
4998
+ }
4999
+ async openVariablesOnReleasePage(releaseId) {
5000
+ await this.page.goto(`./#/releases/${releaseId}/variables`);
5001
+ await this.page.waitForSelector("#release-variables");
5002
+ return new (0, $f48771b486a3eb8f$export$a87f0ae8695e74be)(this.page);
5003
+ }
4310
5004
  async openRelease(id) {
4311
5005
  return this.openReleaseOrTemplate(id, true);
4312
5006
  }
@@ -4316,83 +5010,88 @@ class $e72552cbf941ecfa$export$b8a61e5c71402559 {
4316
5010
  async openPersonalAccessTokenPage() {
4317
5011
  return new (0, $6720a523bcb1cce0$export$3cac5fd37ae64b91)(this.page).openPersonalAccessTokenPage();
4318
5012
  }
5013
+ async gotoHomePage() {
5014
+ await this.page.locator("ul.side-nav li").getByLabel("Home", {
5015
+ exact: true
5016
+ }).click();
5017
+ }
4319
5018
  async gotoFolderPage() {
4320
- await this.page.locator("ul.side-nav li").getByText("Folders", {
5019
+ await this.page.locator("ul.side-nav li").getByLabel("Folders", {
4321
5020
  exact: true
4322
5021
  }).click();
4323
5022
  }
4324
5023
  async gotoTaskPage() {
4325
- await this.page.locator("ul.side-nav li").getByText("Tasks", {
5024
+ await this.page.locator("ul.side-nav li").getByLabel("Tasks", {
4326
5025
  exact: true
4327
5026
  }).click();
4328
5027
  }
4329
5028
  async gotoReleasePage() {
4330
- await this.page.locator("ul.side-nav li").getByText("Releases", {
5029
+ await this.page.locator("ul.side-nav li").getByLabel("Releases", {
4331
5030
  exact: true
4332
5031
  }).click();
4333
5032
  }
4334
5033
  async gotoWorkflowCatalogPage() {
4335
- await this.page.locator("ul.side-nav li").getByText("Workflow catalog", {
5034
+ await this.page.locator("ul.side-nav li").getByLabel("Workflow catalog", {
4336
5035
  exact: true
4337
5036
  }).click();
4338
5037
  }
4339
5038
  async gotoWorkflowsPage() {
4340
- await this.page.locator("ul.side-nav li").getByText("Workflows", {
5039
+ await this.page.locator("ul.side-nav li").getByLabel("Workflows", {
4341
5040
  exact: true
4342
5041
  }).click();
4343
5042
  }
4344
5043
  async gotoGroupsPage() {
4345
- await this.page.locator("ul.side-nav li").getByText("Groups", {
5044
+ await this.page.locator("ul.side-nav li").getByLabel("Groups", {
4346
5045
  exact: true
4347
5046
  }).click();
4348
5047
  }
4349
5048
  async gotoReleaseCalenderPage() {
4350
- await this.page.locator("ul.side-nav li").getByText("Release calendar", {
5049
+ await this.page.locator("ul.side-nav li").getByLabel("Release calendar", {
4351
5050
  exact: true
4352
5051
  }).click();
4353
5052
  }
4354
5053
  async gotoDeliveriesPage() {
4355
- await this.page.locator("ul.side-nav li").getByText("Deliveries", {
5054
+ await this.page.locator("ul.side-nav li").getByLabel("Deliveries", {
4356
5055
  exact: true
4357
5056
  }).click();
4358
5057
  }
4359
5058
  async gotoTriggersPage() {
4360
- await this.page.locator("ul.side-nav li").getByText("Triggers", {
5059
+ await this.page.locator("ul.side-nav li").getByLabel("Triggers", {
4361
5060
  exact: true
4362
5061
  }).click();
4363
5062
  }
4364
5063
  async gotoDigitalAnalyticsPage() {
4365
- await this.page.locator("ul.side-nav li").getByText("Digital.ai Analytics", {
5064
+ await this.page.locator("ul.side-nav li").getByLabel("Digital.ai Analytics", {
4366
5065
  exact: true
4367
5066
  }).click();
4368
5067
  }
4369
5068
  async gotoReportsPage() {
4370
- await this.page.locator("ul.side-nav li").getByText("Reports", {
5069
+ await this.page.locator("ul.side-nav li").getByLabel("Reports", {
4371
5070
  exact: true
4372
5071
  }).click();
4373
5072
  }
4374
5073
  async gotoTemplatesPage() {
4375
- await this.page.locator("ul.side-nav li").getByText("Templates", {
5074
+ await this.page.locator("ul.side-nav li").getByLabel("Templates", {
4376
5075
  exact: true
4377
5076
  }).click();
4378
5077
  }
4379
5078
  async gotoEnvironmentsPage() {
4380
- await this.page.locator("ul.side-nav li").getByText("Environments", {
5079
+ await this.page.locator("ul.side-nav li").getByLabel("Environments", {
4381
5080
  exact: true
4382
5081
  }).click();
4383
5082
  }
4384
5083
  async gotoEnvironmentsCalenderPage() {
4385
- await this.page.locator("ul.side-nav li").getByText("Environments calendar", {
5084
+ await this.page.locator("ul.side-nav li").getByLabel("Environments calendar", {
4386
5085
  exact: true
4387
5086
  }).click();
4388
5087
  }
4389
5088
  async gotoGobalVariablesPage() {
4390
- await this.page.locator("ul.side-nav li").getByText("Global variables", {
5089
+ await this.page.locator("ul.side-nav li").getByLabel("Global variables", {
4391
5090
  exact: true
4392
5091
  }).click();
4393
5092
  }
4394
5093
  async gotoConnectionsPage() {
4395
- await this.page.locator("ul.side-nav li").getByText("Connections", {
5094
+ await this.page.locator("ul.side-nav li").getByLabel("Connections", {
4396
5095
  exact: true
4397
5096
  }).click();
4398
5097
  }
@@ -4410,6 +5109,9 @@ class $e72552cbf941ecfa$export$b8a61e5c71402559 {
4410
5109
  await this.page.getByLabel("Expand Q").click();
4411
5110
  await (0, $hOLA6$expect)(this.page.getByLabel("Expand Q")).not.toBeVisible();
4412
5111
  }
5112
+ async openRisksProfile() {
5113
+ await this.page.goto("./#/risks");
5114
+ }
4413
5115
  }
4414
5116
 
4415
5117
 
@@ -4656,6 +5358,12 @@ class $80c3ae34677b4324$var$Fixtures {
4656
5358
  ci
4657
5359
  ]);
4658
5360
  }
5361
+ ci(ci) {
5362
+ this.configurationIds.push(ci.id);
5363
+ return this.doPost("fixtures", [
5364
+ ci
5365
+ ]);
5366
+ }
4659
5367
  getParentId(id) {
4660
5368
  return id.substring(0, id.lastIndexOf("/"));
4661
5369
  }
@@ -4711,6 +5419,12 @@ class $80c3ae34677b4324$var$Fixtures {
4711
5419
  permissions(rolePermissions) {
4712
5420
  return this.doPost("fixtures/roles/permissions/global", rolePermissions);
4713
5421
  }
5422
+ globalRoles(rolePrincipals) {
5423
+ return this.doPost(`api/v1/roles/${rolePrincipals.name}`, rolePrincipals);
5424
+ }
5425
+ deleteGlobalRole(roleName) {
5426
+ return this.doDelete(`api/v1/roles/${roleName}`);
5427
+ }
4714
5428
  updateUserProfile(username, profile) {
4715
5429
  profile.id = username;
4716
5430
  profile.type = "xlrelease.UserProfile";