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

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,10 @@
1
1
  # @digital-ai/devops-page-object-release
2
2
 
3
- ## 0.0.0-snapshot-20251030121554
3
+ ## 0.0.0-snapshot-20251031105320
4
4
 
5
5
  ### Patch Changes
6
6
 
7
- - 246bc7c: S-125225: Update new tasks page filters
7
+ - 867ee27: S-125939: Migrated Release flag scenario from cypress to playwright
8
8
 
9
9
  ## 0.0.88
10
10
 
package/dist/main.js CHANGED
@@ -1058,52 +1058,18 @@ class $3d3f3946c54f5897$export$34addcca3f0ae43f extends (0, $f8721861c660dd88$ex
1058
1058
 
1059
1059
 
1060
1060
 
1061
-
1062
- class $96d547f0e8ead553$export$48c33d2414f51608 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1061
+ class $e403098cd4f59faa$export$7034f81075184002 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1063
1062
  constructor(page){
1064
1063
  super(page);
1065
1064
  }
1066
1065
  getHeaderSelector() {
1067
- return ".filter-title-search";
1066
+ return ".release-list-header";
1068
1067
  }
1069
1068
  getBaseDrawerSelector() {
1070
- return '.filter-drawer div[role="dialog"]';
1071
- }
1072
- getTitleInputSelector() {
1073
- return `${this.getHeaderSelector()} input#title-filter`;
1074
- }
1075
- async openFilterDrawer() {
1076
- await this.page.locator(`${this.getHeaderSelector()} button`, {
1077
- hasText: "Filters"
1078
- }).click();
1079
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator(this.getBaseDrawerSelector())).toBeVisible();
1080
- return this;
1081
- }
1082
- async closeFilterDrawer() {
1083
- await this.page.locator(`${this.getBaseDrawerSelector()} .dot-icon-btn[data-testid="close-btn"]`).click();
1084
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator(this.getBaseDrawerSelector())).not.toBeVisible();
1085
- return this;
1086
- }
1087
- async clearTitleFilter() {
1088
- await this.page.locator(this.getTitleInputSelector()).fill("");
1089
- return this;
1090
- }
1091
- async clearAllFilters() {
1092
- await this.page.locator(`.filter-row button[data-testid="clear-all-btn"]`).click();
1093
- return this;
1094
- }
1095
- async filterByTitle(releaseTitle) {
1096
- await this.page.locator(this.getTitleInputSelector()).fill(releaseTitle);
1069
+ return `${this.getHeaderSelector()} .filter-drawer`;
1097
1070
  }
1098
- async clearFilterTitle() {
1099
- await this.page.locator(this.getTitleInputSelector()).clear();
1100
- }
1101
- }
1102
-
1103
-
1104
- class $e403098cd4f59faa$export$7034f81075184002 extends (0, $96d547f0e8ead553$export$48c33d2414f51608) {
1105
- constructor(page){
1106
- super(page);
1071
+ getFilterDrawerSelector() {
1072
+ return `${this.getBaseDrawerSelector()} div[role="dialog"]`;
1107
1073
  }
1108
1074
  getStatusInputSelector() {
1109
1075
  return `${this.getBaseDrawerSelector()} input#release-status-filter-autocomplete`;
@@ -1114,6 +1080,9 @@ class $e403098cd4f59faa$export$7034f81075184002 extends (0, $96d547f0e8ead553$ex
1114
1080
  getSelectAllStatusesButtonSelector() {
1115
1081
  return `${this.getBasePopperSelector()} button[data-testid="dot-action-item-btn"]`;
1116
1082
  }
1083
+ getTitleInputSelector() {
1084
+ return `${this.getHeaderSelector()} input#title-filter`;
1085
+ }
1117
1086
  getRiskLevelInputSelector() {
1118
1087
  return `${this.getBaseDrawerSelector()} input#risk`;
1119
1088
  }
@@ -1152,7 +1121,27 @@ class $e403098cd4f59faa$export$7034f81075184002 extends (0, $96d547f0e8ead553$ex
1152
1121
  return this;
1153
1122
  }
1154
1123
  async filterReleaseByTitle(releaseTitle) {
1155
- await this.filterByTitle(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;
1156
1145
  }
1157
1146
  async clearAllStatusFilters() {
1158
1147
  await this.page.locator(this.getStatusInputSelector()).click();
@@ -3145,7 +3134,7 @@ class $6a21661eb4695574$export$e946776eae644790 extends (0, $f8721861c660dd88$ex
3145
3134
  this.taskDrawerLocator = this.page.locator("task-drawer .dot-drawer");
3146
3135
  }
3147
3136
  async waitForTaskDrawer() {
3148
- const handle = await this.page.locator("task-drawer .dot-drawer-paper").elementHandle();
3137
+ const handle = await this.page.locator(".dot-drawer-paper").elementHandle();
3149
3138
  await handle?.waitForElementState("stable");
3150
3139
  }
3151
3140
  async openOverviewRail() {
@@ -3314,10 +3303,10 @@ class $6a21661eb4695574$export$e946776eae644790 extends (0, $f8721861c660dd88$ex
3314
3303
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".user-task-assigned-wrapper .clickable-avatar")).toBeVisible();
3315
3304
  }
3316
3305
  async removeAssignToUser(userName) {
3317
- await this.taskDrawerLocator.getByRole("button", {
3306
+ await this.page.getByRole("button", {
3318
3307
  name: userName
3319
3308
  }).click();
3320
- await this.taskDrawerLocator.getByRole("button", {
3309
+ await this.page.getByRole("button", {
3321
3310
  name: "Clear"
3322
3311
  }).click();
3323
3312
  return this;
@@ -3334,7 +3323,7 @@ class $6a21661eb4695574$export$e946776eae644790 extends (0, $f8721861c660dd88$ex
3334
3323
  }
3335
3324
  async removeAssignedTeam(teamName) {
3336
3325
  await this.page.locator(".team-task-assigned-wrapper .editable").getByText(teamName).click();
3337
- await this.taskDrawerLocator.getByRole("button", {
3326
+ await this.page.getByRole("button", {
3338
3327
  name: "Clear"
3339
3328
  }).click();
3340
3329
  return this;
@@ -3853,6 +3842,22 @@ class $8681d8a3f46f87b7$export$d1077068a9cc9f17 extends (0, $f8721861c660dd88$ex
3853
3842
  async expectStartFromReleaseURLToBe(parentReleaseURL) {
3854
3843
  (0, $kKeXs$playwrighttest.expect)(await this.page.locator(".started-from-release").getAttribute("href")).toContain(parentReleaseURL);
3855
3844
  }
3845
+ async expectFlaggedWith(flagName, flagComment) {
3846
+ const flagButton = this.page.locator(".flags .dropdown-button");
3847
+ await (0, $kKeXs$playwrighttest.expect)(flagButton).toHaveClass(new RegExp(`\\b${flagName}\\b`));
3848
+ const input = this.page.locator(".flags input");
3849
+ await (0, $kKeXs$playwrighttest.expect)(input).toBeVisible();
3850
+ await (0, $kKeXs$playwrighttest.expect)(input).toHaveValue(flagComment);
3851
+ }
3852
+ async flag(flagName, flagComment) {
3853
+ const flagDropdown = this.page.locator("#release-properties .flags .dropdown-button");
3854
+ await flagDropdown.click();
3855
+ const flagPopover = this.page.locator(".flags .flag-picker-popover");
3856
+ const flagOption = flagPopover.locator(`div.${flagName}`);
3857
+ await flagOption.click();
3858
+ await this.page.getByPlaceholder("Set status text...").click();
3859
+ await this.page.getByPlaceholder("Set status text...").fill(flagComment);
3860
+ }
3856
3861
  }
3857
3862
 
3858
3863
 
@@ -7764,23 +7769,13 @@ class $fd4eef3ad2b2e612$var$DeleteVariableModel extends (0, $f8721861c660dd88$ex
7764
7769
 
7765
7770
 
7766
7771
 
7767
-
7768
- class $ed2d4739e27d43c1$export$60c3bfa6385e2a10 extends (0, $96d547f0e8ead553$export$48c33d2414f51608) {
7772
+ class $ed2d4739e27d43c1$export$60c3bfa6385e2a10 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
7769
7773
  constructor(page){
7770
7774
  super(page);
7771
7775
  this.commentBox = this.page.locator(`.input-block-level`);
7772
7776
  this.gridView = new $ed2d4739e27d43c1$var$GridView(page);
7773
7777
  this.taskDrawer = new (0, $6a21661eb4695574$export$e946776eae644790)(page);
7774
7778
  }
7775
- getBasePopperSelector() {
7776
- return '.dot-popper[role="presentation"]';
7777
- }
7778
- getSelectAllStatusesButtonSelector() {
7779
- return `${this.getBasePopperSelector()} button[data-testid="dot-action-item-btn"]`;
7780
- }
7781
- getStatusInputSelector() {
7782
- return `${this.getBaseDrawerSelector()} input#task-status-filter-autocomplete`;
7783
- }
7784
7779
  async openTask(taskName) {
7785
7780
  await this.filterTaskByTitle(taskName);
7786
7781
  await this.page.getByText(taskName).first().click();
@@ -7846,7 +7841,9 @@ class $ed2d4739e27d43c1$export$60c3bfa6385e2a10 extends (0, $96d547f0e8ead553$ex
7846
7841
  await this.taskDrawer.waitForTaskDrawer();
7847
7842
  }
7848
7843
  async filterTaskByTitle(taskname) {
7849
- await this.filterByTitle(taskname);
7844
+ await this.page.locator(".searchFilter").click();
7845
+ await this.page.locator(".searchFilter").fill(taskname);
7846
+ await this.page.locator(".searchFilter").press("Enter");
7850
7847
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator("//div[@data-task-title]").filter({
7851
7848
  hasText: taskname
7852
7849
  }).first()).toBeVisible();
@@ -7891,13 +7888,13 @@ class $ed2d4739e27d43c1$export$60c3bfa6385e2a10 extends (0, $96d547f0e8ead553$ex
7891
7888
  await this.page.locator(`.btn-group-filter.btn-group button.btn.btn-flat[title="${title}"]`).click();
7892
7889
  }
7893
7890
  async clickOnAssignedToMe() {
7894
- await this.page.locator(`input[value="assignedToMe"]`).click();
7891
+ await this.page.locator(`button[title="Assigned to me"]`).click();
7895
7892
  }
7896
7893
  async clickOnAssignedToMyTeams() {
7897
- await this.page.locator(`input[value="assignedToMyTeams"]`).click();
7894
+ await this.page.locator(`button[title="Assigned to my teams"]`).click();
7898
7895
  }
7899
7896
  async clickOnAssignedToAllAvailable() {
7900
- await this.page.locator(`input[value="assignedToAnybody"]`).click();
7897
+ await this.page.locator(`button[title="All available"]`).click();
7901
7898
  }
7902
7899
  async expectTaskToNotBeDisplayed(taskTitle) {
7903
7900
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator(`.row.task-inner`).filter({
@@ -7927,30 +7924,38 @@ class $ed2d4739e27d43c1$export$60c3bfa6385e2a10 extends (0, $96d547f0e8ead553$ex
7927
7924
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator(`#tasks-content #task-list-grouped-view div:has-text('${releaseTitle}') .task`)).toHaveCount(expectedCount);
7928
7925
  }
7929
7926
  async setSearchFilter(filterText) {
7930
- await this.filterByTitle(filterText);
7927
+ await this.page.locator(".searchFilter").fill(filterText);
7931
7928
  }
7932
7929
  async clearSearchFilter() {
7933
- await this.clearFilterTitle();
7930
+ await this.page.locator(".searchFilter").clear();
7934
7931
  }
7935
7932
  async setTagsFilter(filterText) {
7936
- await this.page.locator("input#task-tags").click();
7937
- await this.page.locator("input#task-tags").fill(filterText);
7938
- await this.page.locator("input#task-tags").press("Enter");
7933
+ await this.page.locator(".tag-input").fill(filterText);
7934
+ await this.page.locator(".tag-input").press("Enter");
7939
7935
  }
7940
- async clearAllStatusFilters() {
7941
- await this.page.locator(this.getStatusInputSelector()).click();
7942
- await this.page.locator(`${this.getBaseDrawerSelector()} div.filter-task-status-autocomplete button[title="Clear"]`).click();
7943
- return this;
7936
+ async clickOnStatusField() {
7937
+ await this.page.locator(".ci-filter-status.ng-isolate-scope").click();
7944
7938
  }
7945
7939
  async clickOnStatus(statusNames) {
7946
- await this.clearAllStatusFilters();
7947
- for(let i = 0; i < statusNames.length; i++)await this.page.locator("li", {
7948
- hasText: statusNames[i]
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"
7949
7950
  }).click();
7951
+ await this.clickOnTasksLabel();
7950
7952
  }
7951
7953
  async clickOnStatusSelectAll() {
7952
- await this.page.locator(this.getStatusInputSelector()).click();
7953
- await this.page.locator(this.getSelectAllStatusesButtonSelector()).click();
7954
+ await this.clickOnStatusField();
7955
+ await this.page.locator("a.xl-react-link", {
7956
+ hasText: "Select all"
7957
+ }).click();
7958
+ await this.clickOnTasksLabel();
7954
7959
  }
7955
7960
  async assignTaskToMe(title) {
7956
7961
  await this.page.locator(`.task-line`).filter({
@@ -7967,22 +7972,35 @@ class $ed2d4739e27d43c1$export$60c3bfa6385e2a10 extends (0, $96d547f0e8ead553$ex
7967
7972
  async expectTaskTitle(taskTitle) {
7968
7973
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#tasks0")).toContainText(taskTitle);
7969
7974
  }
7975
+ async clickOnTasksLabel() {
7976
+ await this.page.getByLabel("breadcrumb").getByText("Tasks").click();
7977
+ }
7970
7978
  async expectGroupView(expected = true) {
7971
7979
  if (expected) {
7972
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator('input[aria-label="Group by release"]')).toBeChecked();
7980
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#group-tasks-by-release")).toBeChecked();
7973
7981
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#task-list-grouped-view")).toBeVisible();
7974
7982
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#task-ungrouped-view")).not.toBeVisible();
7975
7983
  } else {
7976
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator('input[aria-label="Group by release"]')).not.toBeChecked();
7984
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#group-tasks-by-release")).not.toBeChecked();
7977
7985
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#task-list-grouped-view")).not.toBeVisible();
7978
7986
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#task-ungrouped-view")).toBeVisible();
7979
7987
  }
7980
7988
  }
7981
7989
  async changeGroupView() {
7982
- await this.page.locator('input[aria-label="Group by release"]').click();
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();
7983
8001
  }
7984
8002
  async switchToGridView() {
7985
- await this.page.locator('button[aria-label="grid view"]').click();
8003
+ await this.page.locator(".xl-icon.grid-icon").click();
7986
8004
  return this.gridView;
7987
8005
  }
7988
8006
  }