@alfresco/aca-playwright-shared 7.3.0-22225077007 → 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.
- package/fesm2022/alfresco-aca-playwright-shared.mjs +406 -327
- package/fesm2022/alfresco-aca-playwright-shared.mjs.map +1 -1
- package/package.json +1 -1
- package/page-objects/components/dataTable/data-table.component.d.ts +1 -4
- package/page-objects/components/dataTable/index.d.ts +0 -1
- package/page-objects/components/dialogs/upload-dialog.component.d.ts +1 -1
- package/page-objects/components/index.d.ts +1 -10
- package/page-objects/components/manageRules/index.d.ts +1 -0
- package/page-objects/components/{dataTable/toolbar.component.d.ts → manageRules/manage-rules-toolbar.component.d.ts} +2 -2
- package/page-objects/components/search/index.d.ts +29 -0
- package/page-objects/components/search/search-filters/index.d.ts +29 -0
- package/page-objects/components/search/search-menu-card.component.d.ts +35 -0
- package/page-objects/components/sidenav.component.d.ts +1 -1
- package/page-objects/pages/nodes.page.d.ts +2 -2
- package/page-objects/pages/search.page.d.ts +2 -1
|
@@ -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
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
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.
|
|
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.
|
|
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 = '
|
|
1980
|
-
|
|
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.
|
|
1983
|
-
uploadDialogMinimized = this.
|
|
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.
|
|
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.
|
|
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(
|
|
2672
|
-
headerTitle = this.
|
|
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.
|
|
2683
|
-
idField = this.
|
|
2684
|
-
descriptionField = this.
|
|
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
|
|
2973
|
-
static rootElement = '
|
|
2974
|
-
|
|
2975
|
-
|
|
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
|
|
3018
|
-
static rootElement = '.
|
|
3019
|
-
|
|
3020
|
-
|
|
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
|
-
|
|
3039
|
-
|
|
3040
|
-
|
|
3041
|
-
|
|
3042
|
-
|
|
3043
|
-
|
|
3044
|
-
|
|
3045
|
-
|
|
3046
|
-
|
|
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
|
|
3050
|
-
|
|
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
|
|
3067
|
-
|
|
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
|
|
3097
|
-
static rootElement = '
|
|
3098
|
-
|
|
3099
|
-
|
|
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
|
-
|
|
3119
|
-
|
|
3120
|
-
|
|
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
|
|
3129
|
-
await
|
|
3130
|
-
await
|
|
3131
|
-
|
|
3132
|
-
|
|
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
|
|
3167
|
-
static rootElement = '.
|
|
3100
|
+
class SearchFiltersLogic extends BaseComponent {
|
|
3101
|
+
static rootElement = '.adf-search-filter-menu-card';
|
|
3168
3102
|
constructor(page) {
|
|
3169
|
-
super(page,
|
|
3103
|
+
super(page, SearchFiltersLogic.rootElement);
|
|
3170
3104
|
}
|
|
3171
|
-
|
|
3172
|
-
|
|
3173
|
-
|
|
3174
|
-
|
|
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
|
|
3134
|
+
class SearchFiltersProperties extends BaseComponent {
|
|
3210
3135
|
static rootElement = '.adf-search-filter-menu-card';
|
|
3211
3136
|
constructor(page) {
|
|
3212
|
-
super(page,
|
|
3137
|
+
super(page, SearchFiltersProperties.rootElement);
|
|
3213
3138
|
}
|
|
3214
|
-
|
|
3215
|
-
|
|
3216
|
-
|
|
3217
|
-
|
|
3218
|
-
|
|
3219
|
-
|
|
3220
|
-
|
|
3221
|
-
|
|
3222
|
-
|
|
3223
|
-
|
|
3224
|
-
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
3228
|
-
|
|
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
|
|
3216
|
+
class SearchFiltersTags extends BaseComponent {
|
|
3241
3217
|
static rootElement = '.adf-search-filter-menu-card';
|
|
3242
3218
|
constructor(page) {
|
|
3243
|
-
super(page,
|
|
3219
|
+
super(page, SearchFiltersTags.rootElement);
|
|
3244
3220
|
}
|
|
3245
|
-
|
|
3246
|
-
|
|
3247
|
-
|
|
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
|
|
3272
|
-
|
|
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
|
|
3275
|
-
|
|
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
|
-
|
|
3303
|
-
|
|
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,
|
|
3289
|
+
super(page, SearchFilters.rootElement);
|
|
3306
3290
|
}
|
|
3307
|
-
|
|
3308
|
-
|
|
3309
|
-
|
|
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
|
|
3312
|
-
await
|
|
3313
|
-
await
|
|
3314
|
-
await
|
|
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
|
|
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,
|
|
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
|
|
3378
|
-
static rootElement = '.
|
|
3379
|
-
|
|
3380
|
-
|
|
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
|
-
|
|
3383
|
-
|
|
3384
|
-
|
|
3385
|
-
|
|
3386
|
-
|
|
3387
|
-
|
|
3388
|
-
|
|
3389
|
-
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
|
|
3393
|
-
|
|
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 (
|
|
3424
|
-
await this.
|
|
3435
|
+
if (await this.isFoldersOptionChecked()) {
|
|
3436
|
+
await this.searchFoldersOption.click();
|
|
3425
3437
|
}
|
|
3426
|
-
if (
|
|
3427
|
-
await this.
|
|
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
|
-
|
|
3432
|
-
|
|
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
|
|
3460
|
-
static rootElement = '
|
|
3461
|
-
|
|
3462
|
-
|
|
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
|
-
|
|
3465
|
-
|
|
3466
|
-
return this.page.locator(`[data-automation-id="option-${value}"]`);
|
|
3498
|
+
async waitForSortByDropdownToExpand() {
|
|
3499
|
+
await this.sortByDropdownExpanded.waitFor();
|
|
3467
3500
|
}
|
|
3468
|
-
async
|
|
3469
|
-
|
|
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
|
|
3476
|
-
|
|
3477
|
-
|
|
3478
|
-
|
|
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 = '
|
|
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.
|
|
3561
|
-
expandedSidenav = this.
|
|
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
|
-
|
|
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,
|
|
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
|