@alfresco/aca-playwright-shared 7.4.1 → 7.5.0-24770823677

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.
@@ -1 +1 @@
1
- {"version":3,"file":"alfresco-aca-playwright-shared.mjs","sources":["../../../../projects/aca-playwright-shared/src/utils/paths.ts","../../../../projects/aca-playwright-shared/src/utils/timeouts.ts","../../../../projects/aca-playwright-shared/src/utils/exclude-tests.ts","../../../../projects/aca-playwright-shared/src/utils/state-helper.ts","../../../../projects/aca-playwright-shared/src/utils/utils.ts","../../../../projects/aca-playwright-shared/src/utils/library-errors.ts","../../../../projects/aca-playwright-shared/src/utils/config.ts","../../../../projects/aca-playwright-shared/src/utils/error-strings.ts","../../../../projects/aca-playwright-shared/src/utils/api.ts","../../../../projects/aca-playwright-shared/src/utils/logger.ts","../../../../projects/aca-playwright-shared/src/utils/index.ts","../../../../projects/aca-playwright-shared/src/page-objects/playwright-base.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/base.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/snackBar/snack-bar.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dataTable/mat-menu.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/pagination.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dataTable/data-table.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dataTable/index.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/adf-folder-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/adf-library-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/password-overlay-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/viewer-overlay-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/content-node-selector-dialog.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/create-from-template-dialog-component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/adf-confirm-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/datetime-picker/datetime-picker.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/share-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/upload-new-version-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/manage-versions-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/upload-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/delete-trash-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/link-rules.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/edit-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/folder-information-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/index.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/manageRules/manage-rules-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/manageRules/manage-rules.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/manageRules/manage-rules-toolbar.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/manageRules/index.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/actions-dropdown.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/conditions.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/adf-info-drawer.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/aca-header.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/viewer.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-filters/search-filters-categories.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-filters/search-filters-date.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-filters/search-filters-location.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-filters/search-filters-logic.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-filters/search-filters-properties.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-filters/search-filters-tags.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-filters/index.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-filters.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-input.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-menu-card.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-sorting-picker.components.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/index.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/breadcrumb/breadcrumb.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/sidenav.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/error.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/edit-mode.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/index.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/base.page.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/login.page.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/nodes.page.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/personal-files.page.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/my-libraries.page.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/recent-files.page.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/shared.page.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-in-dialog.components.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/search.page.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/favorites.page.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/trash.page.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/favorites-libraries.page.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/index.ts","../../../../projects/aca-playwright-shared/src/page-objects/index.ts","../../../../projects/aca-playwright-shared/src/base-config/global-variables.ts","../../../../projects/aca-playwright-shared/src/base-config/global.setup.ts","../../../../projects/aca-playwright-shared/src/base-config/report-portal.config.ts","../../../../projects/aca-playwright-shared/src/base-config/playwright.config.ts","../../../../projects/aca-playwright-shared/src/base-config/index.ts","../../../../projects/aca-playwright-shared/src/api/people-api-models.ts","../../../../projects/aca-playwright-shared/src/api/api-client-factory.ts","../../../../projects/aca-playwright-shared/src/api/rules-api.ts","../../../../projects/aca-playwright-shared/src/api/file-actions.ts","../../../../projects/aca-playwright-shared/src/api/shared-links-api.ts","../../../../projects/aca-playwright-shared/src/api/favorites-api.ts","../../../../projects/aca-playwright-shared/src/api/node-content-tree.ts","../../../../projects/aca-playwright-shared/src/api/nodes-api.ts","../../../../projects/aca-playwright-shared/src/api/sites-api.ts","../../../../projects/aca-playwright-shared/src/api/search-api.ts","../../../../projects/aca-playwright-shared/src/api/trashcan-api.ts","../../../../projects/aca-playwright-shared/src/api/queries-api.ts","../../../../projects/aca-playwright-shared/src/api/categories-api.ts","../../../../projects/aca-playwright-shared/src/api/tags-api.ts","../../../../projects/aca-playwright-shared/src/api/index.ts","../../../../projects/aca-playwright-shared/src/models/user-model.ts","../../../../projects/aca-playwright-shared/src/models/custom-config.ts","../../../../projects/aca-playwright-shared/src/models/test-file.model.ts","../../../../projects/aca-playwright-shared/src/models/index.ts","../../../../projects/aca-playwright-shared/src/fixtures/page-initialization.ts","../../../../projects/aca-playwright-shared/src/fixtures/index.ts","../../../../projects/aca-playwright-shared/src/resources/test-data/test-data-permissions.ts","../../../../projects/aca-playwright-shared/src/resources/test-data/test-data-files-folders.ts","../../../../projects/aca-playwright-shared/src/resources/test-data/index.ts","../../../../projects/aca-playwright-shared/src/resources/test-files/index.ts","../../../../projects/aca-playwright-shared/src/resources/index.ts","../../../../projects/aca-playwright-shared/src/public-api.ts","../../../../projects/aca-playwright-shared/src/alfresco-aca-playwright-shared.ts"],"sourcesContent":["/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nconst rootFolder = 'e2e-output';\n\nexport const paths = {\n rootFolder,\n allData: `${rootFolder}/playwright-data`,\n files: `${rootFolder}/playwright-data/downloads`,\n report: `${rootFolder}/playwright-data/report`,\n userStates: `${rootFolder}/playwright-data/user-states`\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport const timeouts = {\n typingDelay: 50,\n tiny: 500,\n short: 1000,\n normal: 2 * 1000,\n medium: 5 * 1000,\n big: 7.5 * 1000,\n large: 10 * 1000,\n extraLarge: 20 * 1000,\n fortySeconds: 40 * 1000,\n sixtySeconds: 60 * 1000,\n globalTest: 85 * 1000,\n extendedTest: 150 * 1000,\n extendedLongTest: 200 * 1000,\n webServer: 240 * 1000,\n globalSpec: 90 * 10 * 1000\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nconst getCurrentBrowser = (): string => (process.env.PLAYWRIGHT_BROWSER || 'chrome').toLowerCase();\n\nexport const getExcludedTestsRegExpArray = (excludedJson: any, projectName: string) => {\n const prefix = `[ 🎭 Playwright Excludes - ${projectName} ]`;\n const currentBrowser = getCurrentBrowser();\n const browserKeys = ['all', 'firefox', 'chromium', 'webkit', 'msedge'];\n const relevantKeys: string[] = [];\n const testIdsToExclude: string[] = [];\n\n // Always include 'all' if it exists\n if (excludedJson.all && typeof excludedJson.all === 'object') {\n const allTestIds = Object.keys(excludedJson.all);\n testIdsToExclude.push(...allTestIds);\n relevantKeys.push('all');\n }\n\n // Include current browser-specific exclusions\n const browserKey = browserKeys.find((key) => key.toLowerCase() === currentBrowser);\n if (browserKey && excludedJson[browserKey] && typeof excludedJson[browserKey] === 'object') {\n const browserTestIds = Object.keys(excludedJson[browserKey]);\n testIdsToExclude.push(...browserTestIds);\n if (!relevantKeys.includes(browserKey)) {\n relevantKeys.push(browserKey);\n }\n }\n\n if (testIdsToExclude.length > 0) {\n console.warn(\n `${prefix} ❌ Tests excluded for browser '${currentBrowser}' because of 🐛 : ${testIdsToExclude.join(', ')} (from keys: ${relevantKeys.join(\n ', '\n )})`\n );\n } else {\n console.info(`${prefix} ✅ No excluded tests for browser '${currentBrowser}' 🎉`);\n }\n\n return testIdsToExclude.map((key) => new RegExp(key));\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { resolve } from 'path';\nimport { paths } from '.';\nimport { users } from '../base-config';\n\nexport function getUserState(user: UserType) {\n return resolve(process.cwd(), `${paths.userStates}/${user}UserState.json`);\n}\n\ntype UserType = keyof typeof users;\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nconst crypto = require('crypto');\nimport * as path from 'path';\nimport { LoginPage, MyLibrariesPage, PersonalFilesPage, FavoritesLibrariesPage, SearchPage, SharedPage, TrashPage } from '../page-objects';\nimport { format, subDays, subMonths, endOfMonth } from 'date-fns';\nimport StreamZip from 'node-stream-zip';\nimport { NodesApi, SitesApi, TrashcanApi } from '../api';\n\nexport class Utils {\n static readonly string257Long = 'x'.repeat(257);\n static readonly string513Long = 'x'.repeat(513);\n\n static random(): string {\n return crypto.getRandomValues(new Uint32Array(1))[0].toString(36).substring(0, 5).toLowerCase();\n }\n\n static retryCall(fn: () => Promise<any>, retry: number = 30, delay: number = 1500): Promise<any> {\n const pause = (duration: number) => new Promise((res) => setTimeout(res, duration));\n\n const run = (retries: number): Promise<any> => {\n return fn().catch((err) => (retries > 1 ? pause(delay).then(() => run(retries - 1)) : Promise.reject(err)));\n };\n\n return run(retry);\n }\n\n static formatDate(date: string): string {\n return new Date(date).toLocaleDateString('en-US');\n }\n\n /**\n * Method used to login user with navigation. Also waits for the page to load after login\n *\n * @param loginPage page context passed from the test\n * @param username username string\n * @param password password string\n * @param errorMessage error message string if the login fails\n *\n */\n static async tryLoginUser(loginPage: LoginPage, username: string, password: string, errorMessage = 'Error '): Promise<void> {\n try {\n await loginPage.loginUser({ username, password }, { withNavigation: true, waitForLoading: true });\n } catch (error) {\n throw new Error(`${errorMessage}: ${error}`);\n }\n }\n\n /**\n * Method used to delete nodes and sites from user's account\n *\n * @param nodesApi nodesApi initialized with user credentials passed from the test\n * @param trashcanApi trashcanApi initialized with user credentials passed from the test\n * @param errorMessage error message string if the deleting sites/nodes fails\n * @param sitesApi sitesApi initialized with user credentials passed from the test\n * @param sitesToDelete array of sites' ids\n *\n */\n static async deleteNodesSitesEmptyTrashcan(\n nodesApi?: NodesApi,\n trashcanApi?: TrashcanApi,\n errorMessage = 'Error ',\n sitesApi?: SitesApi,\n sitesToDelete?: string[]\n ): Promise<void> {\n try {\n await nodesApi?.deleteCurrentUserNodes();\n await trashcanApi?.emptyTrashcan();\n if (sitesToDelete && sitesToDelete.length > 0) {\n await sitesApi?.deleteSites(sitesToDelete);\n }\n } catch (error) {\n console.error(`${errorMessage}: ${error}`);\n }\n }\n\n static async uploadFileNewVersion(personalFilesPage: PersonalFilesPage, fileFromOS: string, fileType: string): Promise<void> {\n const fileInput = await personalFilesPage.page.$('#app-upload-file-version');\n await fileInput?.setInputFiles(path.join(__dirname, `../resources/test-files/${fileFromOS}.${fileType}`));\n }\n\n static async reloadPageIfRowNotVisible(\n pageContext: PersonalFilesPage | MyLibrariesPage | FavoritesLibrariesPage | SearchPage | SharedPage,\n nodeName: string,\n errorMessage = 'reloadPageIfRowNotVisible Error '\n ): Promise<void> {\n try {\n if (!(await pageContext.dataTable.getRowByName(nodeName).isVisible())) {\n await pageContext.page.reload({ waitUntil: 'load' });\n }\n } catch (error) {\n console.error(`${errorMessage}: ${error}`);\n }\n }\n\n static async reloadPageIfDatatableEmpty(\n pageContext: PersonalFilesPage | MyLibrariesPage | FavoritesLibrariesPage | SearchPage | SharedPage | TrashPage,\n errorMessage = 'reloadPageIfDatatableEmpty Error '\n ): Promise<void> {\n try {\n if ((await pageContext.dataTable.getEmptyFolderLocator?.isVisible()) || (await pageContext.dataTable.emptyListTitle?.isVisible())) {\n await pageContext.page.reload({ waitUntil: 'load' });\n }\n } catch (error) {\n console.error(`${errorMessage}: ${error}`);\n }\n }\n\n static getCurrentAndPreviousDay(currentDate = new Date()): { currentDate: string; previousDate: string } {\n let formattedDate: string;\n let formattedDate2: string;\n\n const formatDate = (date: Date): string => {\n return format(date, 'dd-MMM-yy').toUpperCase();\n };\n\n if (currentDate.getDate() === 1) {\n const lastDayOfPreviousMonth: Date = endOfMonth(subMonths(currentDate, 1));\n formattedDate = formatDate(lastDayOfPreviousMonth);\n formattedDate2 = formatDate(subDays(lastDayOfPreviousMonth, 1));\n } else {\n formattedDate = formatDate(currentDate);\n formattedDate2 = formatDate(subDays(currentDate, 1));\n }\n\n return { currentDate: formattedDate, previousDate: formattedDate2 };\n }\n\n static async verifyZipFileContent(filePath: string, fileOrFolderName: string[]): Promise<boolean> {\n const zip = new StreamZip({\n file: filePath,\n storeEntries: true\n });\n\n return new Promise<boolean>((resolve) => {\n zip.on('ready', () => {\n const entries = zip.entries();\n const found = this.isFileOrFolderInEntries(entries, fileOrFolderName);\n zip.close();\n resolve(found);\n });\n });\n }\n\n private static isFileOrFolderInEntries(entries: { [name: string]: StreamZip.ZipEntry }, fileOrFolderName: string[]): boolean {\n return fileOrFolderName.some((name) => {\n return Object.keys(entries).some((entry) => entry.includes(name));\n });\n }\n\n /**\n * Method used trim all elements of an array from all spaces characters\n *\n * @param arr array needed to be trimmed\n *\n */\n static trimArrayElements(arr: string[]): string[] {\n return arr.map((element) => element.trim());\n }\n\n /**\n * Waits for a specific API response.\n *\n * @param page - The Playwright page object.\n * @param urlSubstring - The substring to look for in the URL.\n * @param statusCode - The expected status code of the response.\n */\n static async waitForApiResponse(\n contentPage: LoginPage | MyLibrariesPage | PersonalFilesPage | FavoritesLibrariesPage | SearchPage | SharedPage | TrashPage,\n urlSubstring: string,\n statusCode: number\n ) {\n await contentPage.page.waitForResponse((response) => response.url().includes(urlSubstring) && response.status() === statusCode);\n }\n\n static async delayInSeconds(seconds: number): Promise<void> {\n await new Promise((resolve) => setTimeout(resolve, seconds * 1000));\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport const libraryErrors = {\n libraryIdIsNotAvailable: \"This Library ID isn't available. Try a different Library ID.\",\n libraryIdIsAlreadyUsed: 'This Library ID is already used. Check the trashcan.',\n useNumbersAndLettersOnly: 'Use numbers and letters only'\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport const APP_ROUTES = {\n FAVORITES: '/favorites',\n MY_LIBRARIES: '/libraries',\n FAVORITE_LIBRARIES: '/favorite/libraries',\n LOGIN: '/login',\n LOGOUT: '/logout',\n PERSONAL_FILES: '/personal-files',\n RECENT_FILES: '/recent-files',\n SHARED_FILES: '/shared',\n TRASHCAN: '/trashcan'\n};\n\nexport const SIDEBAR_LABELS = {\n PERSONAL_FILES: 'Personal Files',\n MY_LIBRARIES: 'My Libraries',\n FAVORITE_LIBRARIES: 'Favorite Libraries',\n SHARED_FILES: 'Shared',\n RECENT_FILES: 'Recent Files',\n FAVORITES: 'Favorites',\n TRASH: 'Trash'\n};\n\nexport const SITE_ROLES = {\n SITE_MANAGER: {\n ROLE: 'SiteManager',\n LABEL: 'Manager'\n },\n SITE_CONSUMER: {\n ROLE: 'SiteConsumer',\n LABEL: 'Consumer'\n },\n SITE_CONTRIBUTOR: {\n ROLE: 'SiteContributor',\n LABEL: 'Contributor'\n },\n SITE_COLLABORATOR: {\n ROLE: 'SiteCollaborator',\n LABEL: 'Collaborator'\n },\n NONE: {\n LABEL: 'Not a member'\n }\n};\n\nexport const SITE_VISIBILITY = {\n PUBLIC: 'PUBLIC',\n MODERATED: 'MODERATED',\n PRIVATE: 'PRIVATE'\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport const errorStrings = {\n errorMessageNotPresent: 'Error message is not displayed',\n nameIsRequiredError: 'Name is required',\n nameWithSpecialCharactersError: `Name can't contain these characters * \" < > \\\\ / ? : |`,\n nameEndWithDotError: `Name can't end with a period .`,\n nameContainOnlySpacesError: `Name can't contain only spaces`,\n titleLengthLimitError: 'Use 256 characters or less for title',\n descriptionLengthLimitError: 'Use 512 characters or less for description',\n nameAlreadyUsedError: 'This name is already in use, try a different name.',\n\n folderNameIsRequired: 'Folder name is required',\n folderNameCantEndWithAPeriod: `Folder name can't end with a period .`,\n folderNameCantContainTheseCharacters: `Folder name can't contain these characters`,\n folderNameCantContainOnlySpaces: `Folder name can't contain only spaces`,\n thereIsAlreadyAFolderWithThisName: `There's already a folder with this name. Try a different name.`\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport type ApiResultPredicate<T> = (result: T) => boolean;\nexport type ApiCall<T> = () => Promise<T>;\n\nexport async function waitForApi<T>(apiCall: ApiCall<T>, predicate: ApiResultPredicate<T>, retry: number = 30, delay: number = 1000) {\n const apiCallWithPredicateChecking = async () => {\n const apiCallResult = await apiCall();\n if (predicate(apiCallResult)) {\n return Promise.resolve(apiCallResult);\n } else {\n return Promise.reject(new Error(`API call did not satisfy predicate: ${JSON.stringify(apiCallResult)}`));\n }\n };\n\n return retryCall(apiCallWithPredicateChecking, retry, delay);\n}\n\nfunction retryCall(fn: () => Promise<any>, retry: number = 30, delay: number = 1000): Promise<string> {\n const pause = (duration) => new Promise((res) => setTimeout(res, duration));\n const run = (retries) =>\n fn().catch((err) =>\n retries > 1\n ? pause(delay).then(() => run(retries - 1))\n : Promise.reject(new Error(`API call did not satisfy predicate: ${JSON.stringify(err)}`))\n );\n\n return run(retry);\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\n/* eslint-disable @typescript-eslint/naming-convention */\n\nexport interface LoggerLike {\n info(message: string): void;\n log(message: string): void;\n warn(message: string): void;\n error(message: string): void;\n table(message: object): void;\n}\n\nconst reset = '\\x1b[0m';\nconst red = '\\x1b[31m';\nconst yellow = '\\x1b[33m';\nconst blue = '\\x1b[34m';\nconst cyan = '\\x1b[36m';\n\nexport const logger: LoggerLike = {\n // eslint-disable-next-line no-console,no-restricted-syntax\n info: (message: string) => console.info(`${blue}[INFO]${reset}`, message),\n // eslint-disable-next-line no-console,no-restricted-syntax\n log: (message: string) => console.log(`${cyan}[LOG]${reset}`, message),\n // eslint-disable-next-line no-console,no-restricted-syntax\n error: (message: string) => console.error(`${red}[ERROR]${reset}`, message),\n // eslint-disable-next-line no-console,no-restricted-syntax\n warn: (message: string) => console.warn(`${yellow}[WARN]${reset}`, message),\n // eslint-disable-next-line no-console,no-restricted-syntax\n table: (message: object) => console.table(message)\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './paths';\nexport * from './timeouts';\nexport * from './exclude-tests';\nexport * from './state-helper';\nexport * from './utils';\nexport * from './library-errors';\nexport * from './config';\nexport * from './error-strings';\nexport * from './api';\nexport * from './logger';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { logger, LoggerLike, timeouts } from '../utils';\n\nexport abstract class PlaywrightBase {\n public page: Page;\n public logger: LoggerLike;\n\n protected constructor(page: Page) {\n this.page = page;\n this.logger = logger;\n }\n\n async spinnerWaitForReload(): Promise<void> {\n const spinner = this.page.locator('[role=\"progressbar\"]');\n await spinner.waitFor({ state: 'attached', timeout: timeouts.medium }).catch(() => {});\n await spinner.waitFor({ state: 'detached', timeout: timeouts.normal }).catch(() => {});\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Locator, Page } from '@playwright/test';\nimport { PlaywrightBase } from '../playwright-base';\n\nexport abstract class BaseComponent extends PlaywrightBase {\n private readonly rootElement: string;\n\n protected constructor(page: Page, rootElement: string) {\n super(page);\n this.rootElement = rootElement;\n }\n\n /**\n * Method which should be used across the repository, while creating\n * reference to elements, which are in root element of component.\n *\n * @param cssLocator css selector as String. Need to be in the tree under the root element\n * @param options if you want to localize it by text, then provide an optional hasText\n * @returns Locator object\n */\n getChild(cssLocator: string, options?: { hasText?: string | RegExp; has?: Locator }): Locator {\n return this.page.locator(`${this.rootElement} ${cssLocator}`, options);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page, expect } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class SnackBarComponent extends BaseComponent {\n private static readonly rootElement = 'adf-snackbar-content';\n\n public message = this.getChild('[data-automation-id=\"adf-snackbar-message-content\"]').first();\n\n public actionButton = this.getChild('[data-automation-id=\"adf-snackbar-message-content-action-button\"]');\n\n public closeIcon = this.getChild('.adf-snackbar-message-content-action-icon');\n public getByMessageLocator = (message: string) =>\n this.getChild(`[data-automation-id='adf-snackbar-message-content']`, { hasText: message }).first();\n\n constructor(page: Page, rootElement = SnackBarComponent.rootElement) {\n super(page, rootElement);\n }\n\n async getSnackBarMessage(): Promise<string> {\n return this.message.innerText();\n }\n\n async getSnackBarActionText(): Promise<string> {\n if (await this.actionButton.isVisible()) {\n return this.actionButton.textContent();\n } else {\n return '';\n }\n }\n\n async verifySnackBarActionText(text: string): Promise<void> {\n expect(await this.message.textContent()).toContain(text);\n }\n\n async clickSnackBarAction(): Promise<void> {\n await this.actionButton.click();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { expect, Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class MatMenuComponent extends BaseComponent {\n private static readonly rootElement = '[role=\"menu\"]';\n\n constructor(page: Page) {\n super(page, MatMenuComponent.rootElement);\n }\n\n public createFolder = this.getChild('[id=\"app.create.folder\"]');\n public createFolderFromTemplate = this.getChild('[id=\"app.create.folderFromTemplate\"]');\n public createFileFromTemplate = this.getChild('[id=\"app.create.fileFromTemplate\"]');\n public createLibrary = this.getChild('[id=\"app.create.library\"]');\n public getButtonByText = (text: string) => this.getChild('button', { hasText: text });\n public getMenuItemFromHeaderMenu = (text: string) => this.page.getByRole('menuitem', { name: text, exact: true });\n\n async clickMenuItem(menuItem: string): Promise<void> {\n const menuElement = this.getButtonByText(menuItem);\n await menuElement.click();\n await menuElement.waitFor({ state: 'detached' });\n }\n\n async clickMenuItemFromHeaderMenu(menuItem: string): Promise<void> {\n const menuElement = this.getMenuItemFromHeaderMenu(menuItem);\n await menuElement.click();\n await menuElement.waitFor({ state: 'detached' });\n }\n\n async isMenuItemVisible(menuItem: string): Promise<boolean> {\n const menuElement = this.getButtonByText(menuItem);\n await menuElement.waitFor({ state: 'attached' });\n return menuElement.isVisible();\n }\n\n async verifyActualMoreActions(expectedToolbarMore: string[]): Promise<void> {\n await this.getChild('').waitFor();\n const menus = await this.getChild('[role=\"menuitem\"]').all();\n const actualMoreActions: string[] = await Promise.all(\n menus.map(async (button) => {\n const title = await button.locator('span span').innerText();\n return title || '';\n })\n );\n for (const action of expectedToolbarMore) {\n expect(actualMoreActions.includes(action), `Expected to contain ${action} ${actualMoreActions}`).toBe(true);\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from './base.component';\nimport { Locator, Page } from '@playwright/test';\nimport { timeouts } from '../../utils';\n\nexport enum PaginationActionsType {\n PageSizeSelector = 'Page size selector',\n CurrentPageSelector = 'Current page selector',\n NextPageSelector = 'Next page button'\n}\n\nexport class PaginationComponent extends BaseComponent {\n private static readonly rootElement = 'adf-pagination';\n\n constructor(page: Page) {\n super(page, PaginationComponent.rootElement);\n }\n\n private readonly range = this.getChild('.adf-pagination__range');\n private readonly maxItems = this.getChild('.adf-pagination__max-items');\n private readonly currentPage = this.getChild('.adf-pagination__current-page');\n private readonly totalPages = this.getChild('.adf-pagination__total-pages');\n private readonly previousButton = this.getChild('.adf-pagination__previous-button');\n private readonly nextButton = this.getChild('.adf-pagination__next-button');\n private readonly maxItemsButton = this.getChild('.adf-pagination__max-items + button[mat-icon-button]');\n\n public currentPageLocator = this.getChild('.adf-pagination__current-page');\n public totalPageLocator = this.getChild('.adf-pagination__total-pages');\n public getArrowLocatorFor = (action: PaginationActionsType) => this.getChild(`[aria-label=\"${action}\"]`);\n\n async getRange(): Promise<string> {\n return this.range.innerText();\n }\n\n async getMaxItems(): Promise<string> {\n return this.maxItems.innerText();\n }\n\n async getCurrentPage(): Promise<string> {\n return this.currentPage.innerText();\n }\n\n async getTotalPages(): Promise<string> {\n return this.totalPages.innerText();\n }\n\n async isPreviousEnabled(): Promise<boolean> {\n return this.previousButton.isEnabled();\n }\n\n async isNextEnabled(): Promise<boolean> {\n await this.page.waitForTimeout(timeouts.tiny);\n return this.nextButton.isEnabled();\n }\n\n async clickOnNextPage(): Promise<void> {\n try {\n if (await this.isNextEnabled()) {\n await this.nextButton.click();\n }\n } catch (error) {\n throw new Error(`Failed on previous click: ${error}`);\n }\n }\n\n async clickOnPreviousPage(): Promise<void> {\n try {\n if (await this.isPreviousEnabled()) {\n await this.previousButton.click();\n }\n } catch (error) {\n throw new Error(`Failed on previous click: ${error}`);\n }\n }\n\n async openMaxItemsMenu(): Promise<void> {\n try {\n await this.maxItemsButton.waitFor({ state: 'visible' });\n await this.maxItemsButton.click();\n } catch (error) {\n throw new Error(`Open max items catch: ${error}`);\n }\n }\n\n async resetToDefaultPageSize(): Promise<void> {\n try {\n await this.openMaxItemsMenu();\n await this.clickNthItem(1);\n await this.page.waitForTimeout(timeouts.tiny);\n } catch (error) {\n throw new Error(`Reset to default page size catch: ${error}`);\n }\n }\n\n async clickMenuItem(menuItem: string): Promise<void> {\n try {\n await this.page.getByRole('menuitem', { name: menuItem }).click();\n } catch (e) {\n throw new Error(`Click menu item catch : failed to click on: ${e}`);\n }\n }\n\n async getNthItem(nth: number): Promise<Locator> {\n return this.page.getByRole('menuitem').nth(nth - 1);\n }\n\n async getItemsCount(): Promise<number> {\n return this.page.getByRole('menuitem').count();\n }\n\n async clickNthItem(nth: number): Promise<void> {\n try {\n await (await this.getNthItem(nth)).click();\n } catch (e) {\n throw new Error(`Click nth menu item catch: ${e}`);\n }\n }\n\n async closeMenu(): Promise<void> {\n await this.page.keyboard.press('Escape');\n }\n\n async isRangePresent(): Promise<boolean> {\n return this.range.isVisible();\n }\n\n async getMaxRange(): Promise<string> {\n return this.range.textContent();\n }\n\n async isMaxItemsPresent(): Promise<boolean> {\n return this.maxItems.isVisible();\n }\n\n async isCurrentPagePresent(): Promise<boolean> {\n return this.currentPage.isVisible();\n }\n\n async isTotalPagesPresent(): Promise<boolean> {\n return this.totalPages.isVisible();\n }\n\n async isPreviousButtonPresent(): Promise<boolean> {\n return this.previousButton.isVisible();\n }\n\n async isNextButtonPresent(): Promise<boolean> {\n return this.nextButton.isVisible();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Locator, Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\nimport { MatMenuComponent } from './mat-menu.component';\nimport { PaginationActionsType, PaginationComponent } from '../pagination.component';\nimport { timeouts } from '../../../utils';\n\nexport class DataTableComponent extends BaseComponent {\n private static readonly rootElement = 'adf-datatable';\n contextMenuActions = new MatMenuComponent(this.page);\n\n constructor(page: Page, rootElement = DataTableComponent.rootElement) {\n super(page, rootElement);\n }\n\n public pagination = new PaginationComponent(this.page);\n getEmptyFolderLocator = this.getChild('.adf-empty-folder');\n getSelectedRow = this.getChild('.adf-datatable-row.adf-is-selected');\n sortedColumnHeader = this.getChild(`.adf-datatable__header--sorted-asc .adf-datatable-cell-header-content .adf-datatable-cell-value,\n .adf-datatable__header--sorted-desc .adf-datatable-cell-header-content .adf-datatable-cell-value`);\n columnHeaders = this.getChild('.adf-datatable-row .adf-datatable-cell-header .adf-datatable-cell-value');\n emptyList = this.getChild('div.adf-no-content-container');\n emptyListTitle = this.getChild('.adf-empty-content__title');\n emptyListSubtitle = this.getChild('.adf-empty-content__subtitle');\n emptySearchText = this.getChild('.empty-search__text');\n emptyListTest = this.getChild('adf-custom-empty-content-template');\n sitesVisibility = this.getChild('.adf-datatable-body [data-automation-id*=\"datatable-row\"] [aria-label=\"Visibility\"]');\n sitesName = this.getChild('.adf-datatable-body [data-automation-id*=\"datatable-row\"] [aria-label=\"Name\"]');\n sitesRole = this.getChild('.adf-datatable-body [data-automation-id*=\"datatable-row\"] [aria-label=\"My Role\"]');\n lockOwner = '.aca-locked-by--name';\n highlightedText = '.aca-highlight';\n searchFileName = '.search-file-name';\n searchFileDescription = '[data-automation-id=\"search-results-entry-description\"]';\n searchFileContent = '.aca-result-content';\n noPermissionsView = this.page.locator('aca-generic-error');\n\n /** Locator for row (or rows) */\n getRowLocator = this.page.getByRole('rowgroup').nth(1).locator('adf-datatable-row');\n\n /** Locator to get \"No results found\" message */\n getNoResultsFoundMessage = this.getChild('adf-custom-empty-content-template', { hasText: 'No results found' });\n\n /**\n * Method used in cases where we want to check that some record is visible in the datatable. It will consider whole row\n *\n * @returns reference to cell element which contains text.\n */\n getRowByName = (name: string | number): Locator => this.getChild(`adf-datatable-row`, { hasText: name.toString() });\n\n /**\n * Method used in cases where we want to retrieve a row from the datatable based on its numerical order within the array.\n *\n * @returns reference to cell element which contains text.\n */\n getNthRow = (orderNum: number): Locator => this.getRowLocator.nth(orderNum);\n\n /**\n * Method used in cases where user have possibility to navigate \"inside\" the element (it's clickable and has link attribute).\n * Perform action .click() to navigate inside it\n *\n * @returns reference to cell element which contains link.\n */\n getCellLinkByName = (name: string): Locator => this.getChild('.adf-cell-value span[role=\"link\"]', { hasText: name });\n\n /**\n * Method used in cases where you want to get some specific cell (by column name) for row which contains some name/title/etc.\n *\n * @returns reference to cell element\n */\n getCellByColumnNameAndRowItem = (item: string | number, columnName: string): Locator => this.getRowByName(item).locator(`[title=\"${columnName}\"]`);\n\n /**\n * Method used in cases where we want to get the checkbox for row element\n *\n * @returns reference to checkbox placed in row localized by the name\n */\n getCheckboxForElement = (item: string): Locator => this.getRowByName(item).locator('[type=\"checkbox\"]');\n\n getColumnValuesByName = (name: string): Locator => this.getChild(`div[title=\"${name}\"] span`);\n\n getColumnHeaderByName = (headerTitle: string): Locator =>\n this.getChild('.adf-datatable-row .adf-datatable-cell-header .adf-datatable-cell-value', { hasText: headerTitle });\n\n async sortBy(label: string, order: 'asc' | 'desc'): Promise<void> {\n const sortColumn = await this.getSortedColumnHeaderText();\n let sortOrder = await this.getSortingOrder();\n if (sortColumn !== label) {\n await this.getColumnHeaderByName(label).hover();\n await this.getColumnHeaderByName(label).click({ force: true });\n sortOrder = await this.getSortingOrder();\n }\n if (sortOrder !== order) {\n await this.getChild('span[class*=\"adf-datatable__header--sorted\"]').click();\n }\n }\n\n /**\n * This method is used when we want to perform right mouse click on the dataTable row and perform some action\n *\n * @param name of the data table element with which we want to click\n * @param action provide which action you want to perform\n */\n async performActionFromExpandableMenu(name: string | number, action: string): Promise<void> {\n await this.goThroughPagesLookingForRowWithName(name);\n const actionButtonLocator = await this.getActionLocatorFromExpandableMenu(name, action);\n await actionButtonLocator.click();\n await this.spinnerWaitForReload();\n }\n\n /**\n * This method is used when we want to perform double click on the dataTable row to open a file or folder\n *\n * @param name of the data table element with which we want to double click\n */\n async performClickFolderOrFileToOpen(name: string): Promise<void> {\n await this.getCellLinkByName(name).click();\n await this.spinnerWaitForReload();\n }\n\n async isItemPresent(name: string): Promise<boolean> {\n await this.goThroughPagesLookingForRowWithName(name);\n return this.getRowByName(name).isVisible();\n }\n\n async getActionLocatorFromExpandableMenu(name: string | number, action: string): Promise<Locator> {\n await this.getRowByName(name).click({ button: 'right' });\n return this.contextMenuActions.getButtonByText(action);\n }\n\n async goThroughPagesLookingForRowWithName(name: string | number): Promise<void> {\n await this.spinnerWaitForReload();\n if (await this.getRowByName(name).isVisible()) {\n return;\n }\n\n if (await this.pagination.currentPageLocator.isVisible()) {\n if ((await this.pagination.currentPageLocator.textContent()) === ' of 1 ') {\n return;\n }\n }\n if (await this.pagination.totalPageLocator.isVisible()) {\n const maxPages = (await this.pagination.totalPageLocator?.textContent())?.match(/\\d+/)?.[0];\n for (let page = 1; page <= Number(maxPages); page++) {\n if (await this.getRowByName(name).isVisible()) {\n break;\n }\n if (await this.pagination.getArrowLocatorFor(PaginationActionsType.NextPageSelector).isEnabled()) {\n await this.pagination.getArrowLocatorFor(PaginationActionsType.NextPageSelector).click();\n }\n await this.spinnerWaitForReload();\n }\n }\n }\n\n async selectItems(...names: string[]): Promise<void> {\n for (const name of names) {\n const isSelected = await this.isRowSelected(name);\n if (!isSelected) {\n const row = this.getRowByName(name);\n await row.hover();\n if (!(await this.getCheckboxForElement(name).isChecked())) {\n await this.getCheckboxForElement(name).click();\n }\n }\n }\n }\n\n async isRowSelected(itemName: string): Promise<boolean> {\n const row = this.getRowByName(itemName);\n await row.hover();\n return this.getCheckboxForElement(itemName).isChecked();\n }\n\n async getColumnHeaders(): Promise<Array<string>> {\n const columnNameLocator = this.columnHeaders;\n await this.columnHeaders.nth(0).waitFor({ state: 'attached' });\n return columnNameLocator.allTextContents();\n }\n\n async getSortedColumnHeaderText(): Promise<string> {\n return this.sortedColumnHeader.innerText();\n }\n\n private getItemLocationEl(name: string): Locator {\n return this.getRowByName(name).locator('.aca-location-link');\n }\n\n async getItemLocationText(name: string): Promise<string> {\n await this.getItemLocationEl(name).waitFor({ state: 'attached' });\n return this.getItemLocationEl(name).innerText();\n }\n\n async getItemLocationTooltip(name: string): Promise<string> {\n const location = this.getItemLocationEl(name);\n await location.hover();\n return (await location.locator('a').getAttribute('title', { timeout: timeouts.normal })) ?? '';\n }\n\n async clickItemLocation(name: string): Promise<void> {\n await this.getItemLocationEl(name).click();\n }\n\n async getSortingOrder(): Promise<string> {\n const str = (await this.sortedColumnHeader.locator('../..').getAttribute('class')) ?? '';\n if (str.includes('asc')) {\n return 'asc';\n } else if (str.includes('desc')) {\n return 'desc';\n }\n return 'none';\n }\n\n async getRowAllInnerTexts(name: string): Promise<string> {\n return (await this.getRowByName(name).locator('span').allInnerTexts()).toString();\n }\n\n async getFirstElementDetail(name: string): Promise<string> {\n const firstNode = this.getColumnValuesByName(name).first();\n return firstNode.innerText();\n }\n\n async isEmpty(): Promise<boolean> {\n return this.emptyList.isVisible();\n }\n\n async getEmptyStateTitle(): Promise<string> {\n return (await this.isEmpty()) ? this.emptyListTitle.innerText() : '';\n }\n\n async getEmptyStateSubtitle(): Promise<string> {\n return (await this.isEmpty()) ? this.emptyListSubtitle.innerText() : '';\n }\n\n async getEmptyListText(): Promise<string> {\n return (await this.isEmpty()) ? this.emptyListTest.innerText() : '';\n }\n\n async getRowsCount(): Promise<number> {\n return this.getRowLocator.count();\n }\n\n async rightClickOnItem(itemName: string): Promise<void> {\n await this.getCellByColumnNameAndRowItem(itemName, 'Name').click({ button: 'right' });\n }\n\n /**\n * Method used to create objects from names and visibility of sites from datatable\n *\n * @returns an object with sites' names and their corresponding visibility values\n */\n async getSitesNameAndVisibility(): Promise<{ [siteName: string]: string }> {\n const rowsCount = await this.sitesName.count();\n const sitesInfo: { [siteName: string]: string } = {};\n for (let i = 0; i < rowsCount; i++) {\n const siteVisibilityText = ((await this.sitesVisibility.nth(i).textContent()) ?? '').trim().toUpperCase();\n const siteNameText = ((await this.sitesName.nth(i).textContent()) ?? '').trim();\n sitesInfo[siteNameText] = siteVisibilityText;\n }\n return sitesInfo;\n }\n\n /**\n * Method used to create objects from names and roles of sites from datatable\n *\n * @returns an object with sites' names and their corresponding role values\n */\n async getSitesNameAndRole(): Promise<{ [siteName: string]: string }> {\n const rowsCount = await this.sitesName.count();\n const sitesInfo: { [siteName: string]: string } = {};\n for (let i = 0; i < rowsCount; i++) {\n const siteNameText = ((await this.sitesName.nth(i).textContent()) ?? '').trim();\n const siteRoleText = ((await this.sitesRole.nth(i).textContent()) ?? '').trim();\n sitesInfo[siteNameText] = siteRoleText;\n }\n return sitesInfo;\n }\n\n async getLockOwner(itemName: string): Promise<string> {\n const row = this.getRowByName(itemName);\n return row.locator(this.lockOwner).innerText();\n }\n\n async hasHighlightedText(location: 'name' | 'description' | 'content'): Promise<boolean> {\n switch (location) {\n case 'name':\n return this.page.locator(this.searchFileName).locator(this.highlightedText).isVisible();\n case 'description':\n return this.page.locator(this.searchFileDescription).locator(this.highlightedText).isVisible();\n case 'content':\n return this.page.locator(this.searchFileContent).locator(this.highlightedText).isVisible();\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './data-table.component';\nexport * from './mat-menu.component';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from '../base.component';\nimport { Page } from '@playwright/test';\n\nexport class AdfFolderDialogComponent extends BaseComponent {\n private static readonly rootElement = 'adf-folder-dialog';\n\n public folderNameInputLocator = this.getChild('[id=\"adf-folder-name-input\"]');\n public folderNameInputHint = this.getChild('[aria-atomic=\"true\"] span');\n public folderTitleInput = this.getChild('[id=\"adf-folder-title-input\"]');\n public folderDescriptionInput = this.getChild('[id=\"adf-folder-description-input\"]');\n public createButton = this.getChild('[id=\"adf-folder-create-button\"]');\n public cancelButton = this.getChild('[id=\"adf-folder-cancel-button\"]');\n\n constructor(page: Page) {\n super(page, AdfFolderDialogComponent.rootElement);\n }\n\n public getLabelText = (text: string) => this.getChild('label', { hasText: text });\n public getRequiredMarker = (text: string) => this.getLabelText(text).locator('span');\n\n /**\n * This method is used when we want to fill in Create new Folder Dialog and choose Create button\n *\n * @param nameInput input for the Name field\n * @param titleInput input for Title field\n * @param descriptionInput input for Description field\n */\n async createNewFolderDialog(nameInput: string, titleInput?: string, descriptionInput?: string): Promise<void> {\n await this.folderNameInputLocator.fill(nameInput);\n if (titleInput) {\n await this.folderTitleInput.fill(titleInput);\n }\n if (descriptionInput) {\n await this.folderDescriptionInput.fill(descriptionInput);\n }\n await this.createButton.click();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { timeouts } from '../../../utils';\nimport { BaseComponent } from '../base.component';\nimport { Locator, Page } from '@playwright/test';\n\nexport class AdfLibraryDialogComponent extends BaseComponent {\n private static readonly rootElement = 'adf-library-dialog';\n\n public createButton = this.getChild('[data-automation-id=\"create-library-id\"]');\n public cancelButton = this.getChild('[data-automation-id=\"cancel-library-id\"]');\n\n constructor(page: Page) {\n super(page, AdfLibraryDialogComponent.rootElement);\n }\n\n public getLabelText = (text: string) => this.getChild('label', { hasText: text });\n public getRequiredMarker = (text: string) => this.getLabelText(text).locator('span');\n public getDialogTitle = (text: string) => this.getChild('h2', { hasText: text });\n public getErrorByText = (text: string): Locator => this.getChild('.adf-library-dialog-form-field').getByText(text);\n\n /**\n * This method is used when we want to fill in Create Library Dialog and choose Create button\n *\n * @param nameInput input for the Name field\n * @param libraryIdInput input for Library ID field\n * @param descriptionInput input for Description field\n * @param visibility visibility of the library\n */\n async createLibraryWithNameAndId(nameInput: string, libraryIdInput: string, descriptionInput?: string, visibility?: string): Promise<void> {\n await this.getLabelText('Name').fill(nameInput);\n await this.getLabelText('Library ID').clear();\n await this.getLabelText('Library ID').fill(libraryIdInput);\n if (descriptionInput) {\n await this.getLabelText('Description').fill(descriptionInput);\n }\n if (visibility) {\n await this.getLabelText(visibility).click();\n }\n await this.createButton.click();\n await this.spinnerWaitForReload();\n }\n\n async isErrorMessageDisplayed(errorText: string): Promise<boolean> {\n await this.getErrorByText(errorText).waitFor({ state: 'visible', timeout: timeouts.large });\n return this.getErrorByText(errorText).isVisible();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\nimport { timeouts } from '../../../utils';\n\nexport class PasswordOverlayDialogComponent extends BaseComponent {\n private static readonly rootElement = '.cdk-overlay-pane';\n\n public closeButton = this.getChild('[data-automation-id=\"adf-password-dialog-close\"]');\n public submitButton = this.getChild('[data-automation-id=\"adf-password-dialog-submit\"]');\n public passwordInput = this.getChild('[data-automation-id=\"adf-password-dialog-input\"]');\n public errorMessage = this.getChild('[data-automation-id=\"adf-password-dialog-error\"]');\n\n constructor(page: Page, rootElement = PasswordOverlayDialogComponent.rootElement) {\n super(page, rootElement);\n }\n\n async waitForDialogToOpen(): Promise<void> {\n await this.spinnerWaitForReload();\n await this.passwordInput.waitFor({ state: 'attached', timeout: timeouts.large });\n await this.passwordInput.isVisible();\n }\n\n async waitForDialogToClose(): Promise<void> {\n await this.passwordInput.waitFor({ state: 'detached', timeout: timeouts.large });\n }\n\n async isDialogOpen(): Promise<boolean> {\n await this.waitForDialogToOpen();\n return this.passwordInput.isVisible();\n }\n\n async isCloseVisible(): Promise<boolean> {\n return this.closeButton.isVisible();\n }\n\n async isPasswordInputDisplayed(): Promise<boolean> {\n return this.passwordInput.isVisible();\n }\n\n async isErrorDisplayed(): Promise<boolean> {\n await this.errorMessage.waitFor({ state: 'visible', timeout: timeouts.short });\n return this.errorMessage.isVisible();\n }\n\n async getErrorMessage(): Promise<string> {\n if (await this.isErrorDisplayed()) {\n return this.errorMessage.innerText();\n }\n return '';\n }\n\n async enterPassword(password: string): Promise<void> {\n await this.passwordInput.fill(password);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\nimport { timeouts } from '../../../utils';\n\nexport class ViewerOverlayDialogComponent extends BaseComponent {\n private static readonly rootElement = '.cdk-overlay-pane';\n\n public copyDialog = this.getChild('[data-automation-id=\"content-node-selector-title\"]');\n public copyMenuButton = this.getChild('[id=\"app.viewer.copy\"]');\n public deleteMenuButton = this.getChild('[id=\"app.viewer.delete\"]');\n public favoriteMenuButton = this.getChild('[id=\"app.viewer.favorite.add\"]');\n public removeFavoriteMenuButton = this.getChild('[id=\"app.viewer.favorite.remove\"]');\n public shareDialogTitle = this.getChild('[data-automation-id=\"adf-share-dialog-title\"]');\n public shareDialogClose = this.getChild('[data-automation-id=\"adf-share-dialog-close\"]');\n\n constructor(page: Page, rootElement = ViewerOverlayDialogComponent.rootElement) {\n super(page, rootElement);\n }\n\n async isCopyDialogOpen(): Promise<boolean> {\n await this.copyDialog.waitFor({ state: 'attached', timeout: timeouts.medium });\n return this.copyDialog.isVisible();\n }\n\n async isCopyDialogClose(): Promise<boolean> {\n await this.copyDialog.waitFor({ state: 'detached', timeout: timeouts.medium });\n return this.copyDialog.isVisible();\n }\n\n async clickActionsCopy(): Promise<void> {\n await this.copyMenuButton.waitFor({ state: 'attached', timeout: timeouts.medium });\n await this.copyMenuButton.click();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Locator, Page, expect } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class ContentNodeSelectorDialog extends BaseComponent {\n private static readonly rootElement = 'adf-content-node-selector';\n private readonly selectedRow = this.getChild('.adf-is-selected');\n private readonly getRowByName = (name: string | number): Locator => this.getChild(`adf-datatable-row`, { hasText: name.toString() });\n\n public cancelButton = this.getChild('[data-automation-id=\"content-node-selector-actions-cancel\"]');\n public actionButton = this.getChild('[data-automation-id=\"content-node-selector-actions-choose\"]');\n public locationDropDown = this.getChild('[id=\"site-dropdown-container\"] .adf-sites-dropdown-form-field');\n\n getOptionLocator = (optionName: string): Locator => this.page.locator('[role=listbox] [role=option]', { hasText: optionName }).first();\n getDialogTitle = (text: string) => this.getChild('[data-automation-id=\"content-node-selector-title\"]', { hasText: text });\n getBreadcrumb = (text: string) => this.getChild('[data-automation-id=\"current-folder\"]', { hasText: text });\n getFolderIcon = this.getChild('[data-automation-id=\"dropdown-breadcrumb-trigger\"]');\n loadMoreButton = this.getChild('[data-automation-id=\"adf-infinite-pagination-button\"]');\n\n constructor(page: Page) {\n super(page, ContentNodeSelectorDialog.rootElement);\n }\n\n async loadMoreNodes(): Promise<void> {\n await this.spinnerWaitForReload();\n while (await this.loadMoreButton.isVisible()) {\n await this.loadMoreButton.click();\n }\n }\n\n async selectLocation(location: string): Promise<void> {\n await this.locationDropDown.click();\n const optionLocator = this.getOptionLocator(location);\n await optionLocator.click();\n await optionLocator.waitFor({ state: 'detached' });\n }\n\n async selectDestination(folderName: string): Promise<void> {\n const row = this.getRowByName(folderName);\n await row.scrollIntoViewIfNeeded();\n\n await expect(row).toBeVisible();\n await row.click({ trial: true });\n\n await expect(async () => {\n await row.hover({ timeout: 1000 });\n await row.click();\n await expect(this.selectedRow).toBeVisible();\n }).toPass({\n intervals: [2_000],\n timeout: 20_000\n });\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Locator, Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\nimport { timeouts } from '../../../utils';\n\nexport class CreateFromTemplateDialogComponent extends BaseComponent {\n private static readonly rootElement = '.aca-create-from-template-dialog';\n\n constructor(page: Page) {\n super(page, CreateFromTemplateDialogComponent.rootElement);\n }\n\n cancelButton = this.getChild('[data-automation-id=\"create-from-template-dialog-cancel-button\"]');\n createButton = this.getChild('[data-automation-id=\"create-from-template-dialog-create-button\"]');\n getDialogTitle = (text: string): Locator => this.getChild('[data-automation-id=\"create-from-template-title\"]', { hasText: text });\n getDialogLabel = (text: string): Locator => this.getChild('label', { hasText: text });\n getErrorByText = (text: string): Locator => this.page.locator('[data-automation-id=\"create-from-template-field-error\"]', { hasText: text });\n\n async isErrorMessageDisplayed(errorText: string): Promise<boolean> {\n await this.getErrorByText(errorText).waitFor({ state: 'visible', timeout: timeouts.large });\n return this.getErrorByText(errorText).isVisible();\n }\n\n /**\n * This method is used when we want to fill in Create new folder/document/file from template dialog and choose Create button\n */\n async createFromTemplateAction(nameInput: string, titleInput?: string, descriptionInput?: string): Promise<void> {\n await this.getDialogLabel('Name').fill(nameInput);\n if (titleInput) {\n await this.getDialogLabel('Title').fill(titleInput);\n }\n if (descriptionInput) {\n await this.getDialogLabel('Description').fill(descriptionInput);\n }\n await this.createButton.click();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class AdfConfirmDialogComponent extends BaseComponent {\n private static readonly rootElement = 'adf-confirm-dialog';\n\n constructor(page: Page) {\n super(page, AdfConfirmDialogComponent.rootElement);\n }\n\n getDialogTitle = (text: string) => this.getChild('[data-automation-id=\"adf-confirm-dialog-title\"]', { hasText: text });\n getDialogContent = (text: string) => this.getChild('[data-automation-id=\"adf-confirm-dialog-base-message\"]', { hasText: text });\n okButton = this.getChild('[data-automation-id=\"adf-confirm-dialog-confirmation\"]');\n cancelButton = this.getChild('[data-automation-id=\"adf-confirm-dialog-reject\"]');\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class DateTimePicker extends BaseComponent {\n private static readonly rootElement = '[role=\"dialog\"]';\n dayPicker = this.getChild('[role=\"grid\"]');\n nextMonthBtn = this.getChild('[aria-label=\"Next month\"]');\n\n constructor(page: Page) {\n super(page, DateTimePicker.rootElement);\n }\n\n async isCalendarOpen(): Promise<boolean> {\n const element = this.page.locator(DateTimePicker.rootElement);\n return element.isVisible();\n }\n\n async pickDateTime(): Promise<void> {\n const today = new Date();\n const nextAvailableDay = new Date();\n nextAvailableDay.setDate(today.getDate() + 2);\n if (nextAvailableDay.getMonth() !== today.getMonth()) {\n await this.nextMonthBtn.click();\n }\n await this.selectDay(nextAvailableDay.getDate());\n }\n\n async selectDay(day: number): Promise<void> {\n const firstActiveDayElem = this.dayPicker.locator(`text=${day}`).first();\n await firstActiveDayElem.click();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ElementHandle, Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\nimport { timeouts } from '../../../utils';\nimport { DateTimePicker } from '../datetime-picker/datetime-picker.component';\n\nexport class ShareDialogComponent extends BaseComponent {\n private static readonly rootElement = 'adf-share-dialog';\n\n constructor(page: Page) {\n super(page, ShareDialogComponent.rootElement);\n }\n\n closeButton = this.getChild('[data-automation-id=\"adf-share-dialog-close\"]');\n dialogTitle = this.getChild('[data-automation-id=\"adf-share-dialog-title\"]');\n infoText = this.getChild('.adf-share-link__info').first();\n shareToggle = this.getChild(`[data-automation-id='adf-share-toggle']`);\n url = this.getChild(`[data-automation-id='adf-share-link']`);\n urlAction = this.getChild('.adf-input-action');\n expireToggle = this.getChild(`[data-automation-id='adf-expire-toggle']`);\n expireInput = this.getChild('input[formcontrolname=\"time\"]');\n datetimePickerButton = this.getChild('[data-automation-id=\"adf-content-share-expiration-field\"] button');\n dateErrorText = this.getChild('[data-automation-id=\"adf-share-link-input-warning\"]');\n clockIcon = this.getChild('[adf-icon=\"timer\"]');\n\n dateTimePicker = new DateTimePicker(this.page);\n\n async getLabels(): Promise<Array<string>> {\n return this.page.$$eval('.adf-share-link__label', (elements) => elements.map((element) => element.textContent));\n }\n\n async getDialogTitle(): Promise<string> {\n return this.dialogTitle.innerText();\n }\n\n async getInfoText(): Promise<string> {\n return this.infoText.innerText();\n }\n\n async getLinkUrl(): Promise<string> {\n return this.url.first().inputValue();\n }\n\n async isUrlReadOnly(): Promise<boolean> {\n const urlAttr = await this.url.getAttribute('readonly');\n return urlAttr === 'true';\n }\n\n async isCloseEnabled(): Promise<boolean> {\n return this.closeButton.isEnabled();\n }\n\n async clickClose(): Promise<void> {\n await this.page.waitForTimeout(timeouts.tiny);\n await this.closeButton.click();\n }\n\n async isToggleStatus(toggle: ElementHandle, status: string): Promise<boolean> {\n const toggleClass = await toggle.getAttribute('class');\n return toggleClass.includes(status);\n }\n\n async isShareToggleChecked(): Promise<boolean> {\n const shareToggleElement = await this.shareToggle.elementHandle();\n return this.isToggleStatus(shareToggleElement, 'checked');\n }\n\n async isExpireToggleEnabled(): Promise<boolean> {\n const expireToggleElement = await this.expireToggle.elementHandle();\n return this.isToggleStatus(expireToggleElement, 'checked');\n }\n\n async getExpireDate(): Promise<string> {\n return this.expireInput.inputValue();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class UploadNewVersionDialog extends BaseComponent {\n private static readonly rootElement = 'adf-new-version-uploader-dialog';\n\n public cancelButton = this.getChild('#adf-new-version-cancel');\n public uploadButton = this.getChild('[data-automation-id=\"adf-new-version-file-upload\"]');\n public majorOption = this.getChild('#adf-new-version-major');\n public description = this.getChild('#adf-new-version-text-area');\n public title = this.getChild(' [data-automation-id=\"new-version-uploader-dialog-title\"]');\n\n constructor(page: Page) {\n super(page, UploadNewVersionDialog.rootElement);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class ManageVersionsDialog extends BaseComponent {\n private static readonly rootElement = '.adf-new-version-uploader-dialog';\n\n async clickListActionButtonForVersion(version: string): Promise<void> {\n await this.getChild(`[id=\"adf-version-list-action-menu-button-${version}\"]`).click();\n }\n\n async isVersionPresent(version: string): Promise<boolean> {\n return this.getChild(`[id=\"adf-version-list-item-version-${version}\"]`).isVisible();\n }\n\n async isDescriptionPresent(version: string): Promise<boolean> {\n return this.getChild(`[id=\"adf-version-list-item-comment-${version}\"]`).isVisible();\n }\n\n async waitForProgressBarToDisappear(attachedTimeout = 5000): Promise<void> {\n const loadingBar = this.getChild('[data-automation-id=\"version-history-loading-bar\"]');\n try {\n await loadingBar.waitFor({ state: 'attached', timeout: attachedTimeout });\n } catch {\n return;\n }\n await loadingBar.waitFor({ state: 'detached' });\n }\n\n async waitForDialog(): Promise<void> {\n await this.page.locator('[data-automation-id=\"new-version-uploader-dialog-title\"]').waitFor();\n }\n\n constructor(page: Page) {\n super(page, ManageVersionsDialog.rootElement);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class UploadDialog extends BaseComponent {\n private static readonly rootElement = 'aca-upload-files-dialog';\n\n public uploadDialogContent = this.getChild('.adf-upload-dialog__content');\n public closeButton = this.getChild('#adf-upload-dialog-close');\n public minimizeButton = this.getChild('[data-automation-id=\"adf-upload-dialog__toggle-minimize\"]');\n public uploadDialogMinimized = this.getChild('.adf-upload-dialog--minimized');\n\n constructor(page: Page) {\n super(page, UploadDialog.rootElement);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class AdfDeleteTrashComponent extends BaseComponent {\n private static readonly rootElement = 'adf-confirm-dialog';\n\n constructor(page: Page) {\n super(page, AdfDeleteTrashComponent.rootElement);\n }\n\n dialogTitle = this.getChild('[data-automation-id=\"adf-confirm-dialog-title\"]');\n dialogDescription = this.getChild('[data-automation-id=\"adf-confirm-dialog-base-message\"]');\n deleteButton = this.getChild('[id=\"adf-confirm-accept\"]');\n keepButton = this.getChild('[id=\"adf-confirm-cancel\"]');\n\n async waitForDialog(): Promise<void> {\n await this.dialogTitle.waitFor();\n }\n\n async isDialogOpen(): Promise<boolean> {\n return this.dialogTitle.isVisible();\n }\n\n async getDialogTitle(): Promise<string> {\n return this.dialogTitle.textContent();\n }\n\n async getDialogDescription(): Promise<string> {\n return this.dialogDescription.textContent();\n }\n\n async isDeleteEnabled(): Promise<boolean> {\n return this.deleteButton.isEnabled();\n }\n\n async isKeepEnabled(): Promise<boolean> {\n return this.keepButton.isEnabled();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Locator, Page, expect } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class LinkRulesDialog extends BaseComponent {\n private static readonly rootElement = 'aca-rule-set-picker';\n private readonly getRowByName = (name: string | number): Locator => this.getChild(`adf-datatable-row`, { hasText: name.toString() });\n\n selectFolderButton = this.getChild('button', { hasText: ' Select folder ' });\n getOptionLocator = (optionName: string): Locator => this.page.locator('[role=listbox] [role=option]', { hasText: optionName }).first();\n getFolderIcon = this.getChild('.adf-dropdown-breadcrumb-icon', { hasText: 'folder' });\n getLibraryIcon = this.getChild('.adf-empty-content__icon', { hasText: 'library_books' });\n\n constructor(page: Page) {\n super(page, LinkRulesDialog.rootElement);\n }\n\n async selectDestination(folderName: string): Promise<void> {\n const row = this.getRowByName(folderName);\n await row.scrollIntoViewIfNeeded();\n\n await expect(row).toBeVisible();\n await row.click({ trial: true });\n\n await expect(async () => {\n await row.hover({ timeout: 1000 });\n await row.click();\n await expect(this.selectFolderButton).toBeEnabled();\n }).toPass({\n intervals: [2_000],\n timeout: 20_000\n });\n }\n\n async waitForLinkRules(): Promise<void> {\n await this.getLibraryIcon.waitFor();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class EditDialog extends BaseComponent {\n private static readonly rootElement = 'adf-folder-dialog';\n\n public editDialog = this.page.locator(EditDialog.rootElement);\n public titleInput = this.getChild('[data-automation-id=\"adf-folder-dialog-title\"]');\n public cancelButton = this.getChild('#adf-folder-cancel-button');\n public updateButton = this.getChild('#adf-folder-create-button');\n public descriptionInput = this.getChild('#adf-folder-description-input');\n public nameInput = this.getChild('#adf-folder-name-input');\n public fieldHint = this.getChild('[aria-atomic=\"true\"] span');\n\n constructor(page: Page) {\n super(page, EditDialog.rootElement);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class FolderInformationDialogComponent extends BaseComponent {\n private static readonly rootElement = '[data-automation-id=\"adf-dialog-container\"]';\n\n constructor(page: Page) {\n super(page, FolderInformationDialogComponent.rootElement);\n }\n\n folderName = this.getChild('.aca-node-info-header');\n doneButton = this.getChild('[data-automation-id=\"adf-dialog-actions-confirm\"]');\n folderNumberOfFiles = this.getChild('[data-automation-id=\"node-info-number-of-files\"]');\n folderSize = this.getChild('[data-automation-id=\"node-info-size\"]');\n folderLocation = this.getChild('[data-automation-id=\"node-info-location\"]');\n folderCreationDate = this.getChild('[data-automation-id=\"node-info-creation-date\"]');\n folderModifiedDate = this.getChild('[data-automation-id=\"node-info-modify-date\"]');\n\n async getFolderSizeNumber(): Promise<number> {\n const textContent = await this.folderSize.textContent();\n if (!textContent) {\n throw new Error('Folder size text content is null or undefined');\n }\n return parseFloat(textContent.trim().split(/\\s+/)[0].replace(/,/g, ''));\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './adf-folder-dialog.component';\nexport * from './adf-library-dialog.component';\nexport * from './password-overlay-dialog.component';\nexport * from './viewer-overlay-dialog.component';\nexport * from './content-node-selector-dialog';\nexport * from './create-from-template-dialog-component';\nexport * from './adf-confirm-dialog.component';\nexport * from './share-dialog.component';\nexport * from './upload-new-version-dialog.component';\nexport * from './manage-versions-dialog.component';\nexport * from './upload-dialog.component';\nexport * from './delete-trash-dialog.component';\nexport * from './link-rules.component';\nexport * from './edit-dialog.component';\nexport * from './folder-information-dialog.component';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from '../base.component';\nimport { Page } from '@playwright/test';\n\nexport class ManageRulesDialogComponent extends BaseComponent {\n private static readonly rootElement = 'aca-edit-rule-dialog';\n\n public createRuleButton = this.getChild('[data-automation-id=\"edit-rule-dialog-submit\"]');\n public cancelRuleButton = this.getChild('.aca-edit-rule-dialog__footer button').filter({ hasText: 'Cancel' });\n public ruleNameInputLocator = this.getChild('[id=\"rule-details-name-input\"]');\n public ruleDescriptionInputLocator = this.getChild('[id=\"rule-details-description-textarea\"]');\n public addConditionButton = this.getChild('[data-automation-id=\"add-condition-button\"]');\n public addConditionGroupButton = this.getChild('[data-automation-id=\"add-group-button\"]');\n public fieldDropDown = this.getChild('[data-automation-id=\"field-select\"]');\n public comparatorDropDown = this.getChild('[data-automation-id=\"comparator-select\"]');\n public valueField = this.getChild('[data-automation-id=\"value-input\"]');\n public whenCreatedCheckbox = this.getChild('[data-automation-id=\"rule-trigger-checkbox-inbound\"]');\n public whenDeletedCheckbox = this.getChild('[data-automation-id=\"rule-trigger-checkbox-outbound\"]');\n public destinationFolderButton = this.getChild('[data-automation-id=\"card-textitem-clickable-icon-destination-folder\"]');\n public ruleSubfoldersCheckbox = this.getChild('[data-automation-id=\"rule-option-checkbox-inheritable\"]');\n public ruleDisableCheckbox = this.getChild('[data-automation-id=\"rule-option-checkbox-disabled\"] input');\n public actionsEllipsisButtons = this.getChild('[data-automation-id=\"rule-action-list-action-menu\"]');\n public actionsEllipsisDelete = this.page.locator('[data-automation-id=\"rule-action-list-remove-action-button\"]');\n public conditionsEllipsisButtons = this.getChild('[data-automation-id=\"condition-actions-button\"]');\n public conditionsEllipsisDelete = this.page.locator('button[title=\"Remove\"]');\n\n constructor(page: Page) {\n super(page, ManageRulesDialogComponent.rootElement);\n }\n\n async deleteActions(noActions: number): Promise<void> {\n for (let i = 0; i < noActions; i++) {\n await this.actionsEllipsisButtons.first().click();\n await this.actionsEllipsisDelete.click();\n }\n }\n\n async deleteConditions(noConditions: number): Promise<void> {\n for (let i = 0; i < noConditions; i++) {\n await this.conditionsEllipsisButtons.first().click();\n await this.conditionsEllipsisDelete.click();\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Locator, Page, expect } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class ManageRules extends BaseComponent {\n private static readonly rootElement = '.aca-manage-rules';\n\n public getGroupsList = (optionName: string): Locator => this.getChild('.aca-rule-list-item__header', { hasText: optionName });\n public ruleToggle = this.getChild('.aca-manage-rules__container [role=\"switch\"]').first();\n public ruleToggleFalse = this.getChild('aca-rule-list-grouping aca-rule-list-item [role=\"switch\"][aria-checked=\"false\"]').first();\n public ruleDetailsDeleteButton = this.getChild('#delete-rule-btn');\n public ruleDetailsEditButton = this.getChild('#edit-rule-btn');\n public ruleDetailsPerformActionsDiv = this.getChild('adf-card-view-selectitem [data-automation-id=\"select-box\"]');\n public rulesEmptyList = this.getChild('adf-empty-content');\n public ruleActions = this.getChild('aca-rule-action');\n public ruleConditionsInGroup = this.getChild('aca-rule-composite-condition aca-rule-simple-condition');\n public ruleDescription = this.getChild('.aca-manage-rules__container__rule-details__header__title__description');\n\n constructor(page: Page) {\n super(page, ManageRules.rootElement);\n }\n\n async checkAspects(aspects: string[]): Promise<void> {\n for (let i = 0; i < aspects.length; i++) {\n const aspectsActions = await this.ruleDetailsPerformActionsDiv.nth(i).innerText();\n expect(aspects).toContain(aspectsActions);\n }\n }\n\n async checkIfRuleListEmpty(): Promise<boolean> {\n return this.rulesEmptyList.isVisible();\n }\n\n async checkIfRuleIsOnTheList(ruleName: string): Promise<void> {\n await expect(this.getGroupsList(ruleName)).toBeVisible({ timeout: 5000 });\n }\n\n async countConditionsInGroup(): Promise<number> {\n return this.ruleConditionsInGroup.count();\n }\n\n async turnOffRuleToggle(): Promise<void> {\n await expect(async () => {\n await this.ruleToggle.hover({ timeout: 1000 });\n await this.ruleToggle.click();\n await expect(this.ruleToggleFalse).toBeVisible();\n }).toPass({\n intervals: [2_000],\n timeout: 20_000\n });\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from '../base.component';\nimport { Page } from '@playwright/test';\n\nexport class RulesToolbarComponent extends BaseComponent {\n private static readonly rootElement = '.aca-manage-rules__actions-bar';\n\n constructor(page: Page) {\n super(page, RulesToolbarComponent.rootElement);\n }\n\n async clickCreateRuleButton(): Promise<void> {\n const button = this.getChild('[data-automation-id=\"manage-rules-create-button\"]');\n await button.click();\n }\n\n async clickLinkRulesButton(): Promise<void> {\n const button = this.getChild('[data-automation-id=\"manage-rules-link-button\"]');\n await button.click();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './manage-rules-dialog.component';\nexport * from './manage-rules.component';\nexport * from './manage-rules-toolbar.component';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Locator, Page } from '@playwright/test';\nimport { BaseComponent } from './base.component';\nimport { timeouts } from '../../public-api';\n\nexport enum ActionType {\n AddAspect = 'Add aspect',\n SimpleWorkflow = 'Add simple workflow',\n IncrementCounter = 'Increment Counter',\n CheckIn = 'Check in',\n AutoDeclareOptions = 'Auto-Declare Options',\n CheckOut = 'Check out',\n Copy = 'Copy',\n ExecuteScript = 'Execute script',\n ExtractCommonMetadataFields = 'Extract common metadata fields',\n FileAsRecord = 'File as Record',\n FileVersionAsRecord = 'File Version as Record',\n HideRecord = 'Hide Record',\n Import = 'Import',\n Move = 'Move',\n RemoveAspect = 'Remove aspect',\n RequestAIRenditions = 'Request AI renditions',\n SendEmail = 'Send email',\n SetPropertyValue = 'Set property value',\n SpecialiseType = 'Specialise type',\n TransformAndCopyContent = 'Transform and copy content',\n TransformAndCopyImage = 'Transform and copy image'\n}\n\nexport enum MimeType {\n AdobePDFDocument = 'Adobe PDF Document [application/pdf]',\n BitmapImage = 'Bitmap Image [image/bmp]',\n JPEGImage = 'JPEG Image [image/jpeg]',\n GIFImage = 'GIF Image [image/gif]',\n TIFFImage = 'TIFF Image [image/tiff]',\n PNGImage = 'PNG Image [image/png]'\n}\n\nexport class ActionsDropdownComponent extends BaseComponent {\n private static readonly rootElement = 'aca-edit-rule-dialog aca-rule-action-list';\n\n private readonly getOptionLocator = (optionName: string): Locator =>\n this.page.locator('[role=listbox] [role=option]', { hasText: optionName }).first();\n private readonly ruleActionLocator = this.getChild('aca-rule-action');\n private readonly addActionButtonLocator = this.getChild('[data-automation-id=\"rule-action-list-add-action-button\"]');\n private readonly actionDropdownLocator = this.getChild('[data-automation-id=\"rule-action-select\"]');\n private readonly actionAspectNameLocator = '[data-automation-id=\"header-aspect-name\"] .adf-property-field';\n private readonly actionCheckInInputLocator = '[data-automation-id=\"header-description\"] input';\n private readonly actionSimpleWorkflowStepInputLocator = '[data-automation-id=\"header-approve-step\"] input';\n private readonly actionSimpleWorkflowActionChoiceLocator = '[data-automation-id=\"content-node-selector-actions-choose\"]';\n private readonly actionSimpleWorkflowLabelApproveLocator = `[data-automation-id=\"card-boolean-label-approve-move\"]`;\n private readonly actionSimpleWorkflowSRejectStepLocator = '[data-automation-id=\"header-reject-step\"] input';\n private readonly actionSimpleWorkflowRejectFolderLocator = `[data-automation-id=\"header-reject-folder\"] input`;\n private readonly actionSimpleWorkflowApproveFolderLocator = `[data-automation-id=\"header-approve-folder\"] [role=\"img\"]`;\n private readonly actionSpecialiseTypeLocator = '[data-automation-id=\"header-type-name\"] [role=\"combobox\"]';\n private readonly mimeTypeDropdownLocator = this.getChild('[data-automation-id=\"select-box\"][aria-label=\"Mimetype *\"]');\n private readonly actionTransformAndCopyContentDestinationFolderLocator = '[data-automation-id=\"card-textitem-value-destination-folder\"]';\n private readonly contentNodeSelectorSearchInput = '[data-automation-id=\"content-node-selector-search-input\"]';\n\n constructor(page: Page) {\n super(page, ActionsDropdownComponent.rootElement);\n }\n\n async selectAction(action: Partial<ActionType>, index: number): Promise<void> {\n if (index > 0) {\n await this.addActionButtonLocator.click();\n }\n await this.actionDropdownLocator.nth(index).hover({ timeout: 1000 });\n await this.actionDropdownLocator.nth(index).click();\n const option = this.getOptionLocator(action);\n await option.click();\n }\n\n async dropdownSelection(selectValue: string, locator: string, index: number): Promise<void> {\n await this.ruleActionLocator.nth(index).locator(locator).click();\n await this.getOptionLocator(selectValue).nth(0).click();\n }\n\n async insertCheckInActionValues(checkInValue: string, index: number): Promise<void> {\n await this.ruleActionLocator.nth(index).locator(this.actionCheckInInputLocator).fill(checkInValue);\n }\n\n async insertAddAspectActionValues(AspectValue: string, index: number): Promise<void> {\n await this.dropdownSelection(AspectValue, this.actionAspectNameLocator, index);\n }\n\n async insertSpecialiseTypeActionValues(specialiseTypeValue: string, index: number): Promise<void> {\n await this.dropdownSelection(specialiseTypeValue, this.actionSpecialiseTypeLocator, index);\n }\n\n async insertSimpleWorkflowActionValues(stepValue: string, index: number): Promise<void> {\n await this.ruleActionLocator.nth(index).locator(this.actionSimpleWorkflowStepInputLocator).fill(stepValue);\n await this.ruleActionLocator.nth(index).locator(this.actionSimpleWorkflowApproveFolderLocator).click();\n await this.page.locator(this.actionSimpleWorkflowActionChoiceLocator).click();\n await this.ruleActionLocator.nth(index).locator(this.actionSimpleWorkflowLabelApproveLocator).click();\n await this.ruleActionLocator.nth(index).locator(this.actionSimpleWorkflowSRejectStepLocator).fill(stepValue);\n await this.ruleActionLocator.nth(index).locator(this.actionSimpleWorkflowRejectFolderLocator).click();\n await this.page.locator(this.actionSimpleWorkflowActionChoiceLocator).click();\n }\n\n /**\n * Selects a MIME type from the dropdown for content transformation actions.\n * This method is typically used when configuring folder rules with transform actions\n * (e.g., Transform and Copy Content) to specify the target format for file conversion.\n *\n * @param mimeType - The MIME type to select (e.g., MimeType.AdobePDFDocument for PDF conversion)\n * @param index - The zero-based index of the action dropdown (use 0 for the first action, 1 for the second, etc.)\n *\n * @example\n * ```typescript\n * // Select PDF as the target format for the first transform action\n * await actionsDropdown.selectMimeType(MimeType.AdobePDFDocument, 0);\n * ```\n */\n async selectMimeType(mimeType: Partial<MimeType>, index: number): Promise<void> {\n await this.mimeTypeDropdownLocator.nth(index).hover({ timeout: timeouts.short });\n await this.mimeTypeDropdownLocator.nth(index).click();\n const option = this.getOptionLocator(mimeType);\n await option.click();\n }\n\n /**\n * Selects a destination folder for the Transform and Copy Content action.\n * This method opens the folder picker dialog, searches for a folder by name,\n * and selects it as the destination where transformed files will be copied.\n *\n * The method performs the following steps:\n * 1. Clicks the destination folder field to open the content node selector dialog\n * 2. Fills the search input with the provided search term\n * 3. Waits for search results to load\n * 4. Clicks on the first matching folder from the results\n * 5. Confirms the selection by clicking the Choose button\n *\n * @param index - The zero-based index of the action dropdown (use 0 for the first action, 1 for the second, etc.)\n * @param searchTerm - The name or partial name of the destination folder to search for (e.g., 'TO_PDF')\n *\n * @example\n * ```typescript\n * // Select 'TO_PDF' folder as the destination for transformed files\n * await actionsDropdown.selectDestinationFolderTransformAndCopyContent(0, 'TO_PDF');\n * ```\n */\n async selectDestinationFolderTransformAndCopyContent(index: number, searchTerm: string): Promise<void> {\n // Click on the destination folder input field to open the folder picker dialog\n await this.ruleActionLocator.nth(index).locator(this.actionTransformAndCopyContentDestinationFolderLocator).click();\n\n // Locate and fill the search input field within the content node selector\n const searchInput = this.page.locator(this.contentNodeSelectorSearchInput);\n await searchInput.fill(searchTerm);\n\n // Click on the folder from the search results (first match if multiple)\n const folderRow = this.page.locator('.adf-datatable-body .adf-name-location-cell-name', { hasText: searchTerm }).first();\n await folderRow.click();\n\n // Click the Choose button to confirm selection\n await this.page.locator(this.actionSimpleWorkflowActionChoiceLocator).click();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Locator } from '@playwright/test';\nimport { ManageRulesDialogComponent } from './manageRules/manage-rules-dialog.component';\n\nexport enum Field {\n Name = 'Name',\n Size = 'Size',\n Mimetype = 'Mimetype',\n Encoding = 'Encoding',\n HasCategory = 'Has category',\n HasTag = 'Has tag',\n HasAspect = 'Has aspect'\n}\n\nexport enum Comparator {\n Equals = '(=) Equals',\n Contains = 'Contains',\n StartsWith = 'Starts with',\n EndsWith = 'Ends with'\n}\n\nexport class ConditionComponent extends ManageRulesDialogComponent {\n private readonly getOptionLocator = (optionName: string): Locator =>\n this.page.locator('[role=listbox] [role=option]', { hasText: optionName }).first();\n\n private async selectField(fields: Partial<Field>, index: number): Promise<void> {\n await this.fieldDropDown.nth(index).click();\n const option = this.getOptionLocator(fields);\n await option.click();\n }\n\n private async selectComparator(comparators: Partial<Comparator>, index: number): Promise<void> {\n await this.comparatorDropDown.nth(index).click();\n const option = this.getOptionLocator(comparators);\n await option.click();\n }\n\n async addCondition(fields: Partial<Field>, value: string, index: number, comparators?: Partial<Comparator>): Promise<void> {\n await this.addConditionButton.first().click();\n await this.selectField(fields, index);\n if (comparators) {\n await this.selectComparator(comparators, index);\n }\n await this.valueField.nth(index).fill(value);\n }\n\n async addConditionGroup(fields: Partial<Field>, value: string, index: number, comparators?: Partial<Comparator>): Promise<void> {\n await this.addConditionGroupButton.last().click();\n await this.addConditionButton.nth(index).click();\n await this.selectField(fields, index);\n if (comparators) {\n await this.selectComparator(comparators, index);\n }\n await this.valueField.nth(index).fill(value);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from './base.component';\nimport { Locator, Page } from '@playwright/test';\n\nexport class AdfInfoDrawerComponent extends BaseComponent {\n private static readonly rootElement = 'adf-info-drawer';\n\n constructor(page: Page) {\n super(page, AdfInfoDrawerComponent.rootElement);\n }\n\n private readonly categoriesManagement = this.getChild('adf-categories-management');\n private readonly tagsCreator = this.getChild('adf-tags-creator');\n\n public getNameField = (labelText: string) =>\n this.getChild(`[data-automation-id=\"library-name-properties-wrapper\"] input[placeholder='${labelText}']`);\n public getIdField = (labelText: string) => this.getChild(`[data-automation-id=\"library-id-properties-wrapper\"] input[placeholder='${labelText}']`);\n public getVisibilityField = (labelText: string): Locator =>\n this.getChild(`[data-automation-id=\"library-visibility-properties-wrapper\"]`).getByLabel(labelText);\n public getDescriptionField = this.getChild('[data-automation-id=\"library-description-properties-wrapper\"] textarea');\n public propertiesTab = this.page.getByRole('tab', { name: 'Properties' });\n public commentsTab = this.page.getByRole('tab', { name: 'Comments' });\n public infoDrawerTabs = this.getChild('.adf-info-drawer-tab');\n public commentInputField = this.getChild('#comment-input');\n public commentsHeader = this.getChild('#comment-header');\n public addCommentButton = this.getChild('[data-automation-id=\"comments-input-add\"]');\n public commentsList = this.getChild('.adf-comment-list-item');\n public commentUsername = this.getChild('.adf-comment-user-name');\n public commentTextContent = this.getChild('.adf-comment-message');\n public commentTimestamp = this.getChild('.adf-comment-message-time');\n public infoDrawerPanel = this.page.locator(AdfInfoDrawerComponent.rootElement);\n public headerTitle = this.getChild('.adf-info-drawer-layout-header-title').getByRole('heading');\n public editButton = this.page.getByRole('button', { name: 'Edit' });\n public cancelButton = this.page.getByRole('button', { name: 'Cancel' });\n public updateButton = this.page.getByRole('button', { name: 'Update' });\n public hintMessage = this.getChild('[data-automation-id=\"app-library-metadata-form-name-hint\"]');\n public errorNameMessage = this.getChild('[data-automation-id=\"library-name-properties-wrapper\"] [aria-atomic=\"true\"]');\n public errorDescriptionMessage = this.getChild('[data-automation-id=\"library-description-properties-wrapper\"] [aria-atomic=\"true\"]');\n public expandDetailsButton = this.getChild(`button[title='Expand panel']`);\n public expandedDetailsTabs = this.page.locator('.aca-details-container [role=\"tab\"]');\n public expandedDetailsPermissionsTab = this.expandedDetailsTabs.getByText('Permissions');\n public nameField = this.getChild('input[placeholder=Name]');\n public idField = this.getChild(`input[placeholder='Library ID']`);\n public descriptionField = this.getChild('textarea[placeholder=Description]');\n public visibilityField = this.infoDrawerPanel.getByRole('combobox');\n public selectVisibility = (visibilityOption: string) => this.page.getByRole('listbox').getByRole('option', { name: visibilityOption }).click();\n public tagsAccordion = this.getChild('[data-automation-id=\"adf-content-metadata-tags-panel\"]');\n public categoriesAccordion = this.getChild('[data-automation-id=\"adf-content-metadata-categories-panel\"]');\n public tagsAccordionPenButton = this.tagsAccordion.locator('[data-automation-id=\"showing-tag-input-button\"]');\n public categoriesAccordionPenButton = this.categoriesAccordion.locator('[data-automation-id=\"meta-data-categories-edit\"]');\n public tagsInput = this.tagsCreator.locator('input');\n public createTagButton = this.tagsCreator.locator('.adf-create-tag-label');\n public tagsChips = this.tagsCreator.locator('[role=\"listitem\"]');\n public tagsChipsXButton = this.tagsChips.locator('.adf-dynamic-chip-list-delete-icon');\n public tagsAccordionCancelButton = this.getChild('[data-automation-id=\"reset-tags-metadata\"]');\n public tagsAccordionConfirmButton = this.getChild('[data-automation-id=\"save-tags-metadata\"]');\n public categoriesAccordionCancelButton = this.getChild('[data-automation-id=\"reset-metadata\"]');\n public categoriesAccordionConfirmButton = this.getChild('[data-automation-id=\"save-categories-metadata\"]');\n public categoriesInput = this.categoriesManagement.locator('input');\n public categoriesListItems = this.categoriesManagement.locator('.adf-category');\n public categoriesItemRemoveButton = this.categoriesManagement.locator('[data-automation-id=\"categories-remove-category-button\"]');\n public categoriesCreatedList = this.getChild('.adf-metadata-categories');\n public generalInfoAccordion = this.getChild('[data-automation-id=\"adf-metadata-group-properties\"]');\n public generalInfoProperties = this.generalInfoAccordion.locator('.adf-property');\n public generalInfoEditButton = this.getChild('[data-automation-id=\"meta-data-general-info-edit\"]');\n public exifInfoAccordion = this.getChild('[data-automation-id=\"adf-metadata-group-APP.CONTENT_METADATA.EXIF_GROUP_TITLE\"]');\n public exifInfoProperties = this.exifInfoAccordion.locator('.adf-property');\n public generalInfoNameField = this.getChild('[data-automation-id=\"card-textitem-value-properties.cm:name\"]');\n public generalInfoTitleField = this.getChild('[data-automation-id=\"card-textitem-value-properties.cm:title\"]');\n public generalInfoAuthorField = this.getChild('[data-automation-id=\"card-textitem-value-properties.cm:author\"]');\n public generalInfoDescriptionField = this.getChild('[data-automation-id=\"card-textitem-value-properties.cm:description\"]');\n public generalInfoCreatorField = this.getChild('[data-automation-id=\"card-textitem-value-createdByUser.displayName\"]');\n public generalInfoCreatedDateField = this.getChild('[data-automation-id=\"header-createdAt\"] .adf-property-value');\n public generalInfoModifiedDateField = this.getChild('[data-automation-id=\"header-modifiedAt\"] .adf-property-value');\n public generalInfoMimeTypeField = this.getChild('[data-automation-id=\"card-textitem-value-content.mimeTypeName\"]');\n public generalInfoContentTypeCombobox = this.getChild('[role=\"combobox\"]');\n public generalInfoNameError = this.getChild('[data-automation-id=\"card-textitem-error-properties.cm:name\"]');\n public generalInfoSaveButton = this.getChild('[data-automation-id=\"save-general-info-metadata\"]');\n\n async checkCommentsHeaderCount(): Promise<number> {\n const commentsCountTextContent = await this.commentsHeader.textContent();\n const commentsCountString = commentsCountTextContent?.match(/\\d+/g)?.[0];\n return parseInt(commentsCountString ?? '0', 10);\n }\n async getCommentsCountFromList(): Promise<number> {\n return this.commentsList.count();\n }\n\n async waitForComments(): Promise<void> {\n await this.commentsList.first().waitFor();\n }\n\n async addCommentToNode(commentText: string): Promise<void> {\n await this.commentInputField.click();\n await this.commentInputField.fill(commentText);\n await this.addCommentButton.click();\n }\n\n async getHeaderTitle(): Promise<string> {\n return (await this.headerTitle.textContent()) ?? '';\n }\n async getTabsCount(): Promise<number> {\n return this.infoDrawerTabs.count();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page, expect } from '@playwright/test';\nimport { MatMenuComponent } from './dataTable';\nimport { BaseComponent } from './base.component';\n\nexport class AcaHeader extends BaseComponent {\n private static readonly rootElement = 'aca-toolbar';\n private readonly moreActionsButton = this.getChild('button[id=\"app.viewer.toolbar.more\"]');\n private readonly toolbarMoreActions = this.getChild('button[id=\"app.toolbar.more\"]');\n public createButton = this.getChild('[id=\"app.toolbar.create\"]');\n public viewDetails = this.getChild('[title=\"View Details\"]');\n public viewButton = this.getChild('button[title=\"View\"]');\n public searchButton = this.getChild('button[id=\"app.toolbar.search\"]');\n public fullScreenButton = this.getChild('button[id=\"app.viewer.fullscreen\"]');\n public shareButton = this.getChild('button[id=\"share-action-button\"]');\n public downloadButtonViewer = this.getChild('button[id=\"app.viewer.download\"]');\n public downloadButton = this.getChild('button[id=\"app.toolbar.download\"]');\n public sharedDownloadButton = this.getChild('button[id=\"app.viewer.shared.download\"]');\n public uploadButton = this.getChild('button[id=\"app.toolbar.upload\"]');\n public uploadFileButton = this.page.locator('button[id=\"app.create.uploadFile\"]');\n public uploadNewVersionButton = this.page.locator('#app-upload-file-version');\n public permanentlyDeleteButton = this.getChild('button[id=\"app.toolbar.purgeDeletedNodes\"]');\n public restoreButton = this.getChild('button[id=\"app.toolbar.restoreDeletedNodes\"]');\n\n constructor(page: Page) {\n super(page, AcaHeader.rootElement);\n }\n public matMenu = new MatMenuComponent(this.page);\n\n async clickViewerMoreActions(): Promise<void> {\n await this.moreActionsButton.waitFor({ state: 'attached' });\n await this.moreActionsButton.click();\n }\n\n async clickMoreActions(): Promise<void> {\n await this.toolbarMoreActions.waitFor({ state: 'attached' });\n await this.toolbarMoreActions.click();\n }\n\n async clickCreateFolderFromTemplate(): Promise<void> {\n await this.createButton.click();\n await this.matMenu.createFolderFromTemplate.click();\n }\n\n async verifyToolbarPrimaryActions(expectedToolbarPrimary: string[]): Promise<void> {\n const buttons = await this.page.$$('aca-toolbar button');\n const actualPrimaryActions: string[] = await Promise.all(\n buttons.map(async (button) => {\n const title = await button.getAttribute('title');\n return title || '';\n })\n );\n\n for (const action of expectedToolbarPrimary) {\n expect(actualPrimaryActions.includes(action), `Expected to contain ${action}`).toBe(true);\n }\n }\n\n async clickCreateFileFromTemplate(): Promise<void> {\n await this.createButton.click();\n await this.matMenu.createFileFromTemplate.click();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page, expect } from '@playwright/test';\nimport { BaseComponent } from './base.component';\nimport { AcaHeader } from './aca-header.component';\nimport { timeouts } from '../../utils';\n\nexport class ViewerComponent extends BaseComponent {\n private static readonly rootElement = 'adf-viewer';\n\n public viewerLocator = this.getChild('adf-viewer-render');\n public closeButtonLocator = this.getChild('.adf-viewer-close-button');\n public fileTitleButtonLocator = this.getChild('#adf-viewer-display-name');\n public pdfViewerContentPages = this.getChild('.adf-pdf-viewer__content .page');\n public shareButton = this.getChild('button[id=\"share-action-button\"]');\n public downloadButton = this.getChild('button[id=\"app.viewer.download\"]');\n public unknownFormat = this.getChild(`adf-viewer-unknown-format .adf-viewer__unknown-format-view`);\n public viewerImage = this.viewerLocator.locator('.cropper-canvas img');\n public viewerDocument = this.viewerLocator.locator('.adf-pdf-viewer__content [role=\"document\"]');\n public documentThumbnailButton = this.getChild('[data-automation-id=\"adf-thumbnails-button\"]');\n public thumbnailsPages = this.getChild('[data-automation-id=\"adf-thumbnails-content\"] adf-pdf-thumb');\n public thumbnailsCloseButton = this.getChild('[data-automation-id=\"adf-thumbnails-close\"]');\n public viewerPage = this.getChild('[data-automation-id=\"adf-page-selector\"]');\n public viewerMedia = this.getChild('adf-media-player');\n public viewerSpinner = this.getChild('.adf-viewer-render__loading-screen');\n public zoomInButton = this.getChild('#viewer-zoom-in-button');\n public zoomOutButton = this.getChild('#viewer-zoom-out-button');\n public zoomScale = this.getChild('[data-automation-id=\"adf-page-scale\"]');\n public zoomResetButton = this.getChild('#viewer-reset-button');\n public fitToPageButton = this.getChild('#viewer-scale-page-button');\n public nextFileButton = this.getChild('[data-automation-id=\"adf-toolbar-next-file\"]');\n public previousFileButton = this.getChild('[data-automation-id=\"adf-toolbar-pref-file\"]');\n public noPermissionsView = this.getChild('aca-generic-error');\n\n toolbar = new AcaHeader(this.page);\n\n constructor(page: Page) {\n super(page, ViewerComponent.rootElement);\n }\n\n async isPdfViewerContentDisplayed(): Promise<boolean> {\n const count = await this.pdfViewerContentPages.count();\n return count > 0;\n }\n\n async isViewerOpened(): Promise<boolean> {\n await this.waitForViewerToOpen();\n return this.viewerLocator.isVisible();\n }\n\n async waitForViewerToOpen(): Promise<void> {\n await this.waitForViewerLoaderToFinish();\n await this.viewerLocator.waitFor({ state: 'visible', timeout: timeouts.large });\n }\n\n async waitForViewerLoaderToFinish(customTimeout?: number): Promise<void> {\n try {\n await this.viewerSpinner.waitFor({ state: 'hidden', timeout: customTimeout || timeouts.extraLarge });\n } catch (error) {\n this.logger.log('waitForViewerLoaderToFinish: Timeout reached while waiting for viewer loader to finish.');\n throw error;\n }\n }\n\n async checkViewerActivePage(pageNumber: number): Promise<void> {\n await expect(this.viewerPage).toHaveValue(pageNumber.toString());\n }\n\n async clickViewerThumbnailPage(pageNumber: number): Promise<void> {\n await this.thumbnailsPages.nth(pageNumber - 1).click();\n }\n\n async isCloseButtonDisplayed(): Promise<boolean> {\n await this.closeButtonLocator.waitFor({ state: 'visible', timeout: timeouts.normal });\n return this.closeButtonLocator.isEnabled({ timeout: timeouts.normal });\n }\n\n async isFileTitleDisplayed(): Promise<boolean> {\n await this.fileTitleButtonLocator.waitFor({ state: 'visible', timeout: timeouts.normal });\n return this.fileTitleButtonLocator.isVisible();\n }\n\n async waitForZoomPercentageToDisplay(): Promise<void> {\n await this.zoomScale.waitFor({ state: 'visible', timeout: timeouts.normal });\n const startTime = Date.now();\n let textContent: string;\n\n while (Date.now() - startTime <= timeouts.medium) {\n textContent = await this.zoomScale.innerText();\n if (textContent.trim() !== '') {\n break;\n }\n await this.page.waitForTimeout(timeouts.tiny);\n }\n\n if (textContent.trim() === '') {\n throw new Error(`Timeout: Text did not show up within ${timeouts.medium} ms`);\n }\n }\n\n async getFileTitle(): Promise<string> {\n await this.fileTitleButtonLocator.waitFor({ state: 'visible', timeout: timeouts.normal });\n await this.waitForViewerLoaderToFinish();\n return this.fileTitleButtonLocator.textContent();\n }\n\n async getCloseButtonTooltip(): Promise<string> {\n await this.closeButtonLocator.waitFor({ state: 'visible', timeout: timeouts.normal });\n return this.closeButtonLocator.getAttribute('title');\n }\n\n async verifyViewerPrimaryActions(expectedToolbarPrimary: string[]): Promise<void> {\n const toRemove = ['Close', 'Previous File', 'Next File', 'View details'];\n const removeClosePreviousNextOldInfo = (actions: string[]): string[] => actions.filter((elem) => !toRemove.includes(elem));\n\n const buttons = await this.page.$$('adf-viewer button');\n let actualPrimaryActions: string[] = await Promise.all(\n buttons.map(async (button) => {\n const title = await button.getAttribute('title');\n return title || '';\n })\n );\n\n actualPrimaryActions = removeClosePreviousNextOldInfo(actualPrimaryActions);\n\n for (const action of expectedToolbarPrimary) {\n expect(actualPrimaryActions.includes(action), `Expected to contain ${action}`).toBe(true);\n }\n }\n\n async checkUnknownFormatIsDisplayed(): Promise<void> {\n await this.unknownFormat.waitFor({ state: 'visible', timeout: timeouts.normal });\n }\n\n async getUnknownFormatMessage(): Promise<string> {\n return this.unknownFormat.locator(`.adf-viewer__unknown-label`).innerText();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from '../../base.component';\nimport { Page } from '@playwright/test';\n\nexport class SearchFiltersCategories extends BaseComponent {\n private static readonly rootElement = '.adf-search-filter-menu-card';\n\n constructor(page: Page) {\n super(page, SearchFiltersCategories.rootElement);\n }\n\n public addOptionInput = this.getChild(`[data-automation-id$='adf-search-chip-autocomplete-input']`);\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from '../../base.component';\nimport { Page } from '@playwright/test';\nimport { SearchPage } from '../../../pages';\n\ntype FilterTab = 'Created' | 'Modified';\n\nexport class SearchFiltersDate extends BaseComponent {\n private static readonly rootElement = '.adf-search-filter-menu-card';\n\n constructor(page: Page) {\n super(page, SearchFiltersDate.rootElement);\n }\n\n public createdTab = this.getChild(`[role='tab']`, { hasText: 'Created' });\n public modifiedTab = this.getChild(`[role='tab']`, { hasText: 'Modified' });\n public anytimeButton = this.getChild(`[data-automation-id$='date-range-anytime']`);\n public anytimeRadioButton = this.anytimeButton.locator(`input`);\n public betweenButton = this.getChild(`[data-automation-id$='date-range-between']`);\n public betweenRadioButton = this.betweenButton.locator(`input`);\n\n async openCreatedModifiedTab(page: SearchPage, tab: FilterTab): Promise<void> {\n switch (tab) {\n case 'Created':\n await page.searchFiltersDate.createdTab.click();\n break;\n case 'Modified':\n await page.searchFiltersDate.modifiedTab.click();\n break;\n default:\n break;\n }\n await page.page.waitForTimeout(2000);\n }\n\n async isModifiedTabSelected(): Promise<string> {\n return this.modifiedTab.getAttribute('aria-selected');\n }\n\n async isSearchTabSelected(): Promise<string> {\n return this.createdTab.getAttribute('aria-selected');\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { SearchPage } from '../../../pages';\nimport { BaseComponent } from '../../base.component';\nimport { Page, Locator } from '@playwright/test';\n\nexport class SearchFiltersLocation extends BaseComponent {\n private static readonly rootElement = '.adf-search-filter-menu-card';\n\n constructor(page: Page) {\n super(page, SearchFiltersLocation.rootElement);\n }\n\n public addOptionInput = this.getChild(`[data-automation-id$='adf-search-chip-autocomplete-input']`);\n\n private searchOption(value: string): Locator {\n return this.page.locator(`[data-automation-id=\"option-${value}\"]`);\n }\n\n async filterByLocation(page: SearchPage, location: string): Promise<void> {\n await page.searchFilters.locationFilter.click();\n await page.searchFiltersLocation.addOptionInput.fill(location);\n await page.searchFiltersLocation.searchOption(location).click();\n await page.searchMenuCard.menuCardApply.click();\n await page.dataTable.spinnerWaitForReload();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from '../../base.component';\nimport { Page } from '@playwright/test';\n\nexport class SearchFiltersLogic extends BaseComponent {\n private static readonly rootElement = '.adf-search-filter-menu-card';\n\n constructor(page: Page) {\n super(page, SearchFiltersLogic.rootElement);\n }\n\n public matchAllInput = this.getChild(`[placeholder$='Results will match all words entered here']`);\n public matchAnyInput = this.getChild(`[placeholder$='Results will match any words entered here']`);\n public excludeInput = this.getChild(`[placeholder$='Results will exclude matches with these words']`);\n public matchExactInput = this.getChild(`[placeholder$='Results will match this entire phrase']`);\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { SearchPage } from '../../../pages';\nimport { BaseComponent } from '../../base.component';\nimport { Page } from '@playwright/test';\n\nexport class SearchFiltersProperties extends BaseComponent {\n private static readonly rootElement = '.adf-search-filter-menu-card';\n\n constructor(page: Page) {\n super(page, SearchFiltersProperties.rootElement);\n }\n\n public operatorButton = this.getChild(`[data-automation-id='adf-search-properties-file-size-operator']`);\n public fileSizeInput = this.getChild(`[placeholder$='Enter file size']`);\n public unitButton = this.getChild(`[data-automation-id='adf-search-properties-file-size-unit']`);\n public fileTypeInput = this.getChild(`[placeholder$='File Type']`);\n public atLeastOption = this.page.locator(`[role=\"option\"]`, { hasText: 'At Least' });\n public atMostOption = this.page.locator(`[role=\"option\"]`, { hasText: 'At Most' });\n public exactlyOption = this.page.locator(`[role=\"option\"]`, { hasText: 'Exactly' });\n public kbUnit = this.page.locator(`[role=\"option\"]`, { hasText: 'KB' });\n public mbUnit = this.page.locator(`[role=\"option\"]`, { hasText: 'MB' });\n public gbUnit = this.page.locator(`[role=\"option\"]`, { hasText: 'GB' });\n public dropdownOptions = this.page.locator(`[role=\"option\"]`);\n\n async setPropertiesParameters(\n page: SearchPage,\n operator?: 'At Least' | 'At Most' | 'Exactly',\n unit?: 'KB' | 'MB' | 'GB',\n fileSizeInputText?: string,\n fileTypeInputText?: string\n ): Promise<void> {\n await page.searchFilters.propertiesFilter.click();\n\n if (operator) {\n await this.operatorButton?.click();\n switch (operator) {\n case 'At Least':\n await this.atLeastOption?.click();\n break;\n case 'At Most':\n await this.atMostOption?.click();\n break;\n case 'Exactly':\n await this.exactlyOption?.click();\n break;\n }\n }\n\n if (unit) {\n await this.unitButton?.click();\n switch (unit) {\n case 'KB':\n await this.kbUnit?.click();\n break;\n case 'MB':\n await this.mbUnit?.click();\n break;\n case 'GB':\n await this.gbUnit?.click();\n break;\n }\n }\n\n if (fileSizeInputText) {\n await this.fileSizeInput?.fill(fileSizeInputText);\n }\n\n if (fileTypeInputText) {\n await this.fileTypeInput?.fill(fileTypeInputText);\n await this.dropdownOptions.getByText(fileTypeInputText).waitFor();\n await this.dropdownOptions.getByText(fileTypeInputText).click();\n }\n\n await page.searchMenuCard.menuCardApply.click();\n await page.dataTable.spinnerWaitForReload();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { SearchPage } from '../../../pages';\nimport { BaseComponent } from '../../base.component';\nimport { Page, Locator } from '@playwright/test';\n\nexport class SearchFiltersTags extends BaseComponent {\n private static readonly rootElement = '.adf-search-filter-menu-card';\n\n constructor(page: Page) {\n super(page, SearchFiltersTags.rootElement);\n }\n\n public addOptionInput = this.getChild(`[data-automation-id$='adf-search-chip-autocomplete-input']`);\n\n private searchOption(value: string): Locator {\n return this.page.locator(`[data-automation-id=\"option-${value}\"]`);\n }\n\n async filterByTag(page: SearchPage, tag: string): Promise<void> {\n await page.searchFilters.tagsFilter.click();\n await page.searchFiltersTags.addOptionInput.fill(tag);\n await this.searchOption(tag).click();\n await page.searchMenuCard.menuCardApply.click();\n await page.dataTable.spinnerWaitForReload();\n }\n\n async clearTagFilter(page: SearchPage): Promise<void> {\n await page.searchFilters.tagsFilter.click();\n await page.searchMenuCard.menuCardClear.click();\n await page.dataTable.spinnerWaitForReload();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './search-filters-categories.component';\nexport * from './search-filters-date.component';\nexport * from './search-filters-location.component';\nexport * from './search-filters-logic.component';\nexport * from './search-filters-properties.component';\nexport * from './search-filters-tags.component';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from '../base.component';\nimport { Page } from '@playwright/test';\n\nexport class SearchFilters extends BaseComponent {\n private static readonly rootElement = '.aca-content__advanced-filters';\n\n constructor(page: Page) {\n super(page, SearchFilters.rootElement);\n }\n\n public logicFilter = this.getChild('adf-search-widget-chip', { hasText: 'Logic' });\n public propertiesFilter = this.getChild('adf-search-widget-chip', { hasText: 'Properties' });\n public dateFilter = this.getChild('adf-search-widget-chip', { hasText: 'Date' });\n public locationFilter = this.getChild('adf-search-widget-chip', { hasText: 'Location' });\n public tagsFilter = this.getChild('adf-search-widget-chip', { hasText: 'Tags' });\n public categoriesFilter = this.getChild('adf-search-widget-chip', { hasText: 'Categories' });\n public resetButton = this.getChild('button', { hasText: 'Reset' });\n public dropdownOptions = this.page.locator(`[role=\"option\"]`);\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Locator, Page } from '@playwright/test';\nimport { BaseComponent } from '.././base.component';\n\nexport class SearchInputComponent extends BaseComponent {\n private static readonly rootElement = 'aca-page-layout';\n public searchInput = this.getChild('aca-search-input input');\n public searchButton = this.page.locator('.aca-search-input--search-button');\n public searchCloseButton = this.page.locator('.aca-search-input--close-button');\n public searchInButton = this.getChild('aca-search-in-menu button');\n\n /**\n * Method used in cases where user have possibility to navigate \"inside\" the element (it's clickable and has link attribute).\n * Perform action .click() to navigate inside it\n *\n * @returns reference to cell element which contains link.\n */\n getCellLinkByName = (name: string): Locator => this.getChild('.adf-datatable-row[role=\"row\"]', { hasText: name });\n\n constructor(page: Page, rootElement = SearchInputComponent.rootElement) {\n super(page, rootElement);\n }\n\n async searchFor(searchText: string): Promise<void> {\n await this.searchInput.fill(searchText);\n await this.searchButton.click();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from '../base.component';\nimport { Page } from '@playwright/test';\n\nexport class SearchMenuCard extends BaseComponent {\n private static readonly rootElement = '.adf-search-filter-menu-card';\n\n public menuCardTitle = this.getChild('.adf-search-filter-title');\n public menuCardClose = this.getChild('.adf-search-filter-title-action');\n public menuCardClear = this.getChild('#cancel-filter-button');\n public menuCardApply = this.getChild('#apply-filter-button');\n\n constructor(page: Page) {\n super(page, SearchMenuCard.rootElement);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport type SortByType = 'Relevance' | 'Title' | 'Filename' | 'Modified date' | 'Modifier' | 'Created date' | 'Size' | 'Type';\nexport type SortByDirection = 'asc' | 'desc';\n\nexport class SearchSortingPicker extends BaseComponent {\n private static readonly rootElement = '#aca-button-action-menu';\n\n public actionMenu = this.page.locator('[data-automation-id=\"auto_header_content_id_$thumbnail\"]');\n public sortOrderButton = this.page.locator('#aca-button-sorting-menu');\n public sortByDropdownExpanded = this.page.locator('[role=\"menu\"]').first();\n public sortByList = this.page.locator('[role=\"menu\"] button');\n\n constructor(page: Page, rootElement = SearchSortingPicker.rootElement) {\n super(page, rootElement);\n }\n\n async waitForSortByDropdownToExpand(): Promise<void> {\n await this.sortByDropdownExpanded.waitFor();\n }\n\n async isSortOrderButtonDisplayed(): Promise<boolean> {\n return this.sortOrderButton.isVisible();\n }\n\n async isSortByDropdownExpanded(): Promise<boolean> {\n return this.sortByDropdownExpanded.isVisible();\n }\n\n async clickSortByDropdown(): Promise<void> {\n await this.sortOrderButton.click();\n await this.waitForSortByDropdownToExpand();\n }\n\n async getSortByOptionsList(): Promise<string[]> {\n const sortOptionsCount = await this.sortByList.count();\n const sortByOptions: string[] = [];\n for (let i = 1; i < sortOptionsCount; i++) {\n const textContent = (await this.sortByList.nth(i).textContent()).trim();\n sortByOptions.push(textContent);\n }\n sortByOptions.sort((a, b) => a.localeCompare(b));\n return sortByOptions;\n }\n\n async sortBy(option: SortByType, direction: SortByDirection): Promise<void> {\n await this.actionMenu.click();\n await this.clickSortByDropdown();\n\n if (!(await this.isSortByDropdownExpanded())) {\n await this.clickSortByDropdown();\n }\n const elem = this.sortByList.getByText(option);\n const optionId = await elem.locator('..').getAttribute('id');\n await elem.click();\n const directionSortElement = this.page.locator(`[id=\"${optionId}-${direction.toLocaleLowerCase()}\"]`);\n await directionSortElement.click();\n await this.spinnerWaitForReload();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './search-filters';\nexport * from './search-filters.component';\nexport * from './search-input.component';\nexport * from './search-menu-card.component';\nexport * from './search-sorting-picker.components';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from '.././base.component';\nimport { Locator, Page } from '@playwright/test';\nexport class Breadcrumb extends BaseComponent {\n private static readonly rootElement = 'adf-breadcrumb';\n public items = this.getChild('.adf-breadcrumb-item');\n public currentItem = this.getChild('.adf-breadcrumb-item-current');\n getItemByTitle = (name: string): Locator => this.getChild(`.adf-breadcrumb-item[title=${name}]`);\n\n constructor(page: Page) {\n super(page, Breadcrumb.rootElement);\n }\n\n async getAllItems(): Promise<string[]> {\n const itemElements = await this.page.$$('adf-breadcrumb .adf-breadcrumb-item');\n const itemTexts = await Promise.all(\n itemElements.map(async (elem) => {\n const text = await elem.innerText();\n return text.split('\\nchevron_right')[0];\n })\n );\n return itemTexts;\n }\n\n async clickItem(name: string): Promise<void> {\n const elem = this.getChild(`.adf-breadcrumb-item[title=${name}]`);\n await elem.click();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { SIDEBAR_LABELS, timeouts } from '../../utils';\nimport { BaseComponent } from './base.component';\nimport { Locator, Page } from '@playwright/test';\n\nexport class SidenavComponent extends BaseComponent {\n private static readonly rootElement = '.adf-layout-container-sidenav';\n\n private readonly personalFiles = this.getChild(`[data-automation-id='app.navbar.personalFiles']`);\n private readonly myLibraries = this.getChild(`[data-automation-id='app.navbar.libraries.files']`);\n private readonly favoriteLibraries = this.getChild(`[data-automation-id='app.navbar.libraries.favorite']`);\n private readonly shared = this.getChild(`[data-automation-id='app.navbar.shared']`);\n private readonly recentFiles = this.getChild(`[data-automation-id='app.navbar.recentFiles']`);\n private readonly favorites = this.getChild(`[data-automation-id='app.navbar.favorites']`);\n private readonly trash = this.getChild(`[data-automation-id='app.navbar.trashcan']`);\n private readonly sidenavToggle = this.getChild(`.aca-sidenav-header-title-logo`);\n private readonly sidenavExpand = this.page.locator(`[title='Expand navigation menu']`);\n public expandedSidenav = this.getChild(`[data-automation-id='expanded']`);\n\n constructor(page: Page) {\n super(page, SidenavComponent.rootElement);\n }\n\n async isActive(name: string): Promise<boolean> {\n const cssClass = await this.getLinkLabel(name).getAttribute('class');\n return cssClass.includes('action-button--active');\n }\n\n async openPanel(name: string): Promise<void> {\n await this.getLinkLabel(name).click();\n }\n\n private getLinkLabel(name: string): Locator {\n switch (name) {\n case SIDEBAR_LABELS.PERSONAL_FILES:\n return this.personalFiles;\n case SIDEBAR_LABELS.MY_LIBRARIES:\n return this.myLibraries;\n case SIDEBAR_LABELS.FAVORITE_LIBRARIES:\n return this.favoriteLibraries;\n case SIDEBAR_LABELS.SHARED_FILES:\n return this.shared;\n case SIDEBAR_LABELS.RECENT_FILES:\n return this.recentFiles;\n case SIDEBAR_LABELS.FAVORITES:\n return this.favorites;\n case SIDEBAR_LABELS.TRASH:\n return this.trash;\n default:\n return this.personalFiles;\n }\n }\n\n private async isSidenavExpanded(): Promise<boolean> {\n await this.page.waitForTimeout(timeouts.tiny);\n return this.expandedSidenav.isVisible();\n }\n\n async expandSideNav(): Promise<void> {\n const expanded = await this.isSidenavExpanded();\n if (!expanded) {\n await this.sidenavExpand.click();\n await this.expandedSidenav.waitFor({ state: 'attached' });\n }\n }\n\n async collapseSideNav(): Promise<void> {\n const expanded = await this.isSidenavExpanded();\n if (expanded) {\n await this.sidenavToggle.click();\n await this.expandedSidenav.waitFor({ state: 'detached' });\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from './base.component';\n\nexport class ErrorComponent extends BaseComponent {\n private static readonly rootElement = 'aca-page-layout';\n genericError = this.getChild('aca-generic-error');\n genericErrorTitle = this.getChild('.generic-error__title');\n\n constructor(page: Page) {\n super(page, ErrorComponent.rootElement);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from './base.component';\nimport { Page } from '@playwright/test';\n\nexport class EditModeComponent extends BaseComponent {\n private static readonly rootElement = '.aca-details-container';\n\n public tagsAccordion = this.page.locator('[data-automation-id=\"adf-content-metadata-tags-panel\"]');\n public tagsAccordionPenButton = this.tagsAccordion.locator('[data-automation-id=\"showing-tag-input-button\"]');\n public tagsInput = this.tagsAccordion.locator('input');\n public tagsChips = this.tagsAccordion.locator('[role=\"listitem\"]');\n public tagsAccordionConfirmButton = this.getChild('[data-automation-id=\"save-tags-metadata\"]');\n public createTagButton = this.tagsAccordion.locator('.adf-create-tag-label');\n public existingTags = this.tagsAccordion.locator('.adf-tag');\n\n public categoriesAccordion = this.page.locator('[data-automation-id=\"adf-content-metadata-categories-panel\"]');\n public categoriesAccordionPenButton = this.categoriesAccordion.locator('[data-automation-id=\"meta-data-categories-edit\"]');\n public categoriesInput = this.categoriesAccordion.locator('input');\n\n constructor(page: Page) {\n super(page, EditModeComponent.rootElement);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './snackBar/snack-bar.component';\nexport * from './dataTable';\nexport * from './dialogs';\nexport * from './manageRules';\nexport * from './base.component';\nexport * from './actions-dropdown.component';\nexport * from './conditions.component';\nexport * from './pagination.component';\nexport * from './adf-info-drawer.component';\nexport * from './viewer.component';\nexport * from './search';\nexport * from './breadcrumb/breadcrumb.component';\nexport * from './sidenav.component';\nexport * from './aca-header.component';\nexport * from './error.component';\nexport * from './datetime-picker/datetime-picker.component';\nexport * from './edit-mode.component';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { PlaywrightBase } from '../playwright-base';\nimport { SnackBarComponent } from '../components';\n\nexport interface NavigateOptions {\n query?: string;\n waitForRequest?: boolean;\n waitUntil?: 'networkidle' | 'commit' | 'load' | 'domcontentloaded';\n remoteUrl?: string;\n}\nexport abstract class BasePage extends PlaywrightBase {\n private readonly pageUrl: string;\n private readonly urlRequest: RegExp;\n public snackBar: SnackBarComponent;\n\n protected constructor(page: Page, pageUrl: string, urlRequest?: RegExp) {\n super(page);\n this.pageUrl = pageUrl;\n this.urlRequest = urlRequest;\n this.snackBar = new SnackBarComponent(this.page);\n }\n\n /**\n * Method which navigate to appropriate page or remoteURL\n *\n * @param options object with configurable options\n * @property {string} query if you would like to navigate to page which support query,\n * then pass it in this option - e.g. '?appName=content'\n * @property {boolean} waitForRequest if you would like to NOT wait for request (which need to be passed\n * in the constructor of the page), then pass false. By default it'll wait for request to be fulfilled.\n * @property {'networkidle' | 'commit' | 'load' | 'domcontentloaded'} waitUntil by default will wait until 'networkidle' but you can change it if needed\n * @property {string} remoteUrl if you need to navigate to third part site, then you need to pass all of the URL in this option\n */\n async navigate(options?: Partial<NavigateOptions>): Promise<void> {\n const actualOptions: NavigateOptions = {\n query: '',\n waitForRequest: true,\n remoteUrl: '',\n waitUntil: 'load',\n ...options\n };\n\n if (actualOptions.remoteUrl) {\n await this.page.goto(actualOptions.remoteUrl, {\n waitUntil: actualOptions.waitUntil\n });\n } else if (this.urlRequest && actualOptions.waitForRequest) {\n await Promise.all([\n this.page.goto(`./#/${this.pageUrl}${actualOptions.query}`, { waitUntil: 'load' }),\n this.page.waitForResponse(this.urlRequest)\n ]);\n } else {\n await this.page.goto(`./#/${this.pageUrl}${actualOptions.query}`, {\n waitUntil: actualOptions.waitUntil,\n timeout: 60000\n });\n }\n await this.spinnerWaitForReload();\n }\n\n async reload(options?: Pick<NavigateOptions, 'waitUntil'>): Promise<void> {\n const actualOptions: Pick<NavigateOptions, 'waitUntil'> = {\n waitUntil: 'networkidle',\n ...options\n };\n await this.page.reload(actualOptions);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BasePage } from './base.page';\nimport { UserModel } from '../../models';\n\ninterface LoginOptions {\n waitForLoading?: boolean;\n withNavigation?: boolean;\n}\nexport class LoginPage extends BasePage {\n private static readonly pageUrl = 'login';\n\n constructor(page: Page) {\n super(page, LoginPage.pageUrl);\n }\n\n public username = this.page.locator('#username');\n public password = this.page.locator('#password');\n public submitButton = this.page.locator('#login-button');\n public userProfileButton = this.page.locator('aca-user-menu button');\n public userLogOutButton = this.page.locator('aca-logout button');\n public passwordVisibility = this.page.locator('.adf-login-password-icon');\n\n async loginUser(userData: { username: string; password: string } | UserModel, options?: LoginOptions): Promise<void> {\n if (options?.withNavigation) {\n await this.navigate();\n }\n await this.username.fill(userData.username);\n await this.password.fill(userData.password);\n await this.submitButton.click();\n\n if (options?.waitForLoading) {\n await Promise.all([this.page.waitForLoadState('domcontentloaded'), this.spinnerWaitForReload()]);\n }\n }\n\n async logoutUser(): Promise<void> {\n await this.userProfileButton.click();\n await this.userLogOutButton.click();\n }\n\n async isPasswordDisplayed(): Promise<boolean> {\n const type = await this.password.getAttribute('type');\n return type === 'text';\n }\n\n async verifyUserLogin(): Promise<void> {\n if (await this.username.isVisible()) {\n await this.page.reload({ waitUntil: 'load' });\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport {\n ConditionComponent,\n ManageRules,\n ManageRulesDialogComponent,\n RulesToolbarComponent,\n ActionsDropdownComponent,\n ContentNodeSelectorDialog,\n LinkRulesDialog\n} from '../components';\nimport { BasePage } from './base.page';\n\nexport class NodesPage extends BasePage {\n private static readonly pageUrl = 'nodes';\n\n constructor(page: Page) {\n super(page, NodesPage.pageUrl);\n }\n\n public rulesToolbar = new RulesToolbarComponent(this.page);\n public manageRulesDialog = new ManageRulesDialogComponent(this.page);\n public actionsDropdown = new ActionsDropdownComponent(this.page);\n public conditionsDropdown = new ConditionComponent(this.page);\n public manageRules = new ManageRules(this.page);\n public contentNodeSelectorDialog = new ContentNodeSelectorDialog(this.page);\n public linkRulesDialog = new LinkRulesDialog(this.page);\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BasePage } from './base.page';\nimport {\n AcaHeader,\n AdfFolderDialogComponent,\n ContentNodeSelectorDialog,\n CreateFromTemplateDialogComponent,\n PasswordOverlayDialogComponent,\n ViewerOverlayDialogComponent,\n Breadcrumb,\n DataTableComponent,\n MatMenuComponent,\n ViewerComponent,\n SidenavComponent,\n PaginationComponent,\n ErrorComponent,\n ShareDialogComponent,\n AdfConfirmDialogComponent,\n AdfInfoDrawerComponent,\n UploadNewVersionDialog,\n ManageVersionsDialog,\n UploadDialog,\n SnackBarComponent,\n EditDialog,\n FolderInformationDialogComponent,\n EditModeComponent\n} from '../components';\n\nexport class PersonalFilesPage extends BasePage {\n private static readonly pageUrl = 'personal-files';\n\n constructor(page: Page) {\n super(page, PersonalFilesPage.pageUrl);\n }\n\n public acaHeader = new AcaHeader(this.page);\n public matMenu = new MatMenuComponent(this.page);\n public folderDialog = new AdfFolderDialogComponent(this.page);\n public contentNodeSelector = new ContentNodeSelectorDialog(this.page);\n public dataTable = new DataTableComponent(this.page);\n public viewer = new ViewerComponent(this.page);\n public passwordDialog = new PasswordOverlayDialogComponent(this.page);\n public viewerDialog = new ViewerOverlayDialogComponent(this.page);\n public breadcrumb = new Breadcrumb(this.page);\n public sidenav = new SidenavComponent(this.page);\n public createFromTemplateDialogComponent = new CreateFromTemplateDialogComponent(this.page);\n public pagination = new PaginationComponent(this.page);\n public errorDialog = new ErrorComponent(this.page);\n public shareDialog = new ShareDialogComponent(this.page);\n public confirmDialog = new AdfConfirmDialogComponent(this.page);\n public infoDrawer = new AdfInfoDrawerComponent(this.page);\n public nodeInfoEditMode = new EditModeComponent(this.page);\n public uploadNewVersionDialog = new UploadNewVersionDialog(this.page);\n public manageVersionsDialog = new ManageVersionsDialog(this.page);\n public uploadDialog = new UploadDialog(this.page);\n public snackBar = new SnackBarComponent(this.page);\n public editDialog = new EditDialog(this.page);\n public folderInformationDialog = new FolderInformationDialogComponent(this.page);\n\n async selectCreateFolder(): Promise<void> {\n await this.acaHeader.createButton.click();\n await this.matMenu.createFolder.click();\n }\n\n async closeMenu(): Promise<void> {\n await this.page.keyboard.press('Escape');\n }\n\n async waitForPageLoad() {\n await this.page.waitForURL(`**/${PersonalFilesPage.pageUrl}`);\n }\n\n async clickMoreActionsButton(buttonLabel: string): Promise<void> {\n await this.acaHeader.clickMoreActions();\n await this.matMenu.clickMenuItem(buttonLabel);\n }\n\n async copyOrMoveContentInDatatable(sourceFileList: string[], destinationName: string, operation = 'Copy'): Promise<void> {\n await this.page.keyboard.down('Control');\n for (const sourceName of sourceFileList) {\n await this.dataTable.selectItems(sourceName);\n }\n await this.page.keyboard.up('Control');\n await this.clickMoreActionsButton(operation);\n await this.contentNodeSelector.selectDestination(destinationName);\n await this.contentNodeSelector.actionButton.click();\n }\n\n async selectItemsAndToggleFavorite(item: string[], action: 'Favorite' | 'Remove Favorite') {\n for (const itemToSelect of item) {\n await this.dataTable.selectItems(itemToSelect);\n }\n await this.acaHeader.clickMoreActions();\n await this.matMenu.clickMenuItem(action);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BasePage } from './base.page';\nimport {\n AcaHeader,\n AdfInfoDrawerComponent,\n AdfLibraryDialogComponent,\n DataTableComponent,\n MatMenuComponent,\n ViewerComponent,\n ViewerOverlayDialogComponent,\n ContentNodeSelectorDialog,\n Breadcrumb,\n SidenavComponent,\n CreateFromTemplateDialogComponent,\n AdfConfirmDialogComponent,\n FolderInformationDialogComponent\n} from '../components';\n\nexport class MyLibrariesPage extends BasePage {\n private static readonly pageUrl = 'libraries';\n\n constructor(page: Page) {\n super(page, MyLibrariesPage.pageUrl);\n }\n public acaHeader = new AcaHeader(this.page);\n public matMenu = new MatMenuComponent(this.page);\n public libraryDialog = new AdfLibraryDialogComponent(this.page);\n public dataTable = new DataTableComponent(this.page);\n public libraryDetails = new AdfInfoDrawerComponent(this.page);\n public infoDrawer = new AdfInfoDrawerComponent(this.page);\n public viewer = new ViewerComponent(this.page);\n public viewerDialog = new ViewerOverlayDialogComponent(this.page);\n public copyMoveDialog = new ContentNodeSelectorDialog(this.page);\n public breadcrumb = new Breadcrumb(this.page);\n public sidenav = new SidenavComponent(this.page);\n public contentNodeSelector = new ContentNodeSelectorDialog(this.page);\n public createFromTemplateDialogComponent = new CreateFromTemplateDialogComponent(this.page);\n public confirmDialogComponent = new AdfConfirmDialogComponent(this.page);\n public folderInformationDialog = new FolderInformationDialogComponent(this.page);\n\n async selectCreateLibrary(): Promise<void> {\n await this.acaHeader.createButton.click();\n await this.matMenu.createLibrary.click();\n }\n\n async clickMoreActionsButton(buttonLabel: string): Promise<void> {\n await this.acaHeader.clickMoreActions();\n await this.matMenu.clickMenuItem(buttonLabel);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BasePage } from './base.page';\nimport { DataTableComponent, MatMenuComponent, ViewerComponent, SidenavComponent, Breadcrumb, AdfInfoDrawerComponent } from '../components';\nimport { AcaHeader } from '../components/aca-header.component';\nimport { AdfFolderDialogComponent, ContentNodeSelectorDialog, ManageVersionsDialog } from '../components/dialogs';\n\nexport class RecentFilesPage extends BasePage {\n private static readonly pageUrl = 'recent-files';\n\n constructor(page: Page) {\n super(page, RecentFilesPage.pageUrl);\n }\n\n public acaHeader = new AcaHeader(this.page);\n public matMenu = new MatMenuComponent(this.page);\n public folderDialog = new AdfFolderDialogComponent(this.page);\n public dataTable = new DataTableComponent(this.page);\n public viewer = new ViewerComponent(this.page);\n public sidenav = new SidenavComponent(this.page);\n public breadcrumb = new Breadcrumb(this.page);\n public infoDrawer = new AdfInfoDrawerComponent(this.page);\n public contentNodeSelector = new ContentNodeSelectorDialog(this.page);\n public manageVersionsDialog = new ManageVersionsDialog(this.page);\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BasePage } from './base.page';\nimport { DataTableComponent, MatMenuComponent, ViewerComponent, SidenavComponent, Breadcrumb, AdfInfoDrawerComponent } from '../components';\nimport { AcaHeader } from '../components/aca-header.component';\nimport { AdfFolderDialogComponent, ViewerOverlayDialogComponent, ManageVersionsDialog } from '../components/dialogs';\n\nexport class SharedPage extends BasePage {\n private static readonly pageUrl = 'shared';\n\n constructor(page: Page) {\n super(page, SharedPage.pageUrl);\n }\n\n public acaHeader = new AcaHeader(this.page);\n public matMenu = new MatMenuComponent(this.page);\n public folderDialog = new AdfFolderDialogComponent(this.page);\n public dataTable = new DataTableComponent(this.page);\n public viewer = new ViewerComponent(this.page);\n public viewerDialog = new ViewerOverlayDialogComponent(this.page);\n public sidenav = new SidenavComponent(this.page);\n public breadcrumb = new Breadcrumb(this.page);\n public infoDrawer = new AdfInfoDrawerComponent(this.page);\n public manageVersionsDialog = new ManageVersionsDialog(this.page);\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class SearchInDialogComponent extends BaseComponent {\n private static readonly rootElement = '.aca-search-in-panel';\n\n public filesAndFoldersRadioButton = this.getChild('.aca-search-in-panel__radio label').getByText('Files and folders');\n public librariesRadioButton = this.getChild('.aca-search-in-panel__radio label').getByText('Libraries');\n public filesCheckbox = this.getChild('.aca-search-in-panel__checkboxes').getByLabel('Files');\n public foldersCheckbox = this.getChild('.aca-search-in-panel__checkboxes').getByLabel('Folders');\n public applyButton = this.getChild('button', { hasText: 'Apply' });\n readonly resetButton = this.getChild('button', { hasText: 'Reset' });\n\n constructor(page: Page, rootElement = SearchInDialogComponent.rootElement) {\n super(page, rootElement);\n }\n\n async isFoldersOptionChecked() {\n return this.foldersCheckbox.isChecked();\n }\n\n async isFilesOptionChecked() {\n return this.filesCheckbox.isChecked();\n }\n\n async resetOptions() {\n await this.resetButton.click();\n }\n\n async checkOnlyFolders(): Promise<void> {\n await this.resetOptions();\n if (await this.isFilesOptionChecked()) {\n await this.filesCheckbox.click();\n }\n if (!(await this.isFoldersOptionChecked())) {\n await this.foldersCheckbox.click();\n }\n }\n\n async checkOnlyFiles(): Promise<void> {\n await this.resetOptions();\n if (await this.isFoldersOptionChecked()) {\n await this.foldersCheckbox.click();\n }\n if (!(await this.isFilesOptionChecked())) {\n await this.filesCheckbox.click();\n }\n }\n\n async checkLibraries(): Promise<void> {\n await this.resetOptions();\n await this.librariesRadioButton.click();\n }\n\n async checkFilesAndFolders(): Promise<void> {\n await this.resetOptions();\n if (!(await this.isFilesOptionChecked())) {\n await this.filesCheckbox.click();\n }\n if (!(await this.isFoldersOptionChecked())) {\n await this.foldersCheckbox.click();\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BasePage } from './base.page';\nimport {\n DataTableComponent,\n FolderInformationDialogComponent,\n MatMenuComponent,\n SearchFilters,\n SearchFiltersCategories,\n SearchFiltersDate,\n SearchFiltersLocation,\n SearchFiltersLogic,\n SearchFiltersProperties,\n SearchFiltersTags,\n SearchInputComponent,\n SearchMenuCard,\n SearchSortingPicker,\n SidenavComponent,\n ViewerComponent\n} from '../components';\nimport { AcaHeader } from '../components/aca-header.component';\nimport { AdfConfirmDialogComponent, AdfFolderDialogComponent, ManageVersionsDialog, UploadNewVersionDialog } from '../components/dialogs';\nimport { SearchInDialogComponent } from '../components/search/search-in-dialog.components';\n\nexport type SearchType = 'files' | 'folders' | 'filesAndFolders' | 'libraries';\n\nexport class SearchPage extends BasePage {\n private static readonly pageUrl = 'search';\n\n constructor(page: Page) {\n super(page, SearchPage.pageUrl);\n }\n\n public acaHeader = new AcaHeader(this.page);\n public matMenu = new MatMenuComponent(this.page);\n public folderDialog = new AdfFolderDialogComponent(this.page);\n public dataTable = new DataTableComponent(this.page);\n public viewer = new ViewerComponent(this.page);\n public searchInputComponent = new SearchInputComponent(this.page);\n public searchInDialog = new SearchInDialogComponent(this.page);\n public searchSortingPicker = new SearchSortingPicker(this.page);\n public searchFilters = new SearchFilters(this.page);\n public searchFiltersTags = new SearchFiltersTags(this.page);\n public searchFiltersCategories = new SearchFiltersCategories(this.page);\n public searchFiltersDate = new SearchFiltersDate(this.page);\n public searchFiltersLocation = new SearchFiltersLocation(this.page);\n public searchFiltersProperties = new SearchFiltersProperties(this.page);\n public searchFiltersLogic = new SearchFiltersLogic(this.page);\n public sidenav = new SidenavComponent(this.page);\n public confirmDialogComponent = new AdfConfirmDialogComponent(this.page);\n public uploadNewVersionDialog = new UploadNewVersionDialog(this.page);\n public manageVersionsDialog = new ManageVersionsDialog(this.page);\n public folderInformationDialog = new FolderInformationDialogComponent(this.page);\n public searchMenuCard = new SearchMenuCard(this.page);\n\n async searchWithin(searchText: string, searchType?: SearchType): Promise<void> {\n if (!(await this.searchInputComponent.searchInput.isVisible())) {\n await this.acaHeader.searchButton.click();\n }\n await this.searchInputComponent.searchInButton.click();\n switch (searchType) {\n case 'files':\n await this.searchInDialog.checkOnlyFiles();\n break;\n case 'folders':\n await this.searchInDialog.checkOnlyFolders();\n break;\n case 'filesAndFolders':\n await this.searchInDialog.checkFilesAndFolders();\n break;\n case 'libraries':\n await this.searchInDialog.checkLibraries();\n break;\n default:\n break;\n }\n await this.searchInDialog.applyButton.click();\n await this.clickSearchButton();\n await this.searchInputComponent.searchFor(searchText);\n await this.dataTable.spinnerWaitForReload();\n }\n\n async clickSearchButton() {\n await this.searchInputComponent.searchButton.click({ force: true });\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BasePage } from './base.page';\nimport {\n DataTableComponent,\n MatMenuComponent,\n ViewerComponent,\n SidenavComponent,\n PaginationComponent,\n Breadcrumb,\n AdfInfoDrawerComponent\n} from '../components';\nimport { AcaHeader } from '../components/aca-header.component';\nimport { AdfFolderDialogComponent, ViewerOverlayDialogComponent, ManageVersionsDialog } from '../components/dialogs';\n\nexport class FavoritesPage extends BasePage {\n private static readonly pageUrl = 'favorites';\n\n constructor(page: Page) {\n super(page, FavoritesPage.pageUrl);\n }\n\n public acaHeader = new AcaHeader(this.page);\n public matMenu = new MatMenuComponent(this.page);\n public folderDialog = new AdfFolderDialogComponent(this.page);\n public dataTable = new DataTableComponent(this.page);\n public viewer = new ViewerComponent(this.page);\n public viewerDialog = new ViewerOverlayDialogComponent(this.page);\n public sidenav = new SidenavComponent(this.page);\n public pagination = new PaginationComponent(this.page);\n public breadcrumb = new Breadcrumb(this.page);\n public infoDrawer = new AdfInfoDrawerComponent(this.page);\n public manageVersionsDialog = new ManageVersionsDialog(this.page);\n\n async waitForPageLoad() {\n await this.page.waitForURL(`**/${FavoritesPage.pageUrl}`);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BasePage } from './base.page';\nimport { DataTableComponent, MatMenuComponent, ViewerComponent, SidenavComponent, Breadcrumb, PaginationComponent } from '../components';\nimport { AcaHeader } from '../components/aca-header.component';\nimport { AdfFolderDialogComponent, ViewerOverlayDialogComponent, AdfDeleteTrashComponent } from '../components/dialogs';\n\nexport class TrashPage extends BasePage {\n private static readonly pageUrl = 'trashcan';\n\n constructor(page: Page) {\n super(page, TrashPage.pageUrl);\n }\n\n public acaHeader = new AcaHeader(this.page);\n public matMenu = new MatMenuComponent(this.page);\n public folderDialog = new AdfFolderDialogComponent(this.page);\n public dataTable = new DataTableComponent(this.page);\n public viewer = new ViewerComponent(this.page);\n public viewerDialog = new ViewerOverlayDialogComponent(this.page);\n public sidenav = new SidenavComponent(this.page);\n public breadcrumb = new Breadcrumb(this.page);\n public pagination = new PaginationComponent(this.page);\n public deleteDialog = new AdfDeleteTrashComponent(this.page);\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BasePage } from './base.page';\nimport { DataTableComponent, MatMenuComponent, SidenavComponent, ViewerComponent } from '../components';\nimport { AcaHeader } from '../components/aca-header.component';\nimport { AdfConfirmDialogComponent, AdfFolderDialogComponent, ViewerOverlayDialogComponent } from '../components/dialogs';\n\nexport class FavoritesLibrariesPage extends BasePage {\n private static readonly pageUrl = 'favorite/libraries';\n\n constructor(page: Page) {\n super(page, FavoritesLibrariesPage.pageUrl);\n }\n\n public acaHeader = new AcaHeader(this.page);\n public matMenu = new MatMenuComponent(this.page);\n public folderDialog = new AdfFolderDialogComponent(this.page);\n public dataTable = new DataTableComponent(this.page);\n public viewer = new ViewerComponent(this.page);\n public viewerDialog = new ViewerOverlayDialogComponent(this.page);\n public sidenav = new SidenavComponent(this.page);\n public confirmDialogComponent = new AdfConfirmDialogComponent(this.page);\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './base.page';\nexport * from './login.page';\nexport * from './nodes.page';\nexport * from './personal-files.page';\nexport * from './my-libraries.page';\nexport * from './recent-files.page';\nexport * from './shared.page';\nexport * from './search.page';\nexport * from './favorites.page';\nexport * from './trash.page';\nexport * from './favorites-libraries.page';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './components';\nexport * from './pages';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nconst env = process.env;\n\nexport const testEmailDomain = env.E2E_EMAIL_DOMAIN;\nexport const users = {\n hruser: {\n username: env.HR_USER,\n password: env.HR_USER_PASSWORD\n },\n admin: {\n username: env.ADMIN_EMAIL,\n password: env.ADMIN_PASSWORD\n }\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { chromium, FullConfig } from '@playwright/test';\nimport { LoginPage } from '../page-objects';\nimport { CustomConfig } from '../models';\nimport { users } from './global-variables';\nimport fs from 'fs';\nimport { paths } from '../utils/paths';\n\nasync function globalSetup(config: FullConfig<CustomConfig>) {\n const { use } = config.projects[0];\n\n await removeOutputFolders();\n await createOutputFolders();\n\n if (use.users) {\n for (const user of use.users) {\n if (users[user].username) {\n const browser = await chromium.launch();\n const page = await browser.newPage();\n const loginPage = new LoginPage(page);\n await page.goto(use.baseURL);\n await loginPage.loginUser(\n { username: users[user].username, password: users[user].password },\n {\n withNavigation: false,\n waitForLoading: true\n }\n );\n await page.context().storageState({ path: `${paths.userStates}/${user}UserState.json` });\n await browser.close();\n } else {\n throw new Error(`Add credentials for ${user} to you .env file!`);\n }\n }\n }\n}\n\nasync function createOutputFolders() {\n for (const path in paths) {\n if (!fs.existsSync(paths[path])) {\n fs.mkdirSync(paths[path], { recursive: true });\n }\n }\n}\n\nasync function removeOutputFolders() {\n if (fs.existsSync(paths.rootFolder)) {\n fs.rmSync(paths.rootFolder, { recursive: true, force: true });\n }\n}\n\nexport default globalSetup;\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ReporterDescription } from '@playwright/test';\nimport { timeouts } from '../utils';\n\nconst { env } = process;\n\nexport const getReportPortalConfig = () => {\n const browser = (env.PLAYWRIGHT_BROWSER || 'chrome').toLowerCase();\n const attributes = [\n { key: 'Job', value: `${env.GITHUB_JOB}` },\n { key: 'Build_type', value: `${env.GITHUB_EVENT_NAME}` },\n { key: 'Repository', value: `${env.GITHUB_REPOSITORY}` },\n { key: 'Branch', value: `${env.GITHUB_HEAD_REF || env.GITHUB_REF}` },\n { key: 'Browser', value: browser }\n ];\n\n const launch = `GitHub Actions - ACA - ${browser}`;\n\n return {\n endpoint: env.REPORT_PORTAL_URL,\n apiKey: env.REPORT_PORTAL_TOKEN,\n project: 'alfresco-content-app',\n launch,\n includeTestSteps: true,\n skipPassed: true,\n restClientConfig: {\n timeout: timeouts.sixtySeconds,\n retry: 0\n },\n attributes,\n description: `[Run ${env.GITHUB_RUN_ID}](${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}/actions/runs/${env.GITHUB_RUN_ID}) - ${browser} - Failures only`\n };\n};\n\nexport const getReporter = (): ReporterDescription[] => {\n if (!env.CI) {\n return [['html']];\n }\n\n return [['@reportportal/agent-js-playwright', getReportPortalConfig()], ['github']];\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { PlaywrightTestConfig, devices, chromium } from '@playwright/test';\nimport { loadEnvFile } from 'node:process';\nimport { timeouts } from '../utils';\nimport { getReporter } from './report-portal.config';\n\ntype LaunchOptions = Parameters<typeof chromium.launch>[0];\n\ntry {\n loadEnvFile();\n} catch (error) {\n // .env file is optional, continue without it\n}\n\nconst { env } = process;\n\ninterface BrowserConfig {\n device: any;\n launchOptions: LaunchOptions;\n name: string;\n}\n\nfunction getBrowsersToUse(): string[] {\n const browserEnv = (env.PLAYWRIGHT_BROWSER || 'chromium').toLowerCase();\n const allBrowsers = ['chrome', 'firefox', 'webkit', 'msedge'];\n\n if (browserEnv === 'all') {\n return allBrowsers;\n } else if (allBrowsers.includes(browserEnv) || browserEnv === 'chromium') {\n return [browserEnv];\n } else {\n return ['chromium'];\n }\n}\n\nfunction getBrowserConfig(browser: string): BrowserConfig {\n const launchOptions: LaunchOptions = {\n slowMo: 300\n };\n\n const chromiumArgs = ['--no-sandbox', '--disable-site-isolation-trials'];\n\n switch (browser) {\n case 'firefox':\n return {\n device: devices['Desktop Firefox'],\n launchOptions,\n name: 'firefox'\n };\n case 'webkit':\n return {\n device: devices['Desktop Safari'],\n launchOptions,\n name: 'webkit'\n };\n case 'msedge':\n launchOptions.args = chromiumArgs;\n return {\n device: { ...devices['Desktop Edge'], channel: 'msedge' },\n launchOptions,\n name: 'msedge'\n };\n case 'chrome':\n launchOptions.args = chromiumArgs;\n return {\n device: { ...devices['Desktop Chrome'], channel: 'chrome' },\n launchOptions,\n name: 'chrome'\n };\n case 'chromium':\n default:\n launchOptions.args = chromiumArgs;\n return {\n device: devices['Desktop Chrome'],\n launchOptions,\n name: 'chromium'\n };\n }\n}\n\nexport function createSuiteProjects(\n suiteName: string,\n testDir: string,\n useConfig: Record<string, any> = {},\n projectConfig: Record<string, any> = {}\n) {\n const browsersToUse = getBrowsersToUse();\n const browserEnv = (env.PLAYWRIGHT_BROWSER || 'chrome').toLowerCase();\n\n return browsersToUse.map((browser) => {\n const { device, launchOptions } = getBrowserConfig(browser);\n\n return {\n name: browserEnv === 'all' ? `${suiteName} - ${browser}` : suiteName,\n testDir,\n use: {\n ...device,\n launchOptions,\n ...useConfig\n },\n ...projectConfig\n };\n });\n}\n\nexport function getBrowserProjects() {\n const browsersToUse = getBrowsersToUse();\n\n return browsersToUse.map((browser) => {\n const { device, launchOptions, name } = getBrowserConfig(browser);\n\n return {\n name,\n use: {\n ...device,\n launchOptions\n }\n };\n });\n}\n\nexport const getGlobalConfig: PlaywrightTestConfig = {\n timeout: timeouts.globalTest,\n globalTimeout: timeouts.globalSpec,\n expect: {\n /**\n * Maximum time expect() should wait for the condition to be met.\n * For example in `await expect(locator).toHaveText();`\n */\n timeout: timeouts.medium\n },\n /* Run tests in files in parallel */\n fullyParallel: true,\n /* Fail the build on CI if you accidentally left test.only in the source code. */\n forbidOnly: !!env.CI,\n /* Retry on CI only */\n retries: env.CI ? 2 : 0,\n /* Opt out of parallel tests on CI. */\n workers: 3,\n /* Reporter to use. See https://playwright.dev/docs/test-reporters */\n reporter: [['list'], ...getReporter()],\n globalSetup: require.resolve('./global.setup'),\n testMatch: ['**/*.e2e.ts'],\n use: {\n /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */\n actionTimeout: 40 * 1000,\n /* Base URL to use in actions like `await page.goto('/')`. */\n baseURL: env.PLAYWRIGHT_E2E_HOST,\n headless: env.PLAYWRIGHT_HEADLESS === 'true' || !!env.CI,\n ignoreHTTPSErrors: true,\n bypassCSP: true,\n /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */\n trace: 'retain-on-failure',\n video: 'retain-on-failure',\n screenshot: 'only-on-failure'\n },\n\n /* Configure projects for major browsers */\n projects: getBrowserProjects()\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './global.setup';\nexport * from './playwright.config';\nexport * from './global-variables';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport interface PersonModel {\n username?: string;\n password?: string;\n firstName?: string;\n lastName?: string;\n email?: string;\n enabled?: boolean;\n properties?: any;\n}\n\nexport class Person {\n id: string;\n password: string;\n firstName: string;\n lastName: string;\n email: string;\n enabled: boolean;\n properties: any;\n\n constructor(user: PersonModel) {\n this.id = user.username;\n this.password = user.password || user.username;\n this.firstName = user.firstName || user.username;\n this.lastName = user.lastName || user.username;\n this.email = user.email || `${user.username}@alfresco.com`;\n this.enabled = user.enabled || true;\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport {\n AdminTenantsApi,\n AdminUsersApi,\n AlfrescoApi,\n ContentClient,\n GroupsApi,\n NodesApi,\n PeopleApi,\n QueriesApi,\n SearchApi,\n SecurityGroupsApi,\n SecurityMarksApi,\n SitesApi,\n UploadApi,\n SharedlinksApi,\n FavoritesApi,\n TrashcanApi,\n PersonEntry,\n CommentsApi,\n CategoriesApi,\n TagsApi\n} from '@alfresco/js-api';\nimport { users } from '../base-config';\nimport { Person, PersonModel } from './people-api-models';\n\nexport interface AcaBackend {\n sites: SitesApi;\n upload: UploadApi;\n nodes: NodesApi;\n share: SharedlinksApi;\n favorites: FavoritesApi;\n trashCan: TrashcanApi;\n\n tearDown(): Promise<any>;\n}\n\nconst { BASE_URL } = process.env;\n\nconst config = {\n authType: 'BASIC',\n hostBpm: BASE_URL,\n hostEcm: BASE_URL,\n provider: 'ECM',\n contextRoot: 'alfresco'\n};\n\nexport class ApiClientFactory {\n public alfrescoApi: AlfrescoApi;\n public sites: SitesApi;\n public upload: UploadApi;\n public nodes: NodesApi;\n public people: PeopleApi;\n public adminUsers: AdminUsersApi;\n public adminTenant: AdminTenantsApi;\n public groups: GroupsApi;\n public queries: QueriesApi;\n public search: SearchApi;\n public securityGroupsApi: SecurityGroupsApi;\n public securityMarksApi: SecurityMarksApi;\n public contentClient: ContentClient;\n public share: SharedlinksApi;\n public favorites: FavoritesApi;\n public trashCan: TrashcanApi;\n public commentsApi: CommentsApi;\n public queriesApi: QueriesApi;\n public categoriesApi: CategoriesApi;\n public tagsApi: TagsApi;\n constructor() {\n this.alfrescoApi = new AlfrescoApi(config);\n }\n\n public async setUpAcaBackend(userName: string, password?: string): Promise<AcaBackend> {\n await this.login(userName, password);\n\n this.sites = new SitesApi(this.alfrescoApi);\n this.upload = new UploadApi(this.alfrescoApi);\n this.nodes = new NodesApi(this.alfrescoApi);\n this.people = new PeopleApi(this.alfrescoApi);\n this.adminUsers = new AdminUsersApi(this.alfrescoApi);\n this.adminTenant = new AdminTenantsApi(this.alfrescoApi);\n this.groups = new GroupsApi(this.alfrescoApi);\n this.queries = new QueriesApi(this.alfrescoApi);\n this.search = new SearchApi(this.alfrescoApi);\n this.securityGroupsApi = new SecurityGroupsApi(this.alfrescoApi);\n this.securityMarksApi = new SecurityMarksApi(this.alfrescoApi);\n this.share = new SharedlinksApi(this.alfrescoApi);\n this.favorites = new FavoritesApi(this.alfrescoApi);\n this.trashCan = new TrashcanApi(this.alfrescoApi);\n this.commentsApi = new CommentsApi(this.alfrescoApi);\n this.queriesApi = new QueriesApi(this.alfrescoApi);\n this.categoriesApi = new CategoriesApi(this.alfrescoApi);\n this.tagsApi = new TagsApi(this.alfrescoApi);\n\n return this;\n }\n\n async tearDown(): Promise<ApiClientFactory> {\n await this.alfrescoApi.logout();\n return this;\n }\n\n async login(userName: string, password?: string) {\n const predefinedUserKey = Object.keys(users).find((user) => user === userName || users[user].username === userName);\n const userToLog = predefinedUserKey ? users[predefinedUserKey] : undefined;\n let e: any;\n\n const user = userToLog?.username ?? userName;\n const userPassword = userToLog?.password ?? password;\n try {\n e = await this.alfrescoApi.login(user, userPassword);\n } catch (error) {\n console.error(`[API Client Factory] Log in user ${user} failed ${e}`);\n throw error;\n }\n }\n\n async loginUser(user: PersonModel) {\n let e: any;\n try {\n e = await this.alfrescoApi.login(user.username, user.password);\n } catch (error) {\n console.error(`[API Client Factory] Log in user ${user.username} failed ${e}`);\n throw error;\n }\n }\n\n async createUser(user: PersonModel): Promise<PersonEntry> {\n const person = new Person(user);\n const peopleApi = new PeopleApi(this.alfrescoApi);\n\n try {\n return peopleApi.createPerson(person);\n } catch (error) {\n console.error('[API Client Factory] createUser failed : ', error);\n return null;\n }\n }\n\n async changePassword(username: string, newPassword: string): Promise<PersonEntry> {\n const peopleApi = new PeopleApi(this.alfrescoApi);\n\n try {\n return peopleApi.updatePerson(username, { password: newPassword });\n } catch (error) {\n console.error('[API Client Factory] changePassword failed : ', error);\n return null;\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ApiClientFactory } from './api-client-factory';\nimport * as crypto from 'crypto';\n\nexport class RulesApi {\n private readonly apiService: ApiClientFactory;\n\n constructor() {\n this.apiService = new ApiClientFactory();\n }\n\n static async initialize(userName: string, password?: string): Promise<RulesApi> {\n const classObj = new RulesApi();\n await classObj.apiService.setUpAcaBackend(userName, password);\n return classObj;\n }\n\n private callApi(path: string, httpMethod: string, body: object = {}): Promise<any> {\n // APIs used by this service are still private and not yet available for public use\n const params = [{}, {}, {}, {}, body, ['application/json'], ['application/json']];\n return this.apiService.alfrescoApi.contentPrivateClient.callApi(path, httpMethod, ...params);\n }\n\n async createRule(nodeId: string, rule: Partial<Rule>, ruleSetId: string = '-default-'): Promise<Rule> {\n const response = await this.callApi(`/nodes/${nodeId}/rule-sets/${ruleSetId}/rules`, 'POST', { ...rule });\n return response.entry;\n }\n\n async createRandomRule(folderId: string, ruleName: string): Promise<Rule> {\n const randomActionsIndex = crypto.randomInt(0, ActionTypes.actions.length);\n const randomAction = ActionTypes.actions[randomActionsIndex];\n return this.createRule(folderId, {\n name: ruleName,\n isEnabled: true,\n actions: [randomAction]\n });\n }\n\n async createRandomRuleWithMultipleConditions(folderId: string, ruleName: string, numOfConditions: number): Promise<Rule> {\n if (numOfConditions > ConditionsTypes.conditions.length) {\n numOfConditions = ConditionsTypes.conditions.length;\n }\n const randomActionsIndex = crypto.randomInt(0, ActionTypes.actions.length);\n const randomAction = ActionTypes.actions[randomActionsIndex];\n const conditionsArray = [];\n for (let i = 0; i < numOfConditions; i++) {\n const randomIndex = crypto.randomInt(0, ConditionsTypes.conditions.length);\n const randomCondition = ConditionsTypes.conditions[randomIndex];\n conditionsArray.push(randomCondition);\n }\n return this.createRule(folderId, {\n name: ruleName,\n isEnabled: true,\n actions: [randomAction],\n conditions: {\n inverted: false,\n booleanMode: 'and',\n compositeConditions: conditionsArray\n }\n });\n }\n\n async createRandomRuleWithMultipleActions(folderId: string, ruleName: string, numOfActions: number): Promise<Rule> {\n if (numOfActions > ActionTypes.actions.length) {\n numOfActions = ActionTypes.actions.length;\n }\n const actionsArray = [];\n for (let i = 0; i < numOfActions; i++) {\n const randomIndex = crypto.randomInt(0, ActionTypes.actions.length);\n const randomAction = ActionTypes.actions[randomIndex];\n actionsArray.push(randomAction);\n }\n return this.createRule(folderId, {\n name: ruleName,\n isEnabled: true,\n actions: actionsArray\n });\n }\n\n async createRandomComplexRule(\n folderId: string,\n ruleName: string,\n numOfConditions: number,\n numOfActions: number,\n ruleDescription?: string\n ): Promise<Rule> {\n if (numOfConditions > ConditionsTypes.conditions.length) {\n numOfConditions = ConditionsTypes.conditions.length;\n }\n const conditionsArray = [];\n for (let i = 0; i < numOfConditions; i++) {\n const randomIndex = crypto.randomInt(0, ConditionsTypes.conditions.length);\n const randomCondition = ConditionsTypes.conditions[randomIndex];\n conditionsArray.push(randomCondition);\n }\n if (numOfActions > ActionTypes.actions.length) {\n numOfActions = ActionTypes.actions.length;\n }\n const actionsArray = [];\n for (let i = 0; i < numOfActions; i++) {\n const randomIndex = crypto.randomInt(0, ActionTypes.actions.length);\n const randomAction = ActionTypes.actions[randomIndex];\n actionsArray.push(randomAction);\n }\n return this.createRule(folderId, {\n name: ruleName,\n description: ruleDescription,\n isEnabled: true,\n actions: actionsArray,\n conditions: {\n inverted: false,\n booleanMode: 'and',\n compositeConditions: conditionsArray\n }\n });\n }\n\n async createRuleWithRandomAspects(folderId: string, ruleName: string): Promise<Rule> {\n return this.createRule(folderId, {\n name: ruleName,\n isEnabled: true,\n actions: [\n {\n actionDefinitionId: 'add-features',\n params: {\n 'aspect-name': 'cm:auditable'\n }\n },\n {\n actionDefinitionId: 'add-features',\n params: {\n 'aspect-name': 'app:configurable'\n }\n },\n {\n actionDefinitionId: 'add-features',\n params: {\n 'aspect-name': 'exif:exif'\n }\n }\n ]\n });\n }\n\n async createRuleWithDestinationFolder(\n folderId: string,\n ruleName: string,\n actionType: 'move' | 'copy' | 'import',\n destinationFolderId: string\n ): Promise<Rule> {\n return this.createRule(folderId, {\n name: ruleName,\n isEnabled: true,\n actions: [\n {\n actionDefinitionId: actionType,\n params: {\n 'destination-folder': destinationFolderId\n }\n }\n ]\n });\n }\n}\n\ntype RuleTrigger = 'inbound' | 'update' | 'outbound';\n\nexport interface Rule {\n id: string;\n name: string;\n description: string;\n isEnabled: boolean;\n isInheritable: boolean;\n isAsynchronous: boolean;\n errorScript: string;\n isShared: boolean;\n triggers: RuleTrigger[];\n conditions: any;\n actions: RuleAction[];\n}\n\nexport interface RuleAction {\n actionDefinitionId: string;\n params?: { [key: string]: unknown };\n}\n\nexport class ActionTypes {\n static readonly ADDFEATURES = new ActionTypes('ADDFEATURES', {\n actionDefinitionId: 'add-features',\n params: { 'aspect-name': 'cm:thumbnailed' }\n });\n static readonly CHECKIN = new ActionTypes('CHECKIN', {\n actionDefinitionId: 'check-in',\n params: {\n description: 'test',\n minorChange: true\n }\n });\n static readonly SPECIALISETYPE = new ActionTypes('SPECIALISETYPE', {\n actionDefinitionId: 'specialise-type',\n params: { 'type-name': 'sys:base' }\n });\n static readonly SETPROPERTYVALUE = new ActionTypes('SETPROPERTYVALUE', {\n actionDefinitionId: 'set-property-value',\n params: { property: 'dl:ganttPercentComplete', value: 'test' }\n });\n static readonly actions = [\n ActionTypes.ADDFEATURES.value,\n ActionTypes.CHECKIN.value,\n ActionTypes.SPECIALISETYPE.value,\n ActionTypes.SETPROPERTYVALUE.value\n ];\n constructor(\n public key: string,\n public value: RuleAction\n ) {}\n}\n\nexport class ConditionsTypes {\n static readonly MIMETYPE = new ConditionsTypes('MIMETYPE', {\n inverted: false,\n booleanMode: 'and',\n simpleConditions: [\n {\n field: 'mimetype',\n comparator: 'equals',\n parameter: 'video/3gpp'\n }\n ]\n });\n static readonly CMNAME = new ConditionsTypes('CM:NAME', {\n inverted: false,\n booleanMode: 'and',\n simpleConditions: [\n {\n field: 'cm:name',\n comparator: 'equals',\n parameter: 'testname'\n }\n ]\n });\n static readonly SIZE = new ConditionsTypes('SIZE', {\n inverted: false,\n booleanMode: 'and',\n simpleConditions: [\n {\n field: 'size',\n comparator: 'equals',\n parameter: '345'\n }\n ]\n });\n static readonly TAG = new ConditionsTypes('TAG', {\n inverted: false,\n booleanMode: 'and',\n simpleConditions: [\n {\n field: 'tag',\n comparator: 'equals',\n parameter: 'testtag'\n }\n ]\n });\n static readonly conditions = [ConditionsTypes.MIMETYPE.value, ConditionsTypes.CMNAME.value, ConditionsTypes.SIZE.value, ConditionsTypes.TAG.value];\n constructor(\n public key: string,\n public value: any\n ) {}\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport * as fs from 'fs';\nimport { ApiClientFactory } from './api-client-factory';\nimport { Utils, waitForApi } from '../utils';\nimport { NodeBodyCreate, NodeEntry, ResultSetPaging, SearchRequest } from '@alfresco/js-api';\n\nexport class FileActionsApi {\n private readonly apiService: ApiClientFactory;\n\n constructor() {\n this.apiService = new ApiClientFactory();\n }\n\n static async initialize(userName: string, password?: string): Promise<FileActionsApi> {\n const classObj = new FileActionsApi();\n await classObj.apiService.setUpAcaBackend(userName, password);\n return classObj;\n }\n\n async uploadFile(fileLocation: string, fileName: string, parentFolderId: string): Promise<NodeEntry> {\n const file = fs.createReadStream(fileLocation);\n return this.apiService.upload.uploadFile(file, '', parentFolderId, null, {\n name: fileName,\n nodeType: 'cm:content',\n renditions: 'doclib'\n });\n }\n\n async uploadFileWithRename(\n fileLocation: string,\n newName: string,\n parentId: string = '-my-',\n title: string = '',\n description: string = ''\n ): Promise<NodeEntry> {\n const file = fs.createReadStream(fileLocation);\n const nodeProps = {\n properties: {\n 'cm:title': title,\n 'cm:description': description\n }\n } as NodeBodyCreate;\n\n const opts = {\n name: newName,\n nodeType: 'cm:content'\n };\n\n try {\n return this.apiService.upload.uploadFile(file, '', parentId, nodeProps, opts);\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n async lockNodes(nodeIds: string[], lockType: string = 'ALLOW_OWNER_CHANGES'): Promise<void> {\n try {\n for (const nodeId of nodeIds) {\n await this.apiService.nodes.lockNode(nodeId, { type: lockType });\n }\n } catch {}\n }\n\n async getNodeById(id: string): Promise<NodeEntry | null> {\n try {\n return this.apiService.nodes.getNode(id);\n } catch {\n return null;\n }\n }\n\n async getNodeProperty(nodeId: string, property: string): Promise<string> {\n try {\n const node = await this.getNodeById(nodeId);\n return node.entry.properties?.[property] || '';\n } catch {\n return '';\n }\n }\n\n private async getLockType(nodeId: string): Promise<string> {\n try {\n const lockType = await this.getNodeProperty(nodeId, 'cm:lockType');\n return lockType || '';\n } catch {\n return '';\n }\n }\n\n async isFileLockedWriteWithRetry(nodeId: string, expect: boolean): Promise<boolean> {\n const data = {\n expect: expect,\n retry: 5\n };\n let isLocked = false;\n try {\n const locked = async () => {\n isLocked = (await this.getLockType(nodeId)) === 'WRITE_LOCK';\n if (isLocked !== data.expect) {\n return Promise.reject(isLocked);\n } else {\n return Promise.resolve(isLocked);\n }\n };\n return await Utils.retryCall(locked, data.retry);\n } catch {}\n return isLocked;\n }\n\n private async queryNodesNames(searchTerm: string): Promise<ResultSetPaging> {\n const data = {\n query: {\n query: `cm:name:\\\"${searchTerm}*\\\"`,\n language: 'afts'\n },\n filterQueries: [{ query: `+TYPE:'cm:folder' OR +TYPE:'cm:content'` }]\n };\n\n try {\n return this.apiService.search.search(data);\n } catch {\n return new ResultSetPaging();\n }\n }\n\n async waitForNodes(searchTerm: string, data: { expect: number }): Promise<void> {\n const predicate = (totalItems: number) => totalItems === data.expect;\n\n const apiCall = async () => {\n try {\n return (await this.queryNodesNames(searchTerm)).list.pagination.totalItems;\n } catch (error) {\n return 0;\n }\n };\n\n try {\n await waitForApi(apiCall, predicate, 30, 2500);\n } catch {\n const actual = await apiCall();\n throw new Error(`waitForNodes: Timed out waiting for \"${searchTerm}\" — expected ${data.expect} nodes, found ${actual}`);\n }\n }\n\n private async queryNodesSearchHighlight(searchTerm: string): Promise<ResultSetPaging> {\n const data: SearchRequest = {\n query: {\n query: `cm:name:\"${searchTerm}*\"`,\n language: 'afts'\n },\n filterQueries: [{ query: `+TYPE:'cm:folder' OR +TYPE:'cm:content'` }],\n highlight: {\n prefix: \"<span class='aca-highlight'>\",\n postfix: '</span>',\n fields: [\n {\n field: 'cm:title'\n },\n {\n field: 'cm:name'\n },\n {\n field: 'cm:description',\n snippetCount: 1\n },\n {\n field: 'cm:content',\n snippetCount: 1\n }\n ]\n }\n };\n\n try {\n return this.apiService.search.search(data);\n } catch {\n return new ResultSetPaging();\n }\n }\n\n async waitForNodesSearchHighlight(searchTerm: string, data: { expect: number }): Promise<void> {\n const predicate = (totalItems: number): boolean => totalItems === data.expect;\n\n const apiCall = async (): Promise<number> => {\n try {\n return (await this.queryNodesSearchHighlight(searchTerm)).list.pagination.totalItems;\n } catch (error) {\n console.warn(`queryNodesSearchHighlight failed for \"${searchTerm}\":`, error);\n return 0;\n }\n };\n\n try {\n await waitForApi(apiCall, predicate, 30, 2500);\n console.log(`waitForNodesSearchHighlight: Found ${data.expect} nodes with search term \"${searchTerm}\"`);\n } catch (error) {\n console.error(`Error: ${error}`);\n }\n }\n\n async updateNodeContent(nodeId: string, content: string, majorVersion: boolean = true, comment?: string, newName?: string): Promise<NodeEntry> {\n try {\n const opts: { [key: string]: string | boolean } = {\n majorVersion: majorVersion,\n comment: comment,\n name: newName\n };\n return this.apiService.nodes.updateNodeContent(nodeId, content, opts);\n } catch (error) {\n console.error(`${this.constructor.name} ${this.updateNodeContent.name}`, error);\n return Promise.reject(error);\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ApiClientFactory } from './api-client-factory';\nimport { SharedLinkEntry, SharedLinkPaging } from '@alfresco/js-api';\nimport { Utils } from '../utils';\n\nexport class SharedLinksApi {\n private readonly apiService: ApiClientFactory;\n\n constructor() {\n this.apiService = new ApiClientFactory();\n }\n static async initialize(userName: string, password?: string): Promise<SharedLinksApi> {\n const classObj = new SharedLinksApi();\n await classObj.apiService.setUpAcaBackend(userName, password);\n return classObj;\n }\n\n async shareFileById(id: string, expireDate?: Date): Promise<SharedLinkEntry | null> {\n try {\n const data = {\n nodeId: id,\n expiresAt: expireDate\n };\n return this.apiService.share.createSharedLink(data);\n } catch (error) {\n return null;\n }\n }\n\n async shareFilesByIds(ids: string[], expireDate?: Date): Promise<SharedLinkEntry[]> {\n const sharedLinks: SharedLinkEntry[] = [];\n try {\n if (ids && ids.length > 0) {\n for (const id of ids) {\n const sharedLink = await this.shareFileById(id, expireDate);\n sharedLinks.push(sharedLink);\n }\n }\n } catch (error) {\n console.error(`SharedLinksApi shareFilesByIds : catch : `, error);\n }\n return sharedLinks;\n }\n\n private async getSharedLinks(maxItems: number = 250): Promise<SharedLinkPaging> {\n try {\n const opts = {\n maxItems\n };\n return this.apiService.share.listSharedLinks(opts);\n } catch (error) {\n console.error(`SharedLinksApi getSharedLinks : catch : `, error);\n return new SharedLinkPaging();\n }\n }\n\n async waitForFilesToBeShared(filesIds: string[]): Promise<void> {\n try {\n const sharedFile = async () => {\n const sharedFiles = (await this.getSharedLinks()).list.entries.map((link) => link.entry.nodeId);\n const foundItems = filesIds.every((id) => sharedFiles.includes(id));\n if (foundItems) {\n return Promise.resolve(foundItems);\n } else {\n return Promise.reject(foundItems);\n }\n };\n\n return await Utils.retryCall(sharedFile);\n } catch (error) {\n console.error(`SharedLinksApi waitForFilesToBeShared : catch : ${error}`);\n console.error(`\\tWait timeout reached waiting for files to be shared`);\n }\n }\n\n private async getSharedIdOfNode(fileId: string): Promise<string> {\n try {\n const sharedLinksEntries = (await this.getSharedLinks())?.list.entries;\n const found = sharedLinksEntries.find((sharedLink) => sharedLink.entry.nodeId === fileId);\n return found?.entry.id;\n } catch (error) {\n console.error(`SharedLinksApi getSharedIdOfNode : catch : `, error);\n return null;\n }\n }\n\n async unshareFileById(fileId: string): Promise<void> {\n try {\n const sharedId = await this.getSharedIdOfNode(fileId);\n return this.apiService.share.deleteSharedLink(sharedId);\n } catch (error) {\n console.error(`SharedLinksApi unshareFileById : catch : `, error);\n }\n }\n\n async waitForFilesToNotBeShared(filesIds: string[]): Promise<any> {\n try {\n const sharedFile = async () => {\n const sharedFiles = (await this.getSharedLinks()).list.entries.map((link) => link.entry.nodeId);\n\n const foundItems = filesIds.some((id) => {\n return sharedFiles.includes(id);\n });\n\n if (foundItems) {\n return Promise.reject(foundItems);\n } else {\n return Promise.resolve(foundItems);\n }\n };\n\n return await Utils.retryCall(sharedFile);\n } catch (error) {\n console.error(`SharedLinksApi waitForFilesToNotBeShared : catch : ${error}`);\n console.error(`\\tWait timeout reached waiting for files to no longer be shared`);\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ApiClientFactory } from './api-client-factory';\nimport { FavoriteEntry, FavoritePaging } from '@alfresco/js-api';\nimport { Utils } from '../utils';\n\nexport class FavoritesPageApi {\n private readonly apiService: ApiClientFactory;\n\n constructor() {\n this.apiService = new ApiClientFactory();\n }\n static async initialize(userName: string, password?: string): Promise<FavoritesPageApi> {\n const classObj = new FavoritesPageApi();\n await classObj.apiService.setUpAcaBackend(userName, password);\n return classObj;\n }\n async addFavoriteById(nodeType: 'file' | 'folder' | 'site', id: string): Promise<FavoriteEntry> {\n const guid = nodeType === 'site' ? (await this.apiService.sites.getSite(id)).entry.guid : id;\n const data = {\n target: {\n [nodeType]: {\n guid: guid\n }\n }\n };\n return this.apiService.favorites.createFavorite('-me-', data);\n }\n\n async addFavoritesByIds(nodeType: 'file' | 'folder' | 'site', ids: string[]): Promise<FavoriteEntry[]> {\n const favorites: FavoriteEntry[] = [];\n try {\n if (ids && ids.length > 0) {\n for (const id of ids) {\n const favorite = await this.addFavoriteById(nodeType, id);\n favorites.push(favorite);\n }\n }\n } catch {}\n return favorites;\n }\n\n private async getFavorites(username: string): Promise<FavoritePaging> {\n try {\n return this.apiService.favorites.listFavorites(username);\n } catch {\n return new FavoritePaging();\n }\n }\n\n async isFavorite(username: string, nodeId: string): Promise<boolean> {\n try {\n return JSON.stringify((await this.getFavorites(username)).list.entries).includes(nodeId);\n } catch {\n return false;\n }\n }\n\n async isFavoriteWithRetry(username: string, nodeId: string, data: { expect: boolean }): Promise<boolean> {\n let isFavorite = false;\n try {\n const favorite = async () => {\n isFavorite = await this.isFavorite(username, nodeId);\n if (isFavorite !== data.expect) {\n return Promise.reject(isFavorite);\n } else {\n return Promise.resolve(isFavorite);\n }\n };\n return await Utils.retryCall(favorite);\n } catch (error) {}\n return isFavorite;\n }\n\n async getFavoritesTotalItems(username: string): Promise<number> {\n try {\n return (await this.apiService.favorites.listFavorites(username)).list.pagination.totalItems;\n } catch {\n return -1;\n }\n }\n\n async waitForApi(username: string, data: { expect: number }) {\n try {\n const favoriteFiles = async () => {\n const totalItems = await this.getFavoritesTotalItems(username);\n if (totalItems !== data.expect) {\n return Promise.reject(totalItems);\n } else {\n return Promise.resolve(totalItems);\n }\n };\n return await Utils.retryCall(favoriteFiles);\n } catch {}\n }\n\n async removeFavoritesByIds(username: string, ids: string[]): Promise<void> {\n try {\n if (ids && ids.length > 0) {\n for (const id of ids) {\n await this.apiService.favorites.deleteFavorite(username, id);\n }\n }\n } catch (error) {\n console.error('FavoritesApi: removeFavoritesByIds failed ', error);\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NodeBodyCreate } from '@alfresco/js-api';\n\nconst NODE_TYPE_FILE = 'cm:content';\nconst NODE_TYPE_FOLDER = 'cm:folder';\nconst NODE_TITLE = 'cm:title';\nconst NODE_DESCRIPTION = 'cm:description';\n\nexport interface NodeContentTree {\n name?: string;\n files?: string[];\n folders?: (string | NodeContentTree)[];\n title?: string;\n description?: string;\n}\n\nexport function flattenNodeContentTree(content: NodeContentTree, relativePath: string = '/'): NodeBodyCreate[] {\n const { name, files, folders, title, description } = content;\n const aspectNames: string[] = ['cm:versionable'];\n let data: NodeBodyCreate[] = [];\n\n const properties = {\n [NODE_TITLE]: title,\n [NODE_DESCRIPTION]: description\n };\n\n if (name) {\n data = data.concat([\n {\n nodeType: NODE_TYPE_FOLDER,\n name,\n relativePath,\n properties\n }\n ]);\n\n relativePath = relativePath === '/' ? `/${name}` : `${relativePath}/${name}`;\n }\n\n if (folders) {\n const foldersData: NodeBodyCreate[] = folders\n .map((folder: string | NodeContentTree): NodeBodyCreate[] => {\n const folderData: NodeContentTree = typeof folder === 'string' ? { name: folder } : folder;\n\n return flattenNodeContentTree(folderData, relativePath);\n })\n .reduce((nodesData: NodeBodyCreate[], folderData: NodeBodyCreate[]) => nodesData.concat(folderData), []);\n\n data = data.concat(foldersData);\n }\n\n if (files) {\n const filesData: NodeBodyCreate[] = files.map(\n (filename: string): NodeBodyCreate => ({\n nodeType: NODE_TYPE_FILE,\n name: filename,\n relativePath,\n aspectNames\n })\n );\n\n data = data.concat(filesData);\n }\n\n return data;\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ApiClientFactory } from './api-client-factory';\nimport { NodeChildAssociationPaging, NodeEntry, NodePaging, NodesIncludeQuery, NodeBodyUpdate } from '@alfresco/js-api';\nimport { NodeContentTree, flattenNodeContentTree } from './node-content-tree';\nimport { Utils } from '../utils';\n\nexport class NodesApi {\n private readonly apiService: ApiClientFactory;\n\n constructor() {\n this.apiService = new ApiClientFactory();\n }\n\n static async initialize(userName: string, password?: string): Promise<NodesApi> {\n const classObj = new NodesApi();\n await classObj.apiService.setUpAcaBackend(userName, password);\n return classObj;\n }\n\n async createFolder(\n name: string,\n parentId: string = '-my-',\n title: string = '',\n description: string = '',\n author: string = '',\n aspectNames: string[] = []\n ): Promise<NodeEntry> {\n try {\n return await this.createNode('cm:folder', name, parentId, title, description, null, author, true, aspectNames);\n } catch (error) {\n throw new Error(`${this.constructor.name} ${this.createFolder.name}: ${error}`);\n }\n }\n\n async createFile(\n name: string,\n parentId: string = '-my-',\n title: string = '',\n description: string = '',\n author: string = '',\n majorVersion: boolean = true,\n aspectNames: string[] = []\n ): Promise<NodeEntry> {\n try {\n return await this.createNode('cm:content', name, parentId, title, description, null, author, majorVersion, aspectNames);\n } catch (error) {\n throw new Error(`${this.constructor.name} ${this.createFile.name}: ${error}`);\n }\n }\n\n async createFiles(names: string[], relativePath = '/'): Promise<NodePaging> {\n try {\n return await this.createContent({ files: names }, relativePath);\n } catch (error) {\n throw new Error(`${this.constructor.name} ${this.createFiles.name}: ${error}`);\n }\n }\n\n async createMultipleFiles(count: number, parentId = '-my-'): Promise<NodeEntry[]> {\n const createdFiles: NodeEntry[] = [];\n for (let i = 0; i < count; i++) {\n const file = await this.createFile(`file-${Utils.random()}-${i}`, parentId);\n if (file) {\n createdFiles.push(file);\n }\n }\n return createdFiles;\n }\n\n async createFolders(names: string[], relativePath = '/'): Promise<NodePaging> {\n try {\n return await this.createContent({ folders: names }, relativePath);\n } catch (error) {\n throw new Error(`${this.constructor.name} ${this.createFolders.name}: ${error}`);\n }\n }\n\n async deleteDeletedNode(name: string): Promise<void> {\n try {\n await this.apiService.trashCan.deleteDeletedNode(name);\n } catch (error) {\n console.error(`${this.constructor.name} ${this.deleteDeletedNode.name}: ${error}`);\n }\n }\n\n private async createNode(\n nodeType: string,\n name: string,\n parentId: string = '-my-',\n title: string = '',\n description: string = '',\n imageProps: any = null,\n author: string = '',\n majorVersion: boolean = true,\n aspectNames: string[] = []\n ): Promise<NodeEntry> {\n const nodeBody = {\n name,\n nodeType,\n relativePath: '/',\n properties: {\n 'cm:title': title,\n 'cm:description': description,\n 'cm:author': author\n },\n aspectNames\n };\n if (imageProps) {\n nodeBody.properties = Object.assign(nodeBody.properties, imageProps);\n }\n\n try {\n return this.apiService.nodes.createNode(parentId, nodeBody, {\n majorVersion\n });\n } catch (error) {\n throw new Error(`${this.constructor.name} ${this.createNode.name}: ${error}`);\n }\n }\n\n async renameNode(nodeId: string, newName: string): Promise<NodeEntry | null> {\n try {\n return this.apiService.nodes.updateNode(nodeId, { name: newName });\n } catch (error) {\n console.error(`${this.constructor.name} ${this.renameNode.name}`, error);\n return null;\n }\n }\n\n /**\n * Delete multiple nodes.\n * @param nodeIds The list of node IDs to delete.\n * @param permanent Delete permanently, without moving to the trashcan? (default: true)\n */\n async deleteNodes(nodeIds: string[], permanent: boolean = true): Promise<any> {\n try {\n await this.apiService.nodes.deleteNodes(nodeIds, { permanent });\n } catch (error) {\n console.error(`${this.constructor.name} ${this.deleteNodes.name}`, error);\n }\n }\n\n async updateNode(nodeId: string, nodeBodyUpdate: NodeBodyUpdate, opts?: NodesIncludeQuery): Promise<NodeEntry | null> {\n try {\n return await this.apiService.nodes.updateNode(nodeId, nodeBodyUpdate, opts);\n } catch (error) {\n console.error(`${this.constructor.name} ${this.updateNode.name}`, error);\n return null;\n }\n }\n\n /**\n * Delete all nodes of the currently logged in user\n * @param userNodeId The id of User node, all child nodes of \"userNodeId\" will be gathered as a list and deleted ( e.g.: \"-my-\" - User Homes folder)\n */\n async deleteCurrentUserNodes(): Promise<void> {\n try {\n const userNodes = (await this.getNodeChildren('-my-'))?.list?.entries ?? [];\n const userNodesIds = userNodes.map((nodeChild) => nodeChild.entry.id);\n await this.deleteNodes(userNodesIds);\n } catch (error) {\n console.error(`${this.constructor.name} ${this.deleteCurrentUserNodes.name}`, error);\n }\n }\n\n async lockNodes(nodeIds: string[], lockType: string = 'ALLOW_OWNER_CHANGES') {\n try {\n for (const nodeId of nodeIds) {\n await this.apiService.nodes.lockNode(nodeId, { type: lockType });\n }\n } catch (error) {\n console.error(`${this.constructor.name} ${this.lockNodes.name}`, error);\n }\n }\n\n async unlockNodes(nodeIds: string[]) {\n try {\n for (const nodeId of nodeIds) {\n await this.apiService.nodes.unlockNode(nodeId);\n }\n } catch (error) {\n console.error(`${this.constructor.name} ${this.unlockNodes.name}`, error);\n }\n }\n\n async createContent(content: NodeContentTree, relativePath: string = '/'): Promise<NodePaging> {\n try {\n return this.apiService.nodes.createNode('-my-', flattenNodeContentTree(content, relativePath) as any);\n } catch (error) {\n throw new Error(`${this.constructor.name} ${this.createContent.name}: ${error}`);\n }\n }\n\n async getNodeById(id: string): Promise<NodeEntry> {\n try {\n return this.apiService.nodes.getNode(id);\n } catch (error) {\n throw new Error(`${this.constructor.name} ${this.getNodeById.name}: ${error}`);\n }\n }\n\n async getNodeIdFromParent(name: string, parentId: string): Promise<string> {\n try {\n const children = (await this.getNodeChildren(parentId))?.list?.entries ?? [];\n return children.find((elem) => elem.entry.name === name)?.entry.id ?? '';\n } catch (error) {\n console.error(`${this.constructor.name} ${this.getNodeIdFromParent.name}`, error);\n return '';\n }\n }\n\n private async getNodeChildren(nodeId: string): Promise<NodeChildAssociationPaging | null> {\n try {\n const opts = {\n include: ['properties']\n };\n return this.apiService.nodes.listNodeChildren(nodeId, opts);\n } catch (error) {\n console.error(`${this.constructor.name} ${this.getNodeChildren.name}`, error);\n return null;\n }\n }\n\n async deleteNodeById(id: string, permanent: boolean = true): Promise<void> {\n try {\n await this.apiService.nodes.deleteNode(id, { permanent });\n } catch (error) {\n console.error(`${this.constructor.name} ${this.deleteNodeById.name}`, error);\n }\n }\n\n async cleanupNodeTemplatesItems(nodeNames: string[]): Promise<void> {\n try {\n const templatesFolderId = await this.getNodeTemplatesFolderId();\n for (const nodeName of nodeNames) {\n const nodeId = await this.getNodeIdFromParent(nodeName, templatesFolderId);\n await this.deleteNodeById(nodeId);\n }\n } catch (error) {\n console.error('Admin Actions - cleanupNodeTemplatesItems failed : ', error);\n }\n }\n\n async cleanupSpaceTemplatesItems(nodeNames: string[]): Promise<void> {\n try {\n const spaceTemplatesNodeId = await this.getSpaceTemplatesFolderId();\n for (const nodeName of nodeNames) {\n const nodeId = await this.getNodeIdFromParent(nodeName, spaceTemplatesNodeId);\n await this.deleteNodeById(nodeId);\n }\n } catch (error) {\n console.error('Admin Actions - cleanupSpaceTemplatesFolder failed : ', error);\n }\n }\n\n async getNodeTemplatesFolderId(): Promise<string> {\n try {\n return this.getNodeIdFromParent('Node Templates', await this.getDataDictionaryId());\n } catch (error) {\n console.error('Admin Actions - getNodeTemplatesFolderId failed : ', error);\n return '';\n }\n }\n\n async getSpaceTemplatesFolderId(): Promise<string> {\n try {\n return this.getNodeIdFromParent('Space Templates', await this.getDataDictionaryId());\n } catch (error) {\n console.error('Admin Actions - getSpaceTemplatesFolderId failed : ', error);\n return '';\n }\n }\n\n private async getDataDictionaryId(): Promise<string> {\n return this.getNodeIdFromParent('Data Dictionary', '-root-').catch((error) => {\n console.error('Admin Actions - getDataDictionaryId failed : ', error);\n return '';\n });\n }\n\n async setGranularPermission(nodeId: string, username: string, role: string, inheritPermissions = false): Promise<NodeEntry | null> {\n const data = {\n permissions: {\n isInheritanceEnabled: inheritPermissions,\n locallySet: [\n {\n authorityId: username,\n name: role\n }\n ]\n }\n };\n\n try {\n return this.apiService.nodes.updateNode(nodeId, data);\n } catch (error) {\n console.error(`${this.constructor.name} ${this.setGranularPermission.name}`, error);\n return null;\n }\n }\n\n async removeUserAccessOnNodeTemplate(nodeName: string): Promise<NodeEntry | null> {\n try {\n const templatesRootFolderId = await this.getNodeTemplatesFolderId();\n const nodeId: string = await this.getNodeIdFromParent(nodeName, templatesRootFolderId);\n\n return this.setInheritPermissions(nodeId, false);\n } catch (error) {\n console.error('Admin Actions - removeUserAccessOnNodeTemplate failed : ', error);\n return null;\n }\n }\n\n async removeUserAccessOnSpaceTemplate(nodeName: string): Promise<NodeEntry | null> {\n try {\n const templatesRootFolderId = await this.getSpaceTemplatesFolderId();\n const nodeId: string = await this.getNodeIdFromParent(nodeName, templatesRootFolderId);\n\n return this.setInheritPermissions(nodeId, false);\n } catch (error) {\n console.error('Admin Actions - removeUserAccessOnSpaceTemplate failed : ', error);\n return null;\n }\n }\n\n async setInheritPermissions(nodeId: string, inheritPermissions: boolean): Promise<NodeEntry | null> {\n const data = {\n permissions: {\n isInheritanceEnabled: inheritPermissions\n }\n };\n\n try {\n return this.apiService.nodes.updateNode(nodeId, data);\n } catch (error) {\n console.error(`${this.constructor.name} ${this.setInheritPermissions.name}`, error);\n return null;\n }\n }\n\n private async addAspects(nodeId: string, aspectNames: string[]): Promise<NodeEntry | null> {\n try {\n return this.apiService.nodes.updateNode(nodeId, { aspectNames });\n } catch (error) {\n console.error(`${this.constructor.name} ${this.addAspects.name}`, error);\n return null;\n }\n }\n\n async createFileLink(originalNodeId: string, destinationId: string): Promise<NodeEntry | null> {\n const name = (await this.getNodeById(originalNodeId)).entry.name;\n const nodeBody = {\n name: `Link to ${name}.url`,\n nodeType: 'app:filelink',\n properties: {\n 'cm:destination': originalNodeId\n }\n };\n\n try {\n const link = await this.apiService.nodes.createNode(destinationId, nodeBody);\n await this.addAspects(originalNodeId, ['app:linked']);\n return link;\n } catch (error) {\n console.error(`${this.constructor.name} ${this.createFileLink.name}`, error);\n return null;\n }\n }\n\n async createFolderLink(originalNodeId: string, destinationId: string): Promise<NodeEntry | null> {\n const name = (await this.getNodeById(originalNodeId)).entry.name;\n const nodeBody = {\n name: `Link to ${name}.url`,\n nodeType: 'app:folderlink',\n properties: {\n 'cm:title': `Link to ${name}.url`,\n 'cm:destination': originalNodeId,\n 'cm:description': `Link to ${name}.url`,\n 'app:icon': 'space-icon-link'\n }\n };\n\n try {\n const link = await this.apiService.nodes.createNode(destinationId, nodeBody);\n await this.addAspects(originalNodeId, ['app:linked']);\n return link;\n } catch (error) {\n console.error(`${this.constructor.name} ${this.createFolderLink.name}`, error);\n return null;\n }\n }\n\n async createLinkToFileName(originalFileName: string, originalFileParentId: string, destinationParentId?: string): Promise<NodeEntry | null> {\n destinationParentId ??= originalFileParentId;\n\n try {\n const nodeId = await this.getNodeIdFromParent(originalFileName, originalFileParentId);\n\n return this.createFileLink(nodeId, destinationParentId);\n } catch (error) {\n throw new Error(`Admin Actions - createLinkToFileName failed : ${error}`);\n }\n }\n\n async createLinkToFolderName(originalFolderName: string, originalFolderParentId: string, destinationParentId?: string): Promise<NodeEntry | null> {\n destinationParentId ??= originalFolderParentId;\n\n try {\n const nodeId = await this.getNodeIdFromParent(originalFolderName, originalFolderParentId);\n return this.createFolderLink(nodeId, destinationParentId);\n } catch (error) {\n throw new Error(`Admin Actions - createLinkToFolderName failed : ${error}`);\n }\n }\n\n async getNodeProperty(nodeId: string, property: string): Promise<string> {\n try {\n const node = await this.getNodeById(nodeId);\n return node.entry.properties?.[property] ?? '';\n } catch (error) {\n throw new Error(`${this.constructor.name} ${this.getNodeProperty.name}: ${error}`);\n }\n }\n\n async isFileShared(nodeId: string): Promise<boolean> {\n try {\n const sharedId = await this.getNodeProperty(nodeId, 'qshare:sharedId');\n return sharedId !== '';\n } catch (error) {\n throw new Error(`${this.constructor.name} ${this.isFileShared.name}: ${error}`);\n }\n }\n\n private async getLockType(nodeId: string): Promise<string> {\n try {\n const lockType = await this.getNodeProperty(nodeId, 'cm:lockType');\n return lockType || '';\n } catch (error) {\n throw new Error(`${this.constructor.name} ${this.getLockType.name}: ${error}`);\n }\n }\n\n async isFileLockedWrite(nodeId: string): Promise<boolean> {\n try {\n return (await this.getLockType(nodeId)) === 'WRITE_LOCK';\n } catch (error) {\n throw new Error(`${this.constructor.name} ${this.isFileLockedWrite.name}: ${error}`);\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ApiClientFactory } from './api-client-factory';\nimport {\n Site,\n SiteBodyCreate,\n SiteEntry,\n SiteMemberEntry,\n SiteMembershipBodyCreate,\n SiteMembershipBodyUpdate,\n SiteMembershipRequestBodyCreate,\n SiteMembershipRequestEntry\n} from '@alfresco/js-api';\n\nexport class SitesApi {\n private readonly apiService: ApiClientFactory;\n\n constructor() {\n this.apiService = new ApiClientFactory();\n }\n static async initialize(userName: string, password?: string): Promise<SitesApi> {\n const classObj = new SitesApi();\n await classObj.apiService.setUpAcaBackend(userName, password);\n return classObj;\n }\n\n async createSite(title: string, visibility?: string, description?: string, siteId?: string): Promise<SiteEntry> {\n const site = {\n title,\n visibility: visibility || Site.VisibilityEnum.PUBLIC,\n description: description,\n id: siteId || title\n } as SiteBodyCreate;\n\n try {\n return this.apiService.sites.createSite(site);\n } catch (error) {\n throw new Error(`SitesApi ${this.createSite.name}: ${error}`);\n }\n }\n\n async getDocLibId(siteId: string): Promise<string> {\n try {\n const id = (await this.apiService.sites.listSiteContainers(siteId)).list?.entries?.[0]?.entry?.id;\n if (!id) {\n throw new Error(`Document library not found for site ${siteId}`);\n }\n return id;\n } catch (error) {\n throw new Error(`Failed to get document library ID for site ${siteId}: ${error}`);\n }\n }\n\n /**\n * Delete multiple sites/libraries.\n * @param siteIds The list of the site/library IDs to delete.\n * @param permanent Delete permanently, without moving to the trashcan? (default: true)\n */\n async deleteSites(siteIds: string[], permanent: boolean = true) {\n try {\n if (siteIds && siteIds.length > 0) {\n for (const siteId of siteIds) {\n await this.apiService.sites.deleteSite(siteId, { permanent });\n }\n }\n } catch (error) {\n console.error(`${this.constructor.name} ${this.deleteSites.name}`, error);\n }\n }\n\n async updateSiteMember(siteId: string, userId: string, role: string): Promise<SiteMemberEntry> {\n const siteRole = {\n role: role\n } as SiteMembershipBodyUpdate;\n\n try {\n return this.apiService.sites.updateSiteMembership(siteId, userId, siteRole);\n } catch (error) {\n console.error(`SitesApi updateSiteMember : catch : `, error);\n return new SiteMemberEntry();\n }\n }\n\n async addSiteMember(siteId: string, userId: string, role: string): Promise<SiteMemberEntry> {\n const memberBody = {\n id: userId,\n role: role\n } as SiteMembershipBodyCreate;\n\n try {\n return this.apiService.sites.createSiteMembership(siteId, memberBody);\n } catch (error) {\n if (String(error).includes('409')) {\n return this.updateSiteMember(siteId, userId, role);\n }\n throw error;\n }\n }\n\n async createSiteMembershipRequestForPerson(personId: string, siteId: string): Promise<SiteMembershipRequestEntry> {\n const body = {\n id: siteId\n } as SiteMembershipRequestBodyCreate;\n\n try {\n return this.apiService.sites.createSiteMembershipRequestForPerson(personId, body);\n } catch (error) {\n throw new Error(`Failed to create site membership request for person ${personId} and site ${siteId}: ${error}`);\n }\n }\n\n async approveSiteMembershipRequest(siteId: string, inviteeId: string): Promise<SiteMemberEntry> {\n try {\n return this.apiService.sites.approveSiteMembershipRequest(siteId, inviteeId);\n } catch (error) {\n throw new Error(`Failed to approve site membership request for invitee ${inviteeId} and site ${siteId}: ${error}`);\n }\n }\n\n async hasMembershipRequest(personId: string, siteId: string): Promise<boolean> {\n try {\n const entries = (await this.apiService.sites.listSiteMembershipRequestsForPerson(personId)).list?.entries ?? [];\n const requests = entries.map((e) => e.entry?.id).filter((id): id is string => !!id);\n return requests.includes(siteId);\n } catch (error) {\n throw new Error(`Failed to check site membership request for person ${personId} and site ${siteId}: ${error}`);\n }\n }\n\n async deleteSiteMember(siteId: string, userId: string) {\n try {\n return this.apiService.sites.deleteSiteMembership(siteId, userId);\n } catch (error) {\n console.error(`SitesApi deleteSiteMember : catch : `, error);\n }\n }\n\n async getSite(siteId: string): Promise<SiteEntry> {\n try {\n return this.apiService.sites.getSite(siteId);\n } catch (error) {\n throw new Error(`Failed to get site ${siteId}: ${error}`);\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ApiClientFactory } from './api-client-factory';\nimport { Utils } from '../utils';\nimport { ResultSetPaging, SearchRequest } from '@alfresco/js-api';\n\nexport class SearchApi {\n private readonly apiService: ApiClientFactory;\n\n constructor() {\n this.apiService = new ApiClientFactory();\n }\n static async initialize(userName: string, password?: string): Promise<SearchApi> {\n const classObj = new SearchApi();\n await classObj.apiService.setUpAcaBackend(userName, password);\n return classObj;\n }\n\n private async querySearchFiles(username: string): Promise<ResultSetPaging> {\n const data = {\n query: {\n query: '*',\n language: 'afts'\n },\n filterQueries: [\n { query: `cm:modified:[NOW/DAY-30DAYS TO NOW/DAY+1DAY]` },\n { query: `cm:modifier:${username} OR cm:creator:${username}` },\n { query: `TYPE:\"content\" AND -TYPE:\"app:filelink\" AND -TYPE:\"fm:post\"` }\n ]\n };\n\n try {\n return this.apiService.search.search(data);\n } catch {\n return new ResultSetPaging();\n }\n }\n\n async getTotalItems(username: string): Promise<number> {\n return (await this.querySearchFiles(username)).list.pagination.totalItems;\n }\n\n async waitForApi(username: string, data: { expect: number }) {\n try {\n const searchFiles = async () => {\n const totalItems = await this.getTotalItems(username);\n if (totalItems !== data.expect) {\n return Promise.reject(totalItems);\n } else {\n return Promise.resolve(totalItems);\n }\n };\n\n return await Utils.retryCall(searchFiles);\n } catch {}\n }\n\n async waitForFolderPathIndexing(folderId: string, options: { nodesExpected: number }, maxRetries?: number): Promise<number> {\n try {\n const query: SearchRequest = {\n query: {\n query: `ANCESTOR:'workspace://SpacesStore/${folderId}' and TYPE:content`,\n language: 'afts'\n }\n };\n\n const retryLimit = maxRetries ?? 100;\n let retryCount = 0;\n let result: ResultSetPaging;\n\n do {\n result = await this.apiService.search.search(query);\n const currentCount = result.list.pagination.count;\n\n if (currentCount !== options.nodesExpected) {\n retryCount++;\n\n if (retryCount % 30 === 0) {\n console.info(\n `waitForFolderPathIndexing: After ${retryCount} seconds, expected ${options.nodesExpected} nodes but found ${currentCount} in folder ${folderId}`\n );\n }\n\n if (retryCount >= retryLimit) {\n throw new Error(`Expected ${options.nodesExpected} nodes but found ${currentCount} after ${retryLimit} retries`);\n }\n\n await Utils.delayInSeconds(1);\n }\n } while (result.list.pagination.count !== options.nodesExpected);\n\n console.info(`waitForFolderPathIndexing: Found expected ${options.nodesExpected} nodes in folder ${folderId}`);\n return result.list.pagination.count;\n } catch (error) {\n console.error(`waitForFolderPathIndexing failed for folderId \"${folderId}\": ${error}`);\n throw error;\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ApiClientFactory } from './api-client-factory';\n\nexport class TrashcanApi {\n private readonly apiService = new ApiClientFactory();\n\n static async initialize(userName: string, password?: string): Promise<TrashcanApi> {\n const classObj = new TrashcanApi();\n await classObj.apiService.setUpAcaBackend(userName, password);\n return classObj;\n }\n\n /**\n * Empties the trashcan. Uses multiple batches 1000 nodes each.\n */\n async emptyTrashcan(): Promise<void> {\n try {\n const nodes = await this.apiService.trashCan.listDeletedNodes({\n maxItems: 1000\n });\n\n if (nodes?.list?.entries?.length > 0) {\n const ids = nodes.list.entries.map((entries) => entries.entry.id);\n\n for (const nodeId of ids) {\n await this.apiService.trashCan.deleteDeletedNode(nodeId);\n }\n }\n } catch (error) {\n console.error('User Actions - emptyTrashcan failed : ', error);\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { FindQuery } from '@alfresco/js-api';\nimport { Utils } from '../utils';\nimport { ApiClientFactory } from './api-client-factory';\n\nexport class QueriesApi {\n private readonly apiService: ApiClientFactory;\n\n constructor() {\n this.apiService = new ApiClientFactory();\n }\n\n static async initialize(userName: string, password?: string): Promise<QueriesApi> {\n const classObj = new QueriesApi();\n await classObj.apiService.setUpAcaBackend(userName, password);\n return classObj;\n }\n\n async waitForSites(searchTerm: string, data: { expect: number }): Promise<number> {\n try {\n const sites = async () => {\n const totalItems = await this.findSitesTotalItems(searchTerm);\n if (totalItems !== data.expect) {\n return Promise.reject(totalItems);\n } else {\n return Promise.resolve(totalItems);\n }\n };\n\n return await Utils.retryCall(sites);\n } catch (error) {\n console.error(`QueriesApi waitForSites : catch : `);\n console.error(`\\tExpected: ${data.expect} items, but found ${error}`);\n return null;\n }\n }\n\n private async findSitesTotalItems(searchTerm: string): Promise<number> {\n try {\n const opts: FindQuery = {\n term: searchTerm,\n fields: ['title']\n };\n\n const sites = await this.apiService.queries.findSites(searchTerm, opts);\n return sites.list.pagination.totalItems;\n } catch (error) {\n console.error(`QueriesApi findSitesTotalItems : catch :`, error);\n return null;\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ApiClientFactory } from './api-client-factory';\nimport { CategoryEntry, CategoryBody, CategoryQuery, CategoryPaging, CategoryLinkBody } from '@alfresco/js-api';\n\nexport class CategoriesApi {\n private readonly apiService: ApiClientFactory;\n\n constructor() {\n this.apiService = new ApiClientFactory();\n }\n\n static async initialize(userName: string, password?: string): Promise<CategoriesApi> {\n const classObj = new CategoriesApi();\n await classObj.apiService.setUpAcaBackend(userName, password);\n return classObj;\n }\n\n async createCategory(categoryId: string, categoryBodyCreate: CategoryBody[], opts?: CategoryQuery): Promise<CategoryPaging | CategoryEntry> {\n try {\n return this.apiService.categoriesApi.createSubcategories(categoryId, categoryBodyCreate, opts);\n } catch (error) {\n console.error(error);\n return null;\n }\n }\n\n async deleteCategory(categoryId: string): Promise<void> {\n if (categoryId === null) {\n console.error('categoryId is null, skipping deletion');\n return;\n }\n\n try {\n await this.apiService.categoriesApi.deleteCategory(categoryId);\n } catch (error) {\n console.error(`${this.constructor.name} ${this.deleteCategory.name}: ${error}`);\n }\n }\n\n async linkNodeToCategory(\n nodeId: string,\n categoryLinkBodyCreate: CategoryLinkBody[],\n opts?: CategoryQuery\n ): Promise<CategoryPaging | CategoryEntry> {\n try {\n return this.apiService.categoriesApi.linkNodeToCategory(nodeId, categoryLinkBodyCreate, opts);\n } catch (error) {\n console.error(`${this.constructor.name} ${this.linkNodeToCategory.name}: ${error}`);\n return null;\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { TagBody, TagEntry, TagPaging, Tag } from '@alfresco/js-api';\nimport { ApiClientFactory } from './api-client-factory';\nimport { logger } from '../utils';\n\nexport class TagsApi {\n private readonly apiService: ApiClientFactory;\n\n constructor() {\n this.apiService = new ApiClientFactory();\n }\n\n static async initialize(userName: string, password?: string): Promise<TagsApi> {\n const classObj = new TagsApi();\n await classObj.apiService.setUpAcaBackend(userName, password);\n return classObj;\n }\n\n async createTags(...tagNames: string[]): Promise<TagEntry[]> {\n try {\n const results: TagEntry[] = [];\n for (const tag of tagNames) {\n const result = await this.apiService.tagsApi.createTags([{ tag }]);\n let created: TagEntry;\n if ('entry' in result) {\n created = result as TagEntry;\n } else if ('list' in result) {\n const firstEntry = result.list?.entries?.[0];\n if (!firstEntry) {\n throw new Error(`createTags returned a paging result with no entries for tag \"${tag}\"`);\n }\n created = firstEntry;\n } else {\n throw new Error(`createTags returned an unexpected response format for tag \"${tag}\"`);\n }\n logger.info(`Tag created: \"${created.entry.tag}\" (id: ${created.entry.id})`);\n results.push(created);\n }\n return results;\n } catch (error) {\n throw new Error(`Failed to create tags: ${error}`);\n }\n }\n\n async assignTagToNode(nodeId: string, tag: TagBody): Promise<TagEntry> {\n try {\n return this.apiService.tagsApi.assignTagToNode(nodeId, tag);\n } catch (error) {\n throw new Error(`Failed to assign tag to node: ${error}`);\n }\n }\n\n async deleteTags(...tags: Tag[]): Promise<void> {\n try {\n for (const { id, tag } of tags) {\n await this.apiService.tagsApi.deleteTag(id);\n const tagLabel = tag ? `\"${tag}\" ` : '';\n logger.info(`Tag deleted: ${tagLabel}(id: ${id})`);\n }\n } catch (error) {\n throw new Error(`Failed to delete tags: ${error}`);\n }\n }\n\n async listTagsForNode(nodeId: string): Promise<TagPaging> {\n try {\n return this.apiService.tagsApi.listTagsForNode(nodeId);\n } catch (error) {\n throw new Error(`Failed to list tags for node: ${error}`);\n }\n }\n\n async listTags(params?: { tag?: string; matching?: boolean }): Promise<TagPaging> {\n try {\n return this.apiService.tagsApi.listTags(params);\n } catch (error) {\n throw new Error(`Failed to list tags: ${error}`);\n }\n }\n\n async deleteTagByTagName(tagName: string): Promise<void> {\n try {\n const response = await this.listTags({ tag: tagName, matching: true });\n const tags = response.list?.entries.map((entry) => entry.entry) || [];\n await this.deleteTags(...tags);\n } catch (error) {\n throw new Error(`Failed to delete tags by tag name: ${error}`);\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './rules-api';\nexport * from './api-client-factory';\nexport * from './file-actions';\nexport * from './shared-links-api';\nexport * from './favorites-api';\nexport * from './people-api-models';\nexport * from './nodes-api';\nexport * from './sites-api';\nexport * from './node-content-tree';\nexport * from './search-api';\nexport * from './trashcan-api';\nexport * from './queries-api';\nexport * from './categories-api';\nexport * from './tags-api';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nconst LOWER_CASE_ALPHA = 'helloworld';\n\nfunction generateRandomCharset(length: number = 8, charSet: string): string {\n let text = '';\n\n for (let i = 0; i < length; i++) {\n text += charSet.charAt(Math.floor(Math.random() * charSet.length));\n }\n\n return text;\n}\n\nexport class UserModel {\n firstName?: string = generateRandomCharset(7, LOWER_CASE_ALPHA);\n lastName?: string = generateRandomCharset(7, LOWER_CASE_ALPHA);\n password?: string = generateRandomCharset(7, LOWER_CASE_ALPHA);\n email?: string;\n username?: string;\n idIdentityService?: string;\n type = 'enterprise';\n tenantId?: number;\n company?: string;\n id: number;\n\n constructor(details: any = {}) {\n const EMAIL_DOMAIN = 'alfresco';\n this.firstName = details.firstName ?? this.firstName;\n this.lastName = details.lastName ?? this.lastName;\n\n const USER_IDENTIFY = `${this.firstName}${this.lastName}.${generateRandomCharset(7, LOWER_CASE_ALPHA)}`;\n\n this.password = details.password ?? this.password;\n this.email = details.email ?? `${USER_IDENTIFY}@${EMAIL_DOMAIN}.com`;\n this.username = details.username ?? USER_IDENTIFY;\n this.idIdentityService = details.idIdentityService ?? this.idIdentityService;\n this.type = details.type ?? this.type;\n this.tenantId = details.tenantId ?? this.tenantId;\n this.company = details.company ?? this.company;\n this.id = details.id ?? this.id;\n }\n\n get fullName(): string {\n return `${this.firstName ?? ''} ${this.lastName ?? ''}`;\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { users } from '../base-config';\n\nexport interface CustomConfig {\n users: Array<keyof typeof users>;\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport interface TestFileConfig {\n path: string;\n name: string;\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './user-model';\nexport * from './custom-config';\nexport * from './test-file.model';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { test as base } from '@playwright/test';\nimport {\n FavoritesLibrariesPage,\n LoginPage,\n MyLibrariesPage,\n NodesPage,\n PersonalFilesPage,\n RecentFilesPage,\n SharedPage,\n SearchPage,\n FavoritesPage,\n TrashPage\n} from '../page-objects';\nimport { FileActionsApi, SharedLinksApi, FavoritesPageApi, NodesApi, SitesApi } from '../api';\nimport { users } from '../base-config';\n\ninterface Pages {\n personalFiles: PersonalFilesPage;\n nodesPage: NodesPage;\n myLibrariesPage: MyLibrariesPage;\n recentFilesPage: RecentFilesPage;\n sharedPage: SharedPage;\n searchPage: SearchPage;\n favoritePage: FavoritesPage;\n favoritesLibrariesPage: FavoritesLibrariesPage;\n trashPage: TrashPage;\n loginPage: LoginPage;\n favoriteLibrariesPage: FavoritesLibrariesPage;\n}\n\ninterface Api {\n fileAction: FileActionsApi;\n shareAction: SharedLinksApi;\n favoritesPageAction: FavoritesPageApi;\n nodesApiAction: NodesApi;\n sitesApiAction: SitesApi;\n}\n\nexport const test = base.extend<Pages & Api>({\n personalFiles: async ({ page }, use) => {\n await use(new PersonalFilesPage(page));\n },\n nodesPage: async ({ page }, use) => {\n await use(new NodesPage(page));\n },\n recentFilesPage: async ({ page }, use) => {\n await use(new RecentFilesPage(page));\n },\n sharedPage: async ({ page }, use) => {\n await use(new SharedPage(page));\n },\n searchPage: async ({ page }, use) => {\n await use(new SearchPage(page));\n },\n favoritePage: async ({ page }, use) => {\n await use(new FavoritesPage(page));\n },\n favoritesLibrariesPage: async ({ page }, use) => {\n await use(new FavoritesLibrariesPage(page));\n },\n trashPage: async ({ page }, use) => {\n await use(new TrashPage(page));\n },\n loginPage: async ({ page }, use) => {\n await use(new LoginPage(page));\n },\n // eslint-disable-next-line no-empty-pattern\n fileAction: async ({}, use) => {\n await use(await FileActionsApi.initialize(users.hruser.username));\n },\n // eslint-disable-next-line no-empty-pattern\n shareAction: async ({}, use) => {\n await use(await SharedLinksApi.initialize(users.hruser.username));\n },\n // eslint-disable-next-line no-empty-pattern\n favoritesPageAction: async ({}, use) => {\n await use(await FavoritesPageApi.initialize(users.hruser.username));\n },\n // eslint-disable-next-line no-empty-pattern\n nodesApiAction: async ({}, use) => {\n await use(await NodesApi.initialize(users.admin.username, users.admin.password));\n },\n // eslint-disable-next-line no-empty-pattern\n sitesApiAction: async ({}, use) => {\n await use(await SitesApi.initialize(users.hruser.username));\n },\n myLibrariesPage: async ({ page }, use) => {\n await use(new MyLibrariesPage(page));\n },\n favoriteLibrariesPage: async ({ page }, use) => {\n await use(new FavoritesLibrariesPage(page));\n }\n});\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './page-initialization';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Utils } from '../../utils';\n\nexport const random = Utils.random();\n\n// ----- files -----\n\nconst consumerContextMenu = ['Share', 'Download', 'View', 'Favorite', 'Copy', 'Manage Versions'];\nconst consumerFavContextMenu = ['Share', 'Download', 'View', 'Remove Favorite', 'Copy', 'Manage Versions'];\nconst consumerSharedContextMenu = ['Shared Link Settings', 'Download', 'View', 'Favorite', 'Copy', 'Manage Versions'];\nconst consumerSharedFavContextMenu = ['Shared Link Settings', 'Download', 'View', 'Remove Favorite', 'Copy', 'Manage Versions'];\n\nconst consumerToolbarPrimary = ['Share', 'Download', 'View', 'View Details', 'More Actions'];\nconst consumerSharedToolbarPrimary = ['Shared Link Settings', 'Download', 'View', 'View Details', 'More Actions'];\n\nconst searchConsumerToolbarPrimary = ['Share', 'Download', 'View', 'View Details', 'More Actions'];\nconst searchConsumerSharedToolbarPrimary = ['Shared Link Settings', 'Download', 'View', 'View Details', 'More Actions'];\n\nconst consumerToolbarMore = ['Favorite', 'Copy', 'Manage Versions'];\nconst consumerFavToolbarMore = ['Remove Favorite', 'Copy', 'Manage Versions'];\n\nexport const collaboratorToolbarPrimary = ['Shared Link Settings', 'Download', 'View', 'View Details', 'More Actions'];\nexport const collaboratorEditRowToolbarMore = [\n 'Edit Offline',\n 'Upload New Version',\n 'Remove Favorite',\n 'Copy',\n 'Manage Versions',\n 'Edit Aspects',\n 'Permissions'\n];\nexport const favoritesCollaboratorToolbarMore = ['Upload New Version', 'Remove Favorite', 'Move', 'Copy', 'Delete', 'Manage Versions'];\nexport const collaboratorSharedToolbarPrimary = [\n 'Activate full-screen mode',\n 'Shared Link Settings',\n 'Download',\n 'Print',\n 'View Details',\n 'More Actions'\n];\nexport const collaboratorDocToolbarMore = [\n 'Edit in Microsoft Office™',\n 'Edit Offline',\n 'Upload New Version',\n 'Remove Favorite',\n 'Copy',\n 'Manage Versions',\n 'Edit Aspects',\n 'Permissions'\n];\nexport const collaboratorLockCurrentUserToolbarMore = ['Cancel Editing', 'Upload New Version', 'Remove Favorite', 'Copy', 'Manage Versions'];\nexport const collaboratorLockOtherUserToolbarMore = ['Cancel Editing', 'Remove Favorite', 'Move', 'Copy', 'Delete', 'Manage Versions', 'Permissions'];\nexport const collaboratorLockOtherUserSearchToolbarMore = ['Cancel Editing', 'Remove Favorite', 'Copy', 'Manage Versions', 'Permissions'];\n\n// ---- VIEWER ----\n\nconst consumerViewerSharedToolbarPrimary = ['Activate full-screen mode', 'Shared Link Settings', 'Download', 'Print', 'View Details', 'More Actions'];\nconst consumerViewerToolbarPrimary = ['Activate full-screen mode', 'Share', 'Download', 'Print', 'View Details', 'More Actions'];\nconst consumerViewerFavToolbarMore = ['Remove Favorite', 'Copy', 'Manage Versions'];\nconst consumerViewerToolbarMore = ['Favorite', 'Copy', 'Manage Versions'];\n\n// ---- FAVORITES workarounds ----\n\nconst favoritesConsumerToolbarMore = ['Upload New Version', 'Remove Favorite', 'Move', 'Copy', 'Delete', 'Manage Versions'];\n\nconst favoritesConsumerContextMenu = [\n 'Share',\n 'Download',\n 'View',\n 'Upload New Version',\n 'Remove Favorite',\n 'Move',\n 'Copy',\n 'Delete',\n 'Manage Versions'\n];\n\nconst favoritesConsumerSharedContextMenu = [\n 'Shared Link Settings',\n 'Download',\n 'View',\n 'Upload New Version',\n 'Remove Favorite',\n 'Move',\n 'Copy',\n 'Delete',\n 'Manage Versions'\n];\n\n// ---- SHARED FILES workaround ----\n\nconst sharedConsumerToolbarMore = ['Upload New Version', 'Favorite', 'Copy', 'Manage Versions'];\nconst sharedConsumerLockedToolbarMore = ['Cancel Editing', 'Upload New Version', 'Favorite', 'Copy', 'Manage Versions'];\nconst sharedConsumerFavToolbarMore = ['Upload New Version', 'Remove Favorite', 'Copy', 'Manage Versions'];\nconst sharedConsumerFavLockedToolbarMore = ['Cancel Editing', 'Upload New Version', 'Remove Favorite', 'Copy', 'Manage Versions'];\nconst sharedConsumerContextMenu = ['Shared Link Settings', 'Download', 'View', 'Upload New Version', 'Favorite', 'Copy', 'Manage Versions'];\nconst sharedConsumerLockedContextMenu = [\n 'Shared Link Settings',\n 'Download',\n 'View',\n 'Cancel Editing',\n 'Upload New Version',\n 'Favorite',\n 'Copy',\n 'Manage Versions'\n];\n\nconst sharedConsumerFavContextMenu = ['Shared Link Settings', 'Download', 'View', 'Upload New Version', 'Remove Favorite', 'Copy', 'Manage Versions'];\n\nconst sharedConsumerFavLockedContextMenu = [\n 'Shared Link Settings',\n 'Download',\n 'View',\n 'Cancel Editing',\n 'Upload New Version',\n 'Remove Favorite',\n 'Copy',\n 'Manage Versions'\n];\n\nexport const fileDocx = {\n name: `file-${random}-docx.docx`,\n description: 'file not shared, not fav, office, not locked',\n\n contextMenu: consumerContextMenu,\n toolbarPrimary: consumerToolbarPrimary,\n toolbarMore: consumerToolbarMore,\n viewerToolbarPrimary: consumerViewerToolbarPrimary,\n viewerToolbarMore: consumerViewerToolbarMore,\n\n searchToolbarPrimary: searchConsumerToolbarPrimary\n};\n\nexport const fileDocxFav = {\n name: `file-${random}-docx-fav.docx`,\n description: 'file not shared, fav, office, not locked',\n\n contextMenu: consumerFavContextMenu,\n toolbarPrimary: consumerToolbarPrimary,\n toolbarMore: consumerFavToolbarMore,\n viewerToolbarPrimary: consumerViewerToolbarPrimary,\n viewerToolbarMore: consumerViewerFavToolbarMore,\n\n favoritesToolbarMore: favoritesConsumerToolbarMore,\n favoritesContextMenu: favoritesConsumerContextMenu,\n\n searchToolbarPrimary: searchConsumerToolbarPrimary\n};\n\nexport const file = {\n name: `file-${random}.txt`,\n description: 'file not shared, not fav, not office, not locked',\n\n contextMenu: consumerContextMenu,\n toolbarPrimary: consumerToolbarPrimary,\n toolbarMore: consumerToolbarMore,\n viewerToolbarPrimary: consumerViewerToolbarPrimary,\n viewerToolbarMore: consumerViewerToolbarMore,\n\n searchToolbarPrimary: searchConsumerToolbarPrimary\n};\n\nexport const fileFav = {\n name: `file-${random}-fav.txt`,\n description: 'file not shared, fav, not office, not locked',\n\n contextMenu: consumerFavContextMenu,\n toolbarPrimary: consumerToolbarPrimary,\n toolbarMore: consumerFavToolbarMore,\n viewerToolbarPrimary: consumerViewerToolbarPrimary,\n viewerToolbarMore: consumerViewerFavToolbarMore,\n\n favoritesToolbarMore: favoritesConsumerToolbarMore,\n favoritesContextMenu: favoritesConsumerContextMenu,\n\n searchToolbarPrimary: searchConsumerToolbarPrimary\n};\n\nexport const fileDocxShared = {\n name: `file-${random}-docx-shared.docx`,\n description: 'file shared, not fav, office, not locked',\n\n contextMenu: consumerSharedContextMenu,\n toolbarPrimary: consumerSharedToolbarPrimary,\n toolbarMore: consumerToolbarMore,\n viewerToolbarPrimary: consumerViewerSharedToolbarPrimary,\n viewerToolbarMore: consumerViewerToolbarMore,\n\n sharedToolbarMore: sharedConsumerToolbarMore,\n sharedContextMenu: sharedConsumerContextMenu,\n\n searchToolbarPrimary: searchConsumerSharedToolbarPrimary\n};\n\nexport const fileDocxSharedFav = {\n name: `file-${random}-docx-shared-fav.docx`,\n description: 'file shared, fav, office, not locked',\n\n contextMenu: consumerSharedFavContextMenu,\n toolbarPrimary: consumerSharedToolbarPrimary,\n toolbarMore: consumerFavToolbarMore,\n viewerToolbarPrimary: consumerViewerSharedToolbarPrimary,\n viewerToolbarMore: consumerViewerFavToolbarMore,\n\n favoritesToolbarMore: favoritesConsumerToolbarMore,\n favoritesContextMenu: favoritesConsumerSharedContextMenu,\n\n sharedToolbarMore: sharedConsumerFavToolbarMore,\n sharedContextMenu: sharedConsumerFavContextMenu,\n\n searchToolbarPrimary: searchConsumerSharedToolbarPrimary\n};\n\nexport const fileShared = {\n name: `file-${random}-shared.txt`,\n description: 'file shared, not fav, not office, not locked',\n\n contextMenu: consumerSharedContextMenu,\n toolbarPrimary: consumerSharedToolbarPrimary,\n toolbarMore: consumerToolbarMore,\n viewerToolbarPrimary: consumerViewerSharedToolbarPrimary,\n viewerToolbarMore: consumerViewerToolbarMore,\n\n sharedToolbarMore: sharedConsumerToolbarMore,\n sharedContextMenu: sharedConsumerContextMenu,\n\n searchToolbarPrimary: searchConsumerSharedToolbarPrimary\n};\n\nexport const fileSharedFav = {\n name: `file-${random}-shared-fav.txt`,\n description: 'file shared, fav, not office, not locked',\n\n contextMenu: consumerSharedFavContextMenu,\n toolbarPrimary: consumerSharedToolbarPrimary,\n toolbarMore: consumerFavToolbarMore,\n viewerToolbarPrimary: consumerViewerSharedToolbarPrimary,\n viewerToolbarMore: consumerViewerFavToolbarMore,\n\n favoritesToolbarMore: favoritesConsumerToolbarMore,\n favoritesContextMenu: favoritesConsumerSharedContextMenu,\n\n sharedToolbarMore: sharedConsumerFavToolbarMore,\n sharedContextMenu: sharedConsumerFavContextMenu,\n\n searchToolbarPrimary: searchConsumerSharedToolbarPrimary\n};\n\nexport const fileLocked = {\n name: `file-${random}-locked.txt`,\n description: 'file not shared, not fav, not office, locked',\n\n contextMenu: consumerContextMenu,\n toolbarPrimary: consumerToolbarPrimary,\n toolbarMore: consumerToolbarMore,\n viewerToolbarPrimary: consumerViewerToolbarPrimary,\n viewerToolbarMore: consumerViewerToolbarMore,\n\n searchToolbarPrimary: searchConsumerToolbarPrimary\n};\n\nexport const fileFavLocked = {\n name: `file-${random}-fav-locked.txt`,\n description: 'file not shared, fav, not office, locked',\n\n contextMenu: consumerFavContextMenu,\n toolbarPrimary: consumerToolbarPrimary,\n toolbarMore: consumerFavToolbarMore,\n viewerToolbarPrimary: consumerViewerToolbarPrimary,\n viewerToolbarMore: consumerViewerFavToolbarMore,\n\n favoritesToolbarMore: favoritesConsumerToolbarMore,\n favoritesContextMenu: favoritesConsumerContextMenu,\n\n searchToolbarPrimary: searchConsumerToolbarPrimary\n};\n\nexport const fileSharedLocked = {\n name: `file-${random}-shared-locked.txt`,\n description: 'file shared, not fav, not office, locked',\n\n contextMenu: consumerSharedContextMenu,\n toolbarPrimary: consumerSharedToolbarPrimary,\n toolbarMore: consumerToolbarMore,\n viewerToolbarPrimary: consumerViewerSharedToolbarPrimary,\n viewerToolbarMore: consumerViewerToolbarMore,\n\n sharedToolbarMore: sharedConsumerLockedToolbarMore,\n sharedContextMenu: sharedConsumerLockedContextMenu,\n\n searchToolbarPrimary: searchConsumerSharedToolbarPrimary\n};\n\nexport const fileSharedFavLocked = {\n name: `file-${random}-shared-fav-locked.txt`,\n description: 'file shared, fav, not office, locked',\n\n contextMenu: consumerSharedFavContextMenu,\n toolbarPrimary: consumerSharedToolbarPrimary,\n toolbarMore: consumerFavToolbarMore,\n viewerToolbarPrimary: consumerViewerSharedToolbarPrimary,\n viewerToolbarMore: consumerViewerFavToolbarMore,\n\n favoritesToolbarMore: favoritesConsumerToolbarMore,\n favoritesContextMenu: favoritesConsumerSharedContextMenu,\n\n sharedToolbarMore: sharedConsumerFavLockedToolbarMore,\n sharedContextMenu: sharedConsumerFavLockedContextMenu,\n\n searchToolbarPrimary: searchConsumerSharedToolbarPrimary\n};\n\nexport const fileGranularPermission = `file-${random}-granular.txt`;\nexport const fileLockedByUser = `file-${random}-my-locked.txt`;\n\n// ---- folders ---\n\nconst consumerFolderContextMenu = ['Download', 'Favorite', 'Copy'];\nconst consumerFolderToolbarPrimary = ['Download', 'View Details', 'More Actions'];\nconst consumerFolderToolbarMore = ['Favorite', 'Copy'];\nconst searchConsumerFolderToolbarPrimary = ['Download', 'View Details', 'More Actions'];\nconst consumerFolderFavContextMenu = ['Download', 'Remove Favorite', 'Copy'];\nconst consumerFolderFavToolbarMore = ['Remove Favorite', 'Copy'];\n\n// ---- FAVORITES workarounds ----\n\nconst favoritesConsumerFolderContextMenu = ['Download', 'Edit', 'Remove Favorite', 'Move', 'Copy', 'Delete'];\n\nconst favoritesConsumerFolderToolbarMore = ['Edit', 'Remove Favorite', 'Move', 'Copy', 'Delete'];\n\nexport const folder = {\n name: `folder-${random}`,\n description: 'folder not favorite',\n contextMenu: consumerFolderContextMenu,\n toolbarPrimary: consumerFolderToolbarPrimary,\n toolbarMore: consumerFolderToolbarMore,\n\n searchToolbarPrimary: searchConsumerFolderToolbarPrimary\n};\n\nexport const folderFav = {\n name: `folder-fav-${random}`,\n description: 'folder favorite',\n contextMenu: consumerFolderFavContextMenu,\n toolbarPrimary: consumerFolderToolbarPrimary,\n toolbarMore: consumerFolderFavToolbarMore,\n\n favoritesContextMenu: favoritesConsumerFolderContextMenu,\n favoritesToolbarMore: favoritesConsumerFolderToolbarMore,\n\n searchToolbarPrimary: searchConsumerFolderToolbarPrimary\n};\n\nexport const folderFav2 = {\n name: `folder-fav-2-${random}`,\n description: 'folder 2 favorite'\n};\n\n// ---- multiple selection ---\n\nconst multipleSelContextMenu = ['Download', 'Favorite', 'Copy'];\nconst multipleSelAllFavContextMenu = ['Download', 'Remove Favorite', 'Copy'];\nconst multipleSelToolbarPrimary = ['Download', 'View Details', 'More Actions'];\nconst multipleSelToolbarMore = ['Favorite', 'Copy'];\nconst multipleSelAllFavToolbarMore = ['Remove Favorite', 'Copy'];\nconst searchMultipleSelToolbarPrimary = ['Download', 'View Details', 'More Actions'];\n\n// ---- FAVORITES workarounds ----\n\nconst favoritesMultipleSelContextMenu = ['Download', 'Favorite', 'Move', 'Copy', 'Delete'];\nconst favoritesMultipleSelToolbarMore = ['Favorite', 'Move', 'Copy', 'Delete'];\nconst favoritesMultipleSelAllFavContextMenu = ['Download', 'Remove Favorite', 'Move', 'Copy', 'Delete'];\nconst favoritesMultipleSelAllFavToolbarMore = ['Remove Favorite', 'Move', 'Copy', 'Delete'];\n\nexport const multipleSel = {\n contextMenu: multipleSelContextMenu,\n toolbarPrimary: multipleSelToolbarPrimary,\n toolbarMore: multipleSelToolbarMore,\n\n favoritesContextMenu: favoritesMultipleSelContextMenu,\n favoritesToolbarMore: favoritesMultipleSelToolbarMore,\n\n searchToolbarPrimary: searchMultipleSelToolbarPrimary\n};\n\nexport const multipleSelAllFav = {\n contextMenu: multipleSelAllFavContextMenu,\n toolbarPrimary: multipleSelToolbarPrimary,\n toolbarMore: multipleSelAllFavToolbarMore,\n\n favoritesContextMenu: favoritesMultipleSelAllFavContextMenu,\n favoritesToolbarMore: favoritesMultipleSelAllFavToolbarMore,\n\n searchToolbarPrimary: searchMultipleSelToolbarPrimary\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Utils } from '../../utils';\n\nconst random = Utils.random();\nconst multipleSelToolbarPrimary = ['Download', 'View Details', 'More Actions'];\n\n// ---- folders ---\n\nconst folderContextMenu = ['Download', 'Edit', 'Favorite', 'Move', 'Copy', 'Delete', 'Edit Aspects', 'Permissions', 'Manage Rules'];\nconst folderFavContextMenu = ['Download', 'Edit', 'Remove Favorite', 'Move', 'Copy', 'Delete', 'Edit Aspects', 'Permissions', 'Manage Rules'];\nconst folderToolbarMore = ['Edit', 'Favorite', 'Move', 'Copy', 'Delete', 'Edit Aspects', 'Permissions', 'Manage Rules'];\nconst folderFavToolbarMore = ['Edit', 'Remove Favorite', 'Move', 'Copy', 'Delete', 'Edit Aspects', 'Permissions', 'Manage Rules'];\n\nexport const folderFile = {\n name: `folderActions-${random}`,\n description: 'folder not favorite',\n contextMenu: folderContextMenu,\n toolbarPrimary: multipleSelToolbarPrimary,\n toolbarMore: folderToolbarMore\n};\n\nexport const folderFavFile = {\n name: `folderActions-fav-${random}`,\n contextMenu: folderFavContextMenu,\n toolbarPrimary: multipleSelToolbarPrimary,\n toolbarMore: folderFavToolbarMore\n};\n\n// ---- multiple selection ---\n\nconst multipleSelContextMenu = ['Download', 'Favorite', 'Move', 'Copy', 'Delete'];\nconst multipleSelToolbarMore = ['Favorite', 'Move', 'Copy', 'Delete'];\n\nexport const multipleSelFile = {\n contextMenu: multipleSelContextMenu,\n toolbarPrimary: multipleSelToolbarPrimary,\n toolbarMore: multipleSelToolbarMore\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './test-data-permissions';\nexport * from './test-data-files-folders';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { resolve } from 'path';\n\nexport const TEST_FILES = {\n DOCX: {\n path: resolve(__dirname, 'file-docx.docx'),\n name: 'file-docx',\n data: 'Lorem ipsum dolor sit amet'\n },\n DOCX2: {\n path: resolve(__dirname, 'file2-docx.docx'),\n name: 'file2-docx',\n data: 'Lorem ipsum dolor sit amet'\n },\n PDF: {\n path: resolve(__dirname, 'file-pdf.pdf'),\n name: 'file-pdf',\n extension: 'pdf',\n data: 'Lorem ipsum dolor sit amet'\n },\n FILE_UNSUPPORTED: {\n path: resolve(__dirname, 'file_unsupported.3DS'),\n name: 'file_unsupported.3DS',\n data: 'Lorem ipsum dolor sit amet'\n },\n PDF_PROTECTED: {\n path: resolve(__dirname, 'file-pdf-protected.pdf'),\n name: 'file-pdf-protected',\n data: 'Lorem ipsum dolor sit amet',\n password: '0000'\n },\n XLSX: {\n path: resolve(__dirname, 'file-xlsx.xlsx'),\n name: 'file-xlsx',\n data: 'Lorem ipsum dolor sit amet'\n },\n XLSX2: {\n path: resolve(__dirname, 'file2-xlsx.xlsx'),\n name: 'file2-xlsx',\n data: 'Lorem ipsum dolor sit amet'\n },\n JPG_FILE: {\n path: resolve(__dirname, 'file-jpg.jpg'),\n name: 'file-jpg'\n },\n JPG_FILE_1MB: {\n path: resolve(__dirname, 'file-jpg-1mb.jpg'),\n name: 'file-jpg-1mb'\n },\n PNG_FILE: {\n path: resolve(__dirname, 'file-png.png'),\n name: 'file-png'\n },\n GIF_FILE: {\n path: resolve(__dirname, 'file-gif.gif'),\n name: 'file-gif'\n },\n TIFF_FILE: {\n path: resolve(__dirname, 'file-tif.tif'),\n name: 'file-tif'\n },\n BMP_FILE: {\n path: resolve(__dirname, 'file-bmp.bmp'),\n name: 'file-bmp'\n },\n PPTX_FILE: {\n path: resolve(__dirname, 'file-pptx.pptx'),\n name: 'file-pptx'\n },\n MP3_FILE: {\n path: resolve(__dirname, 'file-mp3.mp3'),\n name: 'file-mp3'\n },\n MP4_FILE: {\n path: resolve(__dirname, 'file-mp4.mp4'),\n name: 'file-mp4'\n },\n WEBM_FILE: {\n path: resolve(__dirname, 'file-webm.webm'),\n name: 'file-webm'\n },\n PDF_PROTECTED2: {\n path: resolve(__dirname, 'protected.pdf'),\n name: 'file-protected',\n data: 'Lorem ipsum dolor sit amet',\n password: '0000'\n }\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './test-data';\nexport * from './test-files';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './api';\nexport * from './base-config';\nexport * from './models';\nexport * from './page-objects';\nexport * from './fixtures';\nexport * from './utils';\nexport * from './resources';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["env","fs","SitesApi","NodesApi","QueriesApi","SearchApi","TrashcanApi","CategoriesApi","TagsApi","crypto","base","random","multipleSelContextMenu","multipleSelToolbarPrimary","multipleSelToolbarMore"],"mappings":"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"}
1
+ {"version":3,"file":"alfresco-aca-playwright-shared.mjs","sources":["../../../../projects/aca-playwright-shared/src/utils/paths.ts","../../../../projects/aca-playwright-shared/src/utils/timeouts.ts","../../../../projects/aca-playwright-shared/src/utils/exclude-tests.ts","../../../../projects/aca-playwright-shared/src/utils/state-helper.ts","../../../../projects/aca-playwright-shared/src/utils/utils.ts","../../../../projects/aca-playwright-shared/src/utils/library-errors.ts","../../../../projects/aca-playwright-shared/src/utils/config.ts","../../../../projects/aca-playwright-shared/src/utils/error-strings.ts","../../../../projects/aca-playwright-shared/src/utils/api.ts","../../../../projects/aca-playwright-shared/src/utils/logger.ts","../../../../projects/aca-playwright-shared/src/utils/index.ts","../../../../projects/aca-playwright-shared/src/page-objects/playwright-base.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/base.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/snackBar/snack-bar.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dataTable/mat-menu.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/pagination.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dataTable/data-table.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dataTable/index.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/adf-folder-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/adf-library-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/password-overlay-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/viewer-overlay-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/content-node-selector-dialog.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/create-from-template-dialog-component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/adf-confirm-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/datetime-picker/datetime-picker.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/share-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/upload-new-version-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/manage-versions-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/upload-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/delete-trash-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/link-rules.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/edit-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/folder-information-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/dialogs/index.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/manageRules/manage-rules-dialog.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/manageRules/manage-rules.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/manageRules/manage-rules-toolbar.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/manageRules/index.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/actions-dropdown.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/conditions.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/adf-info-drawer.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/aca-header.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/viewer.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-filters/search-filters-categories.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-filters/search-filters-date.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-filters/search-filters-location.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-filters/search-filters-logic.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-filters/search-filters-properties.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-filters/search-filters-tags.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-filters/index.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-filters.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-input.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-menu-card.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-sorting-picker.components.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/index.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/breadcrumb/breadcrumb.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/sidenav.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/error.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/edit-mode.component.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/index.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/base.page.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/login.page.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/nodes.page.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/personal-files.page.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/my-libraries.page.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/recent-files.page.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/shared.page.ts","../../../../projects/aca-playwright-shared/src/page-objects/components/search/search-in-dialog.components.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/search.page.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/favorites.page.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/trash.page.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/favorites-libraries.page.ts","../../../../projects/aca-playwright-shared/src/page-objects/pages/index.ts","../../../../projects/aca-playwright-shared/src/page-objects/index.ts","../../../../projects/aca-playwright-shared/src/base-config/global-variables.ts","../../../../projects/aca-playwright-shared/src/base-config/global.setup.ts","../../../../projects/aca-playwright-shared/src/base-config/report-portal.config.ts","../../../../projects/aca-playwright-shared/src/base-config/playwright.config.ts","../../../../projects/aca-playwright-shared/src/base-config/index.ts","../../../../projects/aca-playwright-shared/src/api/people-api-models.ts","../../../../projects/aca-playwright-shared/src/api/api-client-factory.ts","../../../../projects/aca-playwright-shared/src/api/rules-api.ts","../../../../projects/aca-playwright-shared/src/api/file-actions.ts","../../../../projects/aca-playwright-shared/src/api/shared-links-api.ts","../../../../projects/aca-playwright-shared/src/api/favorites-api.ts","../../../../projects/aca-playwright-shared/src/api/node-content-tree.ts","../../../../projects/aca-playwright-shared/src/api/nodes-api.ts","../../../../projects/aca-playwright-shared/src/api/sites-api.ts","../../../../projects/aca-playwright-shared/src/api/search-api.ts","../../../../projects/aca-playwright-shared/src/api/trashcan-api.ts","../../../../projects/aca-playwright-shared/src/api/queries-api.ts","../../../../projects/aca-playwright-shared/src/api/categories-api.ts","../../../../projects/aca-playwright-shared/src/api/tags-api.ts","../../../../projects/aca-playwright-shared/src/api/index.ts","../../../../projects/aca-playwright-shared/src/models/user-model.ts","../../../../projects/aca-playwright-shared/src/models/custom-config.ts","../../../../projects/aca-playwright-shared/src/models/test-file.model.ts","../../../../projects/aca-playwright-shared/src/models/index.ts","../../../../projects/aca-playwright-shared/src/fixtures/page-initialization.ts","../../../../projects/aca-playwright-shared/src/fixtures/index.ts","../../../../projects/aca-playwright-shared/src/resources/test-data/test-data-permissions.ts","../../../../projects/aca-playwright-shared/src/resources/test-data/test-data-files-folders.ts","../../../../projects/aca-playwright-shared/src/resources/test-data/index.ts","../../../../projects/aca-playwright-shared/src/resources/test-files/index.ts","../../../../projects/aca-playwright-shared/src/resources/index.ts","../../../../projects/aca-playwright-shared/src/public-api.ts","../../../../projects/aca-playwright-shared/src/alfresco-aca-playwright-shared.ts"],"sourcesContent":["/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nconst rootFolder = 'e2e-output';\n\nexport const paths = {\n rootFolder,\n allData: `${rootFolder}/playwright-data`,\n files: `${rootFolder}/playwright-data/downloads`,\n report: `${rootFolder}/playwright-data/report`,\n userStates: `${rootFolder}/playwright-data/user-states`\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport const timeouts = {\n typingDelay: 50,\n tiny: 500,\n short: 1000,\n normal: 2 * 1000,\n medium: 5 * 1000,\n big: 7.5 * 1000,\n large: 10 * 1000,\n extraLarge: 20 * 1000,\n fortySeconds: 40 * 1000,\n sixtySeconds: 60 * 1000,\n globalTest: 85 * 1000,\n extendedTest: 150 * 1000,\n extendedLongTest: 200 * 1000,\n webServer: 240 * 1000,\n globalSpec: 90 * 10 * 1000\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nconst getCurrentBrowser = (): string => (process.env.PLAYWRIGHT_BROWSER || 'chrome').toLowerCase();\n\nexport const getExcludedTestsRegExpArray = (excludedJson: any, projectName: string) => {\n const prefix = `[ 🎭 Playwright Excludes - ${projectName} ]`;\n const currentBrowser = getCurrentBrowser();\n const browserKeys = ['all', 'firefox', 'chromium', 'webkit', 'msedge'];\n const relevantKeys: string[] = [];\n const testIdsToExclude: string[] = [];\n\n // Always include 'all' if it exists\n if (excludedJson.all && typeof excludedJson.all === 'object') {\n const allTestIds = Object.keys(excludedJson.all);\n testIdsToExclude.push(...allTestIds);\n relevantKeys.push('all');\n }\n\n // Include current browser-specific exclusions\n const browserKey = browserKeys.find((key) => key.toLowerCase() === currentBrowser);\n if (browserKey && excludedJson[browserKey] && typeof excludedJson[browserKey] === 'object') {\n const browserTestIds = Object.keys(excludedJson[browserKey]);\n testIdsToExclude.push(...browserTestIds);\n if (!relevantKeys.includes(browserKey)) {\n relevantKeys.push(browserKey);\n }\n }\n\n if (testIdsToExclude.length > 0) {\n console.warn(\n `${prefix} ❌ Tests excluded for browser '${currentBrowser}' because of 🐛 : ${testIdsToExclude.join(', ')} (from keys: ${relevantKeys.join(\n ', '\n )})`\n );\n } else {\n console.info(`${prefix} ✅ No excluded tests for browser '${currentBrowser}' 🎉`);\n }\n\n return testIdsToExclude.map((key) => new RegExp(key));\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { resolve } from 'path';\nimport { paths } from '.';\nimport { users } from '../base-config';\n\nexport function getUserState(user: UserType) {\n return resolve(process.cwd(), `${paths.userStates}/${user}UserState.json`);\n}\n\ntype UserType = keyof typeof users;\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nconst crypto = require('crypto');\nimport * as path from 'path';\nimport { LoginPage, MyLibrariesPage, PersonalFilesPage, FavoritesLibrariesPage, SearchPage, SharedPage, TrashPage } from '../page-objects';\nimport { format, subDays, subMonths, endOfMonth } from 'date-fns';\nimport StreamZip from 'node-stream-zip';\nimport { NodesApi, SitesApi, TrashcanApi } from '../api';\n\nexport class Utils {\n static readonly string257Long = 'x'.repeat(257);\n static readonly string513Long = 'x'.repeat(513);\n\n static random(): string {\n return crypto.getRandomValues(new Uint32Array(1))[0].toString(36).substring(0, 5).toLowerCase();\n }\n\n static retryCall(fn: () => Promise<any>, retry: number = 30, delay: number = 1500): Promise<any> {\n const pause = (duration: number) => new Promise((res) => setTimeout(res, duration));\n\n const run = (retries: number): Promise<any> => {\n return fn().catch((err) => (retries > 1 ? pause(delay).then(() => run(retries - 1)) : Promise.reject(err)));\n };\n\n return run(retry);\n }\n\n static formatDate(date: string): string {\n return new Date(date).toLocaleDateString('en-US');\n }\n\n /**\n * Method used to login user with navigation. Also waits for the page to load after login\n *\n * @param loginPage page context passed from the test\n * @param username username string\n * @param password password string\n * @param errorMessage error message string if the login fails\n *\n */\n static async tryLoginUser(loginPage: LoginPage, username: string, password: string, errorMessage = 'Error '): Promise<void> {\n try {\n await loginPage.loginUser({ username, password }, { withNavigation: true, waitForLoading: true });\n } catch (error) {\n throw new Error(`${errorMessage}: ${error}`);\n }\n }\n\n /**\n * Method used to delete nodes and sites from user's account\n *\n * @param nodesApi nodesApi initialized with user credentials passed from the test\n * @param trashcanApi trashcanApi initialized with user credentials passed from the test\n * @param errorMessage error message string if the deleting sites/nodes fails\n * @param sitesApi sitesApi initialized with user credentials passed from the test\n * @param sitesToDelete array of sites' ids\n *\n */\n static async deleteNodesSitesEmptyTrashcan(\n nodesApi?: NodesApi,\n trashcanApi?: TrashcanApi,\n errorMessage = 'Error ',\n sitesApi?: SitesApi,\n sitesToDelete?: string[]\n ): Promise<void> {\n try {\n await nodesApi?.deleteCurrentUserNodes();\n await trashcanApi?.emptyTrashcan();\n if (sitesToDelete && sitesToDelete.length > 0) {\n await sitesApi?.deleteSites(sitesToDelete);\n }\n } catch (error) {\n console.error(`${errorMessage}: ${error}`);\n }\n }\n\n static async uploadFileNewVersion(personalFilesPage: PersonalFilesPage, fileFromOS: string, fileType: string): Promise<void> {\n const fileInput = await personalFilesPage.page.$('#app-upload-file-version');\n await fileInput?.setInputFiles(path.join(__dirname, `../resources/test-files/${fileFromOS}.${fileType}`));\n }\n\n static async reloadPageIfRowNotVisible(\n pageContext: PersonalFilesPage | MyLibrariesPage | FavoritesLibrariesPage | SearchPage | SharedPage,\n nodeName: string,\n errorMessage = 'reloadPageIfRowNotVisible Error '\n ): Promise<void> {\n try {\n if (!(await pageContext.dataTable.getRowByName(nodeName).isVisible())) {\n await pageContext.page.reload({ waitUntil: 'load' });\n }\n } catch (error) {\n console.error(`${errorMessage}: ${error}`);\n }\n }\n\n static async reloadPageIfDatatableEmpty(\n pageContext: PersonalFilesPage | MyLibrariesPage | FavoritesLibrariesPage | SearchPage | SharedPage | TrashPage,\n errorMessage = 'reloadPageIfDatatableEmpty Error '\n ): Promise<void> {\n try {\n if ((await pageContext.dataTable.getEmptyFolderLocator?.isVisible()) || (await pageContext.dataTable.emptyListTitle?.isVisible())) {\n await pageContext.page.reload({ waitUntil: 'load' });\n }\n } catch (error) {\n console.error(`${errorMessage}: ${error}`);\n }\n }\n\n static getCurrentAndPreviousDay(currentDate = new Date()): { currentDate: string; previousDate: string } {\n let formattedDate: string;\n let formattedDate2: string;\n\n const formatDate = (date: Date): string => {\n return format(date, 'dd-MMM-yy').toUpperCase();\n };\n\n if (currentDate.getDate() === 1) {\n const lastDayOfPreviousMonth: Date = endOfMonth(subMonths(currentDate, 1));\n formattedDate = formatDate(lastDayOfPreviousMonth);\n formattedDate2 = formatDate(subDays(lastDayOfPreviousMonth, 1));\n } else {\n formattedDate = formatDate(currentDate);\n formattedDate2 = formatDate(subDays(currentDate, 1));\n }\n\n return { currentDate: formattedDate, previousDate: formattedDate2 };\n }\n\n static async verifyZipFileContent(filePath: string, fileOrFolderName: string[]): Promise<boolean> {\n const zip = new StreamZip({\n file: filePath,\n storeEntries: true\n });\n\n return new Promise<boolean>((resolve) => {\n zip.on('ready', () => {\n const entries = zip.entries();\n const found = this.isFileOrFolderInEntries(entries, fileOrFolderName);\n zip.close();\n resolve(found);\n });\n });\n }\n\n private static isFileOrFolderInEntries(entries: { [name: string]: StreamZip.ZipEntry }, fileOrFolderName: string[]): boolean {\n return fileOrFolderName.some((name) => {\n return Object.keys(entries).some((entry) => entry.includes(name));\n });\n }\n\n /**\n * Method used trim all elements of an array from all spaces characters\n *\n * @param arr array needed to be trimmed\n *\n */\n static trimArrayElements(arr: string[]): string[] {\n return arr.map((element) => element.trim());\n }\n\n /**\n * Waits for a specific API response.\n *\n * @param page - The Playwright page object.\n * @param urlSubstring - The substring to look for in the URL.\n * @param statusCode - The expected status code of the response.\n */\n static async waitForApiResponse(\n contentPage: LoginPage | MyLibrariesPage | PersonalFilesPage | FavoritesLibrariesPage | SearchPage | SharedPage | TrashPage,\n urlSubstring: string,\n statusCode: number\n ) {\n await contentPage.page.waitForResponse((response) => response.url().includes(urlSubstring) && response.status() === statusCode);\n }\n\n static async delayInSeconds(seconds: number): Promise<void> {\n await new Promise((resolve) => setTimeout(resolve, seconds * 1000));\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport const libraryErrors = {\n libraryIdIsNotAvailable: \"This Library ID isn't available. Try a different Library ID.\",\n libraryIdIsAlreadyUsed: 'This Library ID is already used. Check the trashcan.',\n useNumbersAndLettersOnly: 'Use numbers and letters only'\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport const APP_ROUTES = {\n FAVORITES: '/favorites',\n MY_LIBRARIES: '/libraries',\n FAVORITE_LIBRARIES: '/favorite/libraries',\n LOGIN: '/login',\n LOGOUT: '/logout',\n PERSONAL_FILES: '/personal-files',\n RECENT_FILES: '/recent-files',\n SHARED_FILES: '/shared',\n TRASHCAN: '/trashcan'\n};\n\nexport const SIDEBAR_LABELS = {\n PERSONAL_FILES: 'Personal Files',\n MY_LIBRARIES: 'My Libraries',\n FAVORITE_LIBRARIES: 'Favorite Libraries',\n SHARED_FILES: 'Shared',\n RECENT_FILES: 'Recent Files',\n FAVORITES: 'Favorites',\n TRASH: 'Trash'\n};\n\nexport const SITE_ROLES = {\n SITE_MANAGER: {\n ROLE: 'SiteManager',\n LABEL: 'Manager'\n },\n SITE_CONSUMER: {\n ROLE: 'SiteConsumer',\n LABEL: 'Consumer'\n },\n SITE_CONTRIBUTOR: {\n ROLE: 'SiteContributor',\n LABEL: 'Contributor'\n },\n SITE_COLLABORATOR: {\n ROLE: 'SiteCollaborator',\n LABEL: 'Collaborator'\n },\n NONE: {\n LABEL: 'Not a member'\n }\n};\n\nexport const SITE_VISIBILITY = {\n PUBLIC: 'PUBLIC',\n MODERATED: 'MODERATED',\n PRIVATE: 'PRIVATE'\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport const errorStrings = {\n errorMessageNotPresent: 'Error message is not displayed',\n nameIsRequiredError: 'Name is required',\n nameWithSpecialCharactersError: `Name can't contain these characters * \" < > \\\\ / ? : |`,\n nameEndWithDotError: `Name can't end with a period .`,\n nameContainOnlySpacesError: `Name can't contain only spaces`,\n titleLengthLimitError: 'Use 256 characters or less for title',\n descriptionLengthLimitError: 'Use 512 characters or less for description',\n nameAlreadyUsedError: 'This name is already in use, try a different name.',\n\n folderNameIsRequired: 'Folder name is required',\n folderNameCantEndWithAPeriod: `Folder name can't end with a period .`,\n folderNameCantContainTheseCharacters: `Folder name can't contain these characters`,\n folderNameCantContainOnlySpaces: `Folder name can't contain only spaces`,\n thereIsAlreadyAFolderWithThisName: `There's already a folder with this name. Try a different name.`\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport type ApiResultPredicate<T> = (result: T) => boolean;\nexport type ApiCall<T> = () => Promise<T>;\n\nexport async function waitForApi<T>(apiCall: ApiCall<T>, predicate: ApiResultPredicate<T>, retry: number = 30, delay: number = 1000) {\n const apiCallWithPredicateChecking = async () => {\n const apiCallResult = await apiCall();\n if (predicate(apiCallResult)) {\n return Promise.resolve(apiCallResult);\n } else {\n return Promise.reject(new Error(`API call did not satisfy predicate: ${JSON.stringify(apiCallResult)}`));\n }\n };\n\n return retryCall(apiCallWithPredicateChecking, retry, delay);\n}\n\nfunction retryCall(fn: () => Promise<any>, retry: number = 30, delay: number = 1000): Promise<string> {\n const pause = (duration) => new Promise((res) => setTimeout(res, duration));\n const run = (retries) =>\n fn().catch((err) =>\n retries > 1\n ? pause(delay).then(() => run(retries - 1))\n : Promise.reject(new Error(`API call did not satisfy predicate: ${JSON.stringify(err)}`))\n );\n\n return run(retry);\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\n/* eslint-disable @typescript-eslint/naming-convention */\n\nexport interface LoggerLike {\n info(message: string): void;\n log(message: string): void;\n warn(message: string): void;\n error(message: string): void;\n table(message: object): void;\n}\n\nconst reset = '\\x1b[0m';\nconst red = '\\x1b[31m';\nconst yellow = '\\x1b[33m';\nconst blue = '\\x1b[34m';\nconst cyan = '\\x1b[36m';\n\nexport const logger: LoggerLike = {\n // eslint-disable-next-line no-console,no-restricted-syntax\n info: (message: string) => console.info(`${blue}[INFO]${reset}`, message),\n // eslint-disable-next-line no-console,no-restricted-syntax\n log: (message: string) => console.log(`${cyan}[LOG]${reset}`, message),\n // eslint-disable-next-line no-console,no-restricted-syntax\n error: (message: string) => console.error(`${red}[ERROR]${reset}`, message),\n // eslint-disable-next-line no-console,no-restricted-syntax\n warn: (message: string) => console.warn(`${yellow}[WARN]${reset}`, message),\n // eslint-disable-next-line no-console,no-restricted-syntax\n table: (message: object) => console.table(message)\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './paths';\nexport * from './timeouts';\nexport * from './exclude-tests';\nexport * from './state-helper';\nexport * from './utils';\nexport * from './library-errors';\nexport * from './config';\nexport * from './error-strings';\nexport * from './api';\nexport * from './logger';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { logger, LoggerLike, timeouts } from '../utils';\n\nexport abstract class PlaywrightBase {\n public page: Page;\n public logger: LoggerLike;\n\n protected constructor(page: Page) {\n this.page = page;\n this.logger = logger;\n }\n\n async spinnerWaitForReload(): Promise<void> {\n const spinner = this.page.locator('[role=\"progressbar\"]');\n await spinner.waitFor({ state: 'attached', timeout: timeouts.medium }).catch(() => {});\n await spinner.waitFor({ state: 'detached', timeout: timeouts.normal }).catch(() => {});\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Locator, Page } from '@playwright/test';\nimport { PlaywrightBase } from '../playwright-base';\n\nexport abstract class BaseComponent extends PlaywrightBase {\n private readonly rootElement: string;\n\n protected constructor(page: Page, rootElement: string) {\n super(page);\n this.rootElement = rootElement;\n }\n\n /**\n * Method which should be used across the repository, while creating\n * reference to elements, which are in root element of component.\n *\n * @param cssLocator css selector as String. Need to be in the tree under the root element\n * @param options if you want to localize it by text, then provide an optional hasText\n * @returns Locator object\n */\n getChild(cssLocator: string, options?: { hasText?: string | RegExp; has?: Locator }): Locator {\n return this.page.locator(`${this.rootElement} ${cssLocator}`, options);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page, expect } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class SnackBarComponent extends BaseComponent {\n private static readonly rootElement = 'adf-snackbar-content';\n\n public message = this.getChild('[data-automation-id=\"adf-snackbar-message-content\"]').first();\n\n public actionButton = this.getChild('[data-automation-id=\"adf-snackbar-message-content-action-button\"]');\n\n public closeIcon = this.getChild('.adf-snackbar-message-content-action-icon');\n public getByMessageLocator = (message: string) =>\n this.getChild(`[data-automation-id='adf-snackbar-message-content']`, { hasText: message }).first();\n\n constructor(page: Page, rootElement = SnackBarComponent.rootElement) {\n super(page, rootElement);\n }\n\n async getSnackBarMessage(): Promise<string> {\n return this.message.innerText();\n }\n\n async getSnackBarActionText(): Promise<string> {\n if (await this.actionButton.isVisible()) {\n return this.actionButton.textContent();\n } else {\n return '';\n }\n }\n\n async verifySnackBarActionText(text: string): Promise<void> {\n expect(await this.message.textContent()).toContain(text);\n }\n\n async clickSnackBarAction(): Promise<void> {\n await this.actionButton.click();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { expect, Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class MatMenuComponent extends BaseComponent {\n private static readonly rootElement = '[role=\"menu\"]';\n\n constructor(page: Page) {\n super(page, MatMenuComponent.rootElement);\n }\n\n public createFolder = this.getChild('[id=\"app.create.folder\"]');\n public createFolderFromTemplate = this.getChild('[id=\"app.create.folderFromTemplate\"]');\n public createFileFromTemplate = this.getChild('[id=\"app.create.fileFromTemplate\"]');\n public createLibrary = this.getChild('[id=\"app.create.library\"]');\n public getButtonByText = (text: string) => this.getChild('button', { hasText: text });\n public getMenuItemFromHeaderMenu = (text: string) => this.page.getByRole('menuitem', { name: text, exact: true });\n\n async clickMenuItem(menuItem: string): Promise<void> {\n const menuElement = this.getButtonByText(menuItem);\n await menuElement.click();\n await menuElement.waitFor({ state: 'detached' });\n }\n\n async clickMenuItemFromHeaderMenu(menuItem: string): Promise<void> {\n const menuElement = this.getMenuItemFromHeaderMenu(menuItem);\n await menuElement.click();\n await menuElement.waitFor({ state: 'detached' });\n }\n\n async isMenuItemVisible(menuItem: string): Promise<boolean> {\n const menuElement = this.getButtonByText(menuItem);\n await menuElement.waitFor({ state: 'attached' });\n return menuElement.isVisible();\n }\n\n async verifyActualMoreActions(expectedToolbarMore: string[]): Promise<void> {\n await this.getChild('').waitFor();\n const menus = await this.getChild('[role=\"menuitem\"]').all();\n const actualMoreActions: string[] = await Promise.all(\n menus.map(async (button) => {\n const title = await button.locator('span span').innerText();\n return title || '';\n })\n );\n for (const action of expectedToolbarMore) {\n expect(actualMoreActions.includes(action), `Expected to contain ${action} ${actualMoreActions}`).toBe(true);\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from './base.component';\nimport { Locator, Page } from '@playwright/test';\nimport { timeouts } from '../../utils';\n\nexport enum PaginationActionsType {\n PageSizeSelector = 'Page size selector',\n CurrentPageSelector = 'Current page selector',\n NextPageSelector = 'Next page button'\n}\n\nexport class PaginationComponent extends BaseComponent {\n private static readonly rootElement = 'adf-pagination';\n\n constructor(page: Page) {\n super(page, PaginationComponent.rootElement);\n }\n\n private readonly range = this.getChild('.adf-pagination__range');\n private readonly maxItems = this.getChild('.adf-pagination__max-items');\n private readonly currentPage = this.getChild('.adf-pagination__current-page');\n private readonly totalPages = this.getChild('.adf-pagination__total-pages');\n private readonly previousButton = this.getChild('.adf-pagination__previous-button');\n private readonly nextButton = this.getChild('.adf-pagination__next-button');\n private readonly maxItemsButton = this.getChild('.adf-pagination__max-items + button[mat-icon-button]');\n\n public currentPageLocator = this.getChild('.adf-pagination__current-page');\n public totalPageLocator = this.getChild('.adf-pagination__total-pages');\n public getArrowLocatorFor = (action: PaginationActionsType) => this.getChild(`[aria-label=\"${action}\"]`);\n\n async getRange(): Promise<string> {\n return this.range.innerText();\n }\n\n async getMaxItems(): Promise<string> {\n return this.maxItems.innerText();\n }\n\n async getCurrentPage(): Promise<string> {\n return this.currentPage.innerText();\n }\n\n async getTotalPages(): Promise<string> {\n return this.totalPages.innerText();\n }\n\n async isPreviousEnabled(): Promise<boolean> {\n return this.previousButton.isEnabled();\n }\n\n async isNextEnabled(): Promise<boolean> {\n await this.page.waitForTimeout(timeouts.tiny);\n return this.nextButton.isEnabled();\n }\n\n async clickOnNextPage(): Promise<void> {\n try {\n if (await this.isNextEnabled()) {\n await this.nextButton.click();\n }\n } catch (error) {\n throw new Error(`Failed on previous click: ${error}`);\n }\n }\n\n async clickOnPreviousPage(): Promise<void> {\n try {\n if (await this.isPreviousEnabled()) {\n await this.previousButton.click();\n }\n } catch (error) {\n throw new Error(`Failed on previous click: ${error}`);\n }\n }\n\n async openMaxItemsMenu(): Promise<void> {\n try {\n await this.maxItemsButton.waitFor({ state: 'visible' });\n await this.maxItemsButton.click();\n } catch (error) {\n throw new Error(`Open max items catch: ${error}`);\n }\n }\n\n async resetToDefaultPageSize(): Promise<void> {\n try {\n await this.openMaxItemsMenu();\n await this.clickNthItem(1);\n await this.page.waitForTimeout(timeouts.tiny);\n } catch (error) {\n throw new Error(`Reset to default page size catch: ${error}`);\n }\n }\n\n async clickMenuItem(menuItem: string): Promise<void> {\n try {\n await this.page.getByRole('menuitem', { name: menuItem }).click();\n } catch (e) {\n throw new Error(`Click menu item catch : failed to click on: ${e}`);\n }\n }\n\n async getNthItem(nth: number): Promise<Locator> {\n return this.page.getByRole('menuitem').nth(nth - 1);\n }\n\n async getItemsCount(): Promise<number> {\n return this.page.getByRole('menuitem').count();\n }\n\n async clickNthItem(nth: number): Promise<void> {\n try {\n await (await this.getNthItem(nth)).click();\n } catch (e) {\n throw new Error(`Click nth menu item catch: ${e}`);\n }\n }\n\n async closeMenu(): Promise<void> {\n await this.page.keyboard.press('Escape');\n }\n\n async isRangePresent(): Promise<boolean> {\n return this.range.isVisible();\n }\n\n async getMaxRange(): Promise<string> {\n return this.range.textContent();\n }\n\n async isMaxItemsPresent(): Promise<boolean> {\n return this.maxItems.isVisible();\n }\n\n async isCurrentPagePresent(): Promise<boolean> {\n return this.currentPage.isVisible();\n }\n\n async isTotalPagesPresent(): Promise<boolean> {\n return this.totalPages.isVisible();\n }\n\n async isPreviousButtonPresent(): Promise<boolean> {\n return this.previousButton.isVisible();\n }\n\n async isNextButtonPresent(): Promise<boolean> {\n return this.nextButton.isVisible();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Locator, Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\nimport { MatMenuComponent } from './mat-menu.component';\nimport { PaginationActionsType, PaginationComponent } from '../pagination.component';\nimport { timeouts } from '../../../utils';\n\nexport class DataTableComponent extends BaseComponent {\n private static readonly rootElement = 'adf-datatable';\n contextMenuActions = new MatMenuComponent(this.page);\n\n constructor(page: Page, rootElement = DataTableComponent.rootElement) {\n super(page, rootElement);\n }\n\n public pagination = new PaginationComponent(this.page);\n getEmptyFolderLocator = this.getChild('.adf-empty-folder');\n getSelectedRow = this.getChild('.adf-datatable-row.adf-is-selected');\n sortedColumnHeader = this.getChild(`.adf-datatable__header--sorted-asc .adf-datatable-cell-header-content .adf-datatable-cell-value,\n .adf-datatable__header--sorted-desc .adf-datatable-cell-header-content .adf-datatable-cell-value`);\n columnHeaders = this.getChild('.adf-datatable-row .adf-datatable-cell-header .adf-datatable-cell-value');\n emptyList = this.getChild('div.adf-no-content-container');\n emptyListTitle = this.getChild('.adf-empty-content__title');\n emptyListSubtitle = this.getChild('.adf-empty-content__subtitle');\n emptySearchText = this.getChild('.empty-search__text');\n emptyListTest = this.getChild('adf-custom-empty-content-template');\n sitesVisibility = this.getChild('.adf-datatable-body [data-automation-id*=\"datatable-row\"] [aria-label=\"Visibility\"]');\n sitesName = this.getChild('.adf-datatable-body [data-automation-id*=\"datatable-row\"] [aria-label=\"Name\"]');\n sitesRole = this.getChild('.adf-datatable-body [data-automation-id*=\"datatable-row\"] [aria-label=\"My Role\"]');\n lockOwner = '.aca-locked-by--name';\n highlightedText = '.aca-highlight';\n searchFileName = '.search-file-name';\n searchFileDescription = '[data-automation-id=\"search-results-entry-description\"]';\n searchFileContent = '.aca-result-content';\n noPermissionsView = this.page.locator('aca-generic-error');\n\n /** Locator for row (or rows) */\n getRowLocator = this.page.getByRole('rowgroup').nth(1).locator('adf-datatable-row');\n\n /** Locator to get \"No results found\" message */\n getNoResultsFoundMessage = this.getChild('adf-custom-empty-content-template', { hasText: 'No results found' });\n\n /**\n * Method used in cases where we want to check that some record is visible in the datatable. It will consider whole row\n *\n * @returns reference to cell element which contains text.\n */\n getRowByName = (name: string | number): Locator => this.getChild(`adf-datatable-row`, { hasText: name.toString() });\n\n /**\n * Method used in cases where we want to retrieve a row from the datatable based on its numerical order within the array.\n *\n * @returns reference to cell element which contains text.\n */\n getNthRow = (orderNum: number): Locator => this.getRowLocator.nth(orderNum);\n\n /**\n * Method used in cases where user have possibility to navigate \"inside\" the element (it's clickable and has link attribute).\n * Perform action .click() to navigate inside it\n *\n * @returns reference to cell element which contains link.\n */\n getCellLinkByName = (name: string): Locator => this.getChild('.adf-cell-value span[role=\"link\"]', { hasText: name });\n\n /**\n * Method used in cases where you want to get some specific cell (by column name) for row which contains some name/title/etc.\n *\n * @returns reference to cell element\n */\n getCellByColumnNameAndRowItem = (item: string | number, columnName: string): Locator => this.getRowByName(item).locator(`[title=\"${columnName}\"]`);\n\n /**\n * Method used in cases where we want to get the checkbox for row element\n *\n * @returns reference to checkbox placed in row localized by the name\n */\n getCheckboxForElement = (item: string): Locator => this.getRowByName(item).locator('[type=\"checkbox\"]');\n\n getColumnValuesByName = (name: string): Locator => this.getChild(`div[title=\"${name}\"] span`);\n\n getColumnHeaderByName = (headerTitle: string): Locator =>\n this.getChild('.adf-datatable-row .adf-datatable-cell-header .adf-datatable-cell-value', { hasText: headerTitle });\n\n async sortBy(label: string, order: 'asc' | 'desc'): Promise<void> {\n const sortColumn = await this.getSortedColumnHeaderText();\n let sortOrder = await this.getSortingOrder();\n if (sortColumn !== label) {\n await this.getColumnHeaderByName(label).hover();\n await this.getColumnHeaderByName(label).click({ force: true });\n sortOrder = await this.getSortingOrder();\n }\n if (sortOrder !== order) {\n await this.getChild('span[class*=\"adf-datatable__header--sorted\"]').click();\n }\n }\n\n /**\n * This method is used when we want to perform right mouse click on the dataTable row and perform some action\n *\n * @param name of the data table element with which we want to click\n * @param action provide which action you want to perform\n */\n async performActionFromExpandableMenu(name: string | number, action: string): Promise<void> {\n await this.goThroughPagesLookingForRowWithName(name);\n const actionButtonLocator = await this.getActionLocatorFromExpandableMenu(name, action);\n await actionButtonLocator.click();\n await this.spinnerWaitForReload();\n }\n\n /**\n * This method is used when we want to perform double click on the dataTable row to open a file or folder\n *\n * @param name of the data table element with which we want to double click\n */\n async performClickFolderOrFileToOpen(name: string): Promise<void> {\n await this.getCellLinkByName(name).click();\n await this.spinnerWaitForReload();\n }\n\n async isItemPresent(name: string): Promise<boolean> {\n await this.goThroughPagesLookingForRowWithName(name);\n return this.getRowByName(name).isVisible();\n }\n\n async getActionLocatorFromExpandableMenu(name: string | number, action: string): Promise<Locator> {\n await this.getRowByName(name).click({ button: 'right' });\n return this.contextMenuActions.getButtonByText(action);\n }\n\n async goThroughPagesLookingForRowWithName(name: string | number): Promise<void> {\n await this.spinnerWaitForReload();\n if (await this.getRowByName(name).isVisible()) {\n return;\n }\n\n if (await this.pagination.currentPageLocator.isVisible()) {\n if ((await this.pagination.currentPageLocator.textContent()) === ' of 1 ') {\n return;\n }\n }\n if (await this.pagination.totalPageLocator.isVisible()) {\n const maxPages = (await this.pagination.totalPageLocator?.textContent())?.match(/\\d+/)?.[0];\n for (let page = 1; page <= Number(maxPages); page++) {\n if (await this.getRowByName(name).isVisible()) {\n break;\n }\n if (await this.pagination.getArrowLocatorFor(PaginationActionsType.NextPageSelector).isEnabled()) {\n await this.pagination.getArrowLocatorFor(PaginationActionsType.NextPageSelector).click();\n }\n await this.spinnerWaitForReload();\n }\n }\n }\n\n async selectItems(...names: string[]): Promise<void> {\n for (const name of names) {\n const isSelected = await this.isRowSelected(name);\n if (!isSelected) {\n const row = this.getRowByName(name);\n await row.hover();\n if (!(await this.getCheckboxForElement(name).isChecked())) {\n await this.getCheckboxForElement(name).click();\n }\n }\n }\n }\n\n async isRowSelected(itemName: string): Promise<boolean> {\n const row = this.getRowByName(itemName);\n await row.hover();\n return this.getCheckboxForElement(itemName).isChecked();\n }\n\n async getColumnHeaders(): Promise<Array<string>> {\n const columnNameLocator = this.columnHeaders;\n await this.columnHeaders.nth(0).waitFor({ state: 'attached' });\n return columnNameLocator.allTextContents();\n }\n\n async getSortedColumnHeaderText(): Promise<string> {\n return this.sortedColumnHeader.innerText();\n }\n\n private getItemLocationEl(name: string): Locator {\n return this.getRowByName(name).locator('.aca-location-link');\n }\n\n async getItemLocationText(name: string): Promise<string> {\n await this.getItemLocationEl(name).waitFor({ state: 'attached' });\n return this.getItemLocationEl(name).innerText();\n }\n\n async getItemLocationTooltip(name: string): Promise<string> {\n const location = this.getItemLocationEl(name);\n await location.hover();\n return (await location.locator('a').getAttribute('title', { timeout: timeouts.normal })) ?? '';\n }\n\n async clickItemLocation(name: string): Promise<void> {\n await this.getItemLocationEl(name).click();\n }\n\n async getSortingOrder(): Promise<string> {\n const str = (await this.sortedColumnHeader.locator('../..').getAttribute('class')) ?? '';\n if (str.includes('asc')) {\n return 'asc';\n } else if (str.includes('desc')) {\n return 'desc';\n }\n return 'none';\n }\n\n async getRowAllInnerTexts(name: string): Promise<string> {\n return (await this.getRowByName(name).locator('span').allInnerTexts()).toString();\n }\n\n async getFirstElementDetail(name: string): Promise<string> {\n const firstNode = this.getColumnValuesByName(name).first();\n return firstNode.innerText();\n }\n\n async isEmpty(): Promise<boolean> {\n return this.emptyList.isVisible();\n }\n\n async getEmptyStateTitle(): Promise<string> {\n return (await this.isEmpty()) ? this.emptyListTitle.innerText() : '';\n }\n\n async getEmptyStateSubtitle(): Promise<string> {\n return (await this.isEmpty()) ? this.emptyListSubtitle.innerText() : '';\n }\n\n async getEmptyListText(): Promise<string> {\n return (await this.isEmpty()) ? this.emptyListTest.innerText() : '';\n }\n\n async getRowsCount(): Promise<number> {\n return this.getRowLocator.count();\n }\n\n async rightClickOnItem(itemName: string): Promise<void> {\n await this.getCellByColumnNameAndRowItem(itemName, 'Name').click({ button: 'right' });\n }\n\n /**\n * Method used to create objects from names and visibility of sites from datatable\n *\n * @returns an object with sites' names and their corresponding visibility values\n */\n async getSitesNameAndVisibility(): Promise<{ [siteName: string]: string }> {\n const rowsCount = await this.sitesName.count();\n const sitesInfo: { [siteName: string]: string } = {};\n for (let i = 0; i < rowsCount; i++) {\n const siteVisibilityText = ((await this.sitesVisibility.nth(i).textContent()) ?? '').trim().toUpperCase();\n const siteNameText = ((await this.sitesName.nth(i).textContent()) ?? '').trim();\n sitesInfo[siteNameText] = siteVisibilityText;\n }\n return sitesInfo;\n }\n\n /**\n * Method used to create objects from names and roles of sites from datatable\n *\n * @returns an object with sites' names and their corresponding role values\n */\n async getSitesNameAndRole(): Promise<{ [siteName: string]: string }> {\n const rowsCount = await this.sitesName.count();\n const sitesInfo: { [siteName: string]: string } = {};\n for (let i = 0; i < rowsCount; i++) {\n const siteNameText = ((await this.sitesName.nth(i).textContent()) ?? '').trim();\n const siteRoleText = ((await this.sitesRole.nth(i).textContent()) ?? '').trim();\n sitesInfo[siteNameText] = siteRoleText;\n }\n return sitesInfo;\n }\n\n async getLockOwner(itemName: string): Promise<string> {\n const row = this.getRowByName(itemName);\n return row.locator(this.lockOwner).innerText();\n }\n\n async hasHighlightedText(location: 'name' | 'description' | 'content'): Promise<boolean> {\n switch (location) {\n case 'name':\n return this.page.locator(this.searchFileName).locator(this.highlightedText).isVisible();\n case 'description':\n return this.page.locator(this.searchFileDescription).locator(this.highlightedText).isVisible();\n case 'content':\n return this.page.locator(this.searchFileContent).locator(this.highlightedText).isVisible();\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './data-table.component';\nexport * from './mat-menu.component';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from '../base.component';\nimport { Page } from '@playwright/test';\n\nexport class AdfFolderDialogComponent extends BaseComponent {\n private static readonly rootElement = 'adf-folder-dialog';\n\n public folderNameInputLocator = this.getChild('[id=\"adf-folder-name-input\"]');\n public folderNameInputHint = this.getChild('[aria-atomic=\"true\"] span');\n public folderTitleInput = this.getChild('[id=\"adf-folder-title-input\"]');\n public folderDescriptionInput = this.getChild('[id=\"adf-folder-description-input\"]');\n public createButton = this.getChild('[id=\"adf-folder-create-button\"]');\n public cancelButton = this.getChild('[id=\"adf-folder-cancel-button\"]');\n\n constructor(page: Page) {\n super(page, AdfFolderDialogComponent.rootElement);\n }\n\n public getLabelText = (text: string) => this.getChild('label', { hasText: text });\n public getRequiredMarker = (text: string) => this.getLabelText(text).locator('span');\n\n /**\n * This method is used when we want to fill in Create new Folder Dialog and choose Create button\n *\n * @param nameInput input for the Name field\n * @param titleInput input for Title field\n * @param descriptionInput input for Description field\n */\n async createNewFolderDialog(nameInput: string, titleInput?: string, descriptionInput?: string): Promise<void> {\n await this.folderNameInputLocator.fill(nameInput);\n if (titleInput) {\n await this.folderTitleInput.fill(titleInput);\n }\n if (descriptionInput) {\n await this.folderDescriptionInput.fill(descriptionInput);\n }\n await this.createButton.click();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { timeouts } from '../../../utils';\nimport { BaseComponent } from '../base.component';\nimport { Locator, Page } from '@playwright/test';\n\nexport class AdfLibraryDialogComponent extends BaseComponent {\n private static readonly rootElement = 'adf-library-dialog';\n\n public createButton = this.getChild('[data-automation-id=\"create-library-id\"]');\n public cancelButton = this.getChild('[data-automation-id=\"cancel-library-id\"]');\n\n constructor(page: Page) {\n super(page, AdfLibraryDialogComponent.rootElement);\n }\n\n public getLabelText = (text: string) => this.getChild('label', { hasText: text });\n public getRequiredMarker = (text: string) => this.getLabelText(text).locator('span');\n public getDialogTitle = (text: string) => this.getChild('h2', { hasText: text });\n public getErrorByText = (text: string): Locator => this.getChild('.adf-library-dialog-form-field').getByText(text);\n\n /**\n * This method is used when we want to fill in Create Library Dialog and choose Create button\n *\n * @param nameInput input for the Name field\n * @param libraryIdInput input for Library ID field\n * @param descriptionInput input for Description field\n * @param visibility visibility of the library\n */\n async createLibraryWithNameAndId(nameInput: string, libraryIdInput: string, descriptionInput?: string, visibility?: string): Promise<void> {\n await this.getLabelText('Name').fill(nameInput);\n await this.getLabelText('Library ID').clear();\n await this.getLabelText('Library ID').fill(libraryIdInput);\n if (descriptionInput) {\n await this.getLabelText('Description').fill(descriptionInput);\n }\n if (visibility) {\n await this.getLabelText(visibility).click();\n }\n await this.createButton.click();\n await this.spinnerWaitForReload();\n }\n\n async isErrorMessageDisplayed(errorText: string): Promise<boolean> {\n await this.getErrorByText(errorText).waitFor({ state: 'visible', timeout: timeouts.large });\n return this.getErrorByText(errorText).isVisible();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\nimport { timeouts } from '../../../utils';\n\nexport class PasswordOverlayDialogComponent extends BaseComponent {\n private static readonly rootElement = '.cdk-overlay-pane';\n\n public closeButton = this.getChild('[data-automation-id=\"adf-password-dialog-close\"]');\n public submitButton = this.getChild('[data-automation-id=\"adf-password-dialog-submit\"]');\n public passwordInput = this.getChild('[data-automation-id=\"adf-password-dialog-input\"]');\n public errorMessage = this.getChild('[data-automation-id=\"adf-password-dialog-error\"]');\n\n constructor(page: Page, rootElement = PasswordOverlayDialogComponent.rootElement) {\n super(page, rootElement);\n }\n\n async waitForDialogToOpen(): Promise<void> {\n await this.spinnerWaitForReload();\n await this.passwordInput.waitFor({ state: 'attached', timeout: timeouts.large });\n await this.passwordInput.isVisible();\n }\n\n async waitForDialogToClose(): Promise<void> {\n await this.passwordInput.waitFor({ state: 'detached', timeout: timeouts.large });\n }\n\n async isDialogOpen(): Promise<boolean> {\n await this.waitForDialogToOpen();\n return this.passwordInput.isVisible();\n }\n\n async isCloseVisible(): Promise<boolean> {\n return this.closeButton.isVisible();\n }\n\n async isPasswordInputDisplayed(): Promise<boolean> {\n return this.passwordInput.isVisible();\n }\n\n async isErrorDisplayed(): Promise<boolean> {\n await this.errorMessage.waitFor({ state: 'visible', timeout: timeouts.short });\n return this.errorMessage.isVisible();\n }\n\n async getErrorMessage(): Promise<string> {\n if (await this.isErrorDisplayed()) {\n return this.errorMessage.innerText();\n }\n return '';\n }\n\n async enterPassword(password: string): Promise<void> {\n await this.passwordInput.fill(password);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\nimport { timeouts } from '../../../utils';\n\nexport class ViewerOverlayDialogComponent extends BaseComponent {\n private static readonly rootElement = '.cdk-overlay-pane';\n\n public copyDialog = this.getChild('[data-automation-id=\"content-node-selector-title\"]');\n public copyMenuButton = this.getChild('[id=\"app.viewer.copy\"]');\n public deleteMenuButton = this.getChild('[id=\"app.viewer.delete\"]');\n public favoriteMenuButton = this.getChild('[id=\"app.viewer.favorite.add\"]');\n public removeFavoriteMenuButton = this.getChild('[id=\"app.viewer.favorite.remove\"]');\n public shareDialogTitle = this.getChild('[data-automation-id=\"adf-share-dialog-title\"]');\n public shareDialogClose = this.getChild('[data-automation-id=\"adf-share-dialog-close\"]');\n\n constructor(page: Page, rootElement = ViewerOverlayDialogComponent.rootElement) {\n super(page, rootElement);\n }\n\n async isCopyDialogOpen(): Promise<boolean> {\n await this.copyDialog.waitFor({ state: 'attached', timeout: timeouts.medium });\n return this.copyDialog.isVisible();\n }\n\n async isCopyDialogClose(): Promise<boolean> {\n await this.copyDialog.waitFor({ state: 'detached', timeout: timeouts.medium });\n return this.copyDialog.isVisible();\n }\n\n async clickActionsCopy(): Promise<void> {\n await this.copyMenuButton.waitFor({ state: 'attached', timeout: timeouts.medium });\n await this.copyMenuButton.click();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Locator, Page, expect } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class ContentNodeSelectorDialog extends BaseComponent {\n private static readonly rootElement = 'adf-content-node-selector';\n private readonly selectedRow = this.getChild('.adf-is-selected');\n private readonly getRowByName = (name: string | number): Locator => this.getChild(`adf-datatable-row`, { hasText: name.toString() });\n\n public cancelButton = this.getChild('[data-automation-id=\"content-node-selector-actions-cancel\"]');\n public actionButton = this.getChild('[data-automation-id=\"content-node-selector-actions-choose\"]');\n public locationDropDown = this.getChild('[id=\"site-dropdown-container\"] .adf-sites-dropdown-form-field');\n\n getOptionLocator = (optionName: string): Locator => this.page.locator('[role=listbox] [role=option]', { hasText: optionName }).first();\n getDialogTitle = (text: string) => this.getChild('[data-automation-id=\"content-node-selector-title\"]', { hasText: text });\n getBreadcrumb = (text: string) => this.getChild('[data-automation-id=\"current-folder\"]', { hasText: text });\n getFolderIcon = this.getChild('[data-automation-id=\"dropdown-breadcrumb-trigger\"]');\n loadMoreButton = this.getChild('[data-automation-id=\"adf-infinite-pagination-button\"]');\n\n constructor(page: Page) {\n super(page, ContentNodeSelectorDialog.rootElement);\n }\n\n async loadMoreNodes(): Promise<void> {\n await this.spinnerWaitForReload();\n while (await this.loadMoreButton.isVisible()) {\n await this.loadMoreButton.click();\n }\n }\n\n async selectLocation(location: string): Promise<void> {\n await this.locationDropDown.click();\n const optionLocator = this.getOptionLocator(location);\n await optionLocator.click();\n await optionLocator.waitFor({ state: 'detached' });\n }\n\n async selectDestination(folderName: string): Promise<void> {\n const row = this.getRowByName(folderName);\n await row.scrollIntoViewIfNeeded();\n\n await expect(row).toBeVisible();\n await row.click({ trial: true });\n\n await expect(async () => {\n await row.hover({ timeout: 1000 });\n await row.click();\n await expect(this.selectedRow).toBeVisible();\n }).toPass({\n intervals: [2_000],\n timeout: 20_000\n });\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Locator, Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\nimport { timeouts } from '../../../utils';\n\nexport class CreateFromTemplateDialogComponent extends BaseComponent {\n private static readonly rootElement = '.aca-create-from-template-dialog';\n\n constructor(page: Page) {\n super(page, CreateFromTemplateDialogComponent.rootElement);\n }\n\n cancelButton = this.getChild('[data-automation-id=\"create-from-template-dialog-cancel-button\"]');\n createButton = this.getChild('[data-automation-id=\"create-from-template-dialog-create-button\"]');\n getDialogTitle = (text: string): Locator => this.getChild('[data-automation-id=\"create-from-template-title\"]', { hasText: text });\n getDialogLabel = (text: string): Locator => this.getChild('label', { hasText: text });\n getErrorByText = (text: string): Locator => this.page.locator('[data-automation-id=\"create-from-template-field-error\"]', { hasText: text });\n\n async isErrorMessageDisplayed(errorText: string): Promise<boolean> {\n await this.getErrorByText(errorText).waitFor({ state: 'visible', timeout: timeouts.large });\n return this.getErrorByText(errorText).isVisible();\n }\n\n /**\n * This method is used when we want to fill in Create new folder/document/file from template dialog and choose Create button\n */\n async createFromTemplateAction(nameInput: string, titleInput?: string, descriptionInput?: string): Promise<void> {\n await this.getDialogLabel('Name').fill(nameInput);\n if (titleInput) {\n await this.getDialogLabel('Title').fill(titleInput);\n }\n if (descriptionInput) {\n await this.getDialogLabel('Description').fill(descriptionInput);\n }\n await this.createButton.click();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class AdfConfirmDialogComponent extends BaseComponent {\n private static readonly rootElement = 'adf-confirm-dialog';\n\n constructor(page: Page) {\n super(page, AdfConfirmDialogComponent.rootElement);\n }\n\n getDialogTitle = (text: string) => this.getChild('[data-automation-id=\"adf-confirm-dialog-title\"]', { hasText: text });\n getDialogContent = (text: string) => this.getChild('[data-automation-id=\"adf-confirm-dialog-base-message\"]', { hasText: text });\n okButton = this.getChild('[data-automation-id=\"adf-confirm-dialog-confirmation\"]');\n cancelButton = this.getChild('[data-automation-id=\"adf-confirm-dialog-reject\"]');\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class DateTimePicker extends BaseComponent {\n private static readonly rootElement = '[role=\"dialog\"]';\n dayPicker = this.getChild('[role=\"grid\"]');\n nextMonthBtn = this.getChild('[aria-label=\"Next month\"]');\n\n constructor(page: Page) {\n super(page, DateTimePicker.rootElement);\n }\n\n async isCalendarOpen(): Promise<boolean> {\n const element = this.page.locator(DateTimePicker.rootElement);\n return element.isVisible();\n }\n\n async pickDateTime(): Promise<void> {\n const today = new Date();\n const nextAvailableDay = new Date();\n nextAvailableDay.setDate(today.getDate() + 2);\n if (nextAvailableDay.getMonth() !== today.getMonth()) {\n await this.nextMonthBtn.click();\n }\n await this.selectDay(nextAvailableDay.getDate());\n }\n\n async selectDay(day: number): Promise<void> {\n const firstActiveDayElem = this.dayPicker.locator(`text=${day}`).first();\n await firstActiveDayElem.click();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ElementHandle, Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\nimport { timeouts } from '../../../utils';\nimport { DateTimePicker } from '../datetime-picker/datetime-picker.component';\n\nexport class ShareDialogComponent extends BaseComponent {\n private static readonly rootElement = 'adf-share-dialog';\n\n constructor(page: Page) {\n super(page, ShareDialogComponent.rootElement);\n }\n\n closeButton = this.getChild('[data-automation-id=\"adf-share-dialog-close\"]');\n dialogTitle = this.getChild('[data-automation-id=\"adf-share-dialog-title\"]');\n infoText = this.getChild('.adf-share-link__info').first();\n shareToggle = this.getChild(`[data-automation-id='adf-share-toggle']`);\n url = this.getChild(`[data-automation-id='adf-share-link']`);\n urlAction = this.getChild('.adf-input-action');\n expireToggle = this.getChild(`[data-automation-id='adf-expire-toggle']`);\n expireInput = this.getChild('input[formcontrolname=\"time\"]');\n datetimePickerButton = this.getChild('[data-automation-id=\"adf-content-share-expiration-field\"] button');\n dateErrorText = this.getChild('[data-automation-id=\"adf-share-link-input-warning\"]');\n clockIcon = this.getChild('[adf-icon=\"timer\"]');\n\n dateTimePicker = new DateTimePicker(this.page);\n\n async getLabels(): Promise<Array<string>> {\n return this.page.$$eval('.adf-share-link__label', (elements) => elements.map((element) => element.textContent));\n }\n\n async getDialogTitle(): Promise<string> {\n return this.dialogTitle.innerText();\n }\n\n async getInfoText(): Promise<string> {\n return this.infoText.innerText();\n }\n\n async getLinkUrl(): Promise<string> {\n return this.url.first().inputValue();\n }\n\n async isUrlReadOnly(): Promise<boolean> {\n const urlAttr = await this.url.getAttribute('readonly');\n return urlAttr === 'true';\n }\n\n async isCloseEnabled(): Promise<boolean> {\n return this.closeButton.isEnabled();\n }\n\n async clickClose(): Promise<void> {\n await this.page.waitForTimeout(timeouts.tiny);\n await this.closeButton.click();\n }\n\n async isToggleStatus(toggle: ElementHandle, status: string): Promise<boolean> {\n const toggleClass = await toggle.getAttribute('class');\n return toggleClass.includes(status);\n }\n\n async isShareToggleChecked(): Promise<boolean> {\n const shareToggleElement = await this.shareToggle.elementHandle();\n return this.isToggleStatus(shareToggleElement, 'checked');\n }\n\n async isExpireToggleEnabled(): Promise<boolean> {\n const expireToggleElement = await this.expireToggle.elementHandle();\n return this.isToggleStatus(expireToggleElement, 'checked');\n }\n\n async getExpireDate(): Promise<string> {\n return this.expireInput.inputValue();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class UploadNewVersionDialog extends BaseComponent {\n private static readonly rootElement = 'adf-new-version-uploader-dialog';\n\n public cancelButton = this.getChild('#adf-new-version-cancel');\n public uploadButton = this.getChild('[data-automation-id=\"adf-new-version-file-upload\"]');\n public majorOption = this.getChild('#adf-new-version-major');\n public description = this.getChild('#adf-new-version-text-area');\n public title = this.getChild(' [data-automation-id=\"new-version-uploader-dialog-title\"]');\n\n constructor(page: Page) {\n super(page, UploadNewVersionDialog.rootElement);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class ManageVersionsDialog extends BaseComponent {\n private static readonly rootElement = '.adf-new-version-uploader-dialog';\n\n async clickListActionButtonForVersion(version: string): Promise<void> {\n await this.getChild(`[id=\"adf-version-list-action-menu-button-${version}\"]`).click();\n }\n\n async isVersionPresent(version: string): Promise<boolean> {\n return this.getChild(`[id=\"adf-version-list-item-version-${version}\"]`).isVisible();\n }\n\n async isDescriptionPresent(version: string): Promise<boolean> {\n return this.getChild(`[id=\"adf-version-list-item-comment-${version}\"]`).isVisible();\n }\n\n async waitForProgressBarToDisappear(attachedTimeout = 5000): Promise<void> {\n const loadingBar = this.getChild('[data-automation-id=\"version-history-loading-bar\"]');\n try {\n await loadingBar.waitFor({ state: 'attached', timeout: attachedTimeout });\n } catch {\n return;\n }\n await loadingBar.waitFor({ state: 'detached' });\n }\n\n async waitForDialog(): Promise<void> {\n await this.page.locator('[data-automation-id=\"new-version-uploader-dialog-title\"]').waitFor();\n }\n\n constructor(page: Page) {\n super(page, ManageVersionsDialog.rootElement);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class UploadDialog extends BaseComponent {\n private static readonly rootElement = 'aca-upload-files-dialog';\n\n public uploadDialogContent = this.getChild('.adf-upload-dialog__content');\n public closeButton = this.getChild('#adf-upload-dialog-close');\n public minimizeButton = this.getChild('[data-automation-id=\"adf-upload-dialog__toggle-minimize\"]');\n public uploadDialogMinimized = this.getChild('.adf-upload-dialog--minimized');\n\n constructor(page: Page) {\n super(page, UploadDialog.rootElement);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class AdfDeleteTrashComponent extends BaseComponent {\n private static readonly rootElement = 'adf-confirm-dialog';\n\n constructor(page: Page) {\n super(page, AdfDeleteTrashComponent.rootElement);\n }\n\n dialogTitle = this.getChild('[data-automation-id=\"adf-confirm-dialog-title\"]');\n dialogDescription = this.getChild('[data-automation-id=\"adf-confirm-dialog-base-message\"]');\n deleteButton = this.getChild('[id=\"adf-confirm-accept\"]');\n keepButton = this.getChild('[id=\"adf-confirm-cancel\"]');\n\n async waitForDialog(): Promise<void> {\n await this.dialogTitle.waitFor();\n }\n\n async isDialogOpen(): Promise<boolean> {\n return this.dialogTitle.isVisible();\n }\n\n async getDialogTitle(): Promise<string> {\n return this.dialogTitle.textContent();\n }\n\n async getDialogDescription(): Promise<string> {\n return this.dialogDescription.textContent();\n }\n\n async isDeleteEnabled(): Promise<boolean> {\n return this.deleteButton.isEnabled();\n }\n\n async isKeepEnabled(): Promise<boolean> {\n return this.keepButton.isEnabled();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Locator, Page, expect } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class LinkRulesDialog extends BaseComponent {\n private static readonly rootElement = 'aca-rule-set-picker';\n private readonly getRowByName = (name: string | number): Locator => this.getChild(`adf-datatable-row`, { hasText: name.toString() });\n\n selectFolderButton = this.getChild('button', { hasText: ' Select folder ' });\n getOptionLocator = (optionName: string): Locator => this.page.locator('[role=listbox] [role=option]', { hasText: optionName }).first();\n getFolderIcon = this.getChild('.adf-dropdown-breadcrumb-icon', { hasText: 'folder' });\n getLibraryIcon = this.getChild('.adf-empty-content__icon', { hasText: 'library_books' });\n\n constructor(page: Page) {\n super(page, LinkRulesDialog.rootElement);\n }\n\n async selectDestination(folderName: string): Promise<void> {\n const row = this.getRowByName(folderName);\n await row.scrollIntoViewIfNeeded();\n\n await expect(row).toBeVisible();\n await row.click({ trial: true });\n\n await expect(async () => {\n await row.hover({ timeout: 1000 });\n await row.click();\n await expect(this.selectFolderButton).toBeEnabled();\n }).toPass({\n intervals: [2_000],\n timeout: 20_000\n });\n }\n\n async waitForLinkRules(): Promise<void> {\n await this.getLibraryIcon.waitFor();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class EditDialog extends BaseComponent {\n private static readonly rootElement = 'adf-folder-dialog';\n\n public editDialog = this.page.locator(EditDialog.rootElement);\n public titleInput = this.getChild('[data-automation-id=\"adf-folder-dialog-title\"]');\n public cancelButton = this.getChild('#adf-folder-cancel-button');\n public updateButton = this.getChild('#adf-folder-create-button');\n public descriptionInput = this.getChild('#adf-folder-description-input');\n public nameInput = this.getChild('#adf-folder-name-input');\n public fieldHint = this.getChild('[aria-atomic=\"true\"] span');\n\n constructor(page: Page) {\n super(page, EditDialog.rootElement);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class FolderInformationDialogComponent extends BaseComponent {\n private static readonly rootElement = '[data-automation-id=\"adf-dialog-container\"]';\n\n constructor(page: Page) {\n super(page, FolderInformationDialogComponent.rootElement);\n }\n\n folderName = this.getChild('.aca-node-info-header');\n doneButton = this.getChild('[data-automation-id=\"adf-dialog-actions-confirm\"]');\n folderNumberOfFiles = this.getChild('[data-automation-id=\"node-info-number-of-files\"]');\n folderSize = this.getChild('[data-automation-id=\"node-info-size\"]');\n folderLocation = this.getChild('[data-automation-id=\"node-info-location\"]');\n folderCreationDate = this.getChild('[data-automation-id=\"node-info-creation-date\"]');\n folderModifiedDate = this.getChild('[data-automation-id=\"node-info-modify-date\"]');\n\n async getFolderSizeNumber(): Promise<number> {\n const textContent = await this.folderSize.textContent();\n if (!textContent) {\n throw new Error('Folder size text content is null or undefined');\n }\n return parseFloat(textContent.trim().split(/\\s+/)[0].replace(/,/g, ''));\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './adf-folder-dialog.component';\nexport * from './adf-library-dialog.component';\nexport * from './password-overlay-dialog.component';\nexport * from './viewer-overlay-dialog.component';\nexport * from './content-node-selector-dialog';\nexport * from './create-from-template-dialog-component';\nexport * from './adf-confirm-dialog.component';\nexport * from './share-dialog.component';\nexport * from './upload-new-version-dialog.component';\nexport * from './manage-versions-dialog.component';\nexport * from './upload-dialog.component';\nexport * from './delete-trash-dialog.component';\nexport * from './link-rules.component';\nexport * from './edit-dialog.component';\nexport * from './folder-information-dialog.component';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from '../base.component';\nimport { Page } from '@playwright/test';\n\nexport class ManageRulesDialogComponent extends BaseComponent {\n private static readonly rootElement = 'aca-edit-rule-dialog';\n\n public createRuleButton = this.getChild('[data-automation-id=\"edit-rule-dialog-submit\"]');\n public cancelRuleButton = this.getChild('.aca-edit-rule-dialog__footer button').filter({ hasText: 'Cancel' });\n public ruleNameInputLocator = this.getChild('[id=\"rule-details-name-input\"]');\n public ruleDescriptionInputLocator = this.getChild('[id=\"rule-details-description-textarea\"]');\n public addConditionButton = this.getChild('[data-automation-id=\"add-condition-button\"]');\n public addConditionGroupButton = this.getChild('[data-automation-id=\"add-group-button\"]');\n public fieldDropDown = this.getChild('[data-automation-id=\"field-select\"]');\n public comparatorDropDown = this.getChild('[data-automation-id=\"comparator-select\"]');\n public valueField = this.getChild('[data-automation-id=\"value-input\"]');\n public whenCreatedCheckbox = this.getChild('[data-automation-id=\"rule-trigger-checkbox-inbound\"]');\n public whenDeletedCheckbox = this.getChild('[data-automation-id=\"rule-trigger-checkbox-outbound\"]');\n public destinationFolderButton = this.getChild('[data-automation-id=\"card-textitem-clickable-icon-destination-folder\"]');\n public ruleSubfoldersCheckbox = this.getChild('[data-automation-id=\"rule-option-checkbox-inheritable\"]');\n public ruleDisableCheckbox = this.getChild('[data-automation-id=\"rule-option-checkbox-disabled\"] input');\n public actionsEllipsisButtons = this.getChild('[data-automation-id=\"rule-action-list-action-menu\"]');\n public actionsEllipsisDelete = this.page.locator('[data-automation-id=\"rule-action-list-remove-action-button\"]');\n public conditionsEllipsisButtons = this.getChild('[data-automation-id=\"condition-actions-button\"]');\n public conditionsEllipsisDelete = this.page.locator('button[title=\"Remove\"]');\n\n constructor(page: Page) {\n super(page, ManageRulesDialogComponent.rootElement);\n }\n\n async deleteActions(noActions: number): Promise<void> {\n for (let i = 0; i < noActions; i++) {\n await this.actionsEllipsisButtons.first().click();\n await this.actionsEllipsisDelete.click();\n }\n }\n\n async deleteConditions(noConditions: number): Promise<void> {\n for (let i = 0; i < noConditions; i++) {\n await this.conditionsEllipsisButtons.first().click();\n await this.conditionsEllipsisDelete.click();\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Locator, Page, expect } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class ManageRules extends BaseComponent {\n private static readonly rootElement = '.aca-manage-rules';\n\n public getGroupsList = (optionName: string): Locator => this.getChild('.aca-rule-list-item__header', { hasText: optionName });\n public ruleToggle = this.getChild('.aca-manage-rules__container [role=\"switch\"]').first();\n public ruleToggleFalse = this.getChild('aca-rule-list-grouping aca-rule-list-item [role=\"switch\"][aria-checked=\"false\"]').first();\n public ruleDetailsDeleteButton = this.getChild('#delete-rule-btn');\n public ruleDetailsEditButton = this.getChild('#edit-rule-btn');\n public ruleDetailsPerformActionsDiv = this.getChild('adf-card-view-selectitem [data-automation-id=\"select-box\"]');\n public rulesEmptyList = this.getChild('adf-empty-content');\n public ruleActions = this.getChild('aca-rule-action');\n public ruleConditionsInGroup = this.getChild('aca-rule-composite-condition aca-rule-simple-condition');\n public ruleDescription = this.getChild('.aca-manage-rules__container__rule-details__header__title__description');\n\n constructor(page: Page) {\n super(page, ManageRules.rootElement);\n }\n\n async checkAspects(aspects: string[]): Promise<void> {\n for (let i = 0; i < aspects.length; i++) {\n const aspectsActions = await this.ruleDetailsPerformActionsDiv.nth(i).innerText();\n expect(aspects).toContain(aspectsActions);\n }\n }\n\n async checkIfRuleListEmpty(): Promise<boolean> {\n return this.rulesEmptyList.isVisible();\n }\n\n async checkIfRuleIsOnTheList(ruleName: string): Promise<void> {\n await expect(this.getGroupsList(ruleName)).toBeVisible({ timeout: 5000 });\n }\n\n async countConditionsInGroup(): Promise<number> {\n return this.ruleConditionsInGroup.count();\n }\n\n async turnOffRuleToggle(): Promise<void> {\n await expect(async () => {\n await this.ruleToggle.hover({ timeout: 1000 });\n await this.ruleToggle.click();\n await expect(this.ruleToggleFalse).toBeVisible();\n }).toPass({\n intervals: [2_000],\n timeout: 20_000\n });\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from '../base.component';\nimport { Page } from '@playwright/test';\n\nexport class RulesToolbarComponent extends BaseComponent {\n private static readonly rootElement = '.aca-manage-rules__actions-bar';\n\n constructor(page: Page) {\n super(page, RulesToolbarComponent.rootElement);\n }\n\n async clickCreateRuleButton(): Promise<void> {\n const button = this.getChild('[data-automation-id=\"manage-rules-create-button\"]');\n await button.click();\n }\n\n async clickLinkRulesButton(): Promise<void> {\n const button = this.getChild('[data-automation-id=\"manage-rules-link-button\"]');\n await button.click();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './manage-rules-dialog.component';\nexport * from './manage-rules.component';\nexport * from './manage-rules-toolbar.component';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Locator, Page } from '@playwright/test';\nimport { BaseComponent } from './base.component';\nimport { timeouts } from '../../public-api';\n\nexport enum ActionType {\n AddAspect = 'Add aspect',\n SimpleWorkflow = 'Add simple workflow',\n IncrementCounter = 'Increment Counter',\n CheckIn = 'Check in',\n AutoDeclareOptions = 'Auto-Declare Options',\n CheckOut = 'Check out',\n Copy = 'Copy',\n ExecuteScript = 'Execute script',\n ExtractCommonMetadataFields = 'Extract common metadata fields',\n FileAsRecord = 'File as Record',\n FileVersionAsRecord = 'File Version as Record',\n HideRecord = 'Hide Record',\n Import = 'Import',\n Move = 'Move',\n RemoveAspect = 'Remove aspect',\n RequestAIRenditions = 'Request AI renditions',\n SendEmail = 'Send email',\n SetPropertyValue = 'Set property value',\n SpecialiseType = 'Specialise type',\n TransformAndCopyContent = 'Transform and copy content',\n TransformAndCopyImage = 'Transform and copy image'\n}\n\nexport enum MimeType {\n AdobePDFDocument = 'Adobe PDF Document [application/pdf]',\n BitmapImage = 'Bitmap Image [image/bmp]',\n JPEGImage = 'JPEG Image [image/jpeg]',\n GIFImage = 'GIF Image [image/gif]',\n TIFFImage = 'TIFF Image [image/tiff]',\n PNGImage = 'PNG Image [image/png]'\n}\n\nexport class ActionsDropdownComponent extends BaseComponent {\n private static readonly rootElement = 'aca-edit-rule-dialog aca-rule-action-list';\n\n private readonly getOptionLocator = (optionName: string): Locator =>\n this.page.locator('[role=listbox] [role=option]', { hasText: optionName }).first();\n private readonly ruleActionLocator = this.getChild('aca-rule-action');\n private readonly addActionButtonLocator = this.getChild('[data-automation-id=\"rule-action-list-add-action-button\"]');\n private readonly actionDropdownLocator = this.getChild('[data-automation-id=\"rule-action-select\"]');\n private readonly actionAspectNameLocator = '[data-automation-id=\"header-aspect-name\"] .adf-property-field';\n private readonly actionCheckInInputLocator = '[data-automation-id=\"header-description\"] input';\n private readonly actionSimpleWorkflowStepInputLocator = '[data-automation-id=\"header-approve-step\"] input';\n private readonly actionSimpleWorkflowActionChoiceLocator = '[data-automation-id=\"content-node-selector-actions-choose\"]';\n private readonly actionSimpleWorkflowLabelApproveLocator = `[data-automation-id=\"card-boolean-label-approve-move\"]`;\n private readonly actionSimpleWorkflowSRejectStepLocator = '[data-automation-id=\"header-reject-step\"] input';\n private readonly actionSimpleWorkflowRejectFolderLocator = `[data-automation-id=\"header-reject-folder\"] input`;\n private readonly actionSimpleWorkflowApproveFolderLocator = `[data-automation-id=\"header-approve-folder\"] [role=\"img\"]`;\n private readonly actionSpecialiseTypeLocator = '[data-automation-id=\"header-type-name\"] [role=\"combobox\"]';\n private readonly mimeTypeDropdownLocator = this.getChild('[data-automation-id=\"select-box\"][aria-label=\"Mimetype *\"]');\n private readonly actionTransformAndCopyContentDestinationFolderLocator = '[data-automation-id=\"card-textitem-value-destination-folder\"]';\n private readonly contentNodeSelectorSearchInput = '[data-automation-id=\"content-node-selector-search-input\"]';\n\n constructor(page: Page) {\n super(page, ActionsDropdownComponent.rootElement);\n }\n\n async selectAction(action: Partial<ActionType>, index: number): Promise<void> {\n if (index > 0) {\n await this.addActionButtonLocator.click();\n }\n await this.actionDropdownLocator.nth(index).hover({ timeout: 1000 });\n await this.actionDropdownLocator.nth(index).click();\n const option = this.getOptionLocator(action);\n await option.click();\n }\n\n async dropdownSelection(selectValue: string, locator: string, index: number): Promise<void> {\n await this.ruleActionLocator.nth(index).locator(locator).click();\n await this.getOptionLocator(selectValue).nth(0).click();\n }\n\n async insertCheckInActionValues(checkInValue: string, index: number): Promise<void> {\n await this.ruleActionLocator.nth(index).locator(this.actionCheckInInputLocator).fill(checkInValue);\n }\n\n async insertAddAspectActionValues(AspectValue: string, index: number): Promise<void> {\n await this.dropdownSelection(AspectValue, this.actionAspectNameLocator, index);\n }\n\n async insertSpecialiseTypeActionValues(specialiseTypeValue: string, index: number): Promise<void> {\n await this.dropdownSelection(specialiseTypeValue, this.actionSpecialiseTypeLocator, index);\n }\n\n async insertSimpleWorkflowActionValues(stepValue: string, index: number): Promise<void> {\n await this.ruleActionLocator.nth(index).locator(this.actionSimpleWorkflowStepInputLocator).fill(stepValue);\n await this.ruleActionLocator.nth(index).locator(this.actionSimpleWorkflowApproveFolderLocator).click();\n await this.page.locator(this.actionSimpleWorkflowActionChoiceLocator).click();\n await this.ruleActionLocator.nth(index).locator(this.actionSimpleWorkflowLabelApproveLocator).click();\n await this.ruleActionLocator.nth(index).locator(this.actionSimpleWorkflowSRejectStepLocator).fill(stepValue);\n await this.ruleActionLocator.nth(index).locator(this.actionSimpleWorkflowRejectFolderLocator).click();\n await this.page.locator(this.actionSimpleWorkflowActionChoiceLocator).click();\n }\n\n /**\n * Selects a MIME type from the dropdown for content transformation actions.\n * This method is typically used when configuring folder rules with transform actions\n * (e.g., Transform and Copy Content) to specify the target format for file conversion.\n *\n * @param mimeType - The MIME type to select (e.g., MimeType.AdobePDFDocument for PDF conversion)\n * @param index - The zero-based index of the action dropdown (use 0 for the first action, 1 for the second, etc.)\n *\n * @example\n * ```typescript\n * // Select PDF as the target format for the first transform action\n * await actionsDropdown.selectMimeType(MimeType.AdobePDFDocument, 0);\n * ```\n */\n async selectMimeType(mimeType: Partial<MimeType>, index: number): Promise<void> {\n await this.mimeTypeDropdownLocator.nth(index).hover({ timeout: timeouts.short });\n await this.mimeTypeDropdownLocator.nth(index).click();\n const option = this.getOptionLocator(mimeType);\n await option.click();\n }\n\n /**\n * Selects a destination folder for the Transform and Copy Content action.\n * This method opens the folder picker dialog, searches for a folder by name,\n * and selects it as the destination where transformed files will be copied.\n *\n * The method performs the following steps:\n * 1. Clicks the destination folder field to open the content node selector dialog\n * 2. Fills the search input with the provided search term\n * 3. Waits for search results to load\n * 4. Clicks on the first matching folder from the results\n * 5. Confirms the selection by clicking the Choose button\n *\n * @param index - The zero-based index of the action dropdown (use 0 for the first action, 1 for the second, etc.)\n * @param searchTerm - The name or partial name of the destination folder to search for (e.g., 'TO_PDF')\n *\n * @example\n * ```typescript\n * // Select 'TO_PDF' folder as the destination for transformed files\n * await actionsDropdown.selectDestinationFolderTransformAndCopyContent(0, 'TO_PDF');\n * ```\n */\n async selectDestinationFolderTransformAndCopyContent(index: number, searchTerm: string): Promise<void> {\n // Click on the destination folder input field to open the folder picker dialog\n await this.ruleActionLocator.nth(index).locator(this.actionTransformAndCopyContentDestinationFolderLocator).click();\n\n // Locate and fill the search input field within the content node selector\n const searchInput = this.page.locator(this.contentNodeSelectorSearchInput);\n await searchInput.fill(searchTerm);\n\n // Click on the folder from the search results (first match if multiple)\n const folderRow = this.page.locator('.adf-datatable-body .adf-name-location-cell-name', { hasText: searchTerm }).first();\n await folderRow.click();\n\n // Click the Choose button to confirm selection\n await this.page.locator(this.actionSimpleWorkflowActionChoiceLocator).click();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Locator } from '@playwright/test';\nimport { ManageRulesDialogComponent } from './manageRules/manage-rules-dialog.component';\n\nexport enum Field {\n Name = 'Name',\n Size = 'Size',\n Mimetype = 'Mimetype',\n Encoding = 'Encoding',\n HasCategory = 'Has category',\n HasTag = 'Has tag',\n HasAspect = 'Has aspect'\n}\n\nexport enum Comparator {\n Equals = '(=) Equals',\n Contains = 'Contains',\n StartsWith = 'Starts with',\n EndsWith = 'Ends with'\n}\n\nexport class ConditionComponent extends ManageRulesDialogComponent {\n private readonly getOptionLocator = (optionName: string): Locator =>\n this.page.locator('[role=listbox] [role=option]', { hasText: optionName }).first();\n\n private async selectField(fields: Partial<Field>, index: number): Promise<void> {\n await this.fieldDropDown.nth(index).click();\n const option = this.getOptionLocator(fields);\n await option.click();\n }\n\n private async selectComparator(comparators: Partial<Comparator>, index: number): Promise<void> {\n await this.comparatorDropDown.nth(index).click();\n const option = this.getOptionLocator(comparators);\n await option.click();\n }\n\n async addCondition(fields: Partial<Field>, value: string, index: number, comparators?: Partial<Comparator>): Promise<void> {\n await this.addConditionButton.first().click();\n await this.selectField(fields, index);\n if (comparators) {\n await this.selectComparator(comparators, index);\n }\n await this.valueField.nth(index).fill(value);\n }\n\n async addConditionGroup(fields: Partial<Field>, value: string, index: number, comparators?: Partial<Comparator>): Promise<void> {\n await this.addConditionGroupButton.last().click();\n await this.addConditionButton.nth(index).click();\n await this.selectField(fields, index);\n if (comparators) {\n await this.selectComparator(comparators, index);\n }\n await this.valueField.nth(index).fill(value);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from './base.component';\nimport { Locator, Page } from '@playwright/test';\n\nexport class AdfInfoDrawerComponent extends BaseComponent {\n private static readonly rootElement = 'adf-info-drawer';\n\n constructor(page: Page) {\n super(page, AdfInfoDrawerComponent.rootElement);\n }\n\n private readonly categoriesManagement = this.getChild('adf-categories-management');\n private readonly tagsCreator = this.getChild('adf-tags-creator');\n\n public getNameField = (labelText: string) =>\n this.getChild(`[data-automation-id=\"library-name-properties-wrapper\"] input[placeholder='${labelText}']`);\n public getIdField = (labelText: string) => this.getChild(`[data-automation-id=\"library-id-properties-wrapper\"] input[placeholder='${labelText}']`);\n public getVisibilityField = (labelText: string): Locator =>\n this.getChild(`[data-automation-id=\"library-visibility-properties-wrapper\"]`).getByLabel(labelText);\n public getDescriptionField = this.getChild('[data-automation-id=\"library-description-properties-wrapper\"] textarea');\n public propertiesTab = this.page.getByRole('tab', { name: 'Properties' });\n public commentsTab = this.page.getByRole('tab', { name: 'Comments' });\n public infoDrawerTabs = this.getChild('.adf-info-drawer-tab');\n public commentInputField = this.getChild('#comment-input');\n public commentsHeader = this.getChild('#comment-header');\n public addCommentButton = this.getChild('[data-automation-id=\"comments-input-add\"]');\n public commentsList = this.getChild('.adf-comment-list-item');\n public commentUsername = this.getChild('.adf-comment-user-name');\n public commentTextContent = this.getChild('.adf-comment-message');\n public commentTimestamp = this.getChild('.adf-comment-message-time');\n public infoDrawerPanel = this.page.locator(AdfInfoDrawerComponent.rootElement);\n public headerTitle = this.getChild('.adf-info-drawer-layout-header-title').getByRole('heading');\n public editButton = this.page.getByRole('button', { name: 'Edit' });\n public cancelButton = this.page.getByRole('button', { name: 'Cancel' });\n public updateButton = this.page.getByRole('button', { name: 'Update' });\n public hintMessage = this.getChild('[data-automation-id=\"app-library-metadata-form-name-hint\"]');\n public errorNameMessage = this.getChild('[data-automation-id=\"library-name-properties-wrapper\"] [aria-atomic=\"true\"]');\n public errorDescriptionMessage = this.getChild('[data-automation-id=\"library-description-properties-wrapper\"] [aria-atomic=\"true\"]');\n public expandDetailsButton = this.getChild(`button[title='Expand panel']`);\n public expandedDetailsTabs = this.page.locator('.aca-details-container [role=\"tab\"]');\n public expandedDetailsPermissionsTab = this.expandedDetailsTabs.getByText('Permissions');\n public nameField = this.getChild('input[placeholder=Name]');\n public idField = this.getChild(`input[placeholder='Library ID']`);\n public descriptionField = this.getChild('textarea[placeholder=Description]');\n public visibilityField = this.infoDrawerPanel.getByRole('combobox');\n public selectVisibility = (visibilityOption: string) => this.page.getByRole('listbox').getByRole('option', { name: visibilityOption }).click();\n public tagsAccordion = this.getChild('[data-automation-id=\"adf-content-metadata-tags-panel\"]');\n public categoriesAccordion = this.getChild('[data-automation-id=\"adf-content-metadata-categories-panel\"]');\n public tagsAccordionPenButton = this.tagsAccordion.locator('[data-automation-id=\"showing-tag-input-button\"]');\n public categoriesAccordionPenButton = this.categoriesAccordion.locator('[data-automation-id=\"meta-data-categories-edit\"]');\n public tagsInput = this.tagsCreator.locator('input');\n public createTagButton = this.tagsCreator.locator('.adf-create-tag-label');\n public tagsChips = this.tagsCreator.locator('[role=\"listitem\"]');\n public tagsChipsXButton = this.tagsChips.locator('.adf-dynamic-chip-list-delete-icon');\n public tagsAccordionCancelButton = this.getChild('[data-automation-id=\"reset-tags-metadata\"]');\n public tagsAccordionConfirmButton = this.getChild('[data-automation-id=\"save-tags-metadata\"]');\n public categoriesAccordionCancelButton = this.getChild('[data-automation-id=\"reset-metadata\"]');\n public categoriesAccordionConfirmButton = this.getChild('[data-automation-id=\"save-categories-metadata\"]');\n public categoriesInput = this.categoriesManagement.locator('input');\n public categoriesListItems = this.categoriesManagement.locator('.adf-category');\n public categoriesItemRemoveButton = this.categoriesManagement.locator('[data-automation-id=\"categories-remove-category-button\"]');\n public categoriesCreatedList = this.getChild('.adf-metadata-categories');\n public generalInfoAccordion = this.getChild('[data-automation-id=\"adf-metadata-group-properties\"]');\n public generalInfoProperties = this.generalInfoAccordion.locator('.adf-property');\n public generalInfoEditButton = this.getChild('[data-automation-id=\"meta-data-general-info-edit\"]');\n public exifInfoAccordion = this.getChild('[data-automation-id=\"adf-metadata-group-APP.CONTENT_METADATA.EXIF_GROUP_TITLE\"]');\n public exifInfoProperties = this.exifInfoAccordion.locator('.adf-property');\n public generalInfoNameField = this.getChild('[data-automation-id=\"card-textitem-value-properties.cm:name\"]');\n public generalInfoTitleField = this.getChild('[data-automation-id=\"card-textitem-value-properties.cm:title\"]');\n public generalInfoAuthorField = this.getChild('[data-automation-id=\"card-textitem-value-properties.cm:author\"]');\n public generalInfoDescriptionField = this.getChild('[data-automation-id=\"card-textitem-value-properties.cm:description\"]');\n public generalInfoCreatorField = this.getChild('[data-automation-id=\"card-textitem-value-createdByUser.displayName\"]');\n public generalInfoCreatedDateField = this.getChild('[data-automation-id=\"header-createdAt\"] .adf-property-value');\n public generalInfoModifiedDateField = this.getChild('[data-automation-id=\"header-modifiedAt\"] .adf-property-value');\n public generalInfoMimeTypeField = this.getChild('[data-automation-id=\"card-textitem-value-content.mimeTypeName\"]');\n public generalInfoContentTypeCombobox = this.getChild('[role=\"combobox\"]');\n public generalInfoNameError = this.getChild('[data-automation-id=\"card-textitem-error-properties.cm:name\"]');\n public generalInfoSaveButton = this.getChild('[data-automation-id=\"save-general-info-metadata\"]');\n\n async checkCommentsHeaderCount(): Promise<number> {\n const commentsCountTextContent = await this.commentsHeader.textContent();\n const commentsCountString = commentsCountTextContent?.match(/\\d+/g)?.[0];\n return parseInt(commentsCountString ?? '0', 10);\n }\n async getCommentsCountFromList(): Promise<number> {\n return this.commentsList.count();\n }\n\n async waitForComments(): Promise<void> {\n await this.commentsList.first().waitFor();\n }\n\n async addCommentToNode(commentText: string): Promise<void> {\n await this.commentInputField.click();\n await this.commentInputField.fill(commentText);\n await this.addCommentButton.click();\n }\n\n async getHeaderTitle(): Promise<string> {\n return (await this.headerTitle.textContent()) ?? '';\n }\n async getTabsCount(): Promise<number> {\n return this.infoDrawerTabs.count();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page, expect } from '@playwright/test';\nimport { MatMenuComponent } from './dataTable';\nimport { BaseComponent } from './base.component';\n\nexport class AcaHeader extends BaseComponent {\n private static readonly rootElement = 'aca-toolbar';\n private readonly moreActionsButton = this.getChild('button[id=\"app.viewer.toolbar.more\"]');\n private readonly toolbarMoreActions = this.getChild('button[id=\"app.toolbar.more\"]');\n public createButton = this.getChild('[id=\"app.toolbar.create\"]');\n public viewDetails = this.getChild('[title=\"View Details\"]');\n public viewButton = this.getChild('button[title=\"View\"]');\n public searchButton = this.getChild('button[id=\"app.toolbar.search\"]');\n public fullScreenButton = this.getChild('button[id=\"app.viewer.fullscreen\"]');\n public shareButton = this.getChild('button[id=\"share-action-button\"]');\n public downloadButtonViewer = this.getChild('button[id=\"app.viewer.download\"]');\n public downloadButton = this.getChild('button[id=\"app.toolbar.download\"]');\n public sharedDownloadButton = this.getChild('button[id=\"app.viewer.shared.download\"]');\n public uploadButton = this.getChild('button[id=\"app.toolbar.upload\"]');\n public uploadFileButton = this.page.locator('button[id=\"app.create.uploadFile\"]');\n public uploadNewVersionButton = this.page.locator('#app-upload-file-version');\n public permanentlyDeleteButton = this.getChild('button[id=\"app.toolbar.purgeDeletedNodes\"]');\n public restoreButton = this.getChild('button[id=\"app.toolbar.restoreDeletedNodes\"]');\n\n constructor(page: Page) {\n super(page, AcaHeader.rootElement);\n }\n public matMenu = new MatMenuComponent(this.page);\n\n async clickViewerMoreActions(): Promise<void> {\n await this.moreActionsButton.waitFor({ state: 'attached' });\n await this.moreActionsButton.click();\n }\n\n async clickMoreActions(): Promise<void> {\n await this.toolbarMoreActions.waitFor({ state: 'attached' });\n await this.toolbarMoreActions.click();\n }\n\n async clickCreateFolderFromTemplate(): Promise<void> {\n await this.createButton.click();\n await this.matMenu.createFolderFromTemplate.click();\n }\n\n async verifyToolbarPrimaryActions(expectedToolbarPrimary: string[]): Promise<void> {\n const buttons = await this.page.$$('aca-toolbar button');\n const actualPrimaryActions: string[] = await Promise.all(\n buttons.map(async (button) => {\n const title = await button.getAttribute('title');\n return title || '';\n })\n );\n\n for (const action of expectedToolbarPrimary) {\n expect(actualPrimaryActions.includes(action), `Expected to contain ${action}`).toBe(true);\n }\n }\n\n async clickCreateFileFromTemplate(): Promise<void> {\n await this.createButton.click();\n await this.matMenu.createFileFromTemplate.click();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page, expect } from '@playwright/test';\nimport { BaseComponent } from './base.component';\nimport { AcaHeader } from './aca-header.component';\nimport { timeouts } from '../../utils';\n\nexport class ViewerComponent extends BaseComponent {\n private static readonly rootElement = 'adf-viewer';\n\n public viewerLocator = this.getChild('adf-viewer-render');\n public closeButtonLocator = this.getChild('.adf-viewer-close-button');\n public fileTitleButtonLocator = this.getChild('#adf-viewer-display-name');\n public pdfViewerContentPages = this.getChild('.adf-pdf-viewer__content .page');\n public shareButton = this.getChild('button[id=\"share-action-button\"]');\n public downloadButton = this.getChild('button[id=\"app.viewer.download\"]');\n public unknownFormat = this.getChild(`adf-viewer-unknown-format .adf-viewer__unknown-format-view`);\n public viewerImage = this.viewerLocator.locator('.cropper-canvas img');\n public viewerDocument = this.viewerLocator.locator('.adf-pdf-viewer__content [role=\"document\"]');\n public documentThumbnailButton = this.getChild('[data-automation-id=\"adf-thumbnails-button\"]');\n public thumbnailsPages = this.getChild('[data-automation-id=\"adf-thumbnails-content\"] adf-pdf-thumb');\n public thumbnailsCloseButton = this.getChild('[data-automation-id=\"adf-thumbnails-close\"]');\n public viewerPage = this.getChild('[data-automation-id=\"adf-page-selector\"]');\n public viewerMedia = this.getChild('adf-media-player');\n public viewerSpinner = this.getChild('.adf-viewer-render__loading-screen');\n public zoomInButton = this.getChild('#viewer-zoom-in-button');\n public zoomOutButton = this.getChild('#viewer-zoom-out-button');\n public zoomScale = this.getChild('[data-automation-id=\"adf-page-scale\"]');\n public zoomResetButton = this.getChild('#viewer-reset-button');\n public fitToPageButton = this.getChild('#viewer-scale-page-button');\n public nextFileButton = this.getChild('[data-automation-id=\"adf-toolbar-next-file\"]');\n public previousFileButton = this.getChild('[data-automation-id=\"adf-toolbar-pref-file\"]');\n public noPermissionsView = this.getChild('aca-generic-error');\n\n toolbar = new AcaHeader(this.page);\n\n constructor(page: Page) {\n super(page, ViewerComponent.rootElement);\n }\n\n async isPdfViewerContentDisplayed(): Promise<boolean> {\n const count = await this.pdfViewerContentPages.count();\n return count > 0;\n }\n\n async isViewerOpened(): Promise<boolean> {\n await this.waitForViewerToOpen();\n return this.viewerLocator.isVisible();\n }\n\n async waitForViewerToOpen(): Promise<void> {\n await this.waitForViewerLoaderToFinish();\n await this.viewerLocator.waitFor({ state: 'visible', timeout: timeouts.large });\n }\n\n async waitForViewerLoaderToFinish(customTimeout?: number): Promise<void> {\n try {\n await this.viewerSpinner.waitFor({ state: 'hidden', timeout: customTimeout || timeouts.extraLarge });\n } catch (error) {\n this.logger.log('waitForViewerLoaderToFinish: Timeout reached while waiting for viewer loader to finish.');\n throw error;\n }\n }\n\n async checkViewerActivePage(pageNumber: number): Promise<void> {\n await expect(this.viewerPage).toHaveValue(pageNumber.toString());\n }\n\n async clickViewerThumbnailPage(pageNumber: number): Promise<void> {\n await this.thumbnailsPages.nth(pageNumber - 1).click();\n }\n\n async isCloseButtonDisplayed(): Promise<boolean> {\n await this.closeButtonLocator.waitFor({ state: 'visible', timeout: timeouts.normal });\n return this.closeButtonLocator.isEnabled({ timeout: timeouts.normal });\n }\n\n async isFileTitleDisplayed(): Promise<boolean> {\n await this.fileTitleButtonLocator.waitFor({ state: 'visible', timeout: timeouts.normal });\n return this.fileTitleButtonLocator.isVisible();\n }\n\n async waitForZoomPercentageToDisplay(): Promise<void> {\n await this.zoomScale.waitFor({ state: 'visible', timeout: timeouts.normal });\n const startTime = Date.now();\n let textContent: string;\n\n while (Date.now() - startTime <= timeouts.medium) {\n textContent = await this.zoomScale.innerText();\n if (textContent.trim() !== '') {\n break;\n }\n await this.page.waitForTimeout(timeouts.tiny);\n }\n\n if (textContent.trim() === '') {\n throw new Error(`Timeout: Text did not show up within ${timeouts.medium} ms`);\n }\n }\n\n async getFileTitle(): Promise<string> {\n await this.fileTitleButtonLocator.waitFor({ state: 'visible', timeout: timeouts.normal });\n await this.waitForViewerLoaderToFinish();\n return this.fileTitleButtonLocator.textContent();\n }\n\n async getCloseButtonTooltip(): Promise<string> {\n await this.closeButtonLocator.waitFor({ state: 'visible', timeout: timeouts.normal });\n return this.closeButtonLocator.getAttribute('title');\n }\n\n async verifyViewerPrimaryActions(expectedToolbarPrimary: string[]): Promise<void> {\n const toRemove = ['Close', 'Previous File', 'Next File', 'View details'];\n const removeClosePreviousNextOldInfo = (actions: string[]): string[] => actions.filter((elem) => !toRemove.includes(elem));\n\n const buttons = await this.page.$$('adf-viewer button');\n let actualPrimaryActions: string[] = await Promise.all(\n buttons.map(async (button) => {\n const title = await button.getAttribute('title');\n return title || '';\n })\n );\n\n actualPrimaryActions = removeClosePreviousNextOldInfo(actualPrimaryActions);\n\n for (const action of expectedToolbarPrimary) {\n expect(actualPrimaryActions.includes(action), `Expected to contain ${action}`).toBe(true);\n }\n }\n\n async checkUnknownFormatIsDisplayed(): Promise<void> {\n await this.unknownFormat.waitFor({ state: 'visible', timeout: timeouts.normal });\n }\n\n async getUnknownFormatMessage(): Promise<string> {\n return this.unknownFormat.locator(`.adf-viewer__unknown-label`).innerText();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from '../../base.component';\nimport { Page } from '@playwright/test';\n\nexport class SearchFiltersCategories extends BaseComponent {\n private static readonly rootElement = '.adf-search-filter-menu-card';\n\n constructor(page: Page) {\n super(page, SearchFiltersCategories.rootElement);\n }\n\n public addOptionInput = this.getChild(`[data-automation-id$='adf-search-chip-autocomplete-input']`);\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from '../../base.component';\nimport { Page } from '@playwright/test';\nimport { SearchPage } from '../../../pages';\n\ntype FilterTab = 'Created' | 'Modified';\n\nexport class SearchFiltersDate extends BaseComponent {\n private static readonly rootElement = '.adf-search-filter-menu-card';\n\n constructor(page: Page) {\n super(page, SearchFiltersDate.rootElement);\n }\n\n public createdTab = this.getChild(`[role='tab']`, { hasText: 'Created' });\n public modifiedTab = this.getChild(`[role='tab']`, { hasText: 'Modified' });\n public anytimeButton = this.getChild(`[data-automation-id$='date-range-anytime']`);\n public anytimeRadioButton = this.anytimeButton.locator(`input`);\n public betweenButton = this.getChild(`[data-automation-id$='date-range-between']`);\n public betweenRadioButton = this.betweenButton.locator(`input`);\n\n async openCreatedModifiedTab(page: SearchPage, tab: FilterTab): Promise<void> {\n switch (tab) {\n case 'Created':\n await page.searchFiltersDate.createdTab.click();\n break;\n case 'Modified':\n await page.searchFiltersDate.modifiedTab.click();\n break;\n default:\n break;\n }\n await page.page.waitForTimeout(2000);\n }\n\n async isModifiedTabSelected(): Promise<string> {\n return this.modifiedTab.getAttribute('aria-selected');\n }\n\n async isSearchTabSelected(): Promise<string> {\n return this.createdTab.getAttribute('aria-selected');\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { SearchPage } from '../../../pages';\nimport { BaseComponent } from '../../base.component';\nimport { Page, Locator } from '@playwright/test';\n\nexport class SearchFiltersLocation extends BaseComponent {\n private static readonly rootElement = '.adf-search-filter-menu-card';\n\n constructor(page: Page) {\n super(page, SearchFiltersLocation.rootElement);\n }\n\n public addOptionInput = this.getChild(`[data-automation-id$='adf-search-chip-autocomplete-input']`);\n\n private searchOption(value: string): Locator {\n return this.page.locator(`[data-automation-id=\"option-${value}\"]`);\n }\n\n async filterByLocation(page: SearchPage, location: string): Promise<void> {\n await page.searchFilters.locationFilter.click();\n await page.searchFiltersLocation.addOptionInput.fill(location);\n await page.searchFiltersLocation.searchOption(location).click();\n await page.searchMenuCard.menuCardApply.click();\n await page.dataTable.spinnerWaitForReload();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from '../../base.component';\nimport { Page } from '@playwright/test';\n\nexport class SearchFiltersLogic extends BaseComponent {\n private static readonly rootElement = '.adf-search-filter-menu-card';\n\n constructor(page: Page) {\n super(page, SearchFiltersLogic.rootElement);\n }\n\n public matchAllInput = this.getChild(`[placeholder$='Results will match all words entered here']`);\n public matchAnyInput = this.getChild(`[placeholder$='Results will match any words entered here']`);\n public excludeInput = this.getChild(`[placeholder$='Results will exclude matches with these words']`);\n public matchExactInput = this.getChild(`[placeholder$='Results will match this entire phrase']`);\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { SearchPage } from '../../../pages';\nimport { BaseComponent } from '../../base.component';\nimport { Page } from '@playwright/test';\n\nexport class SearchFiltersProperties extends BaseComponent {\n private static readonly rootElement = '.adf-search-filter-menu-card';\n\n constructor(page: Page) {\n super(page, SearchFiltersProperties.rootElement);\n }\n\n public operatorButton = this.getChild(`[data-automation-id='adf-search-properties-file-size-operator']`);\n public fileSizeInput = this.getChild(`[placeholder$='Enter file size']`);\n public unitButton = this.getChild(`[data-automation-id='adf-search-properties-file-size-unit']`);\n public fileTypeInput = this.getChild(`[placeholder$='File Type']`);\n public atLeastOption = this.page.locator(`[role=\"option\"]`, { hasText: 'At Least' });\n public atMostOption = this.page.locator(`[role=\"option\"]`, { hasText: 'At Most' });\n public exactlyOption = this.page.locator(`[role=\"option\"]`, { hasText: 'Exactly' });\n public kbUnit = this.page.locator(`[role=\"option\"]`, { hasText: 'KB' });\n public mbUnit = this.page.locator(`[role=\"option\"]`, { hasText: 'MB' });\n public gbUnit = this.page.locator(`[role=\"option\"]`, { hasText: 'GB' });\n public dropdownOptions = this.page.locator(`[role=\"option\"]`);\n\n async setPropertiesParameters(\n page: SearchPage,\n operator?: 'At Least' | 'At Most' | 'Exactly',\n unit?: 'KB' | 'MB' | 'GB',\n fileSizeInputText?: string,\n fileTypeInputText?: string\n ): Promise<void> {\n await page.searchFilters.propertiesFilter.click();\n\n if (operator) {\n await this.operatorButton?.click();\n switch (operator) {\n case 'At Least':\n await this.atLeastOption?.click();\n break;\n case 'At Most':\n await this.atMostOption?.click();\n break;\n case 'Exactly':\n await this.exactlyOption?.click();\n break;\n }\n }\n\n if (unit) {\n await this.unitButton?.click();\n switch (unit) {\n case 'KB':\n await this.kbUnit?.click();\n break;\n case 'MB':\n await this.mbUnit?.click();\n break;\n case 'GB':\n await this.gbUnit?.click();\n break;\n }\n }\n\n if (fileSizeInputText) {\n await this.fileSizeInput?.fill(fileSizeInputText);\n }\n\n if (fileTypeInputText) {\n await this.fileTypeInput?.fill(fileTypeInputText);\n await this.dropdownOptions.getByText(fileTypeInputText).waitFor();\n await this.dropdownOptions.getByText(fileTypeInputText).click();\n }\n\n await page.searchMenuCard.menuCardApply.click();\n await page.dataTable.spinnerWaitForReload();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { SearchPage } from '../../../pages';\nimport { BaseComponent } from '../../base.component';\nimport { Page, Locator } from '@playwright/test';\n\nexport class SearchFiltersTags extends BaseComponent {\n private static readonly rootElement = '.adf-search-filter-menu-card';\n\n constructor(page: Page) {\n super(page, SearchFiltersTags.rootElement);\n }\n\n public addOptionInput = this.getChild(`[data-automation-id$='adf-search-chip-autocomplete-input']`);\n\n private searchOption(value: string): Locator {\n return this.page.locator(`[data-automation-id=\"option-${value}\"]`);\n }\n\n async filterByTag(page: SearchPage, tag: string): Promise<void> {\n await page.searchFilters.tagsFilter.click();\n await page.searchFiltersTags.addOptionInput.fill(tag);\n await this.searchOption(tag).click();\n await page.searchMenuCard.menuCardApply.click();\n await page.dataTable.spinnerWaitForReload();\n }\n\n async clearTagFilter(page: SearchPage): Promise<void> {\n await page.searchFilters.tagsFilter.click();\n await page.searchMenuCard.menuCardClear.click();\n await page.dataTable.spinnerWaitForReload();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './search-filters-categories.component';\nexport * from './search-filters-date.component';\nexport * from './search-filters-location.component';\nexport * from './search-filters-logic.component';\nexport * from './search-filters-properties.component';\nexport * from './search-filters-tags.component';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from '../base.component';\nimport { Page } from '@playwright/test';\n\nexport class SearchFilters extends BaseComponent {\n private static readonly rootElement = '.aca-content__advanced-filters';\n\n constructor(page: Page) {\n super(page, SearchFilters.rootElement);\n }\n\n public logicFilter = this.getChild('adf-search-widget-chip', { hasText: 'Logic' });\n public propertiesFilter = this.getChild('adf-search-widget-chip', { hasText: 'Properties' });\n public dateFilter = this.getChild('adf-search-widget-chip', { hasText: 'Date' });\n public locationFilter = this.getChild('adf-search-widget-chip', { hasText: 'Location' });\n public tagsFilter = this.getChild('adf-search-widget-chip', { hasText: 'Tags' });\n public categoriesFilter = this.getChild('adf-search-widget-chip', { hasText: 'Categories' });\n public resetButton = this.getChild('button', { hasText: 'Reset' });\n public dropdownOptions = this.page.locator(`[role=\"option\"]`);\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Locator, Page } from '@playwright/test';\nimport { BaseComponent } from '.././base.component';\n\nexport class SearchInputComponent extends BaseComponent {\n private static readonly rootElement = 'aca-page-layout';\n public searchInput = this.getChild('aca-search-input input');\n public searchButton = this.page.locator('.aca-search-input--search-button');\n public searchCloseButton = this.page.locator('.aca-search-input--close-button');\n public searchInButton = this.getChild('aca-search-in-menu button');\n\n /**\n * Method used in cases where user have possibility to navigate \"inside\" the element (it's clickable and has link attribute).\n * Perform action .click() to navigate inside it\n *\n * @returns reference to cell element which contains link.\n */\n getCellLinkByName = (name: string): Locator => this.getChild('.adf-datatable-row[role=\"row\"]', { hasText: name });\n\n constructor(page: Page, rootElement = SearchInputComponent.rootElement) {\n super(page, rootElement);\n }\n\n async searchFor(searchText: string): Promise<void> {\n await this.searchInput.fill(searchText);\n await this.searchButton.click();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from '../base.component';\nimport { Page } from '@playwright/test';\n\nexport class SearchMenuCard extends BaseComponent {\n private static readonly rootElement = '.adf-search-filter-menu-card';\n\n public menuCardTitle = this.getChild('.adf-search-filter-title');\n public menuCardClose = this.getChild('.adf-search-filter-title-action');\n public menuCardClear = this.getChild('#cancel-filter-button');\n public menuCardApply = this.getChild('#apply-filter-button');\n\n constructor(page: Page) {\n super(page, SearchMenuCard.rootElement);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport type SortByType = 'Relevance' | 'Title' | 'Filename' | 'Modified date' | 'Modifier' | 'Created date' | 'Size' | 'Type';\nexport type SortByDirection = 'asc' | 'desc';\n\nexport class SearchSortingPicker extends BaseComponent {\n private static readonly rootElement = '#aca-button-action-menu';\n\n public actionMenu = this.page.locator('[data-automation-id=\"auto_header_content_id_$thumbnail\"]');\n public sortOrderButton = this.page.locator('#aca-button-sorting-menu');\n public sortByDropdownExpanded = this.page.locator('[role=\"menu\"]').first();\n public sortByList = this.page.locator('[role=\"menu\"] button');\n\n constructor(page: Page, rootElement = SearchSortingPicker.rootElement) {\n super(page, rootElement);\n }\n\n async waitForSortByDropdownToExpand(): Promise<void> {\n await this.sortByDropdownExpanded.waitFor();\n }\n\n async isSortOrderButtonDisplayed(): Promise<boolean> {\n return this.sortOrderButton.isVisible();\n }\n\n async isSortByDropdownExpanded(): Promise<boolean> {\n return this.sortByDropdownExpanded.isVisible();\n }\n\n async clickSortByDropdown(): Promise<void> {\n await this.sortOrderButton.click();\n await this.waitForSortByDropdownToExpand();\n }\n\n async getSortByOptionsList(): Promise<string[]> {\n const sortOptionsCount = await this.sortByList.count();\n const sortByOptions: string[] = [];\n for (let i = 1; i < sortOptionsCount; i++) {\n const textContent = (await this.sortByList.nth(i).textContent()).trim();\n sortByOptions.push(textContent);\n }\n sortByOptions.sort((a, b) => a.localeCompare(b));\n return sortByOptions;\n }\n\n async sortBy(option: SortByType, direction: SortByDirection): Promise<void> {\n await this.actionMenu.click();\n await this.clickSortByDropdown();\n\n if (!(await this.isSortByDropdownExpanded())) {\n await this.clickSortByDropdown();\n }\n const elem = this.sortByList.getByText(option);\n const optionId = await elem.locator('..').getAttribute('id');\n await elem.click();\n const directionSortElement = this.page.locator(`[id=\"${optionId}-${direction.toLocaleLowerCase()}\"]`);\n await directionSortElement.click();\n await this.spinnerWaitForReload();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './search-filters';\nexport * from './search-filters.component';\nexport * from './search-input.component';\nexport * from './search-menu-card.component';\nexport * from './search-sorting-picker.components';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from '.././base.component';\nimport { Locator, Page } from '@playwright/test';\nexport class Breadcrumb extends BaseComponent {\n private static readonly rootElement = 'adf-breadcrumb';\n public items = this.getChild('.adf-breadcrumb-item');\n public currentItem = this.getChild('.adf-breadcrumb-item-current');\n getItemByTitle = (name: string): Locator => this.getChild(`.adf-breadcrumb-item[title=${name}]`);\n\n constructor(page: Page) {\n super(page, Breadcrumb.rootElement);\n }\n\n async getAllItems(): Promise<string[]> {\n const itemElements = await this.page.$$('adf-breadcrumb .adf-breadcrumb-item');\n const itemTexts = await Promise.all(\n itemElements.map(async (elem) => {\n const text = await elem.innerText();\n return text.split('\\nchevron_right')[0];\n })\n );\n return itemTexts;\n }\n\n async clickItem(name: string): Promise<void> {\n const elem = this.getChild(`.adf-breadcrumb-item[title=${name}]`);\n await elem.click();\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { SIDEBAR_LABELS, timeouts } from '../../utils';\nimport { BaseComponent } from './base.component';\nimport { Locator, Page } from '@playwright/test';\n\nexport class SidenavComponent extends BaseComponent {\n private static readonly rootElement = '.adf-layout-container-sidenav';\n\n private readonly personalFiles = this.getChild(`[data-automation-id='app.navbar.personalFiles']`);\n private readonly myLibraries = this.getChild(`[data-automation-id='app.navbar.libraries.files']`);\n private readonly favoriteLibraries = this.getChild(`[data-automation-id='app.navbar.libraries.favorite']`);\n private readonly shared = this.getChild(`[data-automation-id='app.navbar.shared']`);\n private readonly recentFiles = this.getChild(`[data-automation-id='app.navbar.recentFiles']`);\n private readonly favorites = this.getChild(`[data-automation-id='app.navbar.favorites']`);\n private readonly trash = this.getChild(`[data-automation-id='app.navbar.trashcan']`);\n private readonly sidenavToggle = this.getChild(`.aca-sidenav-header-title-logo`);\n private readonly sidenavExpand = this.page.locator(`[title='Expand navigation menu']`);\n public expandedSidenav = this.getChild(`[data-automation-id='expanded']`);\n\n constructor(page: Page) {\n super(page, SidenavComponent.rootElement);\n }\n\n async isActive(name: string): Promise<boolean> {\n const cssClass = await this.getLinkLabel(name).getAttribute('class');\n return cssClass.includes('action-button--active');\n }\n\n async openPanel(name: string): Promise<void> {\n await this.getLinkLabel(name).click();\n }\n\n private getLinkLabel(name: string): Locator {\n switch (name) {\n case SIDEBAR_LABELS.PERSONAL_FILES:\n return this.personalFiles;\n case SIDEBAR_LABELS.MY_LIBRARIES:\n return this.myLibraries;\n case SIDEBAR_LABELS.FAVORITE_LIBRARIES:\n return this.favoriteLibraries;\n case SIDEBAR_LABELS.SHARED_FILES:\n return this.shared;\n case SIDEBAR_LABELS.RECENT_FILES:\n return this.recentFiles;\n case SIDEBAR_LABELS.FAVORITES:\n return this.favorites;\n case SIDEBAR_LABELS.TRASH:\n return this.trash;\n default:\n return this.personalFiles;\n }\n }\n\n private async isSidenavExpanded(): Promise<boolean> {\n await this.page.waitForTimeout(timeouts.tiny);\n return this.expandedSidenav.isVisible();\n }\n\n async expandSideNav(): Promise<void> {\n const expanded = await this.isSidenavExpanded();\n if (!expanded) {\n await this.sidenavExpand.click();\n await this.expandedSidenav.waitFor({ state: 'attached' });\n }\n }\n\n async collapseSideNav(): Promise<void> {\n const expanded = await this.isSidenavExpanded();\n if (expanded) {\n await this.sidenavToggle.click();\n await this.expandedSidenav.waitFor({ state: 'detached' });\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from './base.component';\n\nexport class ErrorComponent extends BaseComponent {\n private static readonly rootElement = 'aca-page-layout';\n genericError = this.getChild('aca-generic-error');\n genericErrorTitle = this.getChild('.generic-error__title');\n\n constructor(page: Page) {\n super(page, ErrorComponent.rootElement);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { BaseComponent } from './base.component';\nimport { Page } from '@playwright/test';\n\nexport class EditModeComponent extends BaseComponent {\n private static readonly rootElement = '.aca-details-container';\n\n public tagsAccordion = this.page.locator('[data-automation-id=\"adf-content-metadata-tags-panel\"]');\n public tagsAccordionPenButton = this.tagsAccordion.locator('[data-automation-id=\"showing-tag-input-button\"]');\n public tagsInput = this.tagsAccordion.locator('input');\n public tagsChips = this.tagsAccordion.locator('[role=\"listitem\"]');\n public tagsAccordionConfirmButton = this.getChild('[data-automation-id=\"save-tags-metadata\"]');\n public createTagButton = this.tagsAccordion.locator('.adf-create-tag-label');\n public existingTags = this.tagsAccordion.locator('.adf-tag');\n\n public categoriesAccordion = this.page.locator('[data-automation-id=\"adf-content-metadata-categories-panel\"]');\n public categoriesAccordionPenButton = this.categoriesAccordion.locator('[data-automation-id=\"meta-data-categories-edit\"]');\n public categoriesInput = this.categoriesAccordion.locator('input');\n\n constructor(page: Page) {\n super(page, EditModeComponent.rootElement);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './snackBar/snack-bar.component';\nexport * from './dataTable';\nexport * from './dialogs';\nexport * from './manageRules';\nexport * from './base.component';\nexport * from './actions-dropdown.component';\nexport * from './conditions.component';\nexport * from './pagination.component';\nexport * from './adf-info-drawer.component';\nexport * from './viewer.component';\nexport * from './search';\nexport * from './breadcrumb/breadcrumb.component';\nexport * from './sidenav.component';\nexport * from './aca-header.component';\nexport * from './error.component';\nexport * from './datetime-picker/datetime-picker.component';\nexport * from './edit-mode.component';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { PlaywrightBase } from '../playwright-base';\nimport { SnackBarComponent } from '../components';\n\nexport interface NavigateOptions {\n query?: string;\n waitForRequest?: boolean;\n waitUntil?: 'networkidle' | 'commit' | 'load' | 'domcontentloaded';\n remoteUrl?: string;\n}\nexport abstract class BasePage extends PlaywrightBase {\n private readonly pageUrl: string;\n private readonly urlRequest: RegExp;\n public snackBar: SnackBarComponent;\n\n protected constructor(page: Page, pageUrl: string, urlRequest?: RegExp) {\n super(page);\n this.pageUrl = pageUrl;\n this.urlRequest = urlRequest;\n this.snackBar = new SnackBarComponent(this.page);\n }\n\n /**\n * Method which navigate to appropriate page or remoteURL\n *\n * @param options object with configurable options\n * @property {string} query if you would like to navigate to page which support query,\n * then pass it in this option - e.g. '?appName=content'\n * @property {boolean} waitForRequest if you would like to NOT wait for request (which need to be passed\n * in the constructor of the page), then pass false. By default it'll wait for request to be fulfilled.\n * @property {'networkidle' | 'commit' | 'load' | 'domcontentloaded'} waitUntil by default will wait until 'networkidle' but you can change it if needed\n * @property {string} remoteUrl if you need to navigate to third part site, then you need to pass all of the URL in this option\n */\n async navigate(options?: Partial<NavigateOptions>): Promise<void> {\n const actualOptions: NavigateOptions = {\n query: '',\n waitForRequest: true,\n remoteUrl: '',\n waitUntil: 'load',\n ...options\n };\n\n if (actualOptions.remoteUrl) {\n await this.page.goto(actualOptions.remoteUrl, {\n waitUntil: actualOptions.waitUntil\n });\n } else if (this.urlRequest && actualOptions.waitForRequest) {\n await Promise.all([\n this.page.goto(`./#/${this.pageUrl}${actualOptions.query}`, { waitUntil: 'load' }),\n this.page.waitForResponse(this.urlRequest)\n ]);\n } else {\n await this.page.goto(`./#/${this.pageUrl}${actualOptions.query}`, {\n waitUntil: actualOptions.waitUntil,\n timeout: 60000\n });\n }\n await this.spinnerWaitForReload();\n }\n\n async reload(options?: Pick<NavigateOptions, 'waitUntil'>): Promise<void> {\n const actualOptions: Pick<NavigateOptions, 'waitUntil'> = {\n waitUntil: 'networkidle',\n ...options\n };\n await this.page.reload(actualOptions);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BasePage } from './base.page';\nimport { UserModel } from '../../models';\n\ninterface LoginOptions {\n waitForLoading?: boolean;\n withNavigation?: boolean;\n}\nexport class LoginPage extends BasePage {\n private static readonly pageUrl = 'login';\n\n constructor(page: Page) {\n super(page, LoginPage.pageUrl);\n }\n\n public username = this.page.locator('#username');\n public password = this.page.locator('#password');\n public submitButton = this.page.locator('#login-button');\n public userProfileButton = this.page.locator('aca-user-menu button');\n public userLogOutButton = this.page.locator('aca-logout button');\n public passwordVisibility = this.page.locator('.adf-login-password-icon');\n\n async loginUser(userData: { username: string; password: string } | UserModel, options?: LoginOptions): Promise<void> {\n if (options?.withNavigation) {\n await this.navigate();\n }\n await this.username.fill(userData.username);\n await this.password.fill(userData.password);\n await this.submitButton.click();\n\n if (options?.waitForLoading) {\n await Promise.all([this.page.waitForLoadState('domcontentloaded'), this.spinnerWaitForReload()]);\n }\n }\n\n async logoutUser(): Promise<void> {\n await this.userProfileButton.click();\n await this.userLogOutButton.click();\n }\n\n async isPasswordDisplayed(): Promise<boolean> {\n const type = await this.password.getAttribute('type');\n return type === 'text';\n }\n\n async verifyUserLogin(): Promise<void> {\n if (await this.username.isVisible()) {\n await this.page.reload({ waitUntil: 'load' });\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport {\n ConditionComponent,\n ManageRules,\n ManageRulesDialogComponent,\n RulesToolbarComponent,\n ActionsDropdownComponent,\n ContentNodeSelectorDialog,\n LinkRulesDialog\n} from '../components';\nimport { BasePage } from './base.page';\n\nexport class NodesPage extends BasePage {\n private static readonly pageUrl = 'nodes';\n\n constructor(page: Page) {\n super(page, NodesPage.pageUrl);\n }\n\n public rulesToolbar = new RulesToolbarComponent(this.page);\n public manageRulesDialog = new ManageRulesDialogComponent(this.page);\n public actionsDropdown = new ActionsDropdownComponent(this.page);\n public conditionsDropdown = new ConditionComponent(this.page);\n public manageRules = new ManageRules(this.page);\n public contentNodeSelectorDialog = new ContentNodeSelectorDialog(this.page);\n public linkRulesDialog = new LinkRulesDialog(this.page);\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BasePage } from './base.page';\nimport {\n AcaHeader,\n AdfFolderDialogComponent,\n ContentNodeSelectorDialog,\n CreateFromTemplateDialogComponent,\n PasswordOverlayDialogComponent,\n ViewerOverlayDialogComponent,\n Breadcrumb,\n DataTableComponent,\n MatMenuComponent,\n ViewerComponent,\n SidenavComponent,\n PaginationComponent,\n ErrorComponent,\n ShareDialogComponent,\n AdfConfirmDialogComponent,\n AdfInfoDrawerComponent,\n UploadNewVersionDialog,\n ManageVersionsDialog,\n UploadDialog,\n SnackBarComponent,\n EditDialog,\n FolderInformationDialogComponent,\n EditModeComponent\n} from '../components';\n\nexport class PersonalFilesPage extends BasePage {\n private static readonly pageUrl = 'personal-files';\n\n constructor(page: Page) {\n super(page, PersonalFilesPage.pageUrl);\n }\n\n public acaHeader = new AcaHeader(this.page);\n public matMenu = new MatMenuComponent(this.page);\n public folderDialog = new AdfFolderDialogComponent(this.page);\n public contentNodeSelector = new ContentNodeSelectorDialog(this.page);\n public dataTable = new DataTableComponent(this.page);\n public viewer = new ViewerComponent(this.page);\n public passwordDialog = new PasswordOverlayDialogComponent(this.page);\n public viewerDialog = new ViewerOverlayDialogComponent(this.page);\n public breadcrumb = new Breadcrumb(this.page);\n public sidenav = new SidenavComponent(this.page);\n public createFromTemplateDialogComponent = new CreateFromTemplateDialogComponent(this.page);\n public pagination = new PaginationComponent(this.page);\n public errorDialog = new ErrorComponent(this.page);\n public shareDialog = new ShareDialogComponent(this.page);\n public confirmDialog = new AdfConfirmDialogComponent(this.page);\n public infoDrawer = new AdfInfoDrawerComponent(this.page);\n public nodeInfoEditMode = new EditModeComponent(this.page);\n public uploadNewVersionDialog = new UploadNewVersionDialog(this.page);\n public manageVersionsDialog = new ManageVersionsDialog(this.page);\n public uploadDialog = new UploadDialog(this.page);\n public snackBar = new SnackBarComponent(this.page);\n public editDialog = new EditDialog(this.page);\n public folderInformationDialog = new FolderInformationDialogComponent(this.page);\n\n async selectCreateFolder(): Promise<void> {\n await this.acaHeader.createButton.click();\n await this.matMenu.createFolder.click();\n }\n\n async closeMenu(): Promise<void> {\n await this.page.keyboard.press('Escape');\n }\n\n async waitForPageLoad() {\n await this.page.waitForURL(`**/${PersonalFilesPage.pageUrl}`);\n }\n\n async clickMoreActionsButton(buttonLabel: string): Promise<void> {\n await this.acaHeader.clickMoreActions();\n await this.matMenu.clickMenuItem(buttonLabel);\n }\n\n async copyOrMoveContentInDatatable(sourceFileList: string[], destinationName: string, operation = 'Copy'): Promise<void> {\n await this.page.keyboard.down('Control');\n for (const sourceName of sourceFileList) {\n await this.dataTable.selectItems(sourceName);\n }\n await this.page.keyboard.up('Control');\n await this.clickMoreActionsButton(operation);\n await this.contentNodeSelector.selectDestination(destinationName);\n await this.contentNodeSelector.actionButton.click();\n }\n\n async selectItemsAndToggleFavorite(item: string[], action: 'Favorite' | 'Remove Favorite') {\n for (const itemToSelect of item) {\n await this.dataTable.selectItems(itemToSelect);\n }\n await this.acaHeader.clickMoreActions();\n await this.matMenu.clickMenuItem(action);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BasePage } from './base.page';\nimport {\n AcaHeader,\n AdfInfoDrawerComponent,\n AdfLibraryDialogComponent,\n DataTableComponent,\n MatMenuComponent,\n ViewerComponent,\n ViewerOverlayDialogComponent,\n ContentNodeSelectorDialog,\n Breadcrumb,\n SidenavComponent,\n CreateFromTemplateDialogComponent,\n AdfConfirmDialogComponent,\n FolderInformationDialogComponent\n} from '../components';\n\nexport class MyLibrariesPage extends BasePage {\n private static readonly pageUrl = 'libraries';\n\n constructor(page: Page) {\n super(page, MyLibrariesPage.pageUrl);\n }\n public acaHeader = new AcaHeader(this.page);\n public matMenu = new MatMenuComponent(this.page);\n public libraryDialog = new AdfLibraryDialogComponent(this.page);\n public dataTable = new DataTableComponent(this.page);\n public libraryDetails = new AdfInfoDrawerComponent(this.page);\n public infoDrawer = new AdfInfoDrawerComponent(this.page);\n public viewer = new ViewerComponent(this.page);\n public viewerDialog = new ViewerOverlayDialogComponent(this.page);\n public copyMoveDialog = new ContentNodeSelectorDialog(this.page);\n public breadcrumb = new Breadcrumb(this.page);\n public sidenav = new SidenavComponent(this.page);\n public contentNodeSelector = new ContentNodeSelectorDialog(this.page);\n public createFromTemplateDialogComponent = new CreateFromTemplateDialogComponent(this.page);\n public confirmDialogComponent = new AdfConfirmDialogComponent(this.page);\n public folderInformationDialog = new FolderInformationDialogComponent(this.page);\n\n async selectCreateLibrary(): Promise<void> {\n await this.acaHeader.createButton.click();\n await this.matMenu.createLibrary.click();\n }\n\n async clickMoreActionsButton(buttonLabel: string): Promise<void> {\n await this.acaHeader.clickMoreActions();\n await this.matMenu.clickMenuItem(buttonLabel);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BasePage } from './base.page';\nimport { DataTableComponent, MatMenuComponent, ViewerComponent, SidenavComponent, Breadcrumb, AdfInfoDrawerComponent } from '../components';\nimport { AcaHeader } from '../components/aca-header.component';\nimport { AdfFolderDialogComponent, ContentNodeSelectorDialog, ManageVersionsDialog } from '../components/dialogs';\n\nexport class RecentFilesPage extends BasePage {\n private static readonly pageUrl = 'recent-files';\n\n constructor(page: Page) {\n super(page, RecentFilesPage.pageUrl);\n }\n\n public acaHeader = new AcaHeader(this.page);\n public matMenu = new MatMenuComponent(this.page);\n public folderDialog = new AdfFolderDialogComponent(this.page);\n public dataTable = new DataTableComponent(this.page);\n public viewer = new ViewerComponent(this.page);\n public sidenav = new SidenavComponent(this.page);\n public breadcrumb = new Breadcrumb(this.page);\n public infoDrawer = new AdfInfoDrawerComponent(this.page);\n public contentNodeSelector = new ContentNodeSelectorDialog(this.page);\n public manageVersionsDialog = new ManageVersionsDialog(this.page);\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BasePage } from './base.page';\nimport { DataTableComponent, MatMenuComponent, ViewerComponent, SidenavComponent, Breadcrumb, AdfInfoDrawerComponent } from '../components';\nimport { AcaHeader } from '../components/aca-header.component';\nimport { AdfFolderDialogComponent, ViewerOverlayDialogComponent, ManageVersionsDialog } from '../components/dialogs';\n\nexport class SharedPage extends BasePage {\n private static readonly pageUrl = 'shared';\n\n constructor(page: Page) {\n super(page, SharedPage.pageUrl);\n }\n\n public acaHeader = new AcaHeader(this.page);\n public matMenu = new MatMenuComponent(this.page);\n public folderDialog = new AdfFolderDialogComponent(this.page);\n public dataTable = new DataTableComponent(this.page);\n public viewer = new ViewerComponent(this.page);\n public viewerDialog = new ViewerOverlayDialogComponent(this.page);\n public sidenav = new SidenavComponent(this.page);\n public breadcrumb = new Breadcrumb(this.page);\n public infoDrawer = new AdfInfoDrawerComponent(this.page);\n public manageVersionsDialog = new ManageVersionsDialog(this.page);\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BaseComponent } from '../base.component';\n\nexport class SearchInDialogComponent extends BaseComponent {\n private static readonly rootElement = '.aca-search-in-panel';\n\n public filesAndFoldersRadioButton = this.getChild('.aca-search-in-panel__radio label').getByText('Files and folders');\n public librariesRadioButton = this.getChild('.aca-search-in-panel__radio label').getByText('Libraries');\n public filesCheckbox = this.getChild('.aca-search-in-panel__checkboxes').getByLabel('Files');\n public foldersCheckbox = this.getChild('.aca-search-in-panel__checkboxes').getByLabel('Folders');\n public applyButton = this.getChild('button', { hasText: 'Apply' });\n readonly resetButton = this.getChild('button', { hasText: 'Reset' });\n\n constructor(page: Page, rootElement = SearchInDialogComponent.rootElement) {\n super(page, rootElement);\n }\n\n async isFoldersOptionChecked() {\n return this.foldersCheckbox.isChecked();\n }\n\n async isFilesOptionChecked() {\n return this.filesCheckbox.isChecked();\n }\n\n async resetOptions() {\n await this.resetButton.click();\n }\n\n async checkOnlyFolders(): Promise<void> {\n await this.resetOptions();\n if (await this.isFilesOptionChecked()) {\n await this.filesCheckbox.click();\n }\n if (!(await this.isFoldersOptionChecked())) {\n await this.foldersCheckbox.click();\n }\n }\n\n async checkOnlyFiles(): Promise<void> {\n await this.resetOptions();\n if (await this.isFoldersOptionChecked()) {\n await this.foldersCheckbox.click();\n }\n if (!(await this.isFilesOptionChecked())) {\n await this.filesCheckbox.click();\n }\n }\n\n async checkLibraries(): Promise<void> {\n await this.resetOptions();\n await this.librariesRadioButton.click();\n }\n\n async checkFilesAndFolders(): Promise<void> {\n await this.resetOptions();\n if (!(await this.isFilesOptionChecked())) {\n await this.filesCheckbox.click();\n }\n if (!(await this.isFoldersOptionChecked())) {\n await this.foldersCheckbox.click();\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BasePage } from './base.page';\nimport {\n DataTableComponent,\n FolderInformationDialogComponent,\n MatMenuComponent,\n SearchFilters,\n SearchFiltersCategories,\n SearchFiltersDate,\n SearchFiltersLocation,\n SearchFiltersLogic,\n SearchFiltersProperties,\n SearchFiltersTags,\n SearchInputComponent,\n SearchMenuCard,\n SearchSortingPicker,\n SidenavComponent,\n ViewerComponent\n} from '../components';\nimport { AcaHeader } from '../components/aca-header.component';\nimport { AdfConfirmDialogComponent, AdfFolderDialogComponent, ManageVersionsDialog, UploadNewVersionDialog } from '../components/dialogs';\nimport { SearchInDialogComponent } from '../components/search/search-in-dialog.components';\n\nexport type SearchType = 'files' | 'folders' | 'filesAndFolders' | 'libraries';\n\nexport class SearchPage extends BasePage {\n private static readonly pageUrl = 'search';\n\n constructor(page: Page) {\n super(page, SearchPage.pageUrl);\n }\n\n public acaHeader = new AcaHeader(this.page);\n public matMenu = new MatMenuComponent(this.page);\n public folderDialog = new AdfFolderDialogComponent(this.page);\n public dataTable = new DataTableComponent(this.page);\n public viewer = new ViewerComponent(this.page);\n public searchInputComponent = new SearchInputComponent(this.page);\n public searchInDialog = new SearchInDialogComponent(this.page);\n public searchSortingPicker = new SearchSortingPicker(this.page);\n public searchFilters = new SearchFilters(this.page);\n public searchFiltersTags = new SearchFiltersTags(this.page);\n public searchFiltersCategories = new SearchFiltersCategories(this.page);\n public searchFiltersDate = new SearchFiltersDate(this.page);\n public searchFiltersLocation = new SearchFiltersLocation(this.page);\n public searchFiltersProperties = new SearchFiltersProperties(this.page);\n public searchFiltersLogic = new SearchFiltersLogic(this.page);\n public sidenav = new SidenavComponent(this.page);\n public confirmDialogComponent = new AdfConfirmDialogComponent(this.page);\n public uploadNewVersionDialog = new UploadNewVersionDialog(this.page);\n public manageVersionsDialog = new ManageVersionsDialog(this.page);\n public folderInformationDialog = new FolderInformationDialogComponent(this.page);\n public searchMenuCard = new SearchMenuCard(this.page);\n\n async searchWithin(searchText: string, searchType?: SearchType): Promise<void> {\n if (!(await this.searchInputComponent.searchInput.isVisible())) {\n await this.acaHeader.searchButton.click();\n }\n await this.searchInputComponent.searchInButton.click();\n switch (searchType) {\n case 'files':\n await this.searchInDialog.checkOnlyFiles();\n break;\n case 'folders':\n await this.searchInDialog.checkOnlyFolders();\n break;\n case 'filesAndFolders':\n await this.searchInDialog.checkFilesAndFolders();\n break;\n case 'libraries':\n await this.searchInDialog.checkLibraries();\n break;\n default:\n break;\n }\n await this.searchInDialog.applyButton.click();\n await this.clickSearchButton();\n await this.searchInputComponent.searchFor(searchText);\n await this.dataTable.spinnerWaitForReload();\n }\n\n async clickSearchButton() {\n await this.searchInputComponent.searchButton.click({ force: true });\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BasePage } from './base.page';\nimport {\n DataTableComponent,\n MatMenuComponent,\n ViewerComponent,\n SidenavComponent,\n PaginationComponent,\n Breadcrumb,\n AdfInfoDrawerComponent\n} from '../components';\nimport { AcaHeader } from '../components/aca-header.component';\nimport { AdfFolderDialogComponent, ViewerOverlayDialogComponent, ManageVersionsDialog } from '../components/dialogs';\n\nexport class FavoritesPage extends BasePage {\n private static readonly pageUrl = 'favorites';\n\n constructor(page: Page) {\n super(page, FavoritesPage.pageUrl);\n }\n\n public acaHeader = new AcaHeader(this.page);\n public matMenu = new MatMenuComponent(this.page);\n public folderDialog = new AdfFolderDialogComponent(this.page);\n public dataTable = new DataTableComponent(this.page);\n public viewer = new ViewerComponent(this.page);\n public viewerDialog = new ViewerOverlayDialogComponent(this.page);\n public sidenav = new SidenavComponent(this.page);\n public pagination = new PaginationComponent(this.page);\n public breadcrumb = new Breadcrumb(this.page);\n public infoDrawer = new AdfInfoDrawerComponent(this.page);\n public manageVersionsDialog = new ManageVersionsDialog(this.page);\n\n async waitForPageLoad() {\n await this.page.waitForURL(`**/${FavoritesPage.pageUrl}`);\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BasePage } from './base.page';\nimport { DataTableComponent, MatMenuComponent, ViewerComponent, SidenavComponent, Breadcrumb, PaginationComponent } from '../components';\nimport { AcaHeader } from '../components/aca-header.component';\nimport { AdfFolderDialogComponent, ViewerOverlayDialogComponent, AdfDeleteTrashComponent } from '../components/dialogs';\n\nexport class TrashPage extends BasePage {\n private static readonly pageUrl = 'trashcan';\n\n constructor(page: Page) {\n super(page, TrashPage.pageUrl);\n }\n\n public acaHeader = new AcaHeader(this.page);\n public matMenu = new MatMenuComponent(this.page);\n public folderDialog = new AdfFolderDialogComponent(this.page);\n public dataTable = new DataTableComponent(this.page);\n public viewer = new ViewerComponent(this.page);\n public viewerDialog = new ViewerOverlayDialogComponent(this.page);\n public sidenav = new SidenavComponent(this.page);\n public breadcrumb = new Breadcrumb(this.page);\n public pagination = new PaginationComponent(this.page);\n public deleteDialog = new AdfDeleteTrashComponent(this.page);\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Page } from '@playwright/test';\nimport { BasePage } from './base.page';\nimport { DataTableComponent, MatMenuComponent, SidenavComponent, ViewerComponent } from '../components';\nimport { AcaHeader } from '../components/aca-header.component';\nimport { AdfConfirmDialogComponent, AdfFolderDialogComponent, ViewerOverlayDialogComponent } from '../components/dialogs';\n\nexport class FavoritesLibrariesPage extends BasePage {\n private static readonly pageUrl = 'favorite/libraries';\n\n constructor(page: Page) {\n super(page, FavoritesLibrariesPage.pageUrl);\n }\n\n public acaHeader = new AcaHeader(this.page);\n public matMenu = new MatMenuComponent(this.page);\n public folderDialog = new AdfFolderDialogComponent(this.page);\n public dataTable = new DataTableComponent(this.page);\n public viewer = new ViewerComponent(this.page);\n public viewerDialog = new ViewerOverlayDialogComponent(this.page);\n public sidenav = new SidenavComponent(this.page);\n public confirmDialogComponent = new AdfConfirmDialogComponent(this.page);\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './base.page';\nexport * from './login.page';\nexport * from './nodes.page';\nexport * from './personal-files.page';\nexport * from './my-libraries.page';\nexport * from './recent-files.page';\nexport * from './shared.page';\nexport * from './search.page';\nexport * from './favorites.page';\nexport * from './trash.page';\nexport * from './favorites-libraries.page';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './components';\nexport * from './pages';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nconst env = process.env;\n\nexport const testEmailDomain = env.E2E_EMAIL_DOMAIN;\nexport const users = {\n hruser: {\n username: env.HR_USER,\n password: env.HR_USER_PASSWORD\n },\n admin: {\n username: env.ADMIN_EMAIL,\n password: env.ADMIN_PASSWORD\n }\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { chromium, FullConfig } from '@playwright/test';\nimport { LoginPage } from '../page-objects';\nimport { CustomConfig } from '../models';\nimport { users } from './global-variables';\nimport fs from 'fs';\nimport { paths } from '../utils/paths';\n\nasync function globalSetup(config: FullConfig<CustomConfig>) {\n const { use } = config.projects[0];\n\n await removeOutputFolders();\n await createOutputFolders();\n\n if (use.users) {\n for (const user of use.users) {\n if (users[user].username) {\n const browser = await chromium.launch();\n const page = await browser.newPage();\n const loginPage = new LoginPage(page);\n await page.goto(use.baseURL);\n await loginPage.loginUser(\n { username: users[user].username, password: users[user].password },\n {\n withNavigation: false,\n waitForLoading: true\n }\n );\n await page.context().storageState({ path: `${paths.userStates}/${user}UserState.json` });\n await browser.close();\n } else {\n throw new Error(`Add credentials for ${user} to you .env file!`);\n }\n }\n }\n}\n\nasync function createOutputFolders() {\n for (const path in paths) {\n if (!fs.existsSync(paths[path])) {\n fs.mkdirSync(paths[path], { recursive: true });\n }\n }\n}\n\nasync function removeOutputFolders() {\n if (fs.existsSync(paths.rootFolder)) {\n fs.rmSync(paths.rootFolder, { recursive: true, force: true });\n }\n}\n\nexport default globalSetup;\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ReporterDescription } from '@playwright/test';\nimport { timeouts } from '../utils';\n\nconst { env } = process;\n\nexport const getReportPortalConfig = () => {\n const browser = (env.PLAYWRIGHT_BROWSER || 'chrome').toLowerCase();\n const attributes = [\n { key: 'Job', value: `${env.GITHUB_JOB}` },\n { key: 'Build_type', value: `${env.GITHUB_EVENT_NAME}` },\n { key: 'Repository', value: `${env.GITHUB_REPOSITORY}` },\n { key: 'Branch', value: `${env.GITHUB_HEAD_REF || env.GITHUB_REF}` },\n { key: 'Browser', value: browser }\n ];\n\n const launch = `GitHub Actions - ACA - ${browser}`;\n\n return {\n endpoint: env.REPORT_PORTAL_URL,\n apiKey: env.REPORT_PORTAL_TOKEN,\n project: 'alfresco-content-app',\n launch,\n includeTestSteps: true,\n skipPassed: true,\n restClientConfig: {\n timeout: timeouts.sixtySeconds,\n retry: 0\n },\n attributes,\n description: `[Run ${env.GITHUB_RUN_ID}](${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}/actions/runs/${env.GITHUB_RUN_ID}) - ${browser} - Failures only`\n };\n};\n\nexport const getReporter = (): ReporterDescription[] => {\n if (!env.CI) {\n return [['html']];\n }\n\n return [['@reportportal/agent-js-playwright', getReportPortalConfig()], ['github']];\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { PlaywrightTestConfig, devices, chromium } from '@playwright/test';\nimport { loadEnvFile } from 'node:process';\nimport { timeouts } from '../utils';\nimport { getReporter } from './report-portal.config';\n\ntype LaunchOptions = Parameters<typeof chromium.launch>[0];\n\ntry {\n loadEnvFile();\n} catch (error) {\n // .env file is optional, continue without it\n}\n\nconst { env } = process;\n\ninterface BrowserConfig {\n device: any;\n launchOptions: LaunchOptions;\n name: string;\n}\n\nfunction getBrowsersToUse(): string[] {\n const browserEnv = (env.PLAYWRIGHT_BROWSER || 'chromium').toLowerCase();\n const allBrowsers = ['chrome', 'firefox', 'webkit', 'msedge'];\n\n if (browserEnv === 'all') {\n return allBrowsers;\n } else if (allBrowsers.includes(browserEnv) || browserEnv === 'chromium') {\n return [browserEnv];\n } else {\n return ['chromium'];\n }\n}\n\nfunction getBrowserConfig(browser: string): BrowserConfig {\n const launchOptions: LaunchOptions = {\n slowMo: 300\n };\n\n const chromiumArgs = ['--no-sandbox', '--disable-site-isolation-trials'];\n\n switch (browser) {\n case 'firefox':\n return {\n device: devices['Desktop Firefox'],\n launchOptions,\n name: 'firefox'\n };\n case 'webkit':\n return {\n device: devices['Desktop Safari'],\n launchOptions,\n name: 'webkit'\n };\n case 'msedge':\n launchOptions.args = chromiumArgs;\n return {\n device: { ...devices['Desktop Edge'], channel: 'msedge' },\n launchOptions,\n name: 'msedge'\n };\n case 'chrome':\n launchOptions.args = chromiumArgs;\n return {\n device: { ...devices['Desktop Chrome'], channel: 'chrome' },\n launchOptions,\n name: 'chrome'\n };\n case 'chromium':\n default:\n launchOptions.args = chromiumArgs;\n return {\n device: devices['Desktop Chrome'],\n launchOptions,\n name: 'chromium'\n };\n }\n}\n\nexport function createSuiteProjects(\n suiteName: string,\n testDir: string,\n useConfig: Record<string, any> = {},\n projectConfig: Record<string, any> = {}\n) {\n const browsersToUse = getBrowsersToUse();\n const browserEnv = (env.PLAYWRIGHT_BROWSER || 'chrome').toLowerCase();\n\n return browsersToUse.map((browser) => {\n const { device, launchOptions } = getBrowserConfig(browser);\n\n return {\n name: browserEnv === 'all' ? `${suiteName} - ${browser}` : suiteName,\n testDir,\n use: {\n ...device,\n launchOptions,\n ...useConfig\n },\n ...projectConfig\n };\n });\n}\n\nexport function getBrowserProjects() {\n const browsersToUse = getBrowsersToUse();\n\n return browsersToUse.map((browser) => {\n const { device, launchOptions, name } = getBrowserConfig(browser);\n\n return {\n name,\n use: {\n ...device,\n launchOptions\n }\n };\n });\n}\n\nexport const getGlobalConfig: PlaywrightTestConfig = {\n timeout: timeouts.globalTest,\n globalTimeout: timeouts.globalSpec,\n expect: {\n /**\n * Maximum time expect() should wait for the condition to be met.\n * For example in `await expect(locator).toHaveText();`\n */\n timeout: timeouts.medium\n },\n /* Run tests in files in parallel */\n fullyParallel: true,\n /* Fail the build on CI if you accidentally left test.only in the source code. */\n forbidOnly: !!env.CI,\n /* Retry on CI only */\n retries: env.CI ? 2 : 0,\n /* Opt out of parallel tests on CI. */\n workers: 3,\n /* Reporter to use. See https://playwright.dev/docs/test-reporters */\n reporter: [['list'], ...getReporter()],\n globalSetup: require.resolve('./global.setup'),\n testMatch: ['**/*.e2e.ts'],\n use: {\n /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */\n actionTimeout: 40 * 1000,\n /* Base URL to use in actions like `await page.goto('/')`. */\n baseURL: env.PLAYWRIGHT_E2E_HOST,\n headless: env.PLAYWRIGHT_HEADLESS === 'true' || !!env.CI,\n ignoreHTTPSErrors: true,\n bypassCSP: true,\n /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */\n trace: 'retain-on-failure',\n video: 'retain-on-failure',\n screenshot: 'only-on-failure'\n },\n\n /* Configure projects for major browsers */\n projects: getBrowserProjects()\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './global.setup';\nexport * from './playwright.config';\nexport * from './global-variables';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport interface PersonModel {\n username?: string;\n password?: string;\n firstName?: string;\n lastName?: string;\n email?: string;\n enabled?: boolean;\n properties?: any;\n}\n\nexport class Person {\n id: string;\n password: string;\n firstName: string;\n lastName: string;\n email: string;\n enabled: boolean;\n properties: any;\n\n constructor(user: PersonModel) {\n this.id = user.username;\n this.password = user.password || user.username;\n this.firstName = user.firstName || user.username;\n this.lastName = user.lastName || user.username;\n this.email = user.email || `${user.username}@alfresco.com`;\n this.enabled = user.enabled || true;\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport {\n AdminTenantsApi,\n AdminUsersApi,\n AlfrescoApi,\n ContentClient,\n GroupsApi,\n NodesApi,\n PeopleApi,\n QueriesApi,\n SearchApi,\n SecurityGroupsApi,\n SecurityMarksApi,\n SitesApi,\n UploadApi,\n SharedlinksApi,\n FavoritesApi,\n TrashcanApi,\n PersonEntry,\n CommentsApi,\n CategoriesApi,\n TagsApi\n} from '@alfresco/js-api';\nimport { users } from '../base-config';\nimport { logger } from '../utils';\nimport { Person, PersonModel } from './people-api-models';\n\nexport interface AcaBackend {\n sites: SitesApi;\n upload: UploadApi;\n nodes: NodesApi;\n share: SharedlinksApi;\n favorites: FavoritesApi;\n trashCan: TrashcanApi;\n\n tearDown(): Promise<any>;\n}\n\nconst { BASE_URL } = process.env;\n\nconst config = {\n authType: 'BASIC',\n hostBpm: BASE_URL,\n hostEcm: BASE_URL,\n provider: 'ECM',\n contextRoot: 'alfresco'\n};\n\nexport class ApiClientFactory {\n public alfrescoApi: AlfrescoApi;\n public sites: SitesApi;\n public upload: UploadApi;\n public nodes: NodesApi;\n public people: PeopleApi;\n public adminUsers: AdminUsersApi;\n public adminTenant: AdminTenantsApi;\n public groups: GroupsApi;\n public queries: QueriesApi;\n public search: SearchApi;\n public securityGroupsApi: SecurityGroupsApi;\n public securityMarksApi: SecurityMarksApi;\n public contentClient: ContentClient;\n public share: SharedlinksApi;\n public favorites: FavoritesApi;\n public trashCan: TrashcanApi;\n public commentsApi: CommentsApi;\n public queriesApi: QueriesApi;\n public categoriesApi: CategoriesApi;\n public tagsApi: TagsApi;\n\n constructor() {\n this.alfrescoApi = new AlfrescoApi(config);\n this.sites = new SitesApi(this.alfrescoApi);\n this.upload = new UploadApi(this.alfrescoApi);\n this.nodes = new NodesApi(this.alfrescoApi);\n this.people = new PeopleApi(this.alfrescoApi);\n this.adminUsers = new AdminUsersApi(this.alfrescoApi);\n this.adminTenant = new AdminTenantsApi(this.alfrescoApi);\n this.groups = new GroupsApi(this.alfrescoApi);\n this.queries = new QueriesApi(this.alfrescoApi);\n this.search = new SearchApi(this.alfrescoApi);\n this.securityGroupsApi = new SecurityGroupsApi(this.alfrescoApi);\n this.securityMarksApi = new SecurityMarksApi(this.alfrescoApi);\n this.contentClient = new ContentClient(config, '/alfresco');\n this.share = new SharedlinksApi(this.alfrescoApi);\n this.favorites = new FavoritesApi(this.alfrescoApi);\n this.trashCan = new TrashcanApi(this.alfrescoApi);\n this.commentsApi = new CommentsApi(this.alfrescoApi);\n this.queriesApi = new QueriesApi(this.alfrescoApi);\n this.categoriesApi = new CategoriesApi(this.alfrescoApi);\n this.tagsApi = new TagsApi(this.alfrescoApi);\n }\n\n public async setUpAcaBackend(userName: string, password?: string): Promise<AcaBackend> {\n await this.login(userName, password);\n return this;\n }\n\n async tearDown(): Promise<ApiClientFactory> {\n await this.alfrescoApi.logout();\n return this;\n }\n\n async login(userName: string, password?: string) {\n const predefinedUserKey = Object.keys(users).find(\n (userAlias) => userAlias === userName || users[userAlias as keyof typeof users].username === userName\n ) as keyof typeof users | undefined;\n const userToLog = predefinedUserKey ? users[predefinedUserKey] : undefined;\n\n const user = userToLog?.username ?? userName;\n const userPassword = userToLog?.password ?? password;\n if (!userPassword) {\n throw new Error(`[API Client Factory] No password provided for user ${user}`);\n }\n try {\n await this.alfrescoApi.login(user, userPassword);\n } catch (error) {\n logger.error(`[API Client Factory] Log in user ${user} failed ${error}`);\n throw error;\n }\n }\n\n async loginUser(user: PersonModel) {\n if (!user.username || !user.password) {\n throw new Error(`[API Client Factory] No username or password provided`);\n }\n try {\n await this.alfrescoApi.login(user.username, user.password);\n } catch (error) {\n logger.error(`[API Client Factory] Log in user ${user.username} failed ${error}`);\n throw error;\n }\n }\n\n async createUser(user: PersonModel): Promise<PersonEntry | null> {\n const person = new Person(user);\n const peopleApi = new PeopleApi(this.alfrescoApi);\n\n try {\n return await peopleApi.createPerson(person);\n } catch (error) {\n logger.error(`[API Client Factory] createUser failed: ${error}`);\n return null;\n }\n }\n\n async changePassword(username: string, newPassword: string): Promise<PersonEntry | null> {\n const peopleApi = new PeopleApi(this.alfrescoApi);\n\n try {\n return await peopleApi.updatePerson(username, { password: newPassword });\n } catch (error) {\n logger.error(`[API Client Factory] changePassword failed: ${error}`);\n return null;\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ApiClientFactory } from './api-client-factory';\nimport * as crypto from 'crypto';\n\nexport class RulesApi {\n private readonly apiService: ApiClientFactory;\n\n constructor() {\n this.apiService = new ApiClientFactory();\n }\n\n static async initialize(userName: string, password?: string): Promise<RulesApi> {\n const classObj = new RulesApi();\n await classObj.apiService.setUpAcaBackend(userName, password);\n return classObj;\n }\n\n private callApi(path: string, httpMethod: string, body: object = {}): Promise<any> {\n // APIs used by this service are still private and not yet available for public use\n const params = [{}, {}, {}, {}, body, ['application/json'], ['application/json']];\n return this.apiService.alfrescoApi.contentPrivateClient.callApi(path, httpMethod, ...params);\n }\n\n async createRule(nodeId: string, rule: Partial<Rule>, ruleSetId: string = '-default-'): Promise<Rule> {\n const response = await this.callApi(`/nodes/${nodeId}/rule-sets/${ruleSetId}/rules`, 'POST', { ...rule });\n return response.entry;\n }\n\n async createRandomRule(folderId: string, ruleName: string): Promise<Rule> {\n const randomActionsIndex = crypto.randomInt(0, ActionTypes.actions.length);\n const randomAction = ActionTypes.actions[randomActionsIndex];\n return this.createRule(folderId, {\n name: ruleName,\n isEnabled: true,\n actions: [randomAction]\n });\n }\n\n async createRandomRuleWithMultipleConditions(folderId: string, ruleName: string, numOfConditions: number): Promise<Rule> {\n if (numOfConditions > ConditionsTypes.conditions.length) {\n numOfConditions = ConditionsTypes.conditions.length;\n }\n const randomActionsIndex = crypto.randomInt(0, ActionTypes.actions.length);\n const randomAction = ActionTypes.actions[randomActionsIndex];\n const conditionsArray = [];\n for (let i = 0; i < numOfConditions; i++) {\n const randomIndex = crypto.randomInt(0, ConditionsTypes.conditions.length);\n const randomCondition = ConditionsTypes.conditions[randomIndex];\n conditionsArray.push(randomCondition);\n }\n return this.createRule(folderId, {\n name: ruleName,\n isEnabled: true,\n actions: [randomAction],\n conditions: {\n inverted: false,\n booleanMode: 'and',\n compositeConditions: conditionsArray\n }\n });\n }\n\n async createRandomRuleWithMultipleActions(folderId: string, ruleName: string, numOfActions: number): Promise<Rule> {\n if (numOfActions > ActionTypes.actions.length) {\n numOfActions = ActionTypes.actions.length;\n }\n const actionsArray = [];\n for (let i = 0; i < numOfActions; i++) {\n const randomIndex = crypto.randomInt(0, ActionTypes.actions.length);\n const randomAction = ActionTypes.actions[randomIndex];\n actionsArray.push(randomAction);\n }\n return this.createRule(folderId, {\n name: ruleName,\n isEnabled: true,\n actions: actionsArray\n });\n }\n\n async createRandomComplexRule(\n folderId: string,\n ruleName: string,\n numOfConditions: number,\n numOfActions: number,\n ruleDescription?: string\n ): Promise<Rule> {\n if (numOfConditions > ConditionsTypes.conditions.length) {\n numOfConditions = ConditionsTypes.conditions.length;\n }\n const conditionsArray = [];\n for (let i = 0; i < numOfConditions; i++) {\n const randomIndex = crypto.randomInt(0, ConditionsTypes.conditions.length);\n const randomCondition = ConditionsTypes.conditions[randomIndex];\n conditionsArray.push(randomCondition);\n }\n if (numOfActions > ActionTypes.actions.length) {\n numOfActions = ActionTypes.actions.length;\n }\n const actionsArray = [];\n for (let i = 0; i < numOfActions; i++) {\n const randomIndex = crypto.randomInt(0, ActionTypes.actions.length);\n const randomAction = ActionTypes.actions[randomIndex];\n actionsArray.push(randomAction);\n }\n return this.createRule(folderId, {\n name: ruleName,\n description: ruleDescription,\n isEnabled: true,\n actions: actionsArray,\n conditions: {\n inverted: false,\n booleanMode: 'and',\n compositeConditions: conditionsArray\n }\n });\n }\n\n async createRuleWithRandomAspects(folderId: string, ruleName: string): Promise<Rule> {\n return this.createRule(folderId, {\n name: ruleName,\n isEnabled: true,\n actions: [\n {\n actionDefinitionId: 'add-features',\n params: {\n 'aspect-name': 'cm:auditable'\n }\n },\n {\n actionDefinitionId: 'add-features',\n params: {\n 'aspect-name': 'app:configurable'\n }\n },\n {\n actionDefinitionId: 'add-features',\n params: {\n 'aspect-name': 'exif:exif'\n }\n }\n ]\n });\n }\n\n async createRuleWithDestinationFolder(\n folderId: string,\n ruleName: string,\n actionType: 'move' | 'copy' | 'import',\n destinationFolderId: string\n ): Promise<Rule> {\n return this.createRule(folderId, {\n name: ruleName,\n isEnabled: true,\n actions: [\n {\n actionDefinitionId: actionType,\n params: {\n 'destination-folder': destinationFolderId\n }\n }\n ]\n });\n }\n}\n\ntype RuleTrigger = 'inbound' | 'update' | 'outbound';\n\nexport interface Rule {\n id: string;\n name: string;\n description: string;\n isEnabled: boolean;\n isInheritable: boolean;\n isAsynchronous: boolean;\n errorScript: string;\n isShared: boolean;\n triggers: RuleTrigger[];\n conditions: any;\n actions: RuleAction[];\n}\n\nexport interface RuleAction {\n actionDefinitionId: string;\n params?: { [key: string]: unknown };\n}\n\nexport class ActionTypes {\n static readonly ADDFEATURES = new ActionTypes('ADDFEATURES', {\n actionDefinitionId: 'add-features',\n params: { 'aspect-name': 'cm:thumbnailed' }\n });\n static readonly CHECKIN = new ActionTypes('CHECKIN', {\n actionDefinitionId: 'check-in',\n params: {\n description: 'test',\n minorChange: true\n }\n });\n static readonly SPECIALISETYPE = new ActionTypes('SPECIALISETYPE', {\n actionDefinitionId: 'specialise-type',\n params: { 'type-name': 'sys:base' }\n });\n static readonly SETPROPERTYVALUE = new ActionTypes('SETPROPERTYVALUE', {\n actionDefinitionId: 'set-property-value',\n params: { property: 'dl:ganttPercentComplete', value: 'test' }\n });\n static readonly actions = [\n ActionTypes.ADDFEATURES.value,\n ActionTypes.CHECKIN.value,\n ActionTypes.SPECIALISETYPE.value,\n ActionTypes.SETPROPERTYVALUE.value\n ];\n constructor(\n public key: string,\n public value: RuleAction\n ) {}\n}\n\nexport class ConditionsTypes {\n static readonly MIMETYPE = new ConditionsTypes('MIMETYPE', {\n inverted: false,\n booleanMode: 'and',\n simpleConditions: [\n {\n field: 'mimetype',\n comparator: 'equals',\n parameter: 'video/3gpp'\n }\n ]\n });\n static readonly CMNAME = new ConditionsTypes('CM:NAME', {\n inverted: false,\n booleanMode: 'and',\n simpleConditions: [\n {\n field: 'cm:name',\n comparator: 'equals',\n parameter: 'testname'\n }\n ]\n });\n static readonly SIZE = new ConditionsTypes('SIZE', {\n inverted: false,\n booleanMode: 'and',\n simpleConditions: [\n {\n field: 'size',\n comparator: 'equals',\n parameter: '345'\n }\n ]\n });\n static readonly TAG = new ConditionsTypes('TAG', {\n inverted: false,\n booleanMode: 'and',\n simpleConditions: [\n {\n field: 'tag',\n comparator: 'equals',\n parameter: 'testtag'\n }\n ]\n });\n static readonly conditions = [ConditionsTypes.MIMETYPE.value, ConditionsTypes.CMNAME.value, ConditionsTypes.SIZE.value, ConditionsTypes.TAG.value];\n constructor(\n public key: string,\n public value: any\n ) {}\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport * as fs from 'fs';\nimport { ApiClientFactory } from './api-client-factory';\nimport { logger, Utils, waitForApi } from '../utils';\nimport { NodeBodyCreate, NodeEntry, ResultSetPaging, SearchRequest } from '@alfresco/js-api';\n\nexport class FileActionsApi {\n private readonly apiService: ApiClientFactory;\n\n constructor() {\n this.apiService = new ApiClientFactory();\n }\n\n static async initialize(userName: string, password?: string): Promise<FileActionsApi> {\n const classObj = new FileActionsApi();\n await classObj.apiService.setUpAcaBackend(userName, password);\n return classObj;\n }\n\n async uploadFile(fileLocation: string, fileName: string, parentFolderId: string): Promise<NodeEntry> {\n const file = fs.createReadStream(fileLocation);\n return this.apiService.upload.uploadFile(file, '', parentFolderId, null, {\n name: fileName,\n nodeType: 'cm:content',\n renditions: 'doclib'\n });\n }\n\n async uploadFileWithRename(\n fileLocation: string,\n newName: string,\n parentId: string = '-my-',\n title: string = '',\n description: string = ''\n ): Promise<NodeEntry> {\n const file = fs.createReadStream(fileLocation);\n const nodeProps = {\n properties: {\n 'cm:title': title,\n 'cm:description': description\n }\n } as NodeBodyCreate;\n\n const opts = {\n name: newName,\n nodeType: 'cm:content'\n };\n\n try {\n return this.apiService.upload.uploadFile(file, '', parentId, nodeProps, opts);\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n async lockNodes(nodeIds: string[], lockType: string = 'ALLOW_OWNER_CHANGES'): Promise<void> {\n try {\n for (const nodeId of nodeIds) {\n await this.apiService.nodes.lockNode(nodeId, { type: lockType });\n }\n } catch {}\n }\n\n async getNodeById(id: string): Promise<NodeEntry | null> {\n try {\n return this.apiService.nodes.getNode(id);\n } catch {\n return null;\n }\n }\n\n async getNodeProperty(nodeId: string, property: string): Promise<string> {\n try {\n const node = await this.getNodeById(nodeId);\n return node.entry.properties?.[property] || '';\n } catch {\n return '';\n }\n }\n\n private async getLockType(nodeId: string): Promise<string> {\n try {\n const lockType = await this.getNodeProperty(nodeId, 'cm:lockType');\n return lockType || '';\n } catch {\n return '';\n }\n }\n\n async isFileLockedWriteWithRetry(nodeId: string, expect: boolean): Promise<boolean> {\n const data = {\n expect: expect,\n retry: 5\n };\n let isLocked = false;\n try {\n const locked = async () => {\n isLocked = (await this.getLockType(nodeId)) === 'WRITE_LOCK';\n if (isLocked !== data.expect) {\n return Promise.reject(isLocked);\n } else {\n return Promise.resolve(isLocked);\n }\n };\n return await Utils.retryCall(locked, data.retry);\n } catch {}\n return isLocked;\n }\n\n private async queryNodesNames(searchTerm: string): Promise<ResultSetPaging> {\n const data = {\n query: {\n query: `cm:name:\\\"${searchTerm}*\\\"`,\n language: 'afts'\n },\n filterQueries: [{ query: `+TYPE:'cm:folder' OR +TYPE:'cm:content'` }]\n };\n\n try {\n return this.apiService.search.search(data);\n } catch {\n return new ResultSetPaging();\n }\n }\n\n async waitForNodes(searchTerm: string, data: { expect: number }): Promise<void> {\n const predicate = (totalItems: number) => totalItems === data.expect;\n\n const apiCall = async () => {\n try {\n return (await this.queryNodesNames(searchTerm)).list.pagination.totalItems;\n } catch (error) {\n return 0;\n }\n };\n\n try {\n await waitForApi(apiCall, predicate, 30, 2500);\n } catch {\n const actual = await apiCall();\n const message = `waitForNodes: Timed out waiting for \"${searchTerm}\" — expected ${data.expect} nodes, found ${actual}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n private async queryNodesSearchHighlight(searchTerm: string): Promise<ResultSetPaging> {\n const data: SearchRequest = {\n query: {\n query: `cm:name:\"${searchTerm}*\"`,\n language: 'afts'\n },\n filterQueries: [{ query: `+TYPE:'cm:folder' OR +TYPE:'cm:content'` }],\n highlight: {\n prefix: \"<span class='aca-highlight'>\",\n postfix: '</span>',\n fields: [\n {\n field: 'cm:title'\n },\n {\n field: 'cm:name'\n },\n {\n field: 'cm:description',\n snippetCount: 1\n },\n {\n field: 'cm:content',\n snippetCount: 1\n }\n ]\n }\n };\n\n try {\n return this.apiService.search.search(data);\n } catch {\n return new ResultSetPaging();\n }\n }\n\n async waitForNodesSearchHighlight(searchTerm: string, data: { expect: number }): Promise<void> {\n const predicate = (totalItems: number): boolean => totalItems === data.expect;\n\n const apiCall = async (): Promise<number> => {\n try {\n return (await this.queryNodesSearchHighlight(searchTerm)).list.pagination.totalItems;\n } catch (error) {\n logger.warn(`queryNodesSearchHighlight failed for \"${searchTerm}\": ${error}`);\n return 0;\n }\n };\n\n try {\n await waitForApi(apiCall, predicate, 30, 2500);\n logger.log(`waitForNodesSearchHighlight: Found ${data.expect} nodes with search term \"${searchTerm}\"`);\n } catch (error) {\n logger.error(`Error: ${error}`);\n }\n }\n\n async updateNodeContent(nodeId: string, content: string, majorVersion: boolean = true, comment?: string, newName?: string): Promise<NodeEntry> {\n try {\n const opts: { [key: string]: string | boolean } = {\n majorVersion: majorVersion,\n comment: comment,\n name: newName\n };\n return await this.apiService.nodes.updateNodeContent(nodeId, content, opts);\n } catch (error) {\n logger.error(`${this.constructor.name} ${this.updateNodeContent.name}: ${error}`);\n return Promise.reject(error);\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ApiClientFactory } from './api-client-factory';\nimport { SharedLinkEntry, SharedLinkPaging } from '@alfresco/js-api';\nimport { logger, Utils } from '../utils';\n\nexport class SharedLinksApi {\n private readonly apiService: ApiClientFactory;\n\n constructor() {\n this.apiService = new ApiClientFactory();\n }\n static async initialize(userName: string, password?: string): Promise<SharedLinksApi> {\n const classObj = new SharedLinksApi();\n await classObj.apiService.setUpAcaBackend(userName, password);\n return classObj;\n }\n\n async shareFileById(id: string, expireDate?: Date): Promise<SharedLinkEntry | null> {\n try {\n const data = {\n nodeId: id,\n expiresAt: expireDate\n };\n return await this.apiService.share.createSharedLink(data);\n } catch (error) {\n return null;\n }\n }\n\n async shareFilesByIds(ids: string[], expireDate?: Date): Promise<SharedLinkEntry[]> {\n const sharedLinks: SharedLinkEntry[] = [];\n try {\n if (ids && ids.length > 0) {\n for (const id of ids) {\n const sharedLink = await this.shareFileById(id, expireDate);\n if (sharedLink) {\n sharedLinks.push(sharedLink);\n }\n }\n }\n } catch (error) {\n logger.error(`SharedLinksApi shareFilesByIds : catch : ${error}`);\n }\n return sharedLinks;\n }\n\n private async getSharedLinks(maxItems: number = 250): Promise<SharedLinkPaging> {\n try {\n const opts = {\n maxItems\n };\n return await this.apiService.share.listSharedLinks(opts);\n } catch (error) {\n logger.error(`SharedLinksApi getSharedLinks : catch : ${error}`);\n return new SharedLinkPaging();\n }\n }\n\n async waitForFilesToBeShared(fileIds: string[]): Promise<void> {\n try {\n const sharedFile = async () => {\n const sharedFiles = (await this.getSharedLinks()).list?.entries?.map((link) => link.entry.nodeId) ?? [];\n const foundItems = fileIds.every((id) => sharedFiles.includes(id));\n if (!foundItems) {\n const message = 'Not all files are shared yet';\n logger.error(message);\n throw new Error(message);\n }\n };\n\n await Utils.retryCall(sharedFile);\n } catch (error) {\n logger.error(`SharedLinksApi waitForFilesToBeShared : catch : ${error} - Wait timeout reached waiting for files to be shared`);\n }\n }\n\n private async getSharedIdOfNode(fileId: string): Promise<string> {\n const sharedLinksEntries = (await this.getSharedLinks())?.list?.entries ?? [];\n const found = sharedLinksEntries.find((sharedLink) => sharedLink.entry.nodeId === fileId);\n if (!found?.entry.id) {\n const message = `SharedLinksApi getSharedIdOfNode: no shared link found for node ${fileId}`;\n logger.error(message);\n throw new Error(message);\n }\n return found.entry.id;\n }\n\n async unshareFileById(fileId: string): Promise<void> {\n try {\n const sharedId = await this.getSharedIdOfNode(fileId);\n await this.apiService.share.deleteSharedLink(sharedId);\n } catch (error) {\n logger.error(`SharedLinksApi unshareFileById : catch : ${error}`);\n }\n }\n\n async waitForFilesToNotBeShared(fileIds: string[]): Promise<void> {\n try {\n const sharedFile = async () => {\n const sharedFiles = (await this.getSharedLinks()).list?.entries?.map((link) => link.entry.nodeId) ?? [];\n\n const foundItems = fileIds.some((id) => sharedFiles.includes(id));\n\n if (foundItems) {\n const message = 'Some files are still shared';\n logger.error(message);\n throw new Error(message);\n }\n };\n\n await Utils.retryCall(sharedFile);\n } catch (error) {\n logger.error(`SharedLinksApi waitForFilesToNotBeShared : catch : ${error} - Wait timeout reached waiting for files to no longer be shared`);\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ApiClientFactory } from './api-client-factory';\nimport { FavoriteEntry, FavoritePaging } from '@alfresco/js-api';\nimport { logger, Utils } from '../utils';\n\nexport class FavoritesPageApi {\n private readonly apiService: ApiClientFactory;\n\n constructor() {\n this.apiService = new ApiClientFactory();\n }\n static async initialize(userName: string, password?: string): Promise<FavoritesPageApi> {\n const classObj = new FavoritesPageApi();\n await classObj.apiService.setUpAcaBackend(userName, password);\n return classObj;\n }\n async addFavoriteById(nodeType: 'file' | 'folder' | 'site', id: string): Promise<FavoriteEntry> {\n const guid = nodeType === 'site' ? (await this.apiService.sites.getSite(id)).entry.guid : id;\n const data = {\n target: {\n [nodeType]: {\n guid: guid\n }\n }\n };\n return this.apiService.favorites.createFavorite('-me-', data);\n }\n\n async addFavoritesByIds(nodeType: 'file' | 'folder' | 'site', ids: string[]): Promise<FavoriteEntry[]> {\n const favorites: FavoriteEntry[] = [];\n try {\n if (ids && ids.length > 0) {\n for (const id of ids) {\n const favorite = await this.addFavoriteById(nodeType, id);\n favorites.push(favorite);\n }\n }\n } catch {}\n return favorites;\n }\n\n private async getFavorites(username: string): Promise<FavoritePaging> {\n try {\n return this.apiService.favorites.listFavorites(username);\n } catch {\n return new FavoritePaging();\n }\n }\n\n async isFavorite(username: string, nodeId: string): Promise<boolean> {\n try {\n return JSON.stringify((await this.getFavorites(username)).list.entries).includes(nodeId);\n } catch {\n return false;\n }\n }\n\n async isFavoriteWithRetry(username: string, nodeId: string, data: { expect: boolean }): Promise<boolean> {\n let isFavorite = false;\n try {\n const favorite = async () => {\n isFavorite = await this.isFavorite(username, nodeId);\n if (isFavorite !== data.expect) {\n return Promise.reject(isFavorite);\n } else {\n return Promise.resolve(isFavorite);\n }\n };\n return await Utils.retryCall(favorite);\n } catch (error) {}\n return isFavorite;\n }\n\n async getFavoritesTotalItems(username: string): Promise<number> {\n try {\n return (await this.apiService.favorites.listFavorites(username)).list.pagination.totalItems;\n } catch {\n return -1;\n }\n }\n\n async waitForApi(username: string, data: { expect: number }) {\n try {\n const favoriteFiles = async () => {\n const totalItems = await this.getFavoritesTotalItems(username);\n if (totalItems !== data.expect) {\n return Promise.reject(totalItems);\n } else {\n return Promise.resolve(totalItems);\n }\n };\n return await Utils.retryCall(favoriteFiles);\n } catch {}\n }\n\n async removeFavoritesByIds(username: string, ids: string[]): Promise<void> {\n try {\n if (ids && ids.length > 0) {\n for (const id of ids) {\n await this.apiService.favorites.deleteFavorite(username, id);\n }\n }\n } catch (error) {\n logger.error(`FavoritesApi: removeFavoritesByIds failed: ${error}`);\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NodeBodyCreate } from '@alfresco/js-api';\n\nconst NODE_TYPE_FILE = 'cm:content';\nconst NODE_TYPE_FOLDER = 'cm:folder';\nconst NODE_TITLE = 'cm:title';\nconst NODE_DESCRIPTION = 'cm:description';\n\nexport interface NodeContentTree {\n name?: string;\n files?: string[];\n folders?: (string | NodeContentTree)[];\n title?: string;\n description?: string;\n}\n\nexport function flattenNodeContentTree(content: NodeContentTree, relativePath: string = '/'): NodeBodyCreate[] {\n const { name, files, folders, title, description } = content;\n const aspectNames: string[] = ['cm:versionable'];\n let data: NodeBodyCreate[] = [];\n\n const properties = {\n [NODE_TITLE]: title,\n [NODE_DESCRIPTION]: description\n };\n\n if (name) {\n data = data.concat([\n {\n nodeType: NODE_TYPE_FOLDER,\n name,\n relativePath,\n properties\n }\n ]);\n\n relativePath = relativePath === '/' ? `/${name}` : `${relativePath}/${name}`;\n }\n\n if (folders) {\n const foldersData: NodeBodyCreate[] = folders\n .map((folder: string | NodeContentTree): NodeBodyCreate[] => {\n const folderData: NodeContentTree = typeof folder === 'string' ? { name: folder } : folder;\n\n return flattenNodeContentTree(folderData, relativePath);\n })\n .reduce((nodesData: NodeBodyCreate[], folderData: NodeBodyCreate[]) => nodesData.concat(folderData), []);\n\n data = data.concat(foldersData);\n }\n\n if (files) {\n const filesData: NodeBodyCreate[] = files.map(\n (filename: string): NodeBodyCreate => ({\n nodeType: NODE_TYPE_FILE,\n name: filename,\n relativePath,\n aspectNames\n })\n );\n\n data = data.concat(filesData);\n }\n\n return data;\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ApiClientFactory } from './api-client-factory';\nimport { NodeChildAssociationPaging, NodeEntry, NodePaging, NodesIncludeQuery, NodeBodyUpdate } from '@alfresco/js-api';\nimport { NodeContentTree, flattenNodeContentTree } from './node-content-tree';\nimport { logger, Utils } from '../utils';\n\nexport class NodesApi {\n private readonly apiService: ApiClientFactory;\n\n constructor() {\n this.apiService = new ApiClientFactory();\n }\n\n static async initialize(userName: string, password?: string): Promise<NodesApi> {\n const classObj = new NodesApi();\n await classObj.apiService.setUpAcaBackend(userName, password);\n return classObj;\n }\n\n async createFolder(\n name: string,\n parentId: string = '-my-',\n title: string = '',\n description: string = '',\n author: string = '',\n aspectNames: string[] = []\n ): Promise<NodeEntry> {\n try {\n return await this.createNode('cm:folder', name, parentId, title, description, null, author, true, aspectNames);\n } catch (error) {\n const message = `${this.constructor.name} ${this.createFolder.name}: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n async createFile(\n name: string,\n parentId: string = '-my-',\n title: string = '',\n description: string = '',\n author: string = '',\n majorVersion: boolean = true,\n aspectNames: string[] = []\n ): Promise<NodeEntry> {\n try {\n return await this.createNode('cm:content', name, parentId, title, description, null, author, majorVersion, aspectNames);\n } catch (error) {\n const message = `${this.constructor.name} ${this.createFile.name}: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n async createFiles(names: string[], relativePath = '/'): Promise<NodePaging> {\n try {\n return await this.createContent({ files: names }, relativePath);\n } catch (error) {\n const message = `${this.constructor.name} ${this.createFiles.name}: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n async createMultipleFiles(count: number, parentId = '-my-'): Promise<NodeEntry[]> {\n const createdFiles: NodeEntry[] = [];\n for (let i = 0; i < count; i++) {\n const file = await this.createFile(`file-${Utils.random()}-${i}`, parentId);\n if (file) {\n createdFiles.push(file);\n }\n }\n logger.info(\n `${this.constructor.name} ${this.createMultipleFiles.name}: created ${createdFiles.length} of ${count} files in parent \"${parentId}\"`\n );\n return createdFiles;\n }\n\n async createFolders(names: string[], relativePath = '/'): Promise<NodePaging> {\n try {\n return await this.createContent({ folders: names }, relativePath);\n } catch (error) {\n const message = `${this.constructor.name} ${this.createFolders.name}: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n async deleteDeletedNode(name: string): Promise<void> {\n try {\n await this.apiService.trashCan.deleteDeletedNode(name);\n } catch (error) {\n logger.error(`${this.constructor.name} ${this.deleteDeletedNode.name}: ${error}`);\n }\n }\n\n private async createNode(\n nodeType: string,\n name: string,\n parentId: string = '-my-',\n title: string = '',\n description: string = '',\n imageProps: any = null,\n author: string = '',\n majorVersion: boolean = true,\n aspectNames: string[] = []\n ): Promise<NodeEntry> {\n const nodeBody = {\n name,\n nodeType,\n relativePath: '/',\n properties: {\n 'cm:title': title,\n 'cm:description': description,\n 'cm:author': author\n },\n aspectNames\n };\n if (imageProps) {\n nodeBody.properties = Object.assign(nodeBody.properties, imageProps);\n }\n\n try {\n return await this.apiService.nodes.createNode(parentId, nodeBody, {\n majorVersion\n });\n } catch (error) {\n const message = `${this.constructor.name} ${this.createNode.name}: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n async renameNode(nodeId: string, newName: string): Promise<NodeEntry | null> {\n try {\n return this.apiService.nodes.updateNode(nodeId, { name: newName });\n } catch (error) {\n logger.error(`${this.constructor.name} ${this.renameNode.name}: ${error}`);\n return null;\n }\n }\n\n /**\n * Delete multiple nodes.\n * @param nodeIds The list of node IDs to delete.\n * @param permanent Delete permanently, without moving to the trashcan? (default: true)\n */\n async deleteNodes(nodeIds: string[], permanent: boolean = true): Promise<any> {\n try {\n await this.apiService.nodes.deleteNodes(nodeIds, { permanent });\n } catch (error) {\n logger.error(`${this.constructor.name} ${this.deleteNodes.name}: ${error}`);\n }\n }\n\n async updateNode(nodeId: string, nodeBodyUpdate: NodeBodyUpdate, opts?: NodesIncludeQuery): Promise<NodeEntry | null> {\n try {\n return await this.apiService.nodes.updateNode(nodeId, nodeBodyUpdate, opts);\n } catch (error) {\n logger.error(`${this.constructor.name} ${this.updateNode.name}: ${error}`);\n return null;\n }\n }\n\n /**\n * Delete all nodes of the currently logged in user\n * @param userNodeId The id of User node, all child nodes of \"userNodeId\" will be gathered as a list and deleted ( e.g.: \"-my-\" - User Homes folder)\n */\n async deleteCurrentUserNodes(): Promise<void> {\n try {\n const userNodes = (await this.getNodeChildren('-my-'))?.list?.entries ?? [];\n const userNodesIds = userNodes.map((nodeChild) => nodeChild.entry.id);\n await this.deleteNodes(userNodesIds);\n } catch (error) {\n logger.error(`${this.constructor.name} ${this.deleteCurrentUserNodes.name}: ${error}`);\n }\n }\n\n async lockNodes(nodeIds: string[], lockType: string = 'ALLOW_OWNER_CHANGES') {\n try {\n for (const nodeId of nodeIds) {\n await this.apiService.nodes.lockNode(nodeId, { type: lockType });\n }\n } catch (error) {\n logger.error(`${this.constructor.name} ${this.lockNodes.name}: ${error}`);\n }\n }\n\n async unlockNodes(nodeIds: string[]) {\n try {\n for (const nodeId of nodeIds) {\n await this.apiService.nodes.unlockNode(nodeId);\n }\n } catch (error) {\n logger.error(`${this.constructor.name} ${this.unlockNodes.name}: ${error}`);\n }\n }\n\n async createContent(content: NodeContentTree, relativePath: string = '/'): Promise<NodePaging> {\n try {\n return this.apiService.nodes.createNode('-my-', flattenNodeContentTree(content, relativePath) as any);\n } catch (error) {\n const message = `${this.constructor.name} ${this.createContent.name}: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n async getNodeById(id: string): Promise<NodeEntry> {\n try {\n return this.apiService.nodes.getNode(id);\n } catch (error) {\n const message = `${this.constructor.name} ${this.getNodeById.name}: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n async getNodeIdFromParent(name: string, parentId: string): Promise<string> {\n try {\n const children = (await this.getNodeChildren(parentId))?.list?.entries ?? [];\n return children.find((elem) => elem.entry.name === name)?.entry.id ?? '';\n } catch (error) {\n logger.error(`${this.constructor.name} ${this.getNodeIdFromParent.name}: ${error}`);\n return '';\n }\n }\n\n private async getNodeChildren(nodeId: string): Promise<NodeChildAssociationPaging | null> {\n try {\n const opts = {\n include: ['properties']\n };\n return this.apiService.nodes.listNodeChildren(nodeId, opts);\n } catch (error) {\n logger.error(`${this.constructor.name} ${this.getNodeChildren.name}: ${error}`);\n return null;\n }\n }\n\n async deleteNodeById(id: string, permanent: boolean = true): Promise<void> {\n try {\n await this.apiService.nodes.deleteNode(id, { permanent });\n } catch (error) {\n logger.error(`${this.constructor.name} ${this.deleteNodeById.name}: ${error}`);\n }\n }\n\n async cleanupNodeTemplatesItems(nodeNames: string[]): Promise<void> {\n try {\n const templatesFolderId = await this.getNodeTemplatesFolderId();\n for (const nodeName of nodeNames) {\n const nodeId = await this.getNodeIdFromParent(nodeName, templatesFolderId);\n await this.deleteNodeById(nodeId);\n }\n } catch (error) {\n logger.error(`Admin Actions - cleanupNodeTemplatesItems failed: ${error}`);\n }\n }\n\n async cleanupSpaceTemplatesItems(nodeNames: string[]): Promise<void> {\n try {\n const spaceTemplatesNodeId = await this.getSpaceTemplatesFolderId();\n for (const nodeName of nodeNames) {\n const nodeId = await this.getNodeIdFromParent(nodeName, spaceTemplatesNodeId);\n await this.deleteNodeById(nodeId);\n }\n } catch (error) {\n logger.error(`Admin Actions - cleanupSpaceTemplatesFolder failed: ${error}`);\n }\n }\n\n async getNodeTemplatesFolderId(): Promise<string> {\n try {\n return this.getNodeIdFromParent('Node Templates', await this.getDataDictionaryId());\n } catch (error) {\n logger.error(`Admin Actions - getNodeTemplatesFolderId failed: ${error}`);\n return '';\n }\n }\n\n async getSpaceTemplatesFolderId(): Promise<string> {\n try {\n return this.getNodeIdFromParent('Space Templates', await this.getDataDictionaryId());\n } catch (error) {\n logger.error(`Admin Actions - getSpaceTemplatesFolderId failed: ${error}`);\n return '';\n }\n }\n\n private async getDataDictionaryId(): Promise<string> {\n return this.getNodeIdFromParent('Data Dictionary', '-root-').catch((error) => {\n logger.error(`Admin Actions - getDataDictionaryId failed: ${error}`);\n return '';\n });\n }\n\n async setGranularPermission(nodeId: string, username: string, role: string, inheritPermissions = false): Promise<NodeEntry | null> {\n const data = {\n permissions: {\n isInheritanceEnabled: inheritPermissions,\n locallySet: [\n {\n authorityId: username,\n name: role\n }\n ]\n }\n };\n\n try {\n return this.apiService.nodes.updateNode(nodeId, data);\n } catch (error) {\n logger.error(`${this.constructor.name} ${this.setGranularPermission.name}: ${error}`);\n return null;\n }\n }\n\n async removeUserAccessOnNodeTemplate(nodeName: string): Promise<NodeEntry | null> {\n try {\n const templatesRootFolderId = await this.getNodeTemplatesFolderId();\n const nodeId: string = await this.getNodeIdFromParent(nodeName, templatesRootFolderId);\n\n return this.setInheritPermissions(nodeId, false);\n } catch (error) {\n logger.error(`Admin Actions - removeUserAccessOnNodeTemplate failed: ${error}`);\n return null;\n }\n }\n\n async removeUserAccessOnSpaceTemplate(nodeName: string): Promise<NodeEntry | null> {\n try {\n const templatesRootFolderId = await this.getSpaceTemplatesFolderId();\n const nodeId: string = await this.getNodeIdFromParent(nodeName, templatesRootFolderId);\n\n return this.setInheritPermissions(nodeId, false);\n } catch (error) {\n logger.error(`Admin Actions - removeUserAccessOnSpaceTemplate failed: ${error}`);\n return null;\n }\n }\n\n async setInheritPermissions(nodeId: string, inheritPermissions: boolean): Promise<NodeEntry | null> {\n const data = {\n permissions: {\n isInheritanceEnabled: inheritPermissions\n }\n };\n\n try {\n return this.apiService.nodes.updateNode(nodeId, data);\n } catch (error) {\n logger.error(`${this.constructor.name} ${this.setInheritPermissions.name}: ${error}`);\n return null;\n }\n }\n\n private async addAspects(nodeId: string, aspectNames: string[]): Promise<NodeEntry | null> {\n try {\n return this.apiService.nodes.updateNode(nodeId, { aspectNames });\n } catch (error) {\n logger.error(`${this.constructor.name} ${this.addAspects.name}: ${error}`);\n return null;\n }\n }\n\n async createFileLink(originalNodeId: string, destinationId: string): Promise<NodeEntry | null> {\n const name = (await this.getNodeById(originalNodeId)).entry.name;\n const nodeBody = {\n name: `Link to ${name}.url`,\n nodeType: 'app:filelink',\n properties: {\n 'cm:destination': originalNodeId\n }\n };\n\n try {\n const link = await this.apiService.nodes.createNode(destinationId, nodeBody);\n await this.addAspects(originalNodeId, ['app:linked']);\n return link;\n } catch (error) {\n logger.error(`${this.constructor.name} ${this.createFileLink.name}: ${error}`);\n return null;\n }\n }\n\n async createFolderLink(originalNodeId: string, destinationId: string): Promise<NodeEntry | null> {\n const name = (await this.getNodeById(originalNodeId)).entry.name;\n const nodeBody = {\n name: `Link to ${name}.url`,\n nodeType: 'app:folderlink',\n properties: {\n 'cm:title': `Link to ${name}.url`,\n 'cm:destination': originalNodeId,\n 'cm:description': `Link to ${name}.url`,\n 'app:icon': 'space-icon-link'\n }\n };\n\n try {\n const link = await this.apiService.nodes.createNode(destinationId, nodeBody);\n await this.addAspects(originalNodeId, ['app:linked']);\n return link;\n } catch (error) {\n logger.error(`${this.constructor.name} ${this.createFolderLink.name}: ${error}`);\n return null;\n }\n }\n\n async createLinkToFileName(originalFileName: string, originalFileParentId: string, destinationParentId?: string): Promise<NodeEntry | null> {\n destinationParentId ??= originalFileParentId;\n\n try {\n const nodeId = await this.getNodeIdFromParent(originalFileName, originalFileParentId);\n\n return this.createFileLink(nodeId, destinationParentId);\n } catch (error) {\n const message = `Admin Actions - createLinkToFileName failed : ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n async createLinkToFolderName(originalFolderName: string, originalFolderParentId: string, destinationParentId?: string): Promise<NodeEntry | null> {\n destinationParentId ??= originalFolderParentId;\n\n try {\n const nodeId = await this.getNodeIdFromParent(originalFolderName, originalFolderParentId);\n return this.createFolderLink(nodeId, destinationParentId);\n } catch (error) {\n const message = `Admin Actions - createLinkToFolderName failed : ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n async getNodeProperty(nodeId: string, property: string): Promise<string> {\n try {\n const node = await this.getNodeById(nodeId);\n return node.entry.properties?.[property] ?? '';\n } catch (error) {\n const message = `${this.constructor.name} ${this.getNodeProperty.name}: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n async isFileShared(nodeId: string): Promise<boolean> {\n try {\n const sharedId = await this.getNodeProperty(nodeId, 'qshare:sharedId');\n return sharedId !== '';\n } catch (error) {\n const message = `${this.constructor.name} ${this.isFileShared.name}: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n private async getLockType(nodeId: string): Promise<string> {\n try {\n const lockType = await this.getNodeProperty(nodeId, 'cm:lockType');\n return lockType || '';\n } catch (error) {\n const message = `${this.constructor.name} ${this.getLockType.name}: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n async isFileLockedWrite(nodeId: string): Promise<boolean> {\n try {\n return (await this.getLockType(nodeId)) === 'WRITE_LOCK';\n } catch (error) {\n const message = `${this.constructor.name} ${this.isFileLockedWrite.name}: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ApiClientFactory } from './api-client-factory';\nimport { logger } from '../utils';\nimport {\n Site,\n SiteBodyCreate,\n SiteEntry,\n SiteMemberEntry,\n SiteMembershipBodyCreate,\n SiteMembershipBodyUpdate,\n SiteMembershipRequestBodyCreate,\n SiteMembershipRequestEntry\n} from '@alfresco/js-api';\n\nexport class SitesApi {\n private readonly apiService: ApiClientFactory;\n\n constructor() {\n this.apiService = new ApiClientFactory();\n }\n static async initialize(userName: string, password?: string): Promise<SitesApi> {\n const classObj = new SitesApi();\n await classObj.apiService.setUpAcaBackend(userName, password);\n return classObj;\n }\n\n async createSite(title: string, visibility?: string, description?: string, siteId?: string): Promise<SiteEntry> {\n const site = {\n title,\n visibility: visibility || Site.VisibilityEnum.PUBLIC,\n description: description,\n id: siteId || title\n } as SiteBodyCreate;\n\n try {\n return await this.apiService.sites.createSite(site);\n } catch (error) {\n const message = `SitesApi ${this.createSite.name}: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n async getDocLibId(siteId: string): Promise<string> {\n try {\n const id = (await this.apiService.sites.listSiteContainers(siteId)).list?.entries?.[0]?.entry?.id;\n if (!id) {\n const message = `Document library not found for site ${siteId}`;\n logger.error(message);\n throw new Error(message);\n }\n return id;\n } catch (error) {\n const message = `Failed to get document library ID for site ${siteId}: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n /**\n * Delete multiple sites/libraries.\n * @param siteIds The list of the site/library IDs to delete.\n * @param permanent Delete permanently, without moving to the trashcan? (default: true)\n */\n async deleteSites(siteIds: string[], permanent: boolean = true) {\n try {\n if (siteIds && siteIds.length > 0) {\n for (const siteId of siteIds) {\n await this.apiService.sites.deleteSite(siteId, { permanent });\n }\n }\n } catch (error) {\n logger.error(`${this.constructor.name} ${this.deleteSites.name}: ${error}`);\n }\n }\n\n async updateSiteMember(siteId: string, userId: string, role: string): Promise<SiteMemberEntry> {\n const siteRole = {\n role: role\n } as SiteMembershipBodyUpdate;\n\n try {\n return await this.apiService.sites.updateSiteMembership(siteId, userId, siteRole);\n } catch (error) {\n logger.error(`SitesApi updateSiteMember : catch : ${error}`);\n return new SiteMemberEntry();\n }\n }\n\n async addSiteMember(siteId: string, userId: string, role: string): Promise<SiteMemberEntry> {\n const memberBody = {\n id: userId,\n role: role\n } as SiteMembershipBodyCreate;\n\n try {\n return this.apiService.sites.createSiteMembership(siteId, memberBody);\n } catch (error) {\n if (String(error).includes('409')) {\n return this.updateSiteMember(siteId, userId, role);\n }\n throw error;\n }\n }\n\n async createSiteMembershipRequestForPerson(personId: string, siteId: string): Promise<SiteMembershipRequestEntry> {\n const body = {\n id: siteId\n } as SiteMembershipRequestBodyCreate;\n\n try {\n return this.apiService.sites.createSiteMembershipRequestForPerson(personId, body);\n } catch (error) {\n const message = `Failed to create site membership request for person ${personId} and site ${siteId}: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n async approveSiteMembershipRequest(siteId: string, inviteeId: string): Promise<SiteMemberEntry> {\n try {\n return this.apiService.sites.approveSiteMembershipRequest(siteId, inviteeId);\n } catch (error) {\n const message = `Failed to approve site membership request for invitee ${inviteeId} and site ${siteId}: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n async hasMembershipRequest(personId: string, siteId: string): Promise<boolean> {\n try {\n const entries = (await this.apiService.sites.listSiteMembershipRequestsForPerson(personId)).list?.entries ?? [];\n const requests = entries.map((e) => e.entry?.id).filter((id): id is string => !!id);\n return requests.includes(siteId);\n } catch (error) {\n const message = `Failed to check site membership request for person ${personId} and site ${siteId}: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n async deleteSiteMember(siteId: string, userId: string) {\n try {\n return this.apiService.sites.deleteSiteMembership(siteId, userId);\n } catch (error) {\n logger.error(`SitesApi deleteSiteMember : catch : ${error}`);\n }\n }\n\n async getSite(siteId: string): Promise<SiteEntry> {\n try {\n return this.apiService.sites.getSite(siteId);\n } catch (error) {\n const message = `Failed to get site ${siteId}: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ApiClientFactory } from './api-client-factory';\nimport { logger, Utils } from '../utils';\nimport { ResultSetPaging, SearchRequest } from '@alfresco/js-api';\n\nexport class SearchApi {\n private readonly apiService: ApiClientFactory;\n\n constructor() {\n this.apiService = new ApiClientFactory();\n }\n static async initialize(userName: string, password?: string): Promise<SearchApi> {\n const classObj = new SearchApi();\n await classObj.apiService.setUpAcaBackend(userName, password);\n return classObj;\n }\n\n private async querySearchFiles(username: string): Promise<ResultSetPaging> {\n const data = {\n query: {\n query: '*',\n language: 'afts'\n },\n filterQueries: [\n { query: `cm:modified:[NOW/DAY-30DAYS TO NOW/DAY+1DAY]` },\n { query: `cm:modifier:${username} OR cm:creator:${username}` },\n { query: `TYPE:\"content\" AND -TYPE:\"app:filelink\" AND -TYPE:\"fm:post\"` }\n ]\n };\n\n try {\n return this.apiService.search.search(data);\n } catch {\n return new ResultSetPaging();\n }\n }\n\n async getTotalItems(username: string): Promise<number> {\n return (await this.querySearchFiles(username)).list?.pagination?.totalItems ?? 0;\n }\n\n async waitForApi(username: string, data: { expect: number }) {\n try {\n const searchFiles = async () => {\n const totalItems = await this.getTotalItems(username);\n if (totalItems !== data.expect) {\n return Promise.reject(totalItems);\n } else {\n return Promise.resolve(totalItems);\n }\n };\n\n return await Utils.retryCall(searchFiles);\n } catch {}\n }\n\n async waitForFolderPathIndexing(folderId: string, options: { nodesExpected: number }, maxRetries?: number): Promise<number> {\n try {\n const query: SearchRequest = {\n query: {\n query: `ANCESTOR:'workspace://SpacesStore/${folderId}' and TYPE:content`,\n language: 'afts'\n }\n };\n\n const retryLimit = maxRetries ?? 100;\n let retryCount = 0;\n let result: ResultSetPaging;\n\n do {\n result = await this.apiService.search.search(query);\n const currentCount = result.list?.pagination?.count ?? 0;\n\n if (currentCount !== options.nodesExpected) {\n retryCount++;\n\n if (retryCount % 30 === 0) {\n logger.info(\n `waitForFolderPathIndexing: After ${retryCount} seconds, expected ${options.nodesExpected} nodes but found ${currentCount} in folder ${folderId}`\n );\n }\n\n if (retryCount >= retryLimit) {\n const message = `Expected ${options.nodesExpected} nodes but found ${currentCount} after ${retryLimit} retries`;\n logger.error(message);\n throw new Error(message);\n }\n\n await Utils.delayInSeconds(1);\n }\n } while (result.list?.pagination?.count !== options.nodesExpected);\n\n logger.info(`waitForFolderPathIndexing: Found expected ${options.nodesExpected} nodes in folder ${folderId}`);\n return result.list?.pagination?.count ?? 0;\n } catch (error) {\n logger.error(`waitForFolderPathIndexing failed for folderId \"${folderId}\": ${error}`);\n throw error;\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ApiClientFactory } from './api-client-factory';\nimport { logger } from '../utils';\n\nexport class TrashcanApi {\n private readonly apiService = new ApiClientFactory();\n\n static async initialize(userName: string, password?: string): Promise<TrashcanApi> {\n const classObj = new TrashcanApi();\n await classObj.apiService.setUpAcaBackend(userName, password);\n return classObj;\n }\n\n /**\n * Empties the trashcan. Uses multiple batches 1000 nodes each.\n */\n async emptyTrashcan(): Promise<void> {\n try {\n const nodes = await this.apiService.trashCan.listDeletedNodes({\n maxItems: 1000\n });\n\n if (nodes?.list?.entries?.length > 0) {\n const ids = nodes.list.entries.map((entries) => entries.entry.id);\n\n for (const nodeId of ids) {\n await this.apiService.trashCan.deleteDeletedNode(nodeId);\n }\n }\n } catch (error) {\n logger.error(`User Actions - emptyTrashcan failed: ${error}`);\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { FindQuery } from '@alfresco/js-api';\nimport { logger, Utils } from '../utils';\nimport { ApiClientFactory } from './api-client-factory';\n\nexport class QueriesApi {\n private readonly apiService: ApiClientFactory;\n\n constructor() {\n this.apiService = new ApiClientFactory();\n }\n\n static async initialize(userName: string, password?: string): Promise<QueriesApi> {\n const classObj = new QueriesApi();\n await classObj.apiService.setUpAcaBackend(userName, password);\n return classObj;\n }\n\n async waitForSites(searchTerm: string, data: { expect: number }): Promise<number> {\n try {\n const sites = async () => {\n const totalItems = await this.findSitesTotalItems(searchTerm);\n if (totalItems !== data.expect) {\n return Promise.reject(totalItems);\n } else {\n return Promise.resolve(totalItems);\n }\n };\n\n return await Utils.retryCall(sites);\n } catch (error) {\n logger.error(`QueriesApi waitForSites : catch : Expected: ${data.expect} items, but found ${error}`);\n return null;\n }\n }\n\n private async findSitesTotalItems(searchTerm: string): Promise<number> {\n try {\n const opts: FindQuery = {\n term: searchTerm,\n fields: ['title']\n };\n\n const sites = await this.apiService.queries.findSites(searchTerm, opts);\n return sites.list.pagination.totalItems;\n } catch (error) {\n logger.error(`QueriesApi findSitesTotalItems : catch : ${error}`);\n return null;\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ApiClientFactory } from './api-client-factory';\nimport { logger } from '../utils';\nimport { CategoryEntry, CategoryBody, CategoryQuery, CategoryPaging, CategoryLinkBody } from '@alfresco/js-api';\n\nexport class CategoriesApi {\n private readonly apiService: ApiClientFactory;\n\n constructor() {\n this.apiService = new ApiClientFactory();\n }\n\n static async initialize(userName: string, password?: string): Promise<CategoriesApi> {\n const classObj = new CategoriesApi();\n await classObj.apiService.setUpAcaBackend(userName, password);\n return classObj;\n }\n\n async createCategory(categoryId: string, categoryBodyCreate: CategoryBody[], opts?: CategoryQuery): Promise<CategoryPaging | CategoryEntry> {\n try {\n return this.apiService.categoriesApi.createSubcategories(categoryId, categoryBodyCreate, opts);\n } catch (error) {\n logger.error(`${error}`);\n return null;\n }\n }\n\n async deleteCategory(categoryId?: string): Promise<void> {\n if (!categoryId) {\n logger.error('categoryId is null, skipping deletion');\n return;\n }\n\n try {\n await this.apiService.categoriesApi.deleteCategory(categoryId);\n } catch (error) {\n logger.error(`${this.constructor.name} ${this.deleteCategory.name}: ${error}`);\n }\n }\n\n async linkNodeToCategory(\n nodeId: string,\n categoryLinkBodyCreate: CategoryLinkBody[],\n opts?: CategoryQuery\n ): Promise<CategoryPaging | CategoryEntry> {\n try {\n return this.apiService.categoriesApi.linkNodeToCategory(nodeId, categoryLinkBodyCreate, opts);\n } catch (error) {\n logger.error(`${this.constructor.name} ${this.linkNodeToCategory.name}: ${error}`);\n return null;\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { TagBody, TagEntry, TagPaging, Tag } from '@alfresco/js-api';\nimport { ApiClientFactory } from './api-client-factory';\nimport { logger } from '../utils';\n\nexport class TagsApi {\n private readonly apiService: ApiClientFactory;\n\n constructor() {\n this.apiService = new ApiClientFactory();\n }\n\n static async initialize(userName: string, password?: string): Promise<TagsApi> {\n const classObj = new TagsApi();\n await classObj.apiService.setUpAcaBackend(userName, password);\n return classObj;\n }\n\n async createTags(...tagNames: string[]): Promise<TagEntry[]> {\n try {\n const results: TagEntry[] = [];\n for (const tag of tagNames) {\n const result = await this.apiService.tagsApi.createTags([{ tag }]);\n let created: TagEntry;\n if ('entry' in result) {\n created = result as TagEntry;\n } else if ('list' in result) {\n const firstEntry = result.list?.entries?.[0];\n if (!firstEntry) {\n const message = `createTags returned a paging result with no entries for tag \"${tag}\"`;\n logger.error(message);\n throw new Error(message);\n }\n created = firstEntry;\n } else {\n const message = `createTags returned an unexpected response format for tag \"${tag}\"`;\n logger.error(message);\n throw new Error(message);\n }\n logger.info(`Tag created: \"${created.entry.tag}\" (id: ${created.entry.id})`);\n results.push(created);\n }\n return results;\n } catch (error) {\n const message = `Failed to create tags: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n async assignTagToNode(nodeId: string, tag: TagBody): Promise<TagEntry> {\n try {\n return await this.apiService.tagsApi.assignTagToNode(nodeId, tag);\n } catch (error) {\n const message = `Failed to assign tag to node: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n async deleteTags(...tags: Tag[]): Promise<void> {\n try {\n for (const { id, tag } of tags) {\n await this.apiService.tagsApi.deleteTag(id);\n const tagLabel = tag ? `\"${tag}\" ` : '';\n logger.info(`Tag deleted: ${tagLabel}(id: ${id})`);\n }\n } catch (error) {\n const message = `Failed to delete tags: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n async listTagsForNode(nodeId: string): Promise<TagPaging> {\n try {\n return this.apiService.tagsApi.listTagsForNode(nodeId);\n } catch (error) {\n const message = `Failed to list tags for node: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n async listTags(params?: { tag?: string; matching?: boolean }): Promise<TagPaging> {\n try {\n return this.apiService.tagsApi.listTags(params);\n } catch (error) {\n const message = `Failed to list tags: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n\n async deleteTagByTagName(tagName: string): Promise<void> {\n try {\n const response = await this.listTags({ tag: tagName, matching: true });\n const tags = response.list?.entries.map((entry) => entry.entry) || [];\n await this.deleteTags(...tags);\n } catch (error) {\n const message = `Failed to delete tags by tag name: ${error}`;\n logger.error(message);\n throw new Error(message);\n }\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './rules-api';\nexport * from './api-client-factory';\nexport * from './file-actions';\nexport * from './shared-links-api';\nexport * from './favorites-api';\nexport * from './people-api-models';\nexport * from './nodes-api';\nexport * from './sites-api';\nexport * from './node-content-tree';\nexport * from './search-api';\nexport * from './trashcan-api';\nexport * from './queries-api';\nexport * from './categories-api';\nexport * from './tags-api';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nconst LOWER_CASE_ALPHA = 'helloworld';\n\nfunction generateRandomCharset(length: number = 8, charSet: string): string {\n let text = '';\n\n for (let i = 0; i < length; i++) {\n text += charSet.charAt(Math.floor(Math.random() * charSet.length));\n }\n\n return text;\n}\n\nexport class UserModel {\n firstName?: string = generateRandomCharset(7, LOWER_CASE_ALPHA);\n lastName?: string = generateRandomCharset(7, LOWER_CASE_ALPHA);\n password?: string = generateRandomCharset(7, LOWER_CASE_ALPHA);\n email?: string;\n username?: string;\n idIdentityService?: string;\n type = 'enterprise';\n tenantId?: number;\n company?: string;\n id: number;\n\n constructor(details: any = {}) {\n const EMAIL_DOMAIN = 'alfresco';\n this.firstName = details.firstName ?? this.firstName;\n this.lastName = details.lastName ?? this.lastName;\n\n const USER_IDENTIFY = `${this.firstName}${this.lastName}.${generateRandomCharset(7, LOWER_CASE_ALPHA)}`;\n\n this.password = details.password ?? this.password;\n this.email = details.email ?? `${USER_IDENTIFY}@${EMAIL_DOMAIN}.com`;\n this.username = details.username ?? USER_IDENTIFY;\n this.idIdentityService = details.idIdentityService ?? this.idIdentityService;\n this.type = details.type ?? this.type;\n this.tenantId = details.tenantId ?? this.tenantId;\n this.company = details.company ?? this.company;\n this.id = details.id ?? this.id;\n }\n\n get fullName(): string {\n return `${this.firstName ?? ''} ${this.lastName ?? ''}`;\n }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { users } from '../base-config';\n\nexport interface CustomConfig {\n users: Array<keyof typeof users>;\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport interface TestFileConfig {\n path: string;\n name: string;\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './user-model';\nexport * from './custom-config';\nexport * from './test-file.model';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { test as base } from '@playwright/test';\nimport {\n FavoritesLibrariesPage,\n LoginPage,\n MyLibrariesPage,\n NodesPage,\n PersonalFilesPage,\n RecentFilesPage,\n SharedPage,\n SearchPage,\n FavoritesPage,\n TrashPage\n} from '../page-objects';\nimport { FileActionsApi, SharedLinksApi, FavoritesPageApi, NodesApi, SitesApi } from '../api';\nimport { users } from '../base-config';\n\ninterface Pages {\n personalFiles: PersonalFilesPage;\n nodesPage: NodesPage;\n myLibrariesPage: MyLibrariesPage;\n recentFilesPage: RecentFilesPage;\n sharedPage: SharedPage;\n searchPage: SearchPage;\n favoritePage: FavoritesPage;\n favoritesLibrariesPage: FavoritesLibrariesPage;\n trashPage: TrashPage;\n loginPage: LoginPage;\n favoriteLibrariesPage: FavoritesLibrariesPage;\n}\n\ninterface Api {\n fileAction: FileActionsApi;\n shareAction: SharedLinksApi;\n favoritesPageAction: FavoritesPageApi;\n nodesApiAction: NodesApi;\n sitesApiAction: SitesApi;\n}\n\nexport const test = base.extend<Pages & Api>({\n personalFiles: async ({ page }, use) => {\n await use(new PersonalFilesPage(page));\n },\n nodesPage: async ({ page }, use) => {\n await use(new NodesPage(page));\n },\n recentFilesPage: async ({ page }, use) => {\n await use(new RecentFilesPage(page));\n },\n sharedPage: async ({ page }, use) => {\n await use(new SharedPage(page));\n },\n searchPage: async ({ page }, use) => {\n await use(new SearchPage(page));\n },\n favoritePage: async ({ page }, use) => {\n await use(new FavoritesPage(page));\n },\n favoritesLibrariesPage: async ({ page }, use) => {\n await use(new FavoritesLibrariesPage(page));\n },\n trashPage: async ({ page }, use) => {\n await use(new TrashPage(page));\n },\n loginPage: async ({ page }, use) => {\n await use(new LoginPage(page));\n },\n // eslint-disable-next-line no-empty-pattern\n fileAction: async ({}, use) => {\n await use(await FileActionsApi.initialize(users.hruser.username));\n },\n // eslint-disable-next-line no-empty-pattern\n shareAction: async ({}, use) => {\n await use(await SharedLinksApi.initialize(users.hruser.username));\n },\n // eslint-disable-next-line no-empty-pattern\n favoritesPageAction: async ({}, use) => {\n await use(await FavoritesPageApi.initialize(users.hruser.username));\n },\n // eslint-disable-next-line no-empty-pattern\n nodesApiAction: async ({}, use) => {\n await use(await NodesApi.initialize(users.admin.username, users.admin.password));\n },\n // eslint-disable-next-line no-empty-pattern\n sitesApiAction: async ({}, use) => {\n await use(await SitesApi.initialize(users.hruser.username));\n },\n myLibrariesPage: async ({ page }, use) => {\n await use(new MyLibrariesPage(page));\n },\n favoriteLibrariesPage: async ({ page }, use) => {\n await use(new FavoritesLibrariesPage(page));\n }\n});\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './page-initialization';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Utils } from '../../utils';\n\nexport const random = Utils.random();\n\n// ----- files -----\n\nconst consumerContextMenu = ['Share', 'Download', 'View', 'Favorite', 'Copy', 'Manage Versions'];\nconst consumerFavContextMenu = ['Share', 'Download', 'View', 'Remove Favorite', 'Copy', 'Manage Versions'];\nconst consumerSharedContextMenu = ['Shared Link Settings', 'Download', 'View', 'Favorite', 'Copy', 'Manage Versions'];\nconst consumerSharedFavContextMenu = ['Shared Link Settings', 'Download', 'View', 'Remove Favorite', 'Copy', 'Manage Versions'];\n\nconst consumerToolbarPrimary = ['Share', 'Download', 'View', 'View Details', 'More Actions'];\nconst consumerSharedToolbarPrimary = ['Shared Link Settings', 'Download', 'View', 'View Details', 'More Actions'];\n\nconst searchConsumerToolbarPrimary = ['Share', 'Download', 'View', 'View Details', 'More Actions'];\nconst searchConsumerSharedToolbarPrimary = ['Shared Link Settings', 'Download', 'View', 'View Details', 'More Actions'];\n\nconst consumerToolbarMore = ['Favorite', 'Copy', 'Manage Versions'];\nconst consumerFavToolbarMore = ['Remove Favorite', 'Copy', 'Manage Versions'];\n\nexport const collaboratorToolbarPrimary = ['Shared Link Settings', 'Download', 'View', 'View Details', 'More Actions'];\nexport const collaboratorEditRowToolbarMore = [\n 'Edit Offline',\n 'Upload New Version',\n 'Remove Favorite',\n 'Copy',\n 'Manage Versions',\n 'Edit Aspects',\n 'Permissions'\n];\nexport const favoritesCollaboratorToolbarMore = ['Upload New Version', 'Remove Favorite', 'Move', 'Copy', 'Delete', 'Manage Versions'];\nexport const collaboratorSharedToolbarPrimary = [\n 'Activate full-screen mode',\n 'Shared Link Settings',\n 'Download',\n 'Print',\n 'View Details',\n 'More Actions'\n];\nexport const collaboratorDocToolbarMore = [\n 'Edit in Microsoft Office™',\n 'Edit Offline',\n 'Upload New Version',\n 'Remove Favorite',\n 'Copy',\n 'Manage Versions',\n 'Edit Aspects',\n 'Permissions'\n];\nexport const collaboratorLockCurrentUserToolbarMore = ['Cancel Editing', 'Upload New Version', 'Remove Favorite', 'Copy', 'Manage Versions'];\nexport const collaboratorLockOtherUserToolbarMore = ['Cancel Editing', 'Remove Favorite', 'Move', 'Copy', 'Delete', 'Manage Versions', 'Permissions'];\nexport const collaboratorLockOtherUserSearchToolbarMore = ['Cancel Editing', 'Remove Favorite', 'Copy', 'Manage Versions', 'Permissions'];\n\n// ---- VIEWER ----\n\nconst consumerViewerSharedToolbarPrimary = ['Activate full-screen mode', 'Shared Link Settings', 'Download', 'Print', 'View Details', 'More Actions'];\nconst consumerViewerToolbarPrimary = ['Activate full-screen mode', 'Share', 'Download', 'Print', 'View Details', 'More Actions'];\nconst consumerViewerFavToolbarMore = ['Remove Favorite', 'Copy', 'Manage Versions'];\nconst consumerViewerToolbarMore = ['Favorite', 'Copy', 'Manage Versions'];\n\n// ---- FAVORITES workarounds ----\n\nconst favoritesConsumerToolbarMore = ['Upload New Version', 'Remove Favorite', 'Move', 'Copy', 'Delete', 'Manage Versions'];\n\nconst favoritesConsumerContextMenu = [\n 'Share',\n 'Download',\n 'View',\n 'Upload New Version',\n 'Remove Favorite',\n 'Move',\n 'Copy',\n 'Delete',\n 'Manage Versions'\n];\n\nconst favoritesConsumerSharedContextMenu = [\n 'Shared Link Settings',\n 'Download',\n 'View',\n 'Upload New Version',\n 'Remove Favorite',\n 'Move',\n 'Copy',\n 'Delete',\n 'Manage Versions'\n];\n\n// ---- SHARED FILES workaround ----\n\nconst sharedConsumerToolbarMore = ['Upload New Version', 'Favorite', 'Copy', 'Manage Versions'];\nconst sharedConsumerLockedToolbarMore = ['Cancel Editing', 'Upload New Version', 'Favorite', 'Copy', 'Manage Versions'];\nconst sharedConsumerFavToolbarMore = ['Upload New Version', 'Remove Favorite', 'Copy', 'Manage Versions'];\nconst sharedConsumerFavLockedToolbarMore = ['Cancel Editing', 'Upload New Version', 'Remove Favorite', 'Copy', 'Manage Versions'];\nconst sharedConsumerContextMenu = ['Shared Link Settings', 'Download', 'View', 'Upload New Version', 'Favorite', 'Copy', 'Manage Versions'];\nconst sharedConsumerLockedContextMenu = [\n 'Shared Link Settings',\n 'Download',\n 'View',\n 'Cancel Editing',\n 'Upload New Version',\n 'Favorite',\n 'Copy',\n 'Manage Versions'\n];\n\nconst sharedConsumerFavContextMenu = ['Shared Link Settings', 'Download', 'View', 'Upload New Version', 'Remove Favorite', 'Copy', 'Manage Versions'];\n\nconst sharedConsumerFavLockedContextMenu = [\n 'Shared Link Settings',\n 'Download',\n 'View',\n 'Cancel Editing',\n 'Upload New Version',\n 'Remove Favorite',\n 'Copy',\n 'Manage Versions'\n];\n\nexport const fileDocx = {\n name: `file-${random}-docx.docx`,\n description: 'file not shared, not fav, office, not locked',\n\n contextMenu: consumerContextMenu,\n toolbarPrimary: consumerToolbarPrimary,\n toolbarMore: consumerToolbarMore,\n viewerToolbarPrimary: consumerViewerToolbarPrimary,\n viewerToolbarMore: consumerViewerToolbarMore,\n\n searchToolbarPrimary: searchConsumerToolbarPrimary\n};\n\nexport const fileDocxFav = {\n name: `file-${random}-docx-fav.docx`,\n description: 'file not shared, fav, office, not locked',\n\n contextMenu: consumerFavContextMenu,\n toolbarPrimary: consumerToolbarPrimary,\n toolbarMore: consumerFavToolbarMore,\n viewerToolbarPrimary: consumerViewerToolbarPrimary,\n viewerToolbarMore: consumerViewerFavToolbarMore,\n\n favoritesToolbarMore: favoritesConsumerToolbarMore,\n favoritesContextMenu: favoritesConsumerContextMenu,\n\n searchToolbarPrimary: searchConsumerToolbarPrimary\n};\n\nexport const file = {\n name: `file-${random}.txt`,\n description: 'file not shared, not fav, not office, not locked',\n\n contextMenu: consumerContextMenu,\n toolbarPrimary: consumerToolbarPrimary,\n toolbarMore: consumerToolbarMore,\n viewerToolbarPrimary: consumerViewerToolbarPrimary,\n viewerToolbarMore: consumerViewerToolbarMore,\n\n searchToolbarPrimary: searchConsumerToolbarPrimary\n};\n\nexport const fileFav = {\n name: `file-${random}-fav.txt`,\n description: 'file not shared, fav, not office, not locked',\n\n contextMenu: consumerFavContextMenu,\n toolbarPrimary: consumerToolbarPrimary,\n toolbarMore: consumerFavToolbarMore,\n viewerToolbarPrimary: consumerViewerToolbarPrimary,\n viewerToolbarMore: consumerViewerFavToolbarMore,\n\n favoritesToolbarMore: favoritesConsumerToolbarMore,\n favoritesContextMenu: favoritesConsumerContextMenu,\n\n searchToolbarPrimary: searchConsumerToolbarPrimary\n};\n\nexport const fileDocxShared = {\n name: `file-${random}-docx-shared.docx`,\n description: 'file shared, not fav, office, not locked',\n\n contextMenu: consumerSharedContextMenu,\n toolbarPrimary: consumerSharedToolbarPrimary,\n toolbarMore: consumerToolbarMore,\n viewerToolbarPrimary: consumerViewerSharedToolbarPrimary,\n viewerToolbarMore: consumerViewerToolbarMore,\n\n sharedToolbarMore: sharedConsumerToolbarMore,\n sharedContextMenu: sharedConsumerContextMenu,\n\n searchToolbarPrimary: searchConsumerSharedToolbarPrimary\n};\n\nexport const fileDocxSharedFav = {\n name: `file-${random}-docx-shared-fav.docx`,\n description: 'file shared, fav, office, not locked',\n\n contextMenu: consumerSharedFavContextMenu,\n toolbarPrimary: consumerSharedToolbarPrimary,\n toolbarMore: consumerFavToolbarMore,\n viewerToolbarPrimary: consumerViewerSharedToolbarPrimary,\n viewerToolbarMore: consumerViewerFavToolbarMore,\n\n favoritesToolbarMore: favoritesConsumerToolbarMore,\n favoritesContextMenu: favoritesConsumerSharedContextMenu,\n\n sharedToolbarMore: sharedConsumerFavToolbarMore,\n sharedContextMenu: sharedConsumerFavContextMenu,\n\n searchToolbarPrimary: searchConsumerSharedToolbarPrimary\n};\n\nexport const fileShared = {\n name: `file-${random}-shared.txt`,\n description: 'file shared, not fav, not office, not locked',\n\n contextMenu: consumerSharedContextMenu,\n toolbarPrimary: consumerSharedToolbarPrimary,\n toolbarMore: consumerToolbarMore,\n viewerToolbarPrimary: consumerViewerSharedToolbarPrimary,\n viewerToolbarMore: consumerViewerToolbarMore,\n\n sharedToolbarMore: sharedConsumerToolbarMore,\n sharedContextMenu: sharedConsumerContextMenu,\n\n searchToolbarPrimary: searchConsumerSharedToolbarPrimary\n};\n\nexport const fileSharedFav = {\n name: `file-${random}-shared-fav.txt`,\n description: 'file shared, fav, not office, not locked',\n\n contextMenu: consumerSharedFavContextMenu,\n toolbarPrimary: consumerSharedToolbarPrimary,\n toolbarMore: consumerFavToolbarMore,\n viewerToolbarPrimary: consumerViewerSharedToolbarPrimary,\n viewerToolbarMore: consumerViewerFavToolbarMore,\n\n favoritesToolbarMore: favoritesConsumerToolbarMore,\n favoritesContextMenu: favoritesConsumerSharedContextMenu,\n\n sharedToolbarMore: sharedConsumerFavToolbarMore,\n sharedContextMenu: sharedConsumerFavContextMenu,\n\n searchToolbarPrimary: searchConsumerSharedToolbarPrimary\n};\n\nexport const fileLocked = {\n name: `file-${random}-locked.txt`,\n description: 'file not shared, not fav, not office, locked',\n\n contextMenu: consumerContextMenu,\n toolbarPrimary: consumerToolbarPrimary,\n toolbarMore: consumerToolbarMore,\n viewerToolbarPrimary: consumerViewerToolbarPrimary,\n viewerToolbarMore: consumerViewerToolbarMore,\n\n searchToolbarPrimary: searchConsumerToolbarPrimary\n};\n\nexport const fileFavLocked = {\n name: `file-${random}-fav-locked.txt`,\n description: 'file not shared, fav, not office, locked',\n\n contextMenu: consumerFavContextMenu,\n toolbarPrimary: consumerToolbarPrimary,\n toolbarMore: consumerFavToolbarMore,\n viewerToolbarPrimary: consumerViewerToolbarPrimary,\n viewerToolbarMore: consumerViewerFavToolbarMore,\n\n favoritesToolbarMore: favoritesConsumerToolbarMore,\n favoritesContextMenu: favoritesConsumerContextMenu,\n\n searchToolbarPrimary: searchConsumerToolbarPrimary\n};\n\nexport const fileSharedLocked = {\n name: `file-${random}-shared-locked.txt`,\n description: 'file shared, not fav, not office, locked',\n\n contextMenu: consumerSharedContextMenu,\n toolbarPrimary: consumerSharedToolbarPrimary,\n toolbarMore: consumerToolbarMore,\n viewerToolbarPrimary: consumerViewerSharedToolbarPrimary,\n viewerToolbarMore: consumerViewerToolbarMore,\n\n sharedToolbarMore: sharedConsumerLockedToolbarMore,\n sharedContextMenu: sharedConsumerLockedContextMenu,\n\n searchToolbarPrimary: searchConsumerSharedToolbarPrimary\n};\n\nexport const fileSharedFavLocked = {\n name: `file-${random}-shared-fav-locked.txt`,\n description: 'file shared, fav, not office, locked',\n\n contextMenu: consumerSharedFavContextMenu,\n toolbarPrimary: consumerSharedToolbarPrimary,\n toolbarMore: consumerFavToolbarMore,\n viewerToolbarPrimary: consumerViewerSharedToolbarPrimary,\n viewerToolbarMore: consumerViewerFavToolbarMore,\n\n favoritesToolbarMore: favoritesConsumerToolbarMore,\n favoritesContextMenu: favoritesConsumerSharedContextMenu,\n\n sharedToolbarMore: sharedConsumerFavLockedToolbarMore,\n sharedContextMenu: sharedConsumerFavLockedContextMenu,\n\n searchToolbarPrimary: searchConsumerSharedToolbarPrimary\n};\n\nexport const fileGranularPermission = `file-${random}-granular.txt`;\nexport const fileLockedByUser = `file-${random}-my-locked.txt`;\n\n// ---- folders ---\n\nconst consumerFolderContextMenu = ['Download', 'Favorite', 'Copy'];\nconst consumerFolderToolbarPrimary = ['Download', 'View Details', 'More Actions'];\nconst consumerFolderToolbarMore = ['Favorite', 'Copy'];\nconst searchConsumerFolderToolbarPrimary = ['Download', 'View Details', 'More Actions'];\nconst consumerFolderFavContextMenu = ['Download', 'Remove Favorite', 'Copy'];\nconst consumerFolderFavToolbarMore = ['Remove Favorite', 'Copy'];\n\n// ---- FAVORITES workarounds ----\n\nconst favoritesConsumerFolderContextMenu = ['Download', 'Edit', 'Remove Favorite', 'Move', 'Copy', 'Delete'];\n\nconst favoritesConsumerFolderToolbarMore = ['Edit', 'Remove Favorite', 'Move', 'Copy', 'Delete'];\n\nexport const folder = {\n name: `folder-${random}`,\n description: 'folder not favorite',\n contextMenu: consumerFolderContextMenu,\n toolbarPrimary: consumerFolderToolbarPrimary,\n toolbarMore: consumerFolderToolbarMore,\n\n searchToolbarPrimary: searchConsumerFolderToolbarPrimary\n};\n\nexport const folderFav = {\n name: `folder-fav-${random}`,\n description: 'folder favorite',\n contextMenu: consumerFolderFavContextMenu,\n toolbarPrimary: consumerFolderToolbarPrimary,\n toolbarMore: consumerFolderFavToolbarMore,\n\n favoritesContextMenu: favoritesConsumerFolderContextMenu,\n favoritesToolbarMore: favoritesConsumerFolderToolbarMore,\n\n searchToolbarPrimary: searchConsumerFolderToolbarPrimary\n};\n\nexport const folderFav2 = {\n name: `folder-fav-2-${random}`,\n description: 'folder 2 favorite'\n};\n\n// ---- multiple selection ---\n\nconst multipleSelContextMenu = ['Download', 'Favorite', 'Copy'];\nconst multipleSelAllFavContextMenu = ['Download', 'Remove Favorite', 'Copy'];\nconst multipleSelToolbarPrimary = ['Download', 'View Details', 'More Actions'];\nconst multipleSelToolbarMore = ['Favorite', 'Copy'];\nconst multipleSelAllFavToolbarMore = ['Remove Favorite', 'Copy'];\nconst searchMultipleSelToolbarPrimary = ['Download', 'View Details', 'More Actions'];\n\n// ---- FAVORITES workarounds ----\n\nconst favoritesMultipleSelContextMenu = ['Download', 'Favorite', 'Move', 'Copy', 'Delete'];\nconst favoritesMultipleSelToolbarMore = ['Favorite', 'Move', 'Copy', 'Delete'];\nconst favoritesMultipleSelAllFavContextMenu = ['Download', 'Remove Favorite', 'Move', 'Copy', 'Delete'];\nconst favoritesMultipleSelAllFavToolbarMore = ['Remove Favorite', 'Move', 'Copy', 'Delete'];\n\nexport const multipleSel = {\n contextMenu: multipleSelContextMenu,\n toolbarPrimary: multipleSelToolbarPrimary,\n toolbarMore: multipleSelToolbarMore,\n\n favoritesContextMenu: favoritesMultipleSelContextMenu,\n favoritesToolbarMore: favoritesMultipleSelToolbarMore,\n\n searchToolbarPrimary: searchMultipleSelToolbarPrimary\n};\n\nexport const multipleSelAllFav = {\n contextMenu: multipleSelAllFavContextMenu,\n toolbarPrimary: multipleSelToolbarPrimary,\n toolbarMore: multipleSelAllFavToolbarMore,\n\n favoritesContextMenu: favoritesMultipleSelAllFavContextMenu,\n favoritesToolbarMore: favoritesMultipleSelAllFavToolbarMore,\n\n searchToolbarPrimary: searchMultipleSelToolbarPrimary\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Utils } from '../../utils';\n\nconst random = Utils.random();\nconst multipleSelToolbarPrimary = ['Download', 'View Details', 'More Actions'];\n\n// ---- folders ---\n\nconst folderContextMenu = ['Download', 'Edit', 'Favorite', 'Move', 'Copy', 'Delete', 'Edit Aspects', 'Permissions', 'Manage Rules'];\nconst folderFavContextMenu = ['Download', 'Edit', 'Remove Favorite', 'Move', 'Copy', 'Delete', 'Edit Aspects', 'Permissions', 'Manage Rules'];\nconst folderToolbarMore = ['Edit', 'Favorite', 'Move', 'Copy', 'Delete', 'Edit Aspects', 'Permissions', 'Manage Rules'];\nconst folderFavToolbarMore = ['Edit', 'Remove Favorite', 'Move', 'Copy', 'Delete', 'Edit Aspects', 'Permissions', 'Manage Rules'];\n\nexport const folderFile = {\n name: `folderActions-${random}`,\n description: 'folder not favorite',\n contextMenu: folderContextMenu,\n toolbarPrimary: multipleSelToolbarPrimary,\n toolbarMore: folderToolbarMore\n};\n\nexport const folderFavFile = {\n name: `folderActions-fav-${random}`,\n contextMenu: folderFavContextMenu,\n toolbarPrimary: multipleSelToolbarPrimary,\n toolbarMore: folderFavToolbarMore\n};\n\n// ---- multiple selection ---\n\nconst multipleSelContextMenu = ['Download', 'Favorite', 'Move', 'Copy', 'Delete'];\nconst multipleSelToolbarMore = ['Favorite', 'Move', 'Copy', 'Delete'];\n\nexport const multipleSelFile = {\n contextMenu: multipleSelContextMenu,\n toolbarPrimary: multipleSelToolbarPrimary,\n toolbarMore: multipleSelToolbarMore\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './test-data-permissions';\nexport * from './test-data-files-folders';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { resolve } from 'path';\n\nexport const TEST_FILES = {\n DOCX: {\n path: resolve(__dirname, 'file-docx.docx'),\n name: 'file-docx',\n data: 'Lorem ipsum dolor sit amet'\n },\n DOCX2: {\n path: resolve(__dirname, 'file2-docx.docx'),\n name: 'file2-docx',\n data: 'Lorem ipsum dolor sit amet'\n },\n PDF: {\n path: resolve(__dirname, 'file-pdf.pdf'),\n name: 'file-pdf',\n extension: 'pdf',\n data: 'Lorem ipsum dolor sit amet'\n },\n FILE_UNSUPPORTED: {\n path: resolve(__dirname, 'file_unsupported.3DS'),\n name: 'file_unsupported.3DS',\n data: 'Lorem ipsum dolor sit amet'\n },\n PDF_PROTECTED: {\n path: resolve(__dirname, 'file-pdf-protected.pdf'),\n name: 'file-pdf-protected',\n data: 'Lorem ipsum dolor sit amet',\n password: '0000'\n },\n XLSX: {\n path: resolve(__dirname, 'file-xlsx.xlsx'),\n name: 'file-xlsx',\n data: 'Lorem ipsum dolor sit amet'\n },\n XLSX2: {\n path: resolve(__dirname, 'file2-xlsx.xlsx'),\n name: 'file2-xlsx',\n data: 'Lorem ipsum dolor sit amet'\n },\n JPG_FILE: {\n path: resolve(__dirname, 'file-jpg.jpg'),\n name: 'file-jpg'\n },\n JPG_FILE_1MB: {\n path: resolve(__dirname, 'file-jpg-1mb.jpg'),\n name: 'file-jpg-1mb'\n },\n PNG_FILE: {\n path: resolve(__dirname, 'file-png.png'),\n name: 'file-png'\n },\n GIF_FILE: {\n path: resolve(__dirname, 'file-gif.gif'),\n name: 'file-gif'\n },\n TIFF_FILE: {\n path: resolve(__dirname, 'file-tif.tif'),\n name: 'file-tif'\n },\n BMP_FILE: {\n path: resolve(__dirname, 'file-bmp.bmp'),\n name: 'file-bmp'\n },\n PPTX_FILE: {\n path: resolve(__dirname, 'file-pptx.pptx'),\n name: 'file-pptx'\n },\n MP3_FILE: {\n path: resolve(__dirname, 'file-mp3.mp3'),\n name: 'file-mp3'\n },\n MP4_FILE: {\n path: resolve(__dirname, 'file-mp4.mp4'),\n name: 'file-mp4'\n },\n WEBM_FILE: {\n path: resolve(__dirname, 'file-webm.webm'),\n name: 'file-webm'\n },\n PDF_PROTECTED2: {\n path: resolve(__dirname, 'protected.pdf'),\n name: 'file-protected',\n data: 'Lorem ipsum dolor sit amet',\n password: '0000'\n }\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './test-data';\nexport * from './test-files';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './api';\nexport * from './base-config';\nexport * from './models';\nexport * from './page-objects';\nexport * from './fixtures';\nexport * from './utils';\nexport * from './resources';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["env","fs","SitesApi","NodesApi","QueriesApi","SearchApi","TrashcanApi","CategoriesApi","TagsApi","crypto","base","random","multipleSelContextMenu","multipleSelToolbarPrimary","multipleSelToolbarMore"],"mappings":"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"}