@alfresco/aca-playwright-shared 7.3.0-22225092009 → 7.3.0-22227193858

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.
@@ -1026,12 +1026,10 @@ class DataTableComponent extends BaseComponent {
1026
1026
  emptyListSubtitle = this.getChild('.adf-empty-content__subtitle');
1027
1027
  emptySearchText = this.getChild('.empty-search__text');
1028
1028
  emptyListTest = this.getChild('adf-custom-empty-content-template');
1029
- paginationButton = this.page.locator('.adf-pagination__block button').nth(0);
1030
- paginationOptions = this.page.locator('#cdk-overlay-0 button');
1031
- sitesVisibility = this.page.locator('.adf-datatable-body [data-automation-id*="datatable-row"] [aria-label="Visibility"]');
1032
- sitesName = this.page.locator('.adf-datatable-body [data-automation-id*="datatable-row"] [aria-label="Name"]');
1033
- sitesRole = this.page.locator('.adf-datatable-body [data-automation-id*="datatable-row"] [aria-label="My Role"]');
1034
- lockOwner = this.page.locator('.aca-locked-by--name');
1029
+ sitesVisibility = this.getChild('.adf-datatable-body [data-automation-id*="datatable-row"] [aria-label="Visibility"]');
1030
+ sitesName = this.getChild('.adf-datatable-body [data-automation-id*="datatable-row"] [aria-label="Name"]');
1031
+ sitesRole = this.getChild('.adf-datatable-body [data-automation-id*="datatable-row"] [aria-label="My Role"]');
1032
+ lockOwner = '.aca-locked-by--name';
1035
1033
  highlightedText = '.aca-highlight';
1036
1034
  searchFileName = '.search-file-name';
1037
1035
  searchFileDescription = '[data-automation-id="search-results-entry-description"]';
@@ -1243,10 +1241,6 @@ class DataTableComponent extends BaseComponent {
1243
1241
  async rightClickOnItem(itemName) {
1244
1242
  await this.getCellByColumnNameAndRowItem(itemName, 'Name').click({ button: 'right' });
1245
1243
  }
1246
- async setPaginationTo50() {
1247
- await this.paginationButton.click();
1248
- await this.paginationOptions.getByText('50').click();
1249
- }
1250
1244
  /**
1251
1245
  * Method used to create objects from names and visibility of sites from datatable
1252
1246
  *
@@ -1301,44 +1295,6 @@ class DataTableComponent extends BaseComponent {
1301
1295
  }
1302
1296
  }
1303
1297
 
1304
- /*!
1305
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
1306
- *
1307
- * Alfresco Example Content Application
1308
- *
1309
- * This file is part of the Alfresco Example Content Application.
1310
- * If the software was purchased under a paid Alfresco license, the terms of
1311
- * the paid license agreement will prevail. Otherwise, the software is
1312
- * provided under the following open source license terms:
1313
- *
1314
- * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
1315
- * it under the terms of the GNU Lesser General Public License as published by
1316
- * the Free Software Foundation, either version 3 of the License, or
1317
- * (at your option) any later version.
1318
- *
1319
- * The Alfresco Example Content Application is distributed in the hope that it will be useful,
1320
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
1321
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1322
- * GNU Lesser General Public License for more details.
1323
- *
1324
- * You should have received a copy of the GNU Lesser General Public License
1325
- * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
1326
- */
1327
- class ToolbarComponent extends BaseComponent {
1328
- static rootElement = 'adf-toolbar';
1329
- constructor(page) {
1330
- super(page, ToolbarComponent.rootElement);
1331
- }
1332
- async clickCreateRuleButton() {
1333
- const button = this.page.locator('[data-automation-id="manage-rules-create-button"]');
1334
- await button.click();
1335
- }
1336
- async clickLinkRulesButton() {
1337
- const button = this.page.locator('[data-automation-id="manage-rules-link-button"]');
1338
- await button.click();
1339
- }
1340
- }
1341
-
1342
1298
  /*!
1343
1299
  * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
1344
1300
  *
@@ -1782,7 +1738,7 @@ class DateTimePicker extends BaseComponent {
1782
1738
  super(page, DateTimePicker.rootElement);
1783
1739
  }
1784
1740
  async isCalendarOpen() {
1785
- const element = this.getChild('');
1741
+ const element = this.page.locator(DateTimePicker.rootElement);
1786
1742
  return element.isVisible();
1787
1743
  }
1788
1744
  async pickDateTime() {
@@ -1944,7 +1900,7 @@ class UploadNewVersionDialog extends BaseComponent {
1944
1900
  class ManageVersionsDialog extends BaseComponent {
1945
1901
  static rootElement = '.adf-new-version-uploader-dialog';
1946
1902
  async viewFileVersion(version) {
1947
- const versionActionsButton = this.page.locator(`[id="adf-version-list-action-menu-button-${version}"]`);
1903
+ const versionActionsButton = this.getChild(`[id="adf-version-list-action-menu-button-${version}"]`);
1948
1904
  await versionActionsButton.click();
1949
1905
  }
1950
1906
  constructor(page) {
@@ -1976,11 +1932,11 @@ class ManageVersionsDialog extends BaseComponent {
1976
1932
  * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
1977
1933
  */
1978
1934
  class UploadDialog extends BaseComponent {
1979
- static rootElement = '.adf-upload-dialog';
1980
- uploadDialog = this.page.locator('.adf-upload-dialog');
1935
+ static rootElement = 'aca-upload-files-dialog';
1936
+ uploadDialogContent = this.getChild('.adf-upload-dialog__content');
1981
1937
  closeButton = this.getChild('#adf-upload-dialog-close');
1982
- minimizeButton = this.page.locator('[data-automation-id="adf-upload-dialog__toggle-minimize"]');
1983
- uploadDialogMinimized = this.page.locator('.adf-upload-dialog--minimized');
1938
+ minimizeButton = this.getChild('[data-automation-id="adf-upload-dialog__toggle-minimize"]');
1939
+ uploadDialogMinimized = this.getChild('.adf-upload-dialog--minimized');
1984
1940
  constructor(page) {
1985
1941
  super(page, UploadDialog.rootElement);
1986
1942
  }
@@ -2118,7 +2074,7 @@ class LinkRulesDialog extends BaseComponent {
2118
2074
  */
2119
2075
  class EditDialog extends BaseComponent {
2120
2076
  static rootElement = 'adf-folder-dialog';
2121
- editDialog = this.getChild('');
2077
+ editDialog = this.page.locator(EditDialog.rootElement);
2122
2078
  titleInput = this.getChild('[data-automation-id="adf-folder-dialog-title"]');
2123
2079
  cancelButton = this.getChild('#adf-folder-cancel-button');
2124
2080
  updateButton = this.getChild('#adf-folder-create-button');
@@ -2327,6 +2283,44 @@ class ManageRules extends BaseComponent {
2327
2283
  }
2328
2284
  }
2329
2285
 
2286
+ /*!
2287
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
2288
+ *
2289
+ * Alfresco Example Content Application
2290
+ *
2291
+ * This file is part of the Alfresco Example Content Application.
2292
+ * If the software was purchased under a paid Alfresco license, the terms of
2293
+ * the paid license agreement will prevail. Otherwise, the software is
2294
+ * provided under the following open source license terms:
2295
+ *
2296
+ * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
2297
+ * it under the terms of the GNU Lesser General Public License as published by
2298
+ * the Free Software Foundation, either version 3 of the License, or
2299
+ * (at your option) any later version.
2300
+ *
2301
+ * The Alfresco Example Content Application is distributed in the hope that it will be useful,
2302
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
2303
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2304
+ * GNU Lesser General Public License for more details.
2305
+ *
2306
+ * You should have received a copy of the GNU Lesser General Public License
2307
+ * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
2308
+ */
2309
+ class RulesToolbarComponent extends BaseComponent {
2310
+ static rootElement = '.aca-manage-rules__actions-bar';
2311
+ constructor(page) {
2312
+ super(page, RulesToolbarComponent.rootElement);
2313
+ }
2314
+ async clickCreateRuleButton() {
2315
+ const button = this.getChild('[data-automation-id="manage-rules-create-button"]');
2316
+ await button.click();
2317
+ }
2318
+ async clickLinkRulesButton() {
2319
+ const button = this.getChild('[data-automation-id="manage-rules-link-button"]');
2320
+ await button.click();
2321
+ }
2322
+ }
2323
+
2330
2324
  /*!
2331
2325
  * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
2332
2326
  *
@@ -2661,15 +2655,15 @@ class AdfInfoDrawerComponent extends BaseComponent {
2661
2655
  propertiesTab = this.page.getByRole('tab', { name: 'Properties' });
2662
2656
  commentsTab = this.page.getByRole('tab', { name: 'Comments' });
2663
2657
  infoDrawerTabs = this.getChild('.adf-info-drawer-tab');
2664
- commentInputField = this.page.locator('#comment-input');
2658
+ commentInputField = this.getChild('#comment-input');
2665
2659
  commentsHeader = this.getChild('#comment-header');
2666
2660
  addCommentButton = this.getChild('[data-automation-id="comments-input-add"]');
2667
2661
  commentsList = this.getChild('.adf-comment-list-item');
2668
2662
  commentUsername = this.getChild('.adf-comment-user-name');
2669
2663
  commentTextContent = this.getChild('.adf-comment-message');
2670
2664
  commentTimestamp = this.getChild('.adf-comment-message-time');
2671
- infoDrawerPanel = this.page.locator('.adf-info-drawer');
2672
- headerTitle = this.page.locator('.adf-info-drawer-layout-header-title').getByRole('heading');
2665
+ infoDrawerPanel = this.page.locator(AdfInfoDrawerComponent.rootElement);
2666
+ headerTitle = this.getChild('.adf-info-drawer-layout-header-title').getByRole('heading');
2673
2667
  editButton = this.page.getByRole('button', { name: 'Edit' });
2674
2668
  cancelButton = this.page.getByRole('button', { name: 'Cancel' });
2675
2669
  updateButton = this.page.getByRole('button', { name: 'Update' });
@@ -2679,9 +2673,9 @@ class AdfInfoDrawerComponent extends BaseComponent {
2679
2673
  expandDetailsButton = this.getChild(`button[title='Expand panel']`);
2680
2674
  expandedDetailsTabs = this.page.locator('.aca-details-container [role="tab"]');
2681
2675
  expandedDetailsPermissionsTab = this.expandedDetailsTabs.getByText('Permissions');
2682
- nameField = this.page.locator('input[placeholder=Name]');
2683
- idField = this.page.locator(`input[placeholder='Library ID']`);
2684
- descriptionField = this.page.locator('textarea[placeholder=Description]');
2676
+ nameField = this.getChild('input[placeholder=Name]');
2677
+ idField = this.getChild(`input[placeholder='Library ID']`);
2678
+ descriptionField = this.getChild('textarea[placeholder=Description]');
2685
2679
  visibilityField = this.infoDrawerPanel.getByRole('combobox');
2686
2680
  selectVisibility = (visibilityOption) => this.page.getByRole('listbox').getByRole('option', { name: visibilityOption }).click();
2687
2681
  tagsAccordion = this.getChild('[data-automation-id="adf-content-metadata-tags-panel"]');
@@ -2969,26 +2963,12 @@ class ViewerComponent extends BaseComponent {
2969
2963
  * You should have received a copy of the GNU Lesser General Public License
2970
2964
  * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
2971
2965
  */
2972
- class SearchInputComponent extends BaseComponent {
2973
- static rootElement = 'aca-page-layout';
2974
- searchInput = this.page.locator('#app-control-input');
2975
- searchButton = this.page.locator('.aca-search-input--search-button');
2976
- searchCloseButton = this.page.locator('.aca-search-input--close-button');
2977
- /**
2978
- * Method used in cases where user have possibility to navigate "inside" the element (it's clickable and has link attribute).
2979
- * Perform action .click() to navigate inside it
2980
- *
2981
- * @returns reference to cell element which contains link.
2982
- */
2983
- getCellLinkByName = (name) => this.getChild('.adf-datatable-row[role="row"]', { hasText: name });
2984
- constructor(page, rootElement = SearchInputComponent.rootElement) {
2985
- super(page, rootElement);
2986
- }
2987
- async performDoubleClickFolderOrFileToOpen(name) {
2988
- await this.getCellLinkByName(name).waitFor({ state: 'visible', timeout: timeouts.medium });
2989
- await this.getCellLinkByName(name).dblclick();
2990
- await this.spinnerWaitForReload();
2966
+ class SearchFiltersCategories extends BaseComponent {
2967
+ static rootElement = '.adf-search-filter-menu-card';
2968
+ constructor(page) {
2969
+ super(page, SearchFiltersCategories.rootElement);
2991
2970
  }
2971
+ addOptionInput = this.getChild(`[data-automation-id$='adf-search-chip-autocomplete-input']`);
2992
2972
  }
2993
2973
 
2994
2974
  /*!
@@ -3014,59 +2994,42 @@ class SearchInputComponent extends BaseComponent {
3014
2994
  * You should have received a copy of the GNU Lesser General Public License
3015
2995
  * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
3016
2996
  */
3017
- class SearchOverlayComponent extends BaseComponent {
3018
- static rootElement = '.cdk-overlay-pane';
3019
- searchFilesOption = this.getChild('input#content-input');
3020
- searchFoldersOption = this.getChild('input#folder-input');
3021
- searchLibrariesOption = this.getChild('input#libraries-input');
3022
- searchInput = this.page.locator('#app-control-input');
3023
- searchButton = this.page.locator('app-search-input-control button[title="Search"]');
3024
- searchInputControl = this.page.locator('.app-search-control');
3025
- searchOptions = this.page.locator('.app-search-options');
3026
- constructor(page, rootElement = SearchOverlayComponent.rootElement) {
3027
- super(page, rootElement);
3028
- }
3029
- async isFoldersOptionChecked() {
3030
- return this.searchFoldersOption.isChecked();
3031
- }
3032
- async isFilesOptionChecked() {
3033
- return this.searchFilesOption.isChecked();
3034
- }
3035
- async isLibrariesOptionChecked() {
3036
- return this.searchLibrariesOption.isChecked();
2997
+ class SearchFiltersDate extends BaseComponent {
2998
+ static rootElement = '.adf-search-filter-menu-card';
2999
+ constructor(page) {
3000
+ super(page, SearchFiltersDate.rootElement);
3037
3001
  }
3038
- async clearOptions() {
3039
- if (await this.isFilesOptionChecked()) {
3040
- await this.searchFilesOption.click();
3041
- }
3042
- if (await this.isFoldersOptionChecked()) {
3043
- await this.searchFoldersOption.click();
3044
- }
3045
- if (await this.isLibrariesOptionChecked()) {
3046
- await this.searchLibrariesOption.click();
3002
+ createdTab = this.getChild(`[role='tab']`, { hasText: 'Created' });
3003
+ modifiedTab = this.getChild(`[role='tab']`, { hasText: 'Modified' });
3004
+ createdTabTitle = this.createdTab.locator(`div`);
3005
+ modifiedTabTitle = this.modifiedTab.locator(`div`);
3006
+ anytimeButton = this.getChild(`[data-automation-id$='date-range-anytime']`);
3007
+ anytimeRadioButton = this.anytimeButton.locator(`input`);
3008
+ inTheLastButton = this.getChild(`[data-automation-id$='date-range-in-last']`);
3009
+ inTheLastInput = this.getChild(`[data-automation-id$='date-range-in-last-input']`);
3010
+ inTheLastDropdown = this.getChild(`[data-automation-id$='date-range-in-last-dropdown']`);
3011
+ betweenButton = this.getChild(`[data-automation-id$='date-range-between']`);
3012
+ betweenRadioButton = this.betweenButton.locator(`input`);
3013
+ betweenStartDate = this.getChild(`[data-automation-id$='date-range-between-start-input']`);
3014
+ betweenEndDate = this.getChild(`[data-automation-id$='date-range-between-end-input']`);
3015
+ async openCreatedModifiedTab(page, tab) {
3016
+ switch (tab) {
3017
+ case 'Created':
3018
+ await page.searchFiltersDate.createdTab.click();
3019
+ break;
3020
+ case 'Modified':
3021
+ await page.searchFiltersDate.modifiedTab.click();
3022
+ break;
3023
+ default:
3024
+ break;
3047
3025
  }
3026
+ await page.page.waitForTimeout(2000);
3048
3027
  }
3049
- async checkOnlyFolders() {
3050
- await this.clearOptions();
3051
- await this.searchFoldersOption.click();
3052
- }
3053
- async checkOnlyFiles() {
3054
- await this.clearOptions();
3055
- await this.searchFilesOption.click();
3056
- }
3057
- async checkLibraries() {
3058
- await this.clearOptions();
3059
- await this.searchLibrariesOption.click();
3060
- }
3061
- async checkFilesAndFolders() {
3062
- await this.clearOptions();
3063
- await this.searchFilesOption.click();
3064
- await this.searchFoldersOption.click();
3028
+ async isModifiedTabSelected() {
3029
+ return this.modifiedTab.getAttribute('aria-selected');
3065
3030
  }
3066
- async searchFor(input) {
3067
- await this.searchInput.clear();
3068
- await this.searchInput.fill(input);
3069
- await this.searchButton.click({ force: true });
3031
+ async isSearchTabSelected() {
3032
+ return this.createdTab.getAttribute('aria-selected');
3070
3033
  }
3071
3034
  }
3072
3035
 
@@ -3093,50 +3056,21 @@ class SearchOverlayComponent extends BaseComponent {
3093
3056
  * You should have received a copy of the GNU Lesser General Public License
3094
3057
  * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
3095
3058
  */
3096
- class SearchSortingPicker extends BaseComponent {
3097
- static rootElement = '#aca-button-action-menu';
3098
- actionMenu = this.page.locator('[data-automation-id="auto_header_content_id_$thumbnail"]');
3099
- sortOrderButton = this.page.locator('#aca-button-sorting-menu');
3100
- sortByDropdownExpanded = this.page.locator('[role="menu"]').first();
3101
- sortByList = this.page.locator('[role="menu"] button');
3102
- constructor(page, rootElement = SearchSortingPicker.rootElement) {
3103
- super(page, rootElement);
3104
- }
3105
- async waitForSortByDropdownToExpand() {
3106
- await this.sortByDropdownExpanded.waitFor();
3107
- }
3108
- async isSortOrderButtonDisplayed() {
3109
- return this.sortOrderButton.isVisible();
3110
- }
3111
- async isSortByDropdownExpanded() {
3112
- return this.sortByDropdownExpanded.isVisible();
3113
- }
3114
- async clickSortByDropdown() {
3115
- await this.sortOrderButton.click();
3116
- await this.waitForSortByDropdownToExpand();
3059
+ class SearchFiltersLocation extends BaseComponent {
3060
+ static rootElement = '.adf-search-filter-menu-card';
3061
+ constructor(page) {
3062
+ super(page, SearchFiltersLocation.rootElement);
3117
3063
  }
3118
- async getSortByOptionsList() {
3119
- const sortOptionsCount = await this.sortByList.count();
3120
- const sortByOptions = [];
3121
- for (let i = 1; i < sortOptionsCount; i++) {
3122
- const textContent = (await this.sortByList.nth(i).textContent()).trim();
3123
- sortByOptions.push(textContent);
3124
- }
3125
- sortByOptions.sort((a, b) => a.localeCompare(b));
3126
- return sortByOptions;
3064
+ addOptionInput = this.getChild(`[data-automation-id$='adf-search-chip-autocomplete-input']`);
3065
+ searchOption(value) {
3066
+ return this.page.locator(`[data-automation-id="option-${value}"]`);
3127
3067
  }
3128
- async sortBy(option, direction) {
3129
- await this.actionMenu.click();
3130
- await this.clickSortByDropdown();
3131
- if (!(await this.isSortByDropdownExpanded())) {
3132
- await this.clickSortByDropdown();
3133
- }
3134
- const elem = this.sortByList.getByText(option);
3135
- const optionId = await elem.locator('..').getAttribute('id');
3136
- await elem.click();
3137
- const directionSortElement = this.page.locator(`[id="${optionId}-${direction.toLocaleLowerCase()}"]`);
3138
- await directionSortElement.click();
3139
- await this.progressBarWaitForReload();
3068
+ async filterByLocation(page, location) {
3069
+ await page.searchFilters.locationFilter.click();
3070
+ await page.searchFiltersLocation.addOptionInput.fill(location);
3071
+ await page.searchFiltersLocation.searchOption(location).click();
3072
+ await page.searchMenuCard.menuCardApply.click();
3073
+ await page.dataTable.progressBarWaitForReload();
3140
3074
  }
3141
3075
  }
3142
3076
 
@@ -3163,24 +3097,15 @@ class SearchSortingPicker extends BaseComponent {
3163
3097
  * You should have received a copy of the GNU Lesser General Public License
3164
3098
  * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
3165
3099
  */
3166
- class SearchFilters extends BaseComponent {
3167
- static rootElement = '.aca-content__advanced-filters';
3100
+ class SearchFiltersLogic extends BaseComponent {
3101
+ static rootElement = '.adf-search-filter-menu-card';
3168
3102
  constructor(page) {
3169
- super(page, SearchFilters.rootElement);
3103
+ super(page, SearchFiltersLogic.rootElement);
3170
3104
  }
3171
- filtersButtons = this.page.locator('adf-search-widget-chip');
3172
- logicFilter = this.page.locator('adf-search-widget-chip', { hasText: 'Logic' });
3173
- propertiesFilter = this.page.locator('adf-search-widget-chip', { hasText: 'Properties' });
3174
- dateFilter = this.page.locator('adf-search-widget-chip', { hasText: 'Date' });
3175
- locationFilter = this.page.locator('adf-search-widget-chip', { hasText: 'Location' });
3176
- tagsFilter = this.page.locator('adf-search-widget-chip', { hasText: 'Tags' });
3177
- categoriesFilter = this.page.locator('adf-search-widget-chip', { hasText: 'Categories' });
3178
- resetButton = this.page.locator('button', { hasText: 'Reset' });
3179
- menuCardTitle = this.page.locator('.adf-search-filter-title');
3180
- menuCardClose = this.page.locator('.adf-search-filter-title-action');
3181
- menuCardClear = this.page.locator('#cancel-filter-button');
3182
- menuCardApply = this.page.locator('#apply-filter-button');
3183
- dropdownOptions = this.page.locator(`[role="option"]`);
3105
+ matchAllInput = this.getChild(`[placeholder$='Results will match all words entered here']`);
3106
+ matchAnyInput = this.getChild(`[placeholder$='Results will match any words entered here']`);
3107
+ excludeInput = this.getChild(`[placeholder$='Results will exclude matches with these words']`);
3108
+ matchExactInput = this.getChild(`[placeholder$='Results will match this entire phrase']`);
3184
3109
  }
3185
3110
 
3186
3111
  /*!
@@ -3206,26 +3131,77 @@ class SearchFilters extends BaseComponent {
3206
3131
  * You should have received a copy of the GNU Lesser General Public License
3207
3132
  * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
3208
3133
  */
3209
- class SearchFiltersCategories extends BaseComponent {
3134
+ class SearchFiltersProperties extends BaseComponent {
3210
3135
  static rootElement = '.adf-search-filter-menu-card';
3211
3136
  constructor(page) {
3212
- super(page, SearchFiltersCategories.rootElement);
3137
+ super(page, SearchFiltersProperties.rootElement);
3213
3138
  }
3214
- addOptionInput = this.getChild(`[data-automation-id$='adf-search-chip-autocomplete-input']`);
3215
- }
3216
-
3217
- /*!
3218
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
3219
- *
3220
- * Alfresco Example Content Application
3221
- *
3222
- * This file is part of the Alfresco Example Content Application.
3223
- * If the software was purchased under a paid Alfresco license, the terms of
3224
- * the paid license agreement will prevail. Otherwise, the software is
3225
- * provided under the following open source license terms:
3226
- *
3227
- * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
3228
- * it under the terms of the GNU Lesser General Public License as published by
3139
+ operatorButton = this.getChild(`[data-automation-id='adf-search-properties-file-size-operator']`);
3140
+ fileSizeInput = this.getChild(`[placeholder$='Enter file size']`);
3141
+ unitButton = this.getChild(`[data-automation-id='adf-search-properties-file-size-unit']`);
3142
+ fileTypeInput = this.getChild(`[placeholder$='File Type']`);
3143
+ atLeastOption = this.page.locator(`[role="option"]`, { hasText: 'At Least' });
3144
+ atMostOption = this.page.locator(`[role="option"]`, { hasText: 'At Most' });
3145
+ exactlyOption = this.page.locator(`[role="option"]`, { hasText: 'Exactly' });
3146
+ kbUnit = this.page.locator(`[role="option"]`, { hasText: 'KB' });
3147
+ mbUnit = this.page.locator(`[role="option"]`, { hasText: 'MB' });
3148
+ gbUnit = this.page.locator(`[role="option"]`, { hasText: 'GB' });
3149
+ dropdownOptions = this.page.locator(`[role="option"]`);
3150
+ async setPropertiesParameters(page, operator, unit, fileSizeInputText, fileTypeInputText) {
3151
+ await page.searchFilters.propertiesFilter.click();
3152
+ if (operator) {
3153
+ await this.operatorButton?.click();
3154
+ switch (operator) {
3155
+ case 'At Least':
3156
+ await this.atLeastOption?.click();
3157
+ break;
3158
+ case 'At Most':
3159
+ await this.atMostOption?.click();
3160
+ break;
3161
+ case 'Exactly':
3162
+ await this.exactlyOption?.click();
3163
+ break;
3164
+ }
3165
+ }
3166
+ if (unit) {
3167
+ await this.unitButton?.click();
3168
+ switch (unit) {
3169
+ case 'KB':
3170
+ await this.kbUnit?.click();
3171
+ break;
3172
+ case 'MB':
3173
+ await this.mbUnit?.click();
3174
+ break;
3175
+ case 'GB':
3176
+ await this.gbUnit?.click();
3177
+ break;
3178
+ }
3179
+ }
3180
+ if (fileSizeInputText) {
3181
+ await this.fileSizeInput?.fill(fileSizeInputText);
3182
+ }
3183
+ if (fileTypeInputText) {
3184
+ await this.fileTypeInput?.fill(fileTypeInputText);
3185
+ await this.dropdownOptions.getByText(fileTypeInputText).waitFor();
3186
+ await this.dropdownOptions.getByText(fileTypeInputText).click();
3187
+ }
3188
+ await page.searchMenuCard.menuCardApply.click();
3189
+ await page.dataTable.progressBarWaitForReload();
3190
+ }
3191
+ }
3192
+
3193
+ /*!
3194
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
3195
+ *
3196
+ * Alfresco Example Content Application
3197
+ *
3198
+ * This file is part of the Alfresco Example Content Application.
3199
+ * If the software was purchased under a paid Alfresco license, the terms of
3200
+ * the paid license agreement will prevail. Otherwise, the software is
3201
+ * provided under the following open source license terms:
3202
+ *
3203
+ * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
3204
+ * it under the terms of the GNU Lesser General Public License as published by
3229
3205
  * the Free Software Foundation, either version 3 of the License, or
3230
3206
  * (at your option) any later version.
3231
3207
  *
@@ -3237,42 +3213,26 @@ class SearchFiltersCategories extends BaseComponent {
3237
3213
  * You should have received a copy of the GNU Lesser General Public License
3238
3214
  * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
3239
3215
  */
3240
- class SearchFiltersDate extends BaseComponent {
3216
+ class SearchFiltersTags extends BaseComponent {
3241
3217
  static rootElement = '.adf-search-filter-menu-card';
3242
3218
  constructor(page) {
3243
- super(page, SearchFiltersDate.rootElement);
3219
+ super(page, SearchFiltersTags.rootElement);
3244
3220
  }
3245
- createdTab = this.getChild(`[role='tab']`, { hasText: 'Created' });
3246
- modifiedTab = this.getChild(`[role='tab']`, { hasText: 'Modified' });
3247
- createdTabTitle = this.createdTab.locator(`div`);
3248
- modifiedTabTitle = this.modifiedTab.locator(`div`);
3249
- anytimeButton = this.getChild(`[data-automation-id$='date-range-anytime']`);
3250
- anytimeRadioButton = this.anytimeButton.locator(`input`);
3251
- inTheLastButton = this.getChild(`[data-automation-id$='date-range-in-last']`);
3252
- inTheLastInput = this.getChild(`[data-automation-id$='date-range-in-last-input']`);
3253
- inTheLastDropdown = this.getChild(`[data-automation-id$='date-range-in-last-dropdown']`);
3254
- betweenButton = this.getChild(`[data-automation-id$='date-range-between']`);
3255
- betweenRadioButton = this.betweenButton.locator(`input`);
3256
- betweenStartDate = this.getChild(`[data-automation-id$='date-range-between-start-input']`);
3257
- betweenEndDate = this.getChild(`[data-automation-id$='date-range-between-end-input']`);
3258
- async openCreatedModifiedTab(page, tab) {
3259
- switch (tab) {
3260
- case 'Created':
3261
- await page.searchFiltersDate.createdTab.click();
3262
- break;
3263
- case 'Modified':
3264
- await page.searchFiltersDate.modifiedTab.click();
3265
- break;
3266
- default:
3267
- break;
3268
- }
3269
- await page.page.waitForTimeout(2000);
3221
+ addOptionInput = this.getChild(`[data-automation-id$='adf-search-chip-autocomplete-input']`);
3222
+ searchOption(value) {
3223
+ return this.page.locator(`[data-automation-id="option-${value}"]`);
3270
3224
  }
3271
- async isModifiedTabSelected() {
3272
- return this.modifiedTab.getAttribute('aria-selected');
3225
+ async filterByTag(page, tag) {
3226
+ await page.searchFilters.tagsFilter.click();
3227
+ await page.searchFiltersTags.addOptionInput.fill(tag);
3228
+ await this.searchOption(tag).click();
3229
+ await page.searchMenuCard.menuCardApply.click();
3230
+ await page.dataTable.progressBarWaitForReload();
3273
3231
  }
3274
- async isSearchTabSelected() {
3275
- return this.createdTab.getAttribute('aria-selected');
3232
+ async clearTagFilter(page) {
3233
+ await page.searchFilters.tagsFilter.click();
3234
+ await page.searchMenuCard.menuCardClear.click();
3235
+ await page.dataTable.progressBarWaitForReload();
3276
3236
  }
3277
3237
  }
3278
3238
 
@@ -3299,21 +3259,92 @@ class SearchFiltersDate extends BaseComponent {
3299
3259
  * You should have received a copy of the GNU Lesser General Public License
3300
3260
  * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
3301
3261
  */
3302
- class SearchFiltersLocation extends BaseComponent {
3303
- static rootElement = '.adf-search-filter-menu-card';
3262
+
3263
+ /*!
3264
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
3265
+ *
3266
+ * Alfresco Example Content Application
3267
+ *
3268
+ * This file is part of the Alfresco Example Content Application.
3269
+ * If the software was purchased under a paid Alfresco license, the terms of
3270
+ * the paid license agreement will prevail. Otherwise, the software is
3271
+ * provided under the following open source license terms:
3272
+ *
3273
+ * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
3274
+ * it under the terms of the GNU Lesser General Public License as published by
3275
+ * the Free Software Foundation, either version 3 of the License, or
3276
+ * (at your option) any later version.
3277
+ *
3278
+ * The Alfresco Example Content Application is distributed in the hope that it will be useful,
3279
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
3280
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3281
+ * GNU Lesser General Public License for more details.
3282
+ *
3283
+ * You should have received a copy of the GNU Lesser General Public License
3284
+ * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
3285
+ */
3286
+ class SearchFilters extends BaseComponent {
3287
+ static rootElement = '.aca-content__advanced-filters';
3304
3288
  constructor(page) {
3305
- super(page, SearchFiltersLocation.rootElement);
3289
+ super(page, SearchFilters.rootElement);
3306
3290
  }
3307
- addOptionInput = this.getChild(`[data-automation-id$='adf-search-chip-autocomplete-input']`);
3308
- searchOption(value) {
3309
- return this.page.locator(`[data-automation-id="option-${value}"]`);
3291
+ filtersButtons = this.getChild('adf-search-widget-chip');
3292
+ logicFilter = this.getChild('adf-search-widget-chip', { hasText: 'Logic' });
3293
+ propertiesFilter = this.getChild('adf-search-widget-chip', { hasText: 'Properties' });
3294
+ dateFilter = this.getChild('adf-search-widget-chip', { hasText: 'Date' });
3295
+ locationFilter = this.getChild('adf-search-widget-chip', { hasText: 'Location' });
3296
+ tagsFilter = this.getChild('adf-search-widget-chip', { hasText: 'Tags' });
3297
+ categoriesFilter = this.getChild('adf-search-widget-chip', { hasText: 'Categories' });
3298
+ resetButton = this.getChild('button', { hasText: 'Reset' });
3299
+ menuCardTitle = this.getChild('.adf-search-filter-title');
3300
+ menuCardClose = this.getChild('.adf-search-filter-title-action');
3301
+ menuCardClear = this.getChild('#cancel-filter-button');
3302
+ menuCardApply = this.getChild('#apply-filter-button');
3303
+ dropdownOptions = this.page.locator(`[role="option"]`);
3304
+ }
3305
+
3306
+ /*!
3307
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
3308
+ *
3309
+ * Alfresco Example Content Application
3310
+ *
3311
+ * This file is part of the Alfresco Example Content Application.
3312
+ * If the software was purchased under a paid Alfresco license, the terms of
3313
+ * the paid license agreement will prevail. Otherwise, the software is
3314
+ * provided under the following open source license terms:
3315
+ *
3316
+ * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
3317
+ * it under the terms of the GNU Lesser General Public License as published by
3318
+ * the Free Software Foundation, either version 3 of the License, or
3319
+ * (at your option) any later version.
3320
+ *
3321
+ * The Alfresco Example Content Application is distributed in the hope that it will be useful,
3322
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
3323
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3324
+ * GNU Lesser General Public License for more details.
3325
+ *
3326
+ * You should have received a copy of the GNU Lesser General Public License
3327
+ * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
3328
+ */
3329
+ class SearchInputComponent extends BaseComponent {
3330
+ static rootElement = 'aca-page-layout';
3331
+ searchInput = this.page.locator('#app-control-input');
3332
+ searchButton = this.page.locator('.aca-search-input--search-button');
3333
+ searchCloseButton = this.page.locator('.aca-search-input--close-button');
3334
+ /**
3335
+ * Method used in cases where user have possibility to navigate "inside" the element (it's clickable and has link attribute).
3336
+ * Perform action .click() to navigate inside it
3337
+ *
3338
+ * @returns reference to cell element which contains link.
3339
+ */
3340
+ getCellLinkByName = (name) => this.getChild('.adf-datatable-row[role="row"]', { hasText: name });
3341
+ constructor(page, rootElement = SearchInputComponent.rootElement) {
3342
+ super(page, rootElement);
3310
3343
  }
3311
- async filterByLocation(page, location) {
3312
- await page.searchFilters.locationFilter.click();
3313
- await page.searchFiltersLocation.addOptionInput.fill(location);
3314
- await page.searchFiltersLocation.searchOption(location).click();
3315
- await page.searchFilters.menuCardApply.click();
3316
- await page.dataTable.progressBarWaitForReload();
3344
+ async performDoubleClickFolderOrFileToOpen(name) {
3345
+ await this.getCellLinkByName(name).waitFor({ state: 'visible', timeout: timeouts.medium });
3346
+ await this.getCellLinkByName(name).dblclick();
3347
+ await this.spinnerWaitForReload();
3317
3348
  }
3318
3349
  }
3319
3350
 
@@ -3340,15 +3371,17 @@ class SearchFiltersLocation extends BaseComponent {
3340
3371
  * You should have received a copy of the GNU Lesser General Public License
3341
3372
  * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
3342
3373
  */
3343
- class SearchFiltersLogic extends BaseComponent {
3374
+ class SearchMenuCard extends BaseComponent {
3344
3375
  static rootElement = '.adf-search-filter-menu-card';
3376
+ resetButton = this.getChild('button', { hasText: 'Reset' });
3377
+ menuCardTitle = this.getChild('.adf-search-filter-title');
3378
+ menuCardClose = this.getChild('.adf-search-filter-title-action');
3379
+ menuCardClear = this.getChild('#cancel-filter-button');
3380
+ menuCardApply = this.getChild('#apply-filter-button');
3381
+ dropdownOptions = this.page.locator(`[role="option"]`);
3345
3382
  constructor(page) {
3346
- super(page, SearchFiltersLogic.rootElement);
3383
+ super(page, SearchMenuCard.rootElement);
3347
3384
  }
3348
- matchAllInput = this.getChild(`[placeholder$='Results will match all words entered here']`);
3349
- matchAnyInput = this.getChild(`[placeholder$='Results will match any words entered here']`);
3350
- excludeInput = this.getChild(`[placeholder$='Results will exclude matches with these words']`);
3351
- matchExactInput = this.getChild(`[placeholder$='Results will match this entire phrase']`);
3352
3385
  }
3353
3386
 
3354
3387
  /*!
@@ -3374,62 +3407,59 @@ class SearchFiltersLogic extends BaseComponent {
3374
3407
  * You should have received a copy of the GNU Lesser General Public License
3375
3408
  * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
3376
3409
  */
3377
- class SearchFiltersProperties extends BaseComponent {
3378
- static rootElement = '.adf-search-filter-menu-card';
3379
- constructor(page) {
3380
- super(page, SearchFiltersProperties.rootElement);
3410
+ class SearchOverlayComponent extends BaseComponent {
3411
+ static rootElement = '.cdk-overlay-pane';
3412
+ searchFilesOption = this.getChild('input#content-input');
3413
+ searchFoldersOption = this.getChild('input#folder-input');
3414
+ searchLibrariesOption = this.getChild('input#libraries-input');
3415
+ searchInput = this.page.locator('#app-control-input');
3416
+ searchButton = this.page.locator('app-search-input-control button[title="Search"]');
3417
+ searchInputControl = this.page.locator('.app-search-control');
3418
+ searchOptions = this.page.locator('.app-search-options');
3419
+ constructor(page, rootElement = SearchOverlayComponent.rootElement) {
3420
+ super(page, rootElement);
3381
3421
  }
3382
- operatorButton = this.getChild(`[data-automation-id='adf-search-properties-file-size-operator']`);
3383
- fileSizeInput = this.getChild(`[placeholder$='Enter file size']`);
3384
- unitButton = this.getChild(`[data-automation-id='adf-search-properties-file-size-unit']`);
3385
- fileTypeInput = this.getChild(`[placeholder$='File Type']`);
3386
- atLeastOption = this.page.locator(`[role="option"]`, { hasText: 'At Least' });
3387
- atMostOption = this.page.locator(`[role="option"]`, { hasText: 'At Most' });
3388
- exactlyOption = this.page.locator(`[role="option"]`, { hasText: 'Exactly' });
3389
- kbUnit = this.page.locator(`[role="option"]`, { hasText: 'KB' });
3390
- mbUnit = this.page.locator(`[role="option"]`, { hasText: 'MB' });
3391
- gbUnit = this.page.locator(`[role="option"]`, { hasText: 'GB' });
3392
- dropdownOptions = this.page.locator(`[role="option"]`);
3393
- async setPropertiesParameters(page, operator, unit, fileSizeInputText, fileTypeInputText) {
3394
- await page.searchFilters.propertiesFilter.click();
3395
- if (operator) {
3396
- await this.operatorButton?.click();
3397
- switch (operator) {
3398
- case 'At Least':
3399
- await this.atLeastOption?.click();
3400
- break;
3401
- case 'At Most':
3402
- await this.atMostOption?.click();
3403
- break;
3404
- case 'Exactly':
3405
- await this.exactlyOption?.click();
3406
- break;
3407
- }
3408
- }
3409
- if (unit) {
3410
- await this.unitButton?.click();
3411
- switch (unit) {
3412
- case 'KB':
3413
- await this.kbUnit?.click();
3414
- break;
3415
- case 'MB':
3416
- await this.mbUnit?.click();
3417
- break;
3418
- case 'GB':
3419
- await this.gbUnit?.click();
3420
- break;
3421
- }
3422
+ async isFoldersOptionChecked() {
3423
+ return this.searchFoldersOption.isChecked();
3424
+ }
3425
+ async isFilesOptionChecked() {
3426
+ return this.searchFilesOption.isChecked();
3427
+ }
3428
+ async isLibrariesOptionChecked() {
3429
+ return this.searchLibrariesOption.isChecked();
3430
+ }
3431
+ async clearOptions() {
3432
+ if (await this.isFilesOptionChecked()) {
3433
+ await this.searchFilesOption.click();
3422
3434
  }
3423
- if (fileSizeInputText) {
3424
- await this.fileSizeInput?.fill(fileSizeInputText);
3435
+ if (await this.isFoldersOptionChecked()) {
3436
+ await this.searchFoldersOption.click();
3425
3437
  }
3426
- if (fileTypeInputText) {
3427
- await this.fileTypeInput?.fill(fileTypeInputText);
3428
- await this.dropdownOptions.getByText(fileTypeInputText).waitFor();
3429
- await this.dropdownOptions.getByText(fileTypeInputText).click();
3438
+ if (await this.isLibrariesOptionChecked()) {
3439
+ await this.searchLibrariesOption.click();
3430
3440
  }
3431
- await page.searchFilters.menuCardApply.click();
3432
- await page.dataTable.progressBarWaitForReload();
3441
+ }
3442
+ async checkOnlyFolders() {
3443
+ await this.clearOptions();
3444
+ await this.searchFoldersOption.click();
3445
+ }
3446
+ async checkOnlyFiles() {
3447
+ await this.clearOptions();
3448
+ await this.searchFilesOption.click();
3449
+ }
3450
+ async checkLibraries() {
3451
+ await this.clearOptions();
3452
+ await this.searchLibrariesOption.click();
3453
+ }
3454
+ async checkFilesAndFolders() {
3455
+ await this.clearOptions();
3456
+ await this.searchFilesOption.click();
3457
+ await this.searchFoldersOption.click();
3458
+ }
3459
+ async searchFor(input) {
3460
+ await this.searchInput.clear();
3461
+ await this.searchInput.fill(input);
3462
+ await this.searchButton.click({ force: true });
3433
3463
  }
3434
3464
  }
3435
3465
 
@@ -3456,29 +3486,77 @@ class SearchFiltersProperties extends BaseComponent {
3456
3486
  * You should have received a copy of the GNU Lesser General Public License
3457
3487
  * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
3458
3488
  */
3459
- class SearchFiltersTags extends BaseComponent {
3460
- static rootElement = '.adf-search-filter-menu-card';
3461
- constructor(page) {
3462
- super(page, SearchFiltersTags.rootElement);
3489
+ class SearchSortingPicker extends BaseComponent {
3490
+ static rootElement = '#aca-button-action-menu';
3491
+ actionMenu = this.page.locator('[data-automation-id="auto_header_content_id_$thumbnail"]');
3492
+ sortOrderButton = this.page.locator('#aca-button-sorting-menu');
3493
+ sortByDropdownExpanded = this.page.locator('[role="menu"]').first();
3494
+ sortByList = this.page.locator('[role="menu"] button');
3495
+ constructor(page, rootElement = SearchSortingPicker.rootElement) {
3496
+ super(page, rootElement);
3463
3497
  }
3464
- addOptionInput = this.getChild(`[data-automation-id$='adf-search-chip-autocomplete-input']`);
3465
- searchOption(value) {
3466
- return this.page.locator(`[data-automation-id="option-${value}"]`);
3498
+ async waitForSortByDropdownToExpand() {
3499
+ await this.sortByDropdownExpanded.waitFor();
3467
3500
  }
3468
- async filterByTag(page, tag) {
3469
- await page.searchFilters.tagsFilter.click();
3470
- await page.searchFiltersTags.addOptionInput.fill(tag);
3471
- await this.searchOption(tag).click();
3472
- await page.searchFilters.menuCardApply.click();
3473
- await page.dataTable.progressBarWaitForReload();
3501
+ async isSortOrderButtonDisplayed() {
3502
+ return this.sortOrderButton.isVisible();
3474
3503
  }
3475
- async clearTagFilter(page) {
3476
- await page.searchFilters.tagsFilter.click();
3477
- await page.searchFilters.menuCardClear.click();
3478
- await page.dataTable.progressBarWaitForReload();
3504
+ async isSortByDropdownExpanded() {
3505
+ return this.sortByDropdownExpanded.isVisible();
3506
+ }
3507
+ async clickSortByDropdown() {
3508
+ await this.sortOrderButton.click();
3509
+ await this.waitForSortByDropdownToExpand();
3510
+ }
3511
+ async getSortByOptionsList() {
3512
+ const sortOptionsCount = await this.sortByList.count();
3513
+ const sortByOptions = [];
3514
+ for (let i = 1; i < sortOptionsCount; i++) {
3515
+ const textContent = (await this.sortByList.nth(i).textContent()).trim();
3516
+ sortByOptions.push(textContent);
3517
+ }
3518
+ sortByOptions.sort((a, b) => a.localeCompare(b));
3519
+ return sortByOptions;
3520
+ }
3521
+ async sortBy(option, direction) {
3522
+ await this.actionMenu.click();
3523
+ await this.clickSortByDropdown();
3524
+ if (!(await this.isSortByDropdownExpanded())) {
3525
+ await this.clickSortByDropdown();
3526
+ }
3527
+ const elem = this.sortByList.getByText(option);
3528
+ const optionId = await elem.locator('..').getAttribute('id');
3529
+ await elem.click();
3530
+ const directionSortElement = this.page.locator(`[id="${optionId}-${direction.toLocaleLowerCase()}"]`);
3531
+ await directionSortElement.click();
3532
+ await this.progressBarWaitForReload();
3479
3533
  }
3480
3534
  }
3481
3535
 
3536
+ /*!
3537
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
3538
+ *
3539
+ * Alfresco Example Content Application
3540
+ *
3541
+ * This file is part of the Alfresco Example Content Application.
3542
+ * If the software was purchased under a paid Alfresco license, the terms of
3543
+ * the paid license agreement will prevail. Otherwise, the software is
3544
+ * provided under the following open source license terms:
3545
+ *
3546
+ * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
3547
+ * it under the terms of the GNU Lesser General Public License as published by
3548
+ * the Free Software Foundation, either version 3 of the License, or
3549
+ * (at your option) any later version.
3550
+ *
3551
+ * The Alfresco Example Content Application is distributed in the hope that it will be useful,
3552
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
3553
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3554
+ * GNU Lesser General Public License for more details.
3555
+ *
3556
+ * You should have received a copy of the GNU Lesser General Public License
3557
+ * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
3558
+ */
3559
+
3482
3560
  /*!
3483
3561
  * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
3484
3562
  *
@@ -3548,7 +3626,7 @@ class Breadcrumb extends BaseComponent {
3548
3626
  * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
3549
3627
  */
3550
3628
  class SidenavComponent extends BaseComponent {
3551
- static rootElement = 'app-sidenav';
3629
+ static rootElement = '.adf-layout-container-sidenav';
3552
3630
  personalFiles = this.getChild(`[data-automation-id='app.navbar.personalFiles']`);
3553
3631
  myLibraries = this.getChild(`[data-automation-id='app.navbar.libraries.files']`);
3554
3632
  favoriteLibraries = this.getChild(`[data-automation-id='app.navbar.libraries.favorite']`);
@@ -3557,8 +3635,8 @@ class SidenavComponent extends BaseComponent {
3557
3635
  favorites = this.getChild(`[data-automation-id='app.navbar.favorites']`);
3558
3636
  trash = this.getChild(`[data-automation-id='app.navbar.trashcan']`);
3559
3637
  sidenavToggle = this.getChild(`.aca-sidenav-header-title-logo`);
3560
- sidenavExpand = this.page.getByTitle('Expand navigation menu');
3561
- expandedSidenav = this.page.locator(`[data-automation-id='expanded']`);
3638
+ sidenavExpand = this.page.locator(`[title='Expand navigation menu']`);
3639
+ expandedSidenav = this.getChild(`[data-automation-id='expanded']`);
3562
3640
  constructor(page) {
3563
3641
  super(page, SidenavComponent.rootElement);
3564
3642
  }
@@ -3835,7 +3913,7 @@ class NodesPage extends BasePage {
3835
3913
  constructor(page) {
3836
3914
  super(page, NodesPage.pageUrl);
3837
3915
  }
3838
- toolbar = new ToolbarComponent(this.page);
3916
+ rulesToolbar = new RulesToolbarComponent(this.page);
3839
3917
  manageRulesDialog = new ManageRulesDialogComponent(this.page);
3840
3918
  actionsDropdown = new ActionsDropdownComponent(this.page);
3841
3919
  conditionsDropdown = new ConditionComponent(this.page);
@@ -4108,6 +4186,7 @@ class SearchPage extends BasePage {
4108
4186
  uploadNewVersionDialog = new UploadNewVersionDialog(this.page);
4109
4187
  manageVersionsDialog = new ManageVersionsDialog(this.page);
4110
4188
  folderInformationDialog = new FolderInformationDialogComponent(this.page);
4189
+ searchMenuCard = new SearchMenuCard(this.page);
4111
4190
  async searchWithin(searchText, searchType) {
4112
4191
  await this.acaHeader.searchButton.click();
4113
4192
  await this.clickSearchButton();
@@ -7362,5 +7441,5 @@ const TEST_FILES = {
7362
7441
  * Generated bundle index. Do not edit.
7363
7442
  */
7364
7443
 
7365
- export { APP_ROUTES, AcaHeader, ActionType, ActionTypes, ActionsDropdownComponent, AdfConfirmDialogComponent, AdfDeleteTrashComponent, AdfFolderDialogComponent, AdfInfoDrawerComponent, AdfLibraryDialogComponent, ApiClientFactory, BaseComponent, BasePage, Breadcrumb, CategoriesApi, Comparator, ConditionComponent, ConditionsTypes, ContentNodeSelectorDialog, CreateFromTemplateDialogComponent, DataTableComponent, DateTimePicker, EditDialog, ErrorComponent, FavoritesLibrariesPage, FavoritesPage, FavoritesPageApi, Field, FileActionsApi, FolderInformationDialogComponent, GenericLogger, LinkRulesDialog, LogLevelsEnum, LoginPage, ManageRules, ManageRulesDialogComponent, ManageVersionsDialog, MatMenuComponent, MimeType, MyLibrariesPage, NodesApi, NodesPage, PaginationActionsType, PaginationComponent, PasswordOverlayDialogComponent, Person, PersonalFilesPage, QueriesApi, RecentFilesPage, RulesApi, SIDEBAR_LABELS, SITE_ROLES, SITE_VISIBILITY, SearchFilters, SearchFiltersCategories, SearchFiltersDate, SearchFiltersLocation, SearchFiltersLogic, SearchFiltersProperties, SearchFiltersTags, SearchInputComponent, SearchOverlayComponent, SearchPage, SearchPageApi, SearchSortingPicker, ShareDialogComponent, SharedLinksApi, SharedPage, SidenavComponent, SitesApi, SnackBarComponent, SpinnerComponent, TEST_FILES, TagsApi, ToolbarComponent, TrashPage, TrashcanApi, UploadDialog, UploadNewVersionDialog, UserModel, Utils, ViewerComponent, ViewerOverlayDialogComponent, collaboratorDocToolbarMore, collaboratorEditRowToolbarMore, collaboratorLockCurrentUserToolbarMore, collaboratorLockOtherUserSearchToolbarMore, collaboratorLockOtherUserToolbarMore, collaboratorSharedToolbarPrimary, collaboratorToolbarPrimary, createSuiteProjects, errorColor, errorStrings, favoritesCollaboratorToolbarMore, file, fileDocx, fileDocxFav, fileDocxShared, fileDocxSharedFav, fileFav, fileFavLocked, fileGranularPermission, fileLocked, fileLockedByUser, fileShared, fileSharedFav, fileSharedFavLocked, fileSharedLocked, flattenNodeContentTree, folder, folderFav, folderFav2, folderFavFile, folderFile, getBrowserProjects, getExcludedTestsRegExpArray, getGlobalConfig, getUserState, infoColor, libraryErrors, logColor, logLevels, multipleSel, multipleSelAllFav, multipleSelFile, paths, random$1 as random, test, testEmailDomain, timeouts, users, waitForApi, warnColor };
7444
+ export { APP_ROUTES, AcaHeader, ActionType, ActionTypes, ActionsDropdownComponent, AdfConfirmDialogComponent, AdfDeleteTrashComponent, AdfFolderDialogComponent, AdfInfoDrawerComponent, AdfLibraryDialogComponent, ApiClientFactory, BaseComponent, BasePage, Breadcrumb, CategoriesApi, Comparator, ConditionComponent, ConditionsTypes, ContentNodeSelectorDialog, CreateFromTemplateDialogComponent, DataTableComponent, DateTimePicker, EditDialog, ErrorComponent, FavoritesLibrariesPage, FavoritesPage, FavoritesPageApi, Field, FileActionsApi, FolderInformationDialogComponent, GenericLogger, LinkRulesDialog, LogLevelsEnum, LoginPage, ManageRules, ManageRulesDialogComponent, ManageVersionsDialog, MatMenuComponent, MimeType, MyLibrariesPage, NodesApi, NodesPage, PaginationActionsType, PaginationComponent, PasswordOverlayDialogComponent, Person, PersonalFilesPage, QueriesApi, RecentFilesPage, RulesApi, RulesToolbarComponent, SIDEBAR_LABELS, SITE_ROLES, SITE_VISIBILITY, SearchFilters, SearchFiltersCategories, SearchFiltersDate, SearchFiltersLocation, SearchFiltersLogic, SearchFiltersProperties, SearchFiltersTags, SearchInputComponent, SearchMenuCard, SearchOverlayComponent, SearchPage, SearchPageApi, SearchSortingPicker, ShareDialogComponent, SharedLinksApi, SharedPage, SidenavComponent, SitesApi, SnackBarComponent, SpinnerComponent, TEST_FILES, TagsApi, TrashPage, TrashcanApi, UploadDialog, UploadNewVersionDialog, UserModel, Utils, ViewerComponent, ViewerOverlayDialogComponent, collaboratorDocToolbarMore, collaboratorEditRowToolbarMore, collaboratorLockCurrentUserToolbarMore, collaboratorLockOtherUserSearchToolbarMore, collaboratorLockOtherUserToolbarMore, collaboratorSharedToolbarPrimary, collaboratorToolbarPrimary, createSuiteProjects, errorColor, errorStrings, favoritesCollaboratorToolbarMore, file, fileDocx, fileDocxFav, fileDocxShared, fileDocxSharedFav, fileFav, fileFavLocked, fileGranularPermission, fileLocked, fileLockedByUser, fileShared, fileSharedFav, fileSharedFavLocked, fileSharedLocked, flattenNodeContentTree, folder, folderFav, folderFav2, folderFavFile, folderFile, getBrowserProjects, getExcludedTestsRegExpArray, getGlobalConfig, getUserState, infoColor, libraryErrors, logColor, logLevels, multipleSel, multipleSelAllFav, multipleSelFile, paths, random$1 as random, test, testEmailDomain, timeouts, users, waitForApi, warnColor };
7366
7445
  //# sourceMappingURL=alfresco-aca-playwright-shared.mjs.map