@digital-ai/devops-page-object-release 0.0.13 → 0.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -1,6 +1,8 @@
1
1
  var $kKeXs$playwrighttest = require("@playwright/test");
2
2
  var $kKeXs$child_process = require("child_process");
3
3
  var $kKeXs$process = require("process");
4
+ var $kKeXs$fs = require("fs");
5
+ var $kKeXs$moment = require("moment");
4
6
 
5
7
  var $parcel$global =
6
8
  typeof globalThis !== 'undefined'
@@ -951,6 +953,7 @@ $edb0b0405039996a$exports = $edb0b0405039996a$var$isNil;
951
953
 
952
954
 
953
955
 
956
+
954
957
  class $f8721861c660dd88$export$2b65d1d97338f32b {
955
958
  constructor(page){
956
959
  this.page = page;
@@ -1513,6 +1516,17 @@ class $6a21661eb4695574$export$e946776eae644790 extends (0, $f8721861c660dd88$ex
1513
1516
  async expectTaskTitle(taskTitle) {
1514
1517
  (0, $kKeXs$playwrighttest.expect)(await this.page.locator(".task-drawer .task-title-input .dot-view-mode-typography").innerText()).toContain(taskTitle);
1515
1518
  }
1519
+ async expectTypeToContain(taskType) {
1520
+ (0, $kKeXs$playwrighttest.expect)(await this.page.locator(".task-drawer .task-type").innerText()).toContain(taskType);
1521
+ }
1522
+ async clickExpand() {
1523
+ await this.page.locator(".icon-fullscreen-enter").click();
1524
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".icon-fullscreen-enter")).not.toBeVisible();
1525
+ }
1526
+ async clickShrink() {
1527
+ await this.page.locator(".icon-fullscreen-exit").click();
1528
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".icon-fullscreen-exit")).not.toBeVisible();
1529
+ }
1516
1530
  }
1517
1531
 
1518
1532
 
@@ -1563,6 +1577,41 @@ class $8681d8a3f46f87b7$export$d1077068a9cc9f17 extends (0, $f8721861c660dd88$ex
1563
1577
  name: "Reset"
1564
1578
  }).click();
1565
1579
  }
1580
+ async expectWithAttachment(filename) {
1581
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".attachments tr td a").filter({
1582
+ hasText: filename
1583
+ })).toBeVisible();
1584
+ }
1585
+ async getAttachmentsListCount() {
1586
+ return await this.page.locator(".attachments tr").count();
1587
+ }
1588
+ async uploadFile(filePath) {
1589
+ const fileChooserPromise = this.page.waitForEvent("filechooser");
1590
+ await this.page.locator('input[type="file"]').click();
1591
+ const fileChooser = await fileChooserPromise;
1592
+ await fileChooser.setFiles(filePath);
1593
+ }
1594
+ async expectWithNoAttachment(filename) {
1595
+ const test = await this.page.locator(".attachments").isVisible();
1596
+ if (test) await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".attachments tr td a").filter({
1597
+ hasText: filename
1598
+ })).not.toBeVisible();
1599
+ }
1600
+ async downloadFile(filename) {
1601
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
1602
+ const downloadPromise1 = this.page.waitForEvent("download");
1603
+ await this.page.getByText(filename).click();
1604
+ const download = await downloadPromise1;
1605
+ // Wait for the download process to complete and save the downloaded file in given path.
1606
+ await download.saveAs("./core/xlr-ui/build/playwright/" + download.suggestedFilename());
1607
+ (0, $kKeXs$playwrighttest.expect)(download.suggestedFilename()).toBe(filename);
1608
+ }
1609
+ async deleteAttachment(fileName) {
1610
+ await this.page.getByRole("row", {
1611
+ name: fileName
1612
+ }).locator("span").click();
1613
+ await this.page.getByText("Remove").click();
1614
+ }
1566
1615
  }
1567
1616
 
1568
1617
 
@@ -1646,6 +1695,18 @@ class $9b9a8c3da392d020$export$f43492e8ac3c566 extends (0, $f8721861c660dd88$exp
1646
1695
  }).click();
1647
1696
  return this.taskDrawer;
1648
1697
  }
1698
+ async openTaskDrawerFromTableView(taskName) {
1699
+ await this.page.locator(".name-cell-title").getByText(taskName, {
1700
+ exact: true
1701
+ }).click();
1702
+ return this.taskDrawer;
1703
+ }
1704
+ async openTaskDrawerFromGrantt(taskName) {
1705
+ await this.page.locator(".gantt_tree_content").getByText(taskName, {
1706
+ exact: true
1707
+ }).dblclick();
1708
+ return this.taskDrawer;
1709
+ }
1649
1710
  async openVariables() {
1650
1711
  await this.openReleaseMenu("Variables");
1651
1712
  }
@@ -1705,6 +1766,29 @@ class $9b9a8c3da392d020$export$f43492e8ac3c566 extends (0, $f8721861c660dd88$exp
1705
1766
  async backToRelease() {
1706
1767
  await this.page.locator(".icon-back").click();
1707
1768
  }
1769
+ async openTableView() {
1770
+ await this.page.locator(".xl-icon.table-icon").click();
1771
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".release-grid-container")).toBeVisible();
1772
+ }
1773
+ async openPlannerView() {
1774
+ await this.page.locator(".xl-icon.planner-icon").click();
1775
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".gantt-container")).toBeVisible();
1776
+ }
1777
+ async expandGanttFolder() {
1778
+ const icExpandTreeview1 = this.page.locator(".gantt_tree_icon.gantt_open");
1779
+ for (const element of (await icExpandTreeview1.all())){
1780
+ const blnVal = await element.isVisible();
1781
+ if (blnVal) {
1782
+ await element.click();
1783
+ await this.expandGanttFolder();
1784
+ }
1785
+ }
1786
+ }
1787
+ async expectTitleToBeInBreadcrumbLink(title) {
1788
+ (0, $kKeXs$playwrighttest.expect)(this.page.locator(".dot-breadcrumbs a", {
1789
+ hasText: title
1790
+ })).toBeVisible();
1791
+ }
1708
1792
  }
1709
1793
  class $9b9a8c3da392d020$var$Phase extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1710
1794
  constructor(page, phaseName){
@@ -1751,6 +1835,11 @@ class $9b9a8c3da392d020$var$Phase extends (0, $f8721861c660dd88$export$2b65d1d97
1751
1835
  async expectToHaveTitle(phaseTitle) {
1752
1836
  await (0, $kKeXs$playwrighttest.expect)(this.phaseLocator.locator(".phase-title")).toContainText(phaseTitle);
1753
1837
  }
1838
+ async expectTemplateLabelNotToBePresent() {
1839
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".dot-chip").filter({
1840
+ hasText: "TEMPLATE"
1841
+ })).not.toBeVisible();
1842
+ }
1754
1843
  }
1755
1844
 
1756
1845
 
@@ -1857,7 +1946,6 @@ class $3ceab7c613cabfd6$export$107317390f5aa598 extends (0, $f8721861c660dd88$ex
1857
1946
  constructor(page){
1858
1947
  super(page);
1859
1948
  this.page = page;
1860
- this.newUserButton = this.page.getByTestId("new-user-btn");
1861
1949
  this.modal = new (0, $bb5572a48b31014a$export$e2e2e1ffdce20c30)(page);
1862
1950
  }
1863
1951
  async openUsersPage() {
@@ -1874,7 +1962,7 @@ class $3ceab7c613cabfd6$export$107317390f5aa598 extends (0, $f8721861c660dd88$ex
1874
1962
  }).locator(".Mui-checked")).toBeChecked();
1875
1963
  }
1876
1964
  async addUser() {
1877
- await this.newUserButton.click();
1965
+ await this.page.locator(".new-user-btn").click();
1878
1966
  }
1879
1967
  async createUser(username, password) {
1880
1968
  await this.modal.setUserName(username);
@@ -2143,6 +2231,580 @@ class $a8855257f8bb2b12$export$43682cddead1dd78 extends (0, $f8721861c660dd88$ex
2143
2231
 
2144
2232
 
2145
2233
 
2234
+
2235
+
2236
+
2237
+ class $ed2d4739e27d43c1$export$60c3bfa6385e2a10 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2238
+ constructor(page){
2239
+ super(page);
2240
+ this.taskDrawer = new (0, $6a21661eb4695574$export$e946776eae644790)(page);
2241
+ }
2242
+ async openTask(taskName) {
2243
+ await this.filterTaskByTitle(taskName);
2244
+ await this.page.getByText(taskName).click();
2245
+ }
2246
+ async openTaskInReleaseView(taskName) {
2247
+ await this.page.locator(`.row.task-inner`, {
2248
+ hasText: taskName
2249
+ }).locator("a.view-in-release").click();
2250
+ }
2251
+ async openCalendarViaTaskDueDate(taskName) {
2252
+ await this.page.locator(`.row.task-inner`, {
2253
+ hasText: taskName
2254
+ }).locator(`.calendar-link a`).click();
2255
+ }
2256
+ async filterTaskByTitle(taskname) {
2257
+ await this.page.locator(".toggle-search-filter").click();
2258
+ await this.page.locator(".searchFilter").fill(taskname);
2259
+ await this.page.locator(".searchFilter").press("Enter");
2260
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator("//div[@data-task-title]").filter({
2261
+ hasText: taskname
2262
+ })).toBeVisible();
2263
+ }
2264
+ async filterTasksByTag(tag, taskTitleForValidation) {
2265
+ await this.page.locator(".toggle-search-filter").click();
2266
+ await this.page.locator(".tag-input").fill(tag);
2267
+ await this.page.locator(".tag-input").press("Enter");
2268
+ //TODO: Validation can be changed based on actual test case implementation
2269
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator("//div[@data-task-title]").filter({
2270
+ hasText: taskTitleForValidation
2271
+ })).toBeVisible();
2272
+ }
2273
+ async filterTasksByReleaseTitle(releaseTitle) {
2274
+ await this.page.locator(".toggle-search-filter").click();
2275
+ await this.page.locator(".release-input").fill(releaseTitle);
2276
+ await this.page.locator(".release-input").press("Enter");
2277
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".group-title").filter({
2278
+ hasText: releaseTitle
2279
+ })).toBeVisible();
2280
+ }
2281
+ async openSingleTask(taskId, showDetails = false) {
2282
+ await this.page.goto(`./#/tasks/${taskId}?showDetails=${showDetails}`);
2283
+ }
2284
+ async expectReleaseLinksDisplayed(releaseTitle, displayed = true) {
2285
+ if (displayed) {
2286
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByRole("link", {
2287
+ name: "" + releaseTitle + ""
2288
+ })).toBeVisible();
2289
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".view-in-release")).toBeVisible();
2290
+ } else {
2291
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByRole("link", {
2292
+ name: "" + releaseTitle + ""
2293
+ })).not.toBeVisible();
2294
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".view-in-release")).not.toBeVisible();
2295
+ }
2296
+ }
2297
+ async expectTaskTitle(taskTitle) {
2298
+ (0, $kKeXs$playwrighttest.expect)(await this.page.locator("#tasks0").innerText()).toContain(taskTitle);
2299
+ }
2300
+ async expectGroupView(expected = true) {
2301
+ if (expected) {
2302
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#group-tasks-by-release")).toBeChecked();
2303
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#task-list-grouped-view")).toBeVisible();
2304
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#task-ungrouped-view")).not.toBeVisible();
2305
+ } else {
2306
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#group-tasks-by-release")).not.toBeChecked();
2307
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#task-list-grouped-view")).not.toBeVisible();
2308
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#task-ungrouped-view")).toBeVisible();
2309
+ }
2310
+ }
2311
+ async changeGroupView() {
2312
+ await this.page.locator("#group-tasks-by-release").click();
2313
+ }
2314
+ }
2315
+
2316
+
2317
+
2318
+
2319
+ class $4efca3d4eadf892b$export$6adb8dd3f0d1e432 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2320
+ constructor(page){
2321
+ super(page);
2322
+ this.tempDir = "";
2323
+ this.content = "";
2324
+ }
2325
+ async createTempFile(fileName, testInfo) {
2326
+ const content = fileName.toString();
2327
+ const tempDir = testInfo.outputPath(fileName.toString());
2328
+ $kKeXs$fs.promises.writeFile(tempDir, content, "utf8");
2329
+ }
2330
+ }
2331
+
2332
+
2333
+
2334
+
2335
+
2336
+
2337
+
2338
+
2339
+ class $f4ca0e32f2cf5291$export$ccf2756779bad715 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2340
+ constructor(page){
2341
+ super(page);
2342
+ }
2343
+ async getAttachmentsListCount() {
2344
+ return await this.page.locator(".attachments tr").count();
2345
+ }
2346
+ async uploadFile(filePath) {
2347
+ const fileChooserPromise = this.page.waitForEvent("filechooser");
2348
+ await this.page.locator('input[type="file"]').click();
2349
+ const fileChooser = await fileChooserPromise;
2350
+ await fileChooser.setFiles(filePath);
2351
+ }
2352
+ async expectWithAttachment(filename) {
2353
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".attachments tr td a").filter({
2354
+ hasText: filename
2355
+ })).toBeVisible();
2356
+ }
2357
+ async expectWithNoAttachment(filename) {
2358
+ const test = await this.page.locator(".attachments").isVisible();
2359
+ if (test) await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".attachments tr td a").filter({
2360
+ hasText: filename
2361
+ })).not.toBeVisible();
2362
+ }
2363
+ async downloadFile(filename) {
2364
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
2365
+ const downloadPromise1 = this.page.waitForEvent("download");
2366
+ await this.page.getByText(filename).click();
2367
+ const download = await downloadPromise1;
2368
+ // Wait for the download process to complete and save the downloaded file in given path.
2369
+ await download.saveAs("./core/xlr-ui/build/playwright/" + download.suggestedFilename());
2370
+ (0, $kKeXs$playwrighttest.expect)(download.suggestedFilename()).toBe(filename);
2371
+ }
2372
+ async deleteAttachment(fileName) {
2373
+ await this.page.getByRole("row", {
2374
+ name: fileName
2375
+ }).locator("span").click();
2376
+ await this.page.getByText("Remove").click();
2377
+ }
2378
+ async save() {
2379
+ await this.page.getByRole("button", {
2380
+ name: "Save"
2381
+ }).click({
2382
+ timeout: 8000
2383
+ });
2384
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".form-footer .last-saved")).toBeVisible();
2385
+ }
2386
+ async reset() {
2387
+ await this.page.getByRole("button", {
2388
+ name: "Reset"
2389
+ }).waitFor();
2390
+ await this.page.getByRole("button", {
2391
+ name: "Reset"
2392
+ }).click();
2393
+ }
2394
+ async removeDueDate() {
2395
+ await this.page.locator(".due-date .close-icon").click();
2396
+ }
2397
+ async setScheduledStartDate(date, monthYear) {
2398
+ await this.page.locator(`.scheduled-start-date .date`).click();
2399
+ const prev = this.page.locator(".datepicker-days .prev");
2400
+ const next = this.page.locator(".datepicker-days .next");
2401
+ const monYear = this.page.locator(".datepicker-days .datepicker-switch");
2402
+ const thisMonth = (0, ($parcel$interopDefault($kKeXs$moment)))(monthYear, "MMMM YYYY").isBefore();
2403
+ while(await monYear.textContent() != monthYear)if (thisMonth) await prev.click();
2404
+ else await next.click();
2405
+ await this.page.getByRole("cell", {
2406
+ name: "" + date + ""
2407
+ }).first().click();
2408
+ }
2409
+ async setDuration(days, hours, mins) {
2410
+ await this.page.locator(".duration-editor").click();
2411
+ if (typeof days !== "undefined") await this.page.locator(".days").fill(days);
2412
+ if (typeof hours !== "undefined") await this.page.locator(".hours").fill(hours);
2413
+ if (typeof mins !== "undefined") await this.page.locator(".minutes").fill(mins);
2414
+ }
2415
+ async expectScheduledStartDateToBe(date) {
2416
+ (0, $kKeXs$playwrighttest.expect)(await this.page.locator(`.scheduled-start-date .date input`).getAttribute("value")).toBe(date);
2417
+ }
2418
+ async expectDueDateToBe(date) {
2419
+ (0, $kKeXs$playwrighttest.expect)(await this.page.locator(".due-date .date-editor .date > .light-text").getAttribute("value")).toContain(date);
2420
+ }
2421
+ async expectedDueDateTime(time) {
2422
+ (0, $kKeXs$playwrighttest.expect)(await this.page.locator(".due-date .date-editor .time-picker-holder input").getAttribute("value")).toContain(time);
2423
+ }
2424
+ async expectDurationToBe(duration) {
2425
+ (0, $kKeXs$playwrighttest.expect)(await this.page.locator(".duration-editor").textContent()).toBe(duration);
2426
+ }
2427
+ async setUsername(username) {
2428
+ await this.page.locator(".script-username").click();
2429
+ await this.page.locator("user-input-with-variable").getByLabel("*").fill(username);
2430
+ await this.page.locator("user-input-with-variable").press("Enter");
2431
+ }
2432
+ async setPassword(password) {
2433
+ await this.page.locator(".field > .display").click();
2434
+ await this.page.locator('input[name="scriptUserPassword"]').fill(password);
2435
+ await this.page.locator('input[name="scriptUserPassword"]').press("Enter");
2436
+ }
2437
+ async expectScriptUsernameToBe(username) {
2438
+ (0, $kKeXs$playwrighttest.expect)(await this.page.locator(".script-username").textContent()).toContain(username);
2439
+ }
2440
+ async expectScriptUserPasswordToBe(password) {
2441
+ (0, $kKeXs$playwrighttest.expect)(await this.page.locator('span[name="scriptUserPassword"]').textContent()).toContain(password);
2442
+ }
2443
+ }
2444
+
2445
+
2446
+
2447
+ class $3048f12d9d777352$export$98de9bca7d44fc1a extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2448
+ constructor(page){
2449
+ super(page);
2450
+ }
2451
+ async setName(name) {
2452
+ await this.page.locator("#release-form-title").fill(name);
2453
+ }
2454
+ async setDescription(description) {
2455
+ await this.page.getByText("Set description...").click();
2456
+ await this.page.locator("span").filter({
2457
+ hasText: "Set description... * Save"
2458
+ }).locator("i").first().click();
2459
+ await this.page.locator("textarea").click();
2460
+ await this.page.locator("textarea").fill(description);
2461
+ await this.page.getByText("Save", {
2462
+ exact: true
2463
+ }).click();
2464
+ }
2465
+ async create() {
2466
+ await this.page.getByRole("button", {
2467
+ name: "Create"
2468
+ }).click();
2469
+ }
2470
+ }
2471
+
2472
+
2473
+
2474
+
2475
+ class $b12db2561a3bf785$export$899a7095bab1879d extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2476
+ constructor(page){
2477
+ super(page);
2478
+ }
2479
+ async expectAllowConcurrentReleasesFromTrigger(expectedValue) {
2480
+ if (expectedValue) {
2481
+ await this.page.locator(".col-xs-2 .trigger-item-state").textContent({
2482
+ timeout: 3000
2483
+ });
2484
+ (0, $kKeXs$playwrighttest.expect)(await this.page.locator(".col-xs-2 .trigger-item-state").textContent()).toContain("Enabled");
2485
+ } else {
2486
+ await this.page.locator(".col-xs-2 .trigger-item-state").textContent({
2487
+ timeout: 3000
2488
+ });
2489
+ (0, $kKeXs$playwrighttest.expect)(await this.page.locator(".col-xs-2 .trigger-item-state").textContent()).toContain("Disabled");
2490
+ }
2491
+ }
2492
+ async setAllowConcurrentReleasesFromTriggerAndSubmit(checked) {
2493
+ const result = await this.page.locator(".col-xs-2 .trigger-item-state").textContent({
2494
+ timeout: 3000
2495
+ });
2496
+ if (result === "Enabled" && checked === false || result == "Disabled" && checked === true) await this.page.locator('form[name="releaseTriggerOptions"] label[for="cb"]').click();
2497
+ }
2498
+ async expectTriggersVisible(amount) {
2499
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".xlr-trigger-row .trigger-row-content")).toHaveCount(amount);
2500
+ }
2501
+ async expectNoNewTriggerButtonShown() {
2502
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".trigger-header a.button.primary")).not.toBeVisible();
2503
+ }
2504
+ }
2505
+
2506
+
2507
+ class $959d38250779aa22$export$8c8e7207254accc2 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2508
+ constructor(page){
2509
+ super(page);
2510
+ this.taskDrawer = new (0, $6a21661eb4695574$export$e946776eae644790)(page);
2511
+ this.properties = new (0, $f4ca0e32f2cf5291$export$ccf2756779bad715)(page);
2512
+ this.createTemplatePage = new (0, $3048f12d9d777352$export$98de9bca7d44fc1a)(page);
2513
+ this.triggers = new (0, $b12db2561a3bf785$export$899a7095bab1879d)(page);
2514
+ }
2515
+ async openTemplateMenu(menuItem) {
2516
+ await this.page.locator(`navigation-sidebar ul li`).getByText(menuItem, {
2517
+ exact: true
2518
+ }).click();
2519
+ }
2520
+ async openTaskDrawer(taskName) {
2521
+ await this.page.getByText(taskName, {
2522
+ exact: true
2523
+ }).click();
2524
+ return this.taskDrawer;
2525
+ }
2526
+ async openTaskDrawerFromGrantt(taskName) {
2527
+ await this.page.locator(".gantt_tree_content").getByText(taskName, {
2528
+ exact: true
2529
+ }).dblclick();
2530
+ return this.taskDrawer;
2531
+ }
2532
+ async openProperties() {
2533
+ await this.openTemplateMenu("Properties");
2534
+ }
2535
+ async openTriggers() {
2536
+ await this.openTemplateMenu("Triggers");
2537
+ }
2538
+ async backToTemplate() {
2539
+ await this.page.locator(".icon-back").click();
2540
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByLabel("breadcrumb").getByText("Templates")).toBeVisible();
2541
+ }
2542
+ async expectTemplateLabelToBePresent() {
2543
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".dot-chip").filter({
2544
+ hasText: "TEMPLATE"
2545
+ })).toBeVisible();
2546
+ }
2547
+ async expectSubPage(menuItem, toBePresent) {
2548
+ if (toBePresent) await (0, $kKeXs$playwrighttest.expect)(this.page.locator(`navigation-sidebar ul li`).getByText(menuItem, {
2549
+ exact: true
2550
+ })).toBeVisible();
2551
+ else await (0, $kKeXs$playwrighttest.expect)(this.page.locator(`navigation-sidebar ul li`).getByText(menuItem, {
2552
+ exact: true
2553
+ })).not.toBeVisible();
2554
+ }
2555
+ async openFlowView() {
2556
+ await this.page.locator(".xl-icon.column-icon").click();
2557
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#release-content")).toBeVisible();
2558
+ }
2559
+ async openTableView() {
2560
+ await this.page.locator(".xl-icon.table-icon").click();
2561
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".release-grid-container")).toBeVisible();
2562
+ }
2563
+ async openPlannerView() {
2564
+ await this.page.locator(".xl-icon.planner-icon").click();
2565
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".gantt-container")).toBeVisible();
2566
+ }
2567
+ async openCodeView() {
2568
+ await this.page.locator(".xl-icon.code-icon").click();
2569
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#dsl-content")).toBeVisible();
2570
+ }
2571
+ async expandGanttFolder() {
2572
+ const icExpandTreeview1 = this.page.locator(".gantt_tree_icon.gantt_open");
2573
+ for (const element of (await icExpandTreeview1.all())){
2574
+ const blnVal = await element.isVisible();
2575
+ if (blnVal) {
2576
+ await element.click();
2577
+ await this.expandGanttFolder();
2578
+ }
2579
+ }
2580
+ }
2581
+ }
2582
+
2583
+
2584
+
2585
+
2586
+ class $8b6ce149dd48e48b$export$7e1d435fa474ee21 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2587
+ constructor(page){
2588
+ super(page);
2589
+ }
2590
+ async openTemplatesList(filter) {
2591
+ let url = "/templates";
2592
+ if (filter) url += `?has_filter&filter=${filter}`;
2593
+ await this.page.goto(url);
2594
+ }
2595
+ async searchBy(criteria) {
2596
+ await this.page.locator(".searchFilter").clear();
2597
+ await this.page.locator(".searchFilter").fill(criteria);
2598
+ }
2599
+ async copy(originTitle, targetTitle) {
2600
+ await this.page.locator(".title").filter({
2601
+ hasText: originTitle
2602
+ }).locator(".copy").click();
2603
+ await this.page.getByLabel("Template name").clear();
2604
+ await this.page.getByLabel("Template name").fill(targetTitle);
2605
+ await this.page.getByLabel("Description").clear();
2606
+ await this.page.getByLabel("Description").fill("description");
2607
+ await this.page.getByRole("button", {
2608
+ name: "Continue"
2609
+ }).click();
2610
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".dot-chip").filter({
2611
+ hasText: "TEMPLATE"
2612
+ })).toBeVisible();
2613
+ }
2614
+ async expectTemplateVisible(title, expected = true) {
2615
+ if (expected) {
2616
+ await this.page.locator(".template").filter({
2617
+ hasText: title
2618
+ }).waitFor();
2619
+ (0, $kKeXs$playwrighttest.expect)(this.page.locator(".template").filter({
2620
+ hasText: title
2621
+ })).toBeVisible();
2622
+ } else {
2623
+ await this.page.locator(".template").filter({
2624
+ hasText: title
2625
+ }).waitFor();
2626
+ (0, $kKeXs$playwrighttest.expect)(this.page.locator(".template").filter({
2627
+ hasText: title
2628
+ })).not.toBeVisible();
2629
+ }
2630
+ }
2631
+ async delete(title) {
2632
+ await this.page.locator(".title").filter({
2633
+ hasText: title
2634
+ }).locator(".delete").waitFor();
2635
+ await this.page.locator(".title").filter({
2636
+ hasText: title
2637
+ }).locator(".delete").click();
2638
+ await this.page.getByRole("button", {
2639
+ name: "Delete"
2640
+ }).click();
2641
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".title").filter({
2642
+ hasText: title
2643
+ })).not.toBeVisible();
2644
+ }
2645
+ async clickCreateNewTemplate() {
2646
+ await this.page.getByTestId("dot-button").click();
2647
+ await this.page.getByRole("menuitem", {
2648
+ name: "Create new template"
2649
+ }).click();
2650
+ }
2651
+ async openTemplateByName(templateName) {
2652
+ await this.page.getByPlaceholder("Filter by title...", {
2653
+ exact: true
2654
+ }).click();
2655
+ await this.page.getByPlaceholder("Filter by title...", {
2656
+ exact: true
2657
+ }).fill(templateName);
2658
+ await this.page.getByPlaceholder("Filter by title...", {
2659
+ exact: true
2660
+ }).press("Enter");
2661
+ await this.page.locator(`.template`).filter({
2662
+ hasText: templateName
2663
+ }).locator(`.raised-link`).waitFor();
2664
+ await this.page.locator(`.template`).filter({
2665
+ hasText: templateName
2666
+ }).locator(`.raised-link`).click();
2667
+ }
2668
+ }
2669
+
2670
+
2671
+
2672
+
2673
+ class $a6a3c1345fc4767e$export$b6fbc3e67030138f extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2674
+ async setStatus(status) {
2675
+ await this.page.locator(".react-tagsinput").click({
2676
+ force: true
2677
+ });
2678
+ await this.page.getByText("Clear all").click();
2679
+ await this.page.locator(".react-tagsinput").click({
2680
+ force: true
2681
+ });
2682
+ if (status === "Select all") await this.page.getByText(status).click();
2683
+ else await this.page.getByTitle(status).locator("i").first().click();
2684
+ }
2685
+ async openReleaseGroup(title) {
2686
+ await this.page.locator("xlr-release-group-row").filter({
2687
+ hasText: title
2688
+ }).getByRole("link").click();
2689
+ await this.page.getByTitle(title).click();
2690
+ await (0, $kKeXs$playwrighttest.expect)(this.page).toHaveURL(/.*ReleaseGroup/);
2691
+ }
2692
+ async expectReleaseGroupStatus(status) {
2693
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".release-status")).toContainText(status);
2694
+ }
2695
+ async expectReleaseGroupDisplayed(title) {
2696
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByText(title, {
2697
+ exact: true
2698
+ })).toBeVisible();
2699
+ }
2700
+ async expectReleaseGroupNotDisplayed(title) {
2701
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByText(title, {
2702
+ exact: true
2703
+ })).not.toBeVisible();
2704
+ }
2705
+ async searchReleaseGroupByTitle(title) {
2706
+ await this.page.getByPlaceholder("Search for groups...", {
2707
+ exact: true
2708
+ }).click();
2709
+ await this.page.getByPlaceholder("Search for groups...", {
2710
+ exact: true
2711
+ }).fill(title);
2712
+ await this.page.getByPlaceholder("Search for groups...", {
2713
+ exact: true
2714
+ }).press("Enter");
2715
+ }
2716
+ async deleteReleaseGroup(title) {
2717
+ await this.page.locator(".fc-list-item-line").filter({
2718
+ hasText: title
2719
+ }).locator(".fc-item-delete").click();
2720
+ await this.page.getByRole("button", {
2721
+ name: "Delete"
2722
+ }).click();
2723
+ }
2724
+ async clickReleaseGroupEdit(title) {
2725
+ await this.page.locator(".fc-list-item-line").filter({
2726
+ hasText: title
2727
+ }).locator(".fc-item-update").click();
2728
+ }
2729
+ async enterReleaseGroupDetails(new_title) {
2730
+ await this.page.locator(".modal-body").locator("#title").fill(new_title);
2731
+ }
2732
+ async clickSaveButton() {
2733
+ await this.page.locator(".modal-footer").getByRole("button", {
2734
+ name: "Save"
2735
+ }).click();
2736
+ }
2737
+ async clickCancelButton() {
2738
+ await this.page.locator(".modal-footer").getByRole("button", {
2739
+ name: "Cancel"
2740
+ }).click();
2741
+ }
2742
+ }
2743
+
2744
+
2745
+
2746
+
2747
+ class $3fad6a9449b6416f$export$1a0994e9c202d529 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2748
+ async expectReleaseDisplayed(title) {
2749
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByText(title, {
2750
+ exact: true
2751
+ })).toBeVisible();
2752
+ }
2753
+ async expectReleaseNotDisplayed(title) {
2754
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByText(title, {
2755
+ exact: true
2756
+ })).not.toBeVisible({
2757
+ timeout: 10000
2758
+ });
2759
+ }
2760
+ async expectPhaseDisplayed(title) {
2761
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByText(title, {
2762
+ exact: true
2763
+ })).toBeVisible();
2764
+ }
2765
+ async openContextMenu(title) {
2766
+ await this.page.locator(".timeline-row-name").filter({
2767
+ hasText: title
2768
+ }).locator(".options-icon").click();
2769
+ }
2770
+ async removeFromReleaseGroup() {
2771
+ await this.page.getByRole("menuitem", {
2772
+ name: "Remove from group"
2773
+ }).locator("a").click();
2774
+ await this.page.getByRole("button", {
2775
+ name: "Remove"
2776
+ }).click();
2777
+ }
2778
+ async expectNumberOfReleases(num_of_release) {
2779
+ const elementCount = await this.page.locator(".timeline-row-name-release").count();
2780
+ (0, $kKeXs$playwrighttest.expect)(elementCount).toBe(num_of_release);
2781
+ }
2782
+ async openAddReleaseList() {
2783
+ await this.page.getByRole("button", {
2784
+ name: "Add release"
2785
+ }).click();
2786
+ }
2787
+ async filterReleases(title) {
2788
+ await this.page.getByPlaceholder("Search for a release...").click();
2789
+ await this.page.getByPlaceholder("Search for a release...").fill(title);
2790
+ await this.page.waitForTimeout(5000);
2791
+ await this.page.getByPlaceholder("Search for a release...").press("Enter");
2792
+ }
2793
+ async expectNumberOfReleasesOnModal(num_of_release) {
2794
+ const elementCount = await this.page.locator(".release-modal-line").count();
2795
+ (0, $kKeXs$playwrighttest.expect)(elementCount).toBe(num_of_release);
2796
+ }
2797
+ async selectAllReleaseCheckbox() {
2798
+ await this.page.getByLabel("Select all").check();
2799
+ }
2800
+ async addReleasesToGroup() {
2801
+ await this.page.getByRole("button", {
2802
+ name: "Add"
2803
+ }).click();
2804
+ }
2805
+ }
2806
+
2807
+
2146
2808
  class $4ef41cf96a5fae4c$export$b8a61e5c71402559 {
2147
2809
  constructor(page){
2148
2810
  this.page = page;
@@ -2150,9 +2812,15 @@ class $4ef41cf96a5fae4c$export$b8a61e5c71402559 {
2150
2812
  this.settingsMenu = new (0, $7867194f18360347$export$1d7840d5cdc861d5)(page);
2151
2813
  this.usersPage = new (0, $3ceab7c613cabfd6$export$107317390f5aa598)(page);
2152
2814
  this.applicationPage = new (0, $dc91ece6da6cadfa$export$1533b625ec0c75e2)(page);
2815
+ this.taskListPage = new (0, $ed2d4739e27d43c1$export$60c3bfa6385e2a10)(page);
2816
+ this.templatePage = new (0, $959d38250779aa22$export$8c8e7207254accc2)(page);
2817
+ this.templateListPage = new (0, $8b6ce149dd48e48b$export$7e1d435fa474ee21)(page);
2153
2818
  this.taskDetailsPage = new (0, $a642d735048996f9$export$922081b54f2ab994)(page);
2154
2819
  this.releaseCalendarPage = new (0, $a8855257f8bb2b12$export$43682cddead1dd78)(page);
2155
2820
  this.releaseListPage = new (0, $87643f2d97b0644e$export$a678525e79c4ccc4)(page);
2821
+ this.releaseGroupPage = new (0, $a6a3c1345fc4767e$export$b6fbc3e67030138f)(page);
2822
+ this.releaseGroupTimelinePage = new (0, $3fad6a9449b6416f$export$1a0994e9c202d529)(page);
2823
+ this.util = new (0, $4efca3d4eadf892b$export$6adb8dd3f0d1e432)(page);
2156
2824
  }
2157
2825
  async openTemplate(id) {
2158
2826
  return this.openReleaseOrTemplate(id, false);
@@ -2252,6 +2920,14 @@ class $4ef41cf96a5fae4c$export$b8a61e5c71402559 {
2252
2920
  await this.page.waitForSelector("#release");
2253
2921
  return new (0, $9b9a8c3da392d020$export$f43492e8ac3c566)(this.page);
2254
2922
  }
2923
+ async collapseSideView() {
2924
+ await this.page.locator('.dot-tooltip[aria-label="Collapse"]').click();
2925
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator('.dot-tooltip[aria-label="Collapse"]')).not.toBeVisible();
2926
+ }
2927
+ async expandSideView() {
2928
+ await this.page.locator('.dot-tooltip[aria-label="Expand"]').click();
2929
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator('.dot-tooltip[aria-label="Expand"]')).not.toBeVisible();
2930
+ }
2255
2931
  }
2256
2932
 
2257
2933
 
@@ -3170,15 +3846,36 @@ class $6998c6a53a9eb4fa$var$Fixtures {
3170
3846
  getParentId(id) {
3171
3847
  return id.substring(0, id.lastIndexOf("/"));
3172
3848
  }
3173
- folder(folder) {
3849
+ async folder(folder) {
3174
3850
  const parentId = this.getParentId(folder.id);
3851
+ folder.type = "xlrelease.Folder";
3175
3852
  //ToDo: Add system teams
3176
- /* eslint-disable @typescript-eslint/no-unused-vars */ const teams = folder.teams;
3853
+ const teams = folder.teams;
3177
3854
  delete folder.teams;
3178
3855
  //ToDo: Add Children
3179
- const children = folder.children || [];
3856
+ /* eslint-disable @typescript-eslint/no-unused-vars */ const children = folder.children || [];
3180
3857
  delete folder.children;
3181
- /* eslint-disable @typescript-eslint/no-unused-vars */ return this.doPost(`api/v1/folders/${parentId}`, folder);
3858
+ if (teams) return this.doPost(`api/v1/folders/${folder.id}/teams`, teams);
3859
+ return this.doPost(`api/v1/folders/${parentId}`, folder);
3860
+ }
3861
+ createFolder(folderJson) {
3862
+ folderJson.type = "xlrelease.Folder";
3863
+ return this.doPost(`fixtures/folders`, [
3864
+ folderJson
3865
+ ]);
3866
+ }
3867
+ trigger(trigger) {
3868
+ this.triggerIds.push(trigger.id);
3869
+ return this.doPost("fixtures/trigger", trigger);
3870
+ }
3871
+ roles(rolePrincipals) {
3872
+ return this.doPost("fixtures/roles/principals", rolePrincipals);
3873
+ }
3874
+ permissions(rolePermissions) {
3875
+ return this.doPost("fixtures/roles/permissions/global", rolePermissions);
3876
+ }
3877
+ deleteRole(roleName) {
3878
+ return this.doDelete(`fixtures/role/${roleName}`);
3182
3879
  }
3183
3880
  deleteArchivedRelease(id) {
3184
3881
  const releaseId = id.includes("Applications/") ? id : `Applications/${id}`;
@@ -3208,8 +3905,7 @@ class $6998c6a53a9eb4fa$var$Fixtures {
3208
3905
  ]);
3209
3906
  }
3210
3907
  deleteFolder(folderId) {
3211
- const id = this.doGet(`api/v1/folders/${folderId}`);
3212
- return this.doDelete(`api/v1/folders/${id}`);
3908
+ return this.doDelete(`api/v1/folders/${folderId}`);
3213
3909
  }
3214
3910
  activityLogs(id, logs) {
3215
3911
  return this.doPost(`fixtures/activityLogs/${id}`, logs);
@@ -3298,6 +3994,16 @@ class $6998c6a53a9eb4fa$var$Fixtures {
3298
3994
  const summary = json.fields.summary;
3299
3995
  (0, $kKeXs$playwrighttest.expect)(summary).toBe(expectedSummary);
3300
3996
  }
3997
+ async expectContainingAttachments(releaseId, tempFile) {
3998
+ if (releaseId.indexOf("Applications/") === -1) releaseId = "Applications/" + releaseId;
3999
+ await (0, $kKeXs$playwrighttest.expect)(async ()=>{
4000
+ const resp = await this.doPost(`fixtures/expectContainingAttachments/${releaseId}`, {
4001
+ name: tempFile,
4002
+ expectedContent: tempFile
4003
+ });
4004
+ (0, $kKeXs$playwrighttest.expect)(resp).toBe(true);
4005
+ }).toPass();
4006
+ }
3301
4007
  async waitForReleaseStarted(releaseTitle) {
3302
4008
  await (0, $kKeXs$playwrighttest.expect)(async ()=>{
3303
4009
  const resp = await this.doPost("releases/search", {
@@ -3350,6 +4056,9 @@ class $6998c6a53a9eb4fa$var$Fixtures {
3350
4056
  }
3351
4057
  ]);
3352
4058
  }
4059
+ async createReleaseGroup(releaseGroup) {
4060
+ return this.doPost("fixtures/release-groups", releaseGroup);
4061
+ }
3353
4062
  doPost(url, body) {
3354
4063
  return this.request.post(url, {
3355
4064
  data: body,