@digital-ai/devops-page-object-release 0.0.0-snapshot-20251030085809 → 0.0.0-snapshot-20251030103505

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-20251030085809
3
+ ## 0.0.0-snapshot-20251030103505
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(`${this.getHeaderSelector()} .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,21 @@ 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
+ if (await input.isVisible()) await (0, $kKeXs$playwrighttest.expect)(input).toHaveValue(flagComment);
3850
+ }
3851
+ async flag(flagName, flagComment) {
3852
+ const flagDropdown = this.page.locator("#release-properties .flags .dropdown-button");
3853
+ await flagDropdown.click();
3854
+ const flagPopover = this.page.locator(".flags .flag-picker-popover");
3855
+ const flagOption = flagPopover.locator(`div.${flagName}`);
3856
+ await flagOption.click();
3857
+ await this.page.getByPlaceholder("Set status text...").click();
3858
+ await this.page.getByPlaceholder("Set status text...").fill(flagComment);
3859
+ }
3856
3860
  }
3857
3861
 
3858
3862
 
@@ -7764,23 +7768,13 @@ class $fd4eef3ad2b2e612$var$DeleteVariableModel extends (0, $f8721861c660dd88$ex
7764
7768
 
7765
7769
 
7766
7770
 
7767
-
7768
- class $ed2d4739e27d43c1$export$60c3bfa6385e2a10 extends (0, $96d547f0e8ead553$export$48c33d2414f51608) {
7771
+ class $ed2d4739e27d43c1$export$60c3bfa6385e2a10 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
7769
7772
  constructor(page){
7770
7773
  super(page);
7771
7774
  this.commentBox = this.page.locator(`.input-block-level`);
7772
7775
  this.gridView = new $ed2d4739e27d43c1$var$GridView(page);
7773
7776
  this.taskDrawer = new (0, $6a21661eb4695574$export$e946776eae644790)(page);
7774
7777
  }
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
7778
  async openTask(taskName) {
7785
7779
  await this.filterTaskByTitle(taskName);
7786
7780
  await this.page.getByText(taskName).first().click();
@@ -7846,7 +7840,9 @@ class $ed2d4739e27d43c1$export$60c3bfa6385e2a10 extends (0, $96d547f0e8ead553$ex
7846
7840
  await this.taskDrawer.waitForTaskDrawer();
7847
7841
  }
7848
7842
  async filterTaskByTitle(taskname) {
7849
- await this.filterByTitle(taskname);
7843
+ await this.page.locator(".searchFilter").click();
7844
+ await this.page.locator(".searchFilter").fill(taskname);
7845
+ await this.page.locator(".searchFilter").press("Enter");
7850
7846
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator("//div[@data-task-title]").filter({
7851
7847
  hasText: taskname
7852
7848
  }).first()).toBeVisible();
@@ -7891,13 +7887,13 @@ class $ed2d4739e27d43c1$export$60c3bfa6385e2a10 extends (0, $96d547f0e8ead553$ex
7891
7887
  await this.page.locator(`.btn-group-filter.btn-group button.btn.btn-flat[title="${title}"]`).click();
7892
7888
  }
7893
7889
  async clickOnAssignedToMe() {
7894
- await this.page.locator(`input[value="assignedToMe"]`).click();
7890
+ await this.page.locator(`button[title="Assigned to me"]`).click();
7895
7891
  }
7896
7892
  async clickOnAssignedToMyTeams() {
7897
- await this.page.locator(`input[value="assignedToMyTeams"]`).click();
7893
+ await this.page.locator(`button[title="Assigned to my teams"]`).click();
7898
7894
  }
7899
7895
  async clickOnAssignedToAllAvailable() {
7900
- await this.page.locator(`input[value="assignedToAnybody"]`).click();
7896
+ await this.page.locator(`button[title="All available"]`).click();
7901
7897
  }
7902
7898
  async expectTaskToNotBeDisplayed(taskTitle) {
7903
7899
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator(`.row.task-inner`).filter({
@@ -7927,30 +7923,38 @@ class $ed2d4739e27d43c1$export$60c3bfa6385e2a10 extends (0, $96d547f0e8ead553$ex
7927
7923
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator(`#tasks-content #task-list-grouped-view div:has-text('${releaseTitle}') .task`)).toHaveCount(expectedCount);
7928
7924
  }
7929
7925
  async setSearchFilter(filterText) {
7930
- await this.filterByTitle(filterText);
7926
+ await this.page.locator(".searchFilter").fill(filterText);
7931
7927
  }
7932
7928
  async clearSearchFilter() {
7933
- await this.clearFilterTitle();
7929
+ await this.page.locator(".searchFilter").clear();
7934
7930
  }
7935
7931
  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");
7932
+ await this.page.locator(".tag-input").fill(filterText);
7933
+ await this.page.locator(".tag-input").press("Enter");
7939
7934
  }
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;
7935
+ async clickOnStatusField() {
7936
+ await this.page.locator(".ci-filter-status.ng-isolate-scope").click();
7944
7937
  }
7945
7938
  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]
7939
+ await this.clickOnStatusClearAll();
7940
+ await this.clickOnStatusField();
7941
+ for(let i = 0; i < statusNames.length; i++)await this.page.locator(`i.xl-icon.icon-s.checkbox[data='${statusNames[i]}']`).click();
7942
+ // Clicking outside to close the grid dropdown
7943
+ await this.clickOnTasksLabel();
7944
+ }
7945
+ async clickOnStatusClearAll() {
7946
+ await this.clickOnStatusField();
7947
+ await this.page.locator("a.xl-react-link", {
7948
+ hasText: "Clear all"
7949
7949
  }).click();
7950
+ await this.clickOnTasksLabel();
7950
7951
  }
7951
7952
  async clickOnStatusSelectAll() {
7952
- await this.page.locator(this.getStatusInputSelector()).click();
7953
- await this.page.locator(this.getSelectAllStatusesButtonSelector()).click();
7953
+ await this.clickOnStatusField();
7954
+ await this.page.locator("a.xl-react-link", {
7955
+ hasText: "Select all"
7956
+ }).click();
7957
+ await this.clickOnTasksLabel();
7954
7958
  }
7955
7959
  async assignTaskToMe(title) {
7956
7960
  await this.page.locator(`.task-line`).filter({
@@ -7967,22 +7971,35 @@ class $ed2d4739e27d43c1$export$60c3bfa6385e2a10 extends (0, $96d547f0e8ead553$ex
7967
7971
  async expectTaskTitle(taskTitle) {
7968
7972
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#tasks0")).toContainText(taskTitle);
7969
7973
  }
7974
+ async clickOnTasksLabel() {
7975
+ await this.page.getByLabel("breadcrumb").getByText("Tasks").click();
7976
+ }
7970
7977
  async expectGroupView(expected = true) {
7971
7978
  if (expected) {
7972
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator('input[aria-label="Group by release"]')).toBeChecked();
7979
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#group-tasks-by-release")).toBeChecked();
7973
7980
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#task-list-grouped-view")).toBeVisible();
7974
7981
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#task-ungrouped-view")).not.toBeVisible();
7975
7982
  } else {
7976
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator('input[aria-label="Group by release"]')).not.toBeChecked();
7983
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#group-tasks-by-release")).not.toBeChecked();
7977
7984
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#task-list-grouped-view")).not.toBeVisible();
7978
7985
  await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#task-ungrouped-view")).toBeVisible();
7979
7986
  }
7980
7987
  }
7981
7988
  async changeGroupView() {
7982
- await this.page.locator('input[aria-label="Group by release"]').click();
7989
+ await this.page.locator("#group-tasks-by-release").click();
7990
+ }
7991
+ async enableGroupByReleaseView() {
7992
+ await this.page.getByRole("checkbox", {
7993
+ name: "Group by release"
7994
+ }).check();
7995
+ }
7996
+ async disableGroupByReleaseView() {
7997
+ await this.page.getByRole("checkbox", {
7998
+ name: "Group by release"
7999
+ }).uncheck();
7983
8000
  }
7984
8001
  async switchToGridView() {
7985
- await this.page.locator('button[aria-label="grid view"]').click();
8002
+ await this.page.locator(".xl-icon.grid-icon").click();
7986
8003
  return this.gridView;
7987
8004
  }
7988
8005
  }