@digital-ai/devops-page-object-release 0.0.0-snapshot-20251031105320 → 0.0.0-snapshot-20251106120802

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/CHANGELOG.md CHANGED
@@ -1,10 +1,28 @@
1
1
  # @digital-ai/devops-page-object-release
2
2
 
3
- ## 0.0.0-snapshot-20251031105320
3
+ ## 0.0.0-snapshot-20251106120802
4
4
 
5
5
  ### Patch Changes
6
6
 
7
- - 867ee27: S-125939: Migrated Release flag scenario from cypress to playwright
7
+ - 9700bc0: S-123013: Updated page objects for template scenario
8
+
9
+ ## 0.0.91
10
+
11
+ ### Patch Changes
12
+
13
+ - 246bc7c: S-125225: Update new tasks page filters
14
+
15
+ ## 0.0.90
16
+
17
+ ### Patch Changes
18
+
19
+ - b1f79b2: S-125960: Migrated Release summary scenario from cypress to playwright
20
+
21
+ ## 0.0.89
22
+
23
+ ### Patch Changes
24
+
25
+ - ed632e1: S-125939: Migrated Release flag scenario from cypress to playwright
8
26
 
9
27
  ## 0.0.88
10
28
 
package/dist/main.js CHANGED
@@ -1009,6 +1009,12 @@ class $3d3f3946c54f5897$export$34addcca3f0ae43f extends (0, $f8721861c660dd88$ex
1009
1009
  await this.page.getByPlaceholder("No template").fill(templateName);
1010
1010
  await this.page.getByText(templateName).click();
1011
1011
  }
1012
+ async selectFolder(folderName) {
1013
+ await this.page.locator("div.xl__value-container div.xl__placeholder").click();
1014
+ await this.page.locator("div.xl__value-container").click();
1015
+ await this.page.locator('input[id^="react-select"][type="text"]').fill(folderName);
1016
+ await this.page.getByLabel("grid").getByText(folderName).click();
1017
+ }
1012
1018
  async removeTemplate() {
1013
1019
  await this.page.locator(".template-select .close-icon").click();
1014
1020
  }
@@ -1058,18 +1064,52 @@ class $3d3f3946c54f5897$export$34addcca3f0ae43f extends (0, $f8721861c660dd88$ex
1058
1064
 
1059
1065
 
1060
1066
 
1061
- class $e403098cd4f59faa$export$7034f81075184002 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1067
+
1068
+ class $96d547f0e8ead553$export$48c33d2414f51608 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1062
1069
  constructor(page){
1063
1070
  super(page);
1064
1071
  }
1065
1072
  getHeaderSelector() {
1066
- return ".release-list-header";
1073
+ return ".filter-title-search";
1067
1074
  }
1068
1075
  getBaseDrawerSelector() {
1069
- return `${this.getHeaderSelector()} .filter-drawer`;
1076
+ return '.filter-drawer div[role="dialog"]';
1077
+ }
1078
+ getTitleInputSelector() {
1079
+ return `${this.getHeaderSelector()} input#title-filter`;
1080
+ }
1081
+ async openFilterDrawer() {
1082
+ await this.page.locator(`${this.getHeaderSelector()} button`, {
1083
+ hasText: "Filters"
1084
+ }).click();
1085
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(this.getBaseDrawerSelector())).toBeVisible();
1086
+ return this;
1087
+ }
1088
+ async closeFilterDrawer() {
1089
+ await this.page.locator(`${this.getBaseDrawerSelector()} .dot-icon-btn[data-testid="close-btn"]`).click();
1090
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(this.getBaseDrawerSelector())).not.toBeVisible();
1091
+ return this;
1070
1092
  }
1071
- getFilterDrawerSelector() {
1072
- return `${this.getBaseDrawerSelector()} div[role="dialog"]`;
1093
+ async clearTitleFilter() {
1094
+ await this.page.locator(this.getTitleInputSelector()).fill("");
1095
+ return this;
1096
+ }
1097
+ async clearAllFilters() {
1098
+ await this.page.locator(`.filter-row button[data-testid="clear-all-btn"]`).click();
1099
+ return this;
1100
+ }
1101
+ async filterByTitle(releaseTitle) {
1102
+ await this.page.locator(this.getTitleInputSelector()).fill(releaseTitle);
1103
+ }
1104
+ async clearFilterTitle() {
1105
+ await this.page.locator(this.getTitleInputSelector()).clear();
1106
+ }
1107
+ }
1108
+
1109
+
1110
+ class $e403098cd4f59faa$export$7034f81075184002 extends (0, $96d547f0e8ead553$export$48c33d2414f51608) {
1111
+ constructor(page){
1112
+ super(page);
1073
1113
  }
1074
1114
  getStatusInputSelector() {
1075
1115
  return `${this.getBaseDrawerSelector()} input#release-status-filter-autocomplete`;
@@ -1080,9 +1120,6 @@ class $e403098cd4f59faa$export$7034f81075184002 extends (0, $f8721861c660dd88$ex
1080
1120
  getSelectAllStatusesButtonSelector() {
1081
1121
  return `${this.getBasePopperSelector()} button[data-testid="dot-action-item-btn"]`;
1082
1122
  }
1083
- getTitleInputSelector() {
1084
- return `${this.getHeaderSelector()} input#title-filter`;
1085
- }
1086
1123
  getRiskLevelInputSelector() {
1087
1124
  return `${this.getBaseDrawerSelector()} input#risk`;
1088
1125
  }
@@ -1121,27 +1158,7 @@ class $e403098cd4f59faa$export$7034f81075184002 extends (0, $f8721861c660dd88$ex
1121
1158
  return this;
1122
1159
  }
1123
1160
  async filterReleaseByTitle(releaseTitle) {
1124
- await this.page.locator(this.getTitleInputSelector()).fill(releaseTitle);
1125
- }
1126
- async clearTitleFilter() {
1127
- await this.page.locator(this.getTitleInputSelector()).fill("");
1128
- return this;
1129
- }
1130
- async openFilterDrawer() {
1131
- await this.page.locator(`${this.getHeaderSelector()} button`, {
1132
- hasText: "Filters"
1133
- }).click();
1134
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator(this.getFilterDrawerSelector())).toBeVisible();
1135
- return this;
1136
- }
1137
- async closeFilterDrawer() {
1138
- await this.page.locator(`${this.getBaseDrawerSelector()} .dot-icon-btn[data-testid="close-btn"]`).click();
1139
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator(this.getFilterDrawerSelector())).not.toBeVisible();
1140
- return this;
1141
- }
1142
- async clearAllFilters() {
1143
- await this.page.locator(`${this.getHeaderSelector()} .filter-row button[data-testid="clear-all-btn"]`).click();
1144
- return this;
1161
+ await this.filterByTitle(releaseTitle);
1145
1162
  }
1146
1163
  async clearAllStatusFilters() {
1147
1164
  await this.page.locator(this.getStatusInputSelector()).click();
@@ -2306,6 +2323,9 @@ class $eb81c1b930e440ff$export$519356f6c50361f7 extends (0, $f8721861c660dd88$ex
2306
2323
  async expectRiskProfileValue(value) {
2307
2324
  await (0, $kKeXs$playwrighttest.expect)(this.railLocator.locator("#riskProfileId")).toHaveValue(value);
2308
2325
  }
2326
+ async expectServerFieldValue(label, value) {
2327
+ await (0, $kKeXs$playwrighttest.expect)(this.railLocator.getByTestId("jiraServer-input")).toHaveValue(value);
2328
+ }
2309
2329
  async expectTo(value) {
2310
2330
  return await (0, $kKeXs$playwrighttest.expect)(this.railLocator.getByTestId(`dot-autocomplete-chip`)).toHaveText(value);
2311
2331
  }
@@ -3134,7 +3154,7 @@ class $6a21661eb4695574$export$e946776eae644790 extends (0, $f8721861c660dd88$ex
3134
3154
  this.taskDrawerLocator = this.page.locator("task-drawer .dot-drawer");
3135
3155
  }
3136
3156
  async waitForTaskDrawer() {
3137
- const handle = await this.page.locator(".dot-drawer-paper").elementHandle();
3157
+ const handle = await this.page.locator("task-drawer .dot-drawer-paper").elementHandle();
3138
3158
  await handle?.waitForElementState("stable");
3139
3159
  }
3140
3160
  async openOverviewRail() {
@@ -3303,10 +3323,10 @@ class $6a21661eb4695574$export$e946776eae644790 extends (0, $f8721861c660dd88$ex
3303
3323
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".user-task-assigned-wrapper .clickable-avatar")).toBeVisible();
3304
3324
  }
3305
3325
  async removeAssignToUser(userName) {
3306
- await this.page.getByRole("button", {
3326
+ await this.taskDrawerLocator.getByRole("button", {
3307
3327
  name: userName
3308
3328
  }).click();
3309
- await this.page.getByRole("button", {
3329
+ await this.taskDrawerLocator.getByRole("button", {
3310
3330
  name: "Clear"
3311
3331
  }).click();
3312
3332
  return this;
@@ -3323,7 +3343,7 @@ class $6a21661eb4695574$export$e946776eae644790 extends (0, $f8721861c660dd88$ex
3323
3343
  }
3324
3344
  async removeAssignedTeam(teamName) {
3325
3345
  await this.page.locator(".team-task-assigned-wrapper .editable").getByText(teamName).click();
3326
- await this.page.getByRole("button", {
3346
+ await this.taskDrawerLocator.getByRole("button", {
3327
3347
  name: "Clear"
3328
3348
  }).click();
3329
3349
  return this;
@@ -3412,6 +3432,7 @@ class $6a21661eb4695574$export$e946776eae644790 extends (0, $f8721861c660dd88$ex
3412
3432
 
3413
3433
 
3414
3434
 
3435
+
3415
3436
  class $e8395395d01b66bb$export$5a82be0a2a261cc6 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
3416
3437
  constructor(page){
3417
3438
  super(page);
@@ -3424,6 +3445,19 @@ class $e8395395d01b66bb$export$5a82be0a2a261cc6 extends (0, $f8721861c660dd88$ex
3424
3445
  async disableShowDates() {
3425
3446
  await this.page.locator("#toggleIsDatesColumnsShown").uncheck();
3426
3447
  }
3448
+ async expectStartDateDisplayed(name, date) {
3449
+ const formattedDate = (0, ($parcel$interopDefault($kKeXs$moment)))(date).format("M/D/YY");
3450
+ const inputLocator = this.page.locator(".gantt_row", {
3451
+ hasText: name
3452
+ }).locator('.gantt_cell input[type="text"]').first(); // assumes start date is the first text input
3453
+ await (0, $kKeXs$playwrighttest.expect)(inputLocator).toHaveValue(formattedDate);
3454
+ }
3455
+ async clickOnReleaseName(releaseName) {
3456
+ await this.page.getByRole("link", {
3457
+ name: releaseName
3458
+ }).click();
3459
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByLabel("breadcrumb").getByText(releaseName)).toBeVisible();
3460
+ }
3427
3461
  async expectPlanningDataColumnsHidden() {
3428
3462
  (0, $kKeXs$playwrighttest.expect)(await this.page.locator(`#gantt .gantt_grid_data .gantt_row`).first().locator(`.gantt_cell`).count()).toEqual(1);
3429
3463
  }
@@ -3880,9 +3914,20 @@ class $d330a7d6f7926d53$export$3bc3e140e0dcb075 extends (0, $f8721861c660dd88$ex
3880
3914
  const releaseAdminRow = this.page.locator("#teams-permissions-table tr", {
3881
3915
  hasText: teamName
3882
3916
  });
3883
- await (0, $kKeXs$playwrighttest.expect)(releaseAdminRow.locator("span.tag-wrapper.tag-label", {
3884
- hasText: userName
3885
- })).toBeVisible();
3917
+ await releaseAdminRow.first().waitFor({
3918
+ state: "visible",
3919
+ timeout: 4000
3920
+ });
3921
+ const userTag = releaseAdminRow.locator(`text=${userName}`);
3922
+ await (0, $kKeXs$playwrighttest.expect)(userTag).toBeVisible({
3923
+ timeout: 4000
3924
+ });
3925
+ }
3926
+ async expectTeamContains(teamName, ...members) {
3927
+ const teamEditor = this.page.locator("tr", {
3928
+ hasText: teamName
3929
+ });
3930
+ for (const member of members)await (0, $kKeXs$playwrighttest.expect)(teamEditor.locator(`text=${member}`)).toBeVisible();
3886
3931
  }
3887
3932
  async openSubPage(subpage) {
3888
3933
  await this.page.locator("ul.side-nav li", {
@@ -4331,6 +4376,19 @@ class $2c89ba54932fbba8$export$f8f26dd395d7e1bd extends (0, $f8721861c660dd88$ex
4331
4376
  }
4332
4377
 
4333
4378
 
4379
+
4380
+
4381
+ class $fd3e87c08fb5976e$export$46146ef3ab8c339b extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
4382
+ constructor(page){
4383
+ super(page);
4384
+ }
4385
+ // Validate that release status contains the given text
4386
+ async expectReleaseStatusToContain(status) {
4387
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".release-status")).toContainText(status);
4388
+ }
4389
+ }
4390
+
4391
+
4334
4392
  class $9b9a8c3da392d020$export$f43492e8ac3c566 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
4335
4393
  defaultTimeout = 10000;
4336
4394
  constructor(page){
@@ -4338,6 +4396,7 @@ class $9b9a8c3da392d020$export$f43492e8ac3c566 extends (0, $f8721861c660dd88$exp
4338
4396
  this.addPhaseBtn = this.page.getByTestId("add-phase-btn");
4339
4397
  this.createPage = new (0, $3d3f3946c54f5897$export$34addcca3f0ae43f)(page);
4340
4398
  this.ganttPage = new (0, $e8395395d01b66bb$export$5a82be0a2a261cc6)(page);
4399
+ this.summaryPage = new (0, $fd3e87c08fb5976e$export$46146ef3ab8c339b)(page);
4341
4400
  this.tableView = new (0, $c5c393ea4aecca6c$export$649fde34d823ece7)(page);
4342
4401
  this.taskDrawer = new (0, $6a21661eb4695574$export$e946776eae644790)(page);
4343
4402
  this.teamsPermissions = new (0, $d330a7d6f7926d53$export$3bc3e140e0dcb075)(page);
@@ -4350,6 +4409,10 @@ class $9b9a8c3da392d020$export$f43492e8ac3c566 extends (0, $f8721861c660dd88$exp
4350
4409
  await this.openSubPage("Triggers");
4351
4410
  return new (0, $133601cfe0486710$export$fb932093f944abe4)(this.page);
4352
4411
  }
4412
+ async openSummary() {
4413
+ this.openSubPage("Dashboard");
4414
+ return new (0, $fd3e87c08fb5976e$export$46146ef3ab8c339b)(this.page);
4415
+ }
4353
4416
  async abort(comment = "Abort for testing") {
4354
4417
  await this.page.getByTestId("abort-btn").waitFor();
4355
4418
  await this.page.getByTestId("abort-btn").click();
@@ -7769,13 +7832,23 @@ class $fd4eef3ad2b2e612$var$DeleteVariableModel extends (0, $f8721861c660dd88$ex
7769
7832
 
7770
7833
 
7771
7834
 
7772
- class $ed2d4739e27d43c1$export$60c3bfa6385e2a10 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
7835
+
7836
+ class $ed2d4739e27d43c1$export$60c3bfa6385e2a10 extends (0, $96d547f0e8ead553$export$48c33d2414f51608) {
7773
7837
  constructor(page){
7774
7838
  super(page);
7775
7839
  this.commentBox = this.page.locator(`.input-block-level`);
7776
7840
  this.gridView = new $ed2d4739e27d43c1$var$GridView(page);
7777
7841
  this.taskDrawer = new (0, $6a21661eb4695574$export$e946776eae644790)(page);
7778
7842
  }
7843
+ getBasePopperSelector() {
7844
+ return '.dot-popper[role="presentation"]';
7845
+ }
7846
+ getSelectAllStatusesButtonSelector() {
7847
+ return `${this.getBasePopperSelector()} button[data-testid="dot-action-item-btn"]`;
7848
+ }
7849
+ getStatusInputSelector() {
7850
+ return `${this.getBaseDrawerSelector()} input#task-status-filter-autocomplete`;
7851
+ }
7779
7852
  async openTask(taskName) {
7780
7853
  await this.filterTaskByTitle(taskName);
7781
7854
  await this.page.getByText(taskName).first().click();
@@ -7841,9 +7914,7 @@ class $ed2d4739e27d43c1$export$60c3bfa6385e2a10 extends (0, $f8721861c660dd88$ex
7841
7914
  await this.taskDrawer.waitForTaskDrawer();
7842
7915
  }
7843
7916
  async filterTaskByTitle(taskname) {
7844
- await this.page.locator(".searchFilter").click();
7845
- await this.page.locator(".searchFilter").fill(taskname);
7846
- await this.page.locator(".searchFilter").press("Enter");
7917
+ await this.filterByTitle(taskname);
7847
7918
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator("//div[@data-task-title]").filter({
7848
7919
  hasText: taskname
7849
7920
  }).first()).toBeVisible();
@@ -7888,13 +7959,13 @@ class $ed2d4739e27d43c1$export$60c3bfa6385e2a10 extends (0, $f8721861c660dd88$ex
7888
7959
  await this.page.locator(`.btn-group-filter.btn-group button.btn.btn-flat[title="${title}"]`).click();
7889
7960
  }
7890
7961
  async clickOnAssignedToMe() {
7891
- await this.page.locator(`button[title="Assigned to me"]`).click();
7962
+ await this.page.locator(`input[value="assignedToMe"]`).click();
7892
7963
  }
7893
7964
  async clickOnAssignedToMyTeams() {
7894
- await this.page.locator(`button[title="Assigned to my teams"]`).click();
7965
+ await this.page.locator(`input[value="assignedToMyTeams"]`).click();
7895
7966
  }
7896
7967
  async clickOnAssignedToAllAvailable() {
7897
- await this.page.locator(`button[title="All available"]`).click();
7968
+ await this.page.locator(`input[value="assignedToAnybody"]`).click();
7898
7969
  }
7899
7970
  async expectTaskToNotBeDisplayed(taskTitle) {
7900
7971
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator(`.row.task-inner`).filter({
@@ -7924,38 +7995,30 @@ class $ed2d4739e27d43c1$export$60c3bfa6385e2a10 extends (0, $f8721861c660dd88$ex
7924
7995
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator(`#tasks-content #task-list-grouped-view div:has-text('${releaseTitle}') .task`)).toHaveCount(expectedCount);
7925
7996
  }
7926
7997
  async setSearchFilter(filterText) {
7927
- await this.page.locator(".searchFilter").fill(filterText);
7998
+ await this.filterByTitle(filterText);
7928
7999
  }
7929
8000
  async clearSearchFilter() {
7930
- await this.page.locator(".searchFilter").clear();
8001
+ await this.clearFilterTitle();
7931
8002
  }
7932
8003
  async setTagsFilter(filterText) {
7933
- await this.page.locator(".tag-input").fill(filterText);
7934
- await this.page.locator(".tag-input").press("Enter");
8004
+ await this.page.locator("input#task-tags").click();
8005
+ await this.page.locator("input#task-tags").fill(filterText);
8006
+ await this.page.locator("input#task-tags").press("Enter");
7935
8007
  }
7936
- async clickOnStatusField() {
7937
- await this.page.locator(".ci-filter-status.ng-isolate-scope").click();
8008
+ async clearAllStatusFilters() {
8009
+ await this.page.locator(this.getStatusInputSelector()).click();
8010
+ await this.page.locator(`${this.getBaseDrawerSelector()} div.filter-task-status-autocomplete button[title="Clear"]`).click();
8011
+ return this;
7938
8012
  }
7939
8013
  async clickOnStatus(statusNames) {
7940
- await this.clickOnStatusClearAll();
7941
- await this.clickOnStatusField();
7942
- for(let i = 0; i < statusNames.length; i++)await this.page.locator(`i.xl-icon.icon-s.checkbox[data='${statusNames[i]}']`).click();
7943
- // Clicking outside to close the grid dropdown
7944
- await this.clickOnTasksLabel();
7945
- }
7946
- async clickOnStatusClearAll() {
7947
- await this.clickOnStatusField();
7948
- await this.page.locator("a.xl-react-link", {
7949
- hasText: "Clear all"
8014
+ await this.clearAllStatusFilters();
8015
+ for(let i = 0; i < statusNames.length; i++)await this.page.locator("li", {
8016
+ hasText: statusNames[i]
7950
8017
  }).click();
7951
- await this.clickOnTasksLabel();
7952
8018
  }
7953
8019
  async clickOnStatusSelectAll() {
7954
- await this.clickOnStatusField();
7955
- await this.page.locator("a.xl-react-link", {
7956
- hasText: "Select all"
7957
- }).click();
7958
- await this.clickOnTasksLabel();
8020
+ await this.page.locator(this.getStatusInputSelector()).click();
8021
+ await this.page.locator(this.getSelectAllStatusesButtonSelector()).click();
7959
8022
  }
7960
8023
  async assignTaskToMe(title) {
7961
8024
  await this.page.locator(`.task-line`).filter({
@@ -7972,35 +8035,22 @@ class $ed2d4739e27d43c1$export$60c3bfa6385e2a10 extends (0, $f8721861c660dd88$ex
7972
8035
  async expectTaskTitle(taskTitle) {
7973
8036
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#tasks0")).toContainText(taskTitle);
7974
8037
  }
7975
- async clickOnTasksLabel() {
7976
- await this.page.getByLabel("breadcrumb").getByText("Tasks").click();
7977
- }
7978
8038
  async expectGroupView(expected = true) {
7979
8039
  if (expected) {
7980
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#group-tasks-by-release")).toBeChecked();
8040
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator('input[aria-label="Group by release"]')).toBeChecked();
7981
8041
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#task-list-grouped-view")).toBeVisible();
7982
8042
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#task-ungrouped-view")).not.toBeVisible();
7983
8043
  } else {
7984
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#group-tasks-by-release")).not.toBeChecked();
8044
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator('input[aria-label="Group by release"]')).not.toBeChecked();
7985
8045
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#task-list-grouped-view")).not.toBeVisible();
7986
8046
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#task-ungrouped-view")).toBeVisible();
7987
8047
  }
7988
8048
  }
7989
8049
  async changeGroupView() {
7990
- await this.page.locator("#group-tasks-by-release").click();
7991
- }
7992
- async enableGroupByReleaseView() {
7993
- await this.page.getByRole("checkbox", {
7994
- name: "Group by release"
7995
- }).check();
7996
- }
7997
- async disableGroupByReleaseView() {
7998
- await this.page.getByRole("checkbox", {
7999
- name: "Group by release"
8000
- }).uncheck();
8050
+ await this.page.locator('input[aria-label="Group by release"]').click();
8001
8051
  }
8002
8052
  async switchToGridView() {
8003
- await this.page.locator(".xl-icon.grid-icon").click();
8053
+ await this.page.locator('button[aria-label="grid view"]').click();
8004
8054
  return this.gridView;
8005
8055
  }
8006
8056
  }
@@ -8697,7 +8747,7 @@ class $8b6ce149dd48e48b$export$7e1d435fa474ee21 extends (0, $f8721861c660dd88$ex
8697
8747
  async clickNewReleaseIcon(templateName) {
8698
8748
  await this.page.locator("xlr-template-row-component").filter({
8699
8749
  hasText: templateName
8700
- }).locator(".link .add-icon").click();
8750
+ }).locator(".link .add-icon").first().click();
8701
8751
  await (0, $kKeXs$playwrighttest.expect)(this.page.getByRole("heading", {
8702
8752
  name: "Create new release"
8703
8753
  })).toBeVisible();
@@ -10032,6 +10082,7 @@ class $267ea1f27d28a032$export$8da2fa93430be6ca extends (0, $f8721861c660dd88$ex
10032
10082
 
10033
10083
 
10034
10084
 
10085
+
10035
10086
  class $4ef41cf96a5fae4c$export$b8a61e5c71402559 {
10036
10087
  constructor(page){
10037
10088
  this.page = page;
@@ -10044,6 +10095,7 @@ class $4ef41cf96a5fae4c$export$b8a61e5c71402559 {
10044
10095
  this.header = new (0, $00fc48341ebf7de4$export$2fb4351c41ce6e7a)(page);
10045
10096
  this.managePluginsPage = new (0, $b4d98f757ef92467$export$7b434e00c788d0bf)(page);
10046
10097
  this.releasePage = new (0, $9b9a8c3da392d020$export$f43492e8ac3c566)(page);
10098
+ this.summaryPage = new (0, $fd3e87c08fb5976e$export$46146ef3ab8c339b)(page);
10047
10099
  this.settingsMenu = new (0, $7867194f18360347$export$1d7840d5cdc861d5)(page);
10048
10100
  this.systemSettingsPage = new (0, $dbc8f157e7b24b12$export$2edf430132ca35d0)(page);
10049
10101
  this.usersPage = new (0, $3ceab7c613cabfd6$export$107317390f5aa598)(page);