@digital-ai/devops-page-object-release 0.0.0-snapshot-20251117085354 → 0.0.0-snapshot-20251122175005

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,11 @@
1
1
  # @digital-ai/devops-page-object-release
2
2
 
3
- ## 0.0.0-snapshot-20251117085354
3
+ ## 0.0.0-snapshot-20251122175005
4
4
 
5
5
  ### Patch Changes
6
6
 
7
- - 588868c: Corrected the User Filter placeholder to the new UI label change
7
+ - 8fd6062: Corrected the User Filter placeholder to the new UI label change
8
+ - b99183c: S-126526: Added page object for edit-teams-and-permissions-scenario
8
9
 
9
10
  ## 0.0.92
10
11
 
package/dist/main.js CHANGED
@@ -5915,6 +5915,55 @@ class $e5c8dec182aa2e84$export$e2613a7eee3a1b1b extends (0, $f8721861c660dd88$ex
5915
5915
  });
5916
5916
  await tag.locator(".close-icon").click();
5917
5917
  }
5918
+ async expectPermissionReadOnly(permission, team, readOnly) {
5919
+ const rowLocator = this.page.locator(`table tr:has-text("${permission}")`);
5920
+ const tagLocator = rowLocator.locator(`.tag-label:has-text("${team}")`);
5921
+ if (readOnly) await (0, $kKeXs$playwrighttest.expect)(tagLocator).toBeVisible();
5922
+ else {
5923
+ const closeIconLocator = tagLocator.locator('xpath=following-sibling::*[contains(@class, "tag-close")]');
5924
+ await (0, $kKeXs$playwrighttest.expect)(closeIconLocator).toBeVisible();
5925
+ }
5926
+ }
5927
+ async expectTeamsNotToExist(teams, readOnly) {
5928
+ for (const team of teams){
5929
+ //const teamRow = this.page.locator(`table:first-of-type tr:has(td:has-text("${team}"))`);
5930
+ const teamRow = this.page.locator(`tr:has-text("${team}")`);
5931
+ if (readOnly) // Verify read-only team does NOT have a delete button
5932
+ await (0, $kKeXs$playwrighttest.expect)(teamRow.locator('.action-label:has-text("Delete")')).toHaveCount(0);
5933
+ else // For editable teams, make sure delete button exists
5934
+ await (0, $kKeXs$playwrighttest.expect)(teamRow.locator('.action-label:has-text("Delete")')).toHaveCount(1);
5935
+ }
5936
+ }
5937
+ async expectInheritTeamsDisabled() {
5938
+ const inheritCheckbox = this.page.locator(".inherit-checkbox input");
5939
+ await (0, $kKeXs$playwrighttest.expect)(inheritCheckbox).toBeVisible();
5940
+ await (0, $kKeXs$playwrighttest.expect)(inheritCheckbox).toBeDisabled();
5941
+ }
5942
+ async expectNewTeamButtonDisabled() {
5943
+ const addTeamButton = this.page.locator(".button-add-team");
5944
+ await (0, $kKeXs$playwrighttest.expect)(addTeamButton).toBeDisabled();
5945
+ }
5946
+ async expectRemoveTeamButtonNotToExist() {
5947
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#teams-permissions-table table tr .action-label")).toHaveCount(0);
5948
+ return this;
5949
+ }
5950
+ async expectSaveButtonDisabled() {
5951
+ const saveButton = this.page.getByRole("button", {
5952
+ name: "Save"
5953
+ });
5954
+ await (0, $kKeXs$playwrighttest.expect)(saveButton).toBeVisible();
5955
+ await (0, $kKeXs$playwrighttest.expect)(saveButton).toBeDisabled();
5956
+ return this;
5957
+ }
5958
+ async expectTeamsReadOnly(teams, readOnly) {
5959
+ for (const team of teams){
5960
+ const teamRow = this.page.locator("table").first().locator("tr", {
5961
+ hasText: team
5962
+ });
5963
+ await (0, $kKeXs$playwrighttest.expect)(teamRow.locator(".tag-label + .tag-close")).toHaveCount(readOnly ? 0 : 1);
5964
+ }
5965
+ return this;
5966
+ }
5918
5967
  async expectPermissionNotToExist(permission, team) {
5919
5968
  const row = this.page.locator("table tr", {
5920
5969
  hasText: permission
@@ -6028,6 +6077,19 @@ class $9058d40a81bdb1f5$export$b453f08936c58edb extends (0, $f8721861c660dd88$ex
6028
6077
  await this.util.openSideNavMenu("Teams & permissions");
6029
6078
  await (0, $kKeXs$playwrighttest.expect)(this.page.getByLabel("breadcrumb").getByText("Teams & permissions")).toBeVisible();
6030
6079
  }
6080
+ async clickOnFolderRowAction(folderName, actionLabel) {
6081
+ const folderRow = this.page.locator(`.folder-list-row-wrapper:has-text("${folderName}")`);
6082
+ await folderRow.hover();
6083
+ const optionsWrapper = folderRow.locator(".folder-options-wrapper");
6084
+ const actionLink = optionsWrapper.locator(`.flatten-links a:has-text("${actionLabel}")`);
6085
+ await actionLink.click();
6086
+ }
6087
+ async createNewFolderFromRowAction(folderName, subFolderName) {
6088
+ await this.clickOnFolderRowAction(folderName, "Add folder");
6089
+ const modal = this.page.locator(".xl-react-modal-content");
6090
+ await modal.locator("input").fill(subFolderName);
6091
+ await modal.locator(".button.primary").click();
6092
+ }
6031
6093
  async expectReleaseGroupisDisplayed(title) {
6032
6094
  //await this.page.locator(`.fc-list-item-title-wrapper .fc-list-item-title strong:text-is('${title}`).isVisible()
6033
6095
  await this.page.waitForSelector(`.fc-list-item-title-wrapper .fc-list-item-title strong:text-is('${title}')`);
@@ -10086,6 +10148,19 @@ class $4ef41cf96a5fae4c$export$b8a61e5c71402559 {
10086
10148
  await this.page.waitForSelector("#releases-content");
10087
10149
  return new (0, $9058d40a81bdb1f5$export$b453f08936c58edb)(this.page);
10088
10150
  }
10151
+ async openFolderByName(folderName) {
10152
+ const folder = this.page.getByTitle(folderName);
10153
+ await (0, $kKeXs$playwrighttest.expect)(folder).toBeVisible({
10154
+ timeout: 5000
10155
+ });
10156
+ await folder.click();
10157
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".MuiBreadcrumbs-li").getByRole("link", {
10158
+ name: folderName
10159
+ })).toBeVisible({
10160
+ timeout: 5000
10161
+ });
10162
+ return this;
10163
+ }
10089
10164
  async openProfilePage() {
10090
10165
  await this.page.goto(`./#/profile`);
10091
10166
  return new (0, $010122e1d9b28b80$export$3cf9c90f870f31bd)(this.page);