From 8025434de9e6e361b4026e2cac8c477a48087766 Mon Sep 17 00:00:00 2001 From: Denys Vuika Date: Wed, 10 Jun 2020 20:37:21 +0100 Subject: [PATCH] fix e2e tests and cleanup e2e typings (#5770) * cleanup e2e typings * fix e2e tests --- e2e/pages/adf/card-view-component.page.ts | 52 +++--- e2e/pages/adf/comments.page.ts | 26 +-- e2e/pages/adf/content-services.page.ts | 142 ++++++++-------- .../breadcrumb/bread-crumb-dropdown.page.ts | 6 +- .../adf/content-services/tree-view.page.ts | 36 ++-- e2e/pages/adf/core/header.page.ts | 49 +++--- .../adf/core/infinite-pagination.page.ts | 2 +- .../adf/demo-shell/custom-sources.page.ts | 14 +- e2e/pages/adf/demo-shell/data-table.page.ts | 36 ++-- e2e/pages/adf/demo-shell/login.page.ts | 66 ++++---- .../adf/demo-shell/monaco-extension.page.ts | 4 +- e2e/pages/adf/demo-shell/notification.page.ts | 30 ++-- .../process-services/form-demo.page.ts | 8 +- .../people-group-cloud-component.page.ts | 48 +++--- .../process-cloud-demo.page.ts | 6 +- .../process-list-demo.page.ts | 20 +-- .../task-filters-demo.page.ts | 14 +- .../process-services/task-list-demo.page.ts | 52 +++--- .../process-services/tasks-cloud-demo.page.ts | 48 +++--- e2e/pages/adf/demo-shell/social.page.ts | 4 +- .../adf/dialog/create-library-dialog.page.ts | 36 ++-- e2e/pages/adf/dialog/folder-dialog.page.ts | 14 +- e2e/pages/adf/dialog/search-dialog.page.ts | 34 ++-- e2e/pages/adf/dialog/upload-dialog.page.ts | 48 +++--- e2e/pages/adf/dialog/upload-toggles.page.ts | 32 ++-- e2e/pages/adf/icons.page.ts | 8 +- e2e/pages/adf/lock-file.page.ts | 12 +- e2e/pages/adf/metadata-view.page.ts | 86 +++++----- e2e/pages/adf/navigation-bar.page.ts | 34 ++-- e2e/pages/adf/permissions.page.ts | 46 +++--- .../adf/process-services/analytics.page.ts | 14 +- .../adf/process-services/attach-form.page.ts | 14 +- .../process-services/attachment-list.page.ts | 34 ++-- .../dialog/app-settings-toggles.page.ts | 10 +- .../dialog/create-checklist-dialog.page.ts | 12 +- .../dialog/start-task-dialog.page.ts | 16 +- .../adf/process-services/filters.page.ts | 6 +- .../process-services/process-details.page.ts | 50 +++--- .../process-services/process-filters.page.ts | 50 +++--- .../adf/process-services/process-list.page.ts | 6 +- .../process-service-tab-bar.page.ts | 12 +- .../process-services/process-services.page.ts | 30 ++-- .../adf/process-services/task-details.page.ts | 100 +++++------ .../adf/process-services/tasks-list.page.ts | 10 +- e2e/pages/adf/process-services/tasks.page.ts | 24 +-- e2e/pages/adf/search-filters.page.ts | 34 ++-- e2e/pages/adf/search-results.page.ts | 20 +-- e2e/pages/adf/tag.page.ts | 56 +++---- e2e/pages/adf/trashcan.page.ts | 15 +- e2e/pages/adf/version-manager.page.ts | 72 ++++---- .../custom-tasks-filters.e2e.ts | 6 +- .../components/search-date-range.e2e.ts | 12 +- .../components/search-number-range.e2e.ts | 18 +- e2e/search/components/search-slider.e2e.ts | 6 +- .../components/search-sorting-picker.e2e.ts | 4 +- .../content-node-selector-dialog.page.ts | 27 ++- .../dialog/download-dialog.page.ts | 4 +- .../pages/document-list.page.ts | 8 +- .../pages/search/search-radio.page.ts | 4 +- .../src/lib/core/dialog/edit-json-dialog.ts | 8 +- lib/testing/src/lib/core/pages/about.page.ts | 34 ++-- .../src/lib/core/pages/bread-crumb.page.ts | 8 +- .../card-view/card-view-boolean-item.page.ts | 2 +- .../card-view/card-view-date-item.page.ts | 10 +- .../card-view/card-view-select-item.page.ts | 2 +- .../card-view/card-view-text-item.page.ts | 20 +-- .../src/lib/core/pages/config-editor-page.ts | 10 +- .../src/lib/core/pages/context-menu.page.ts | 4 +- .../core/pages/data-table-component.page.ts | 6 +- .../core/pages/data-table/data-table-item.ts | 2 +- lib/testing/src/lib/core/pages/error.page.ts | 8 +- .../src/lib/core/pages/form/form-fields.ts | 38 ++--- .../src/lib/core/pages/form/form.page.ts | 14 +- .../form/widgets/attach-file-widget.page.ts | 20 +-- .../form/widgets/checkbox-widget.page.ts | 18 +- .../form/widgets/date-time-widget.page.ts | 22 +-- .../form/widgets/dynamic-table-widget.page.ts | 30 ++-- .../pages/form/widgets/group-widget.page.ts | 16 +- .../pages/form/widgets/people-widget.page.ts | 26 +-- .../form/widgets/typeahead-widget.page.ts | 24 +-- lib/testing/src/lib/core/pages/header.page.ts | 40 ++--- .../src/lib/core/pages/login-sso.page.ts | 12 +- .../material/date-picker-calendar.page.ts | 10 +- .../core/pages/material/date-picker.page.ts | 4 +- .../date-time-picker-calendar.page.ts | 20 +-- .../pages/material/date-time-picker.page.ts | 2 +- .../lib/core/pages/material/dropdown.page.ts | 6 +- .../core/pages/notification-history.page.ts | 4 +- .../src/lib/core/pages/pagination.page.ts | 34 ++-- .../src/lib/core/pages/settings.page.ts | 34 ++-- .../src/lib/core/pages/snackbar.page.ts | 6 +- .../src/lib/core/pages/user-info.page.ts | 36 ++-- lib/testing/src/lib/core/pages/viewer.page.ts | 156 +++++++++--------- .../app/app-list-cloud.page.ts | 16 +- .../dialog/edit-process-filter-dialog.page.ts | 12 +- .../dialog/edit-task-filter-dialog.page.ts | 12 +- ...dit-process-filter-cloud-component.page.ts | 18 +- .../edit-task-filter-cloud-component.page.ts | 32 ++-- .../pages/form-cloud-component.page.ts | 6 +- .../pages/group-cloud-component.page.ts | 10 +- .../pages/people-cloud-component.page.ts | 24 +-- .../process-filters-cloud-component.page.ts | 6 +- .../process-header-cloud-component.page.ts | 18 +- .../process-list-cloud-component.page.ts | 32 ++-- .../pages/start-tasks-cloud-component.page.ts | 18 +- .../task-filters-cloud-component.page.ts | 4 +- .../pages/task-form-cloud-component.page.ts | 20 +-- .../pages/task-header-cloud-component.page.ts | 26 +-- .../pages/task-list-cloud-component.page.ts | 10 +- .../external-node-selector-dialog.page.ts | 10 +- .../process-services/pages/filters.page.ts | 20 +-- .../pages/form-fields.page.ts | 22 +-- .../pages/process-filters.page.ts | 10 +- .../pages/process-instance-tasks.page.ts | 10 +- .../pages/process-list.page.ts | 8 +- .../pages/select-apps-dialog.page.ts | 8 +- .../pages/start-process.page.ts | 26 +-- .../pages/task-filters.page.ts | 12 +- .../process-services/pages/task-list.page.ts | 2 +- 119 files changed, 1381 insertions(+), 1384 deletions(-) diff --git a/e2e/pages/adf/card-view-component.page.ts b/e2e/pages/adf/card-view-component.page.ts index e07cb9a72d..9c0d0fcebf 100644 --- a/e2e/pages/adf/card-view-component.page.ts +++ b/e2e/pages/adf/card-view-component.page.ts @@ -15,25 +15,25 @@ * limitations under the License. */ -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; import { BrowserVisibility, BrowserActions, CardTextItemPage, DropdownPage, CardBooleanItemPage } from '@alfresco/adf-testing'; export class CardViewComponentPage { - addButton: ElementFinder = element(by.className('adf-card-view__key-value-pairs__add-btn')); - nameCardTextItem: CardTextItemPage = new CardTextItemPage('name'); - booleanCardBooleanItem: CardBooleanItemPage = new CardBooleanItemPage('boolean'); - intField: ElementFinder = element(by.css(`input[data-automation-id='card-textitem-editinput-int']`)); - floatField: ElementFinder = element(by.css(`input[data-automation-id='card-textitem-editinput-float']`)); - valueInputField: ElementFinder = element(by.xpath(`//*[contains(@id,'input') and @placeholder='Value']`)); - nameInputField: ElementFinder = element(by.xpath(`//*[contains(@id,'input') and @placeholder='Name']`)); - consoleLog: ElementFinder = element(by.className('app-console')); - deleteButton: ElementFinder = element.all(by.className('adf-card-view__key-value-pairs__remove-btn')).first(); - resetButton: ElementFinder = element(by.css(`#adf-reset-card-log`)); - editableSwitch: ElementFinder = element(by.id('app-toggle-editable')); - clearDateSwitch: ElementFinder = element(by.id('app-toggle-clear-date')); - noneOptionSwitch: ElementFinder = element(by.id('app-toggle-none-option')); - clickableField: ElementFinder = element(by.css(`[data-automation-id="card-textitem-toggle-click"]`)); + addButton = element(by.className('adf-card-view__key-value-pairs__add-btn')); + nameCardTextItem = new CardTextItemPage('name'); + booleanCardBooleanItem = new CardBooleanItemPage('boolean'); + intField = element(by.css(`input[data-automation-id='card-textitem-editinput-int']`)); + floatField = element(by.css(`input[data-automation-id='card-textitem-editinput-float']`)); + valueInputField = element(by.xpath(`//*[contains(@id,'input') and @placeholder='Value']`)); + nameInputField = element(by.xpath(`//*[contains(@id,'input') and @placeholder='Name']`)); + consoleLog = element(by.className('app-console')); + deleteButton = element.all(by.className('adf-card-view__key-value-pairs__remove-btn')).first(); + resetButton = element(by.css(`#adf-reset-card-log`)); + editableSwitch = element(by.id('app-toggle-editable')); + clearDateSwitch = element(by.id('app-toggle-clear-date')); + noneOptionSwitch = element(by.id('app-toggle-none-option')); + clickableField = element(by.css(`[data-automation-id="card-textitem-toggle-click"]`)); selectDropdown = new DropdownPage(element(by.css('mat-select[data-automation-class="select-box"]'))); @@ -66,18 +66,18 @@ export class CardViewComponentPage { } async clickOnIntField(): Promise { - const toggleText: ElementFinder = element(by.css('div[data-automation-id="card-textitem-toggle-int"]')); + const toggleText = element(by.css('div[data-automation-id="card-textitem-toggle-int"]')); await BrowserActions.click(toggleText); await BrowserVisibility.waitUntilElementIsVisible(this.intField); } async clickOnIntClearIcon(): Promise { - const clearIcon: ElementFinder = element(by.css('button[data-automation-id="card-textitem-reset-int"]')); + const clearIcon = element(by.css('button[data-automation-id="card-textitem-reset-int"]')); await BrowserActions.click(clearIcon); } async clickOnIntSaveIcon(): Promise { - const saveIcon: ElementFinder = element(by.css('button[data-automation-id="card-textitem-update-int"]')); + const saveIcon = element(by.css('button[data-automation-id="card-textitem-update-int"]')); await BrowserActions.click(saveIcon); } @@ -86,28 +86,28 @@ export class CardViewComponentPage { } getIntFieldText(): Promise { - const textField: ElementFinder = element(by.css('span[data-automation-id="card-textitem-value-int"]')); + const textField = element(by.css('span[data-automation-id="card-textitem-value-int"]')); return BrowserActions.getText(textField); } getErrorInt(): Promise { - const errorElement: ElementFinder = element(by.css('mat-error[data-automation-id="card-textitem-error-int"]')); + const errorElement = element(by.css('mat-error[data-automation-id="card-textitem-error-int"]')); return BrowserActions.getText(errorElement); } async clickOnFloatField(): Promise { - const toggleText: ElementFinder = element(by.css('div[data-automation-id="card-textitem-toggle-float"]')); + const toggleText = element(by.css('div[data-automation-id="card-textitem-toggle-float"]')); await BrowserActions.click(toggleText); await BrowserVisibility.waitUntilElementIsVisible(this.floatField); } async clickOnFloatClearIcon(): Promise { - const clearIcon: ElementFinder = element(by.css(`button[data-automation-id="card-textitem-reset-float"]`)); + const clearIcon = element(by.css(`button[data-automation-id="card-textitem-reset-float"]`)); await BrowserActions.click(clearIcon); } async clickOnFloatSaveIcon(): Promise { - const saveIcon: ElementFinder = element(by.css(`button[data-automation-id="card-textitem-update-float"]`)); + const saveIcon = element(by.css(`button[data-automation-id="card-textitem-update-float"]`)); await BrowserActions.click(saveIcon); } @@ -116,12 +116,12 @@ export class CardViewComponentPage { } getFloatFieldText(): Promise { - const textField: ElementFinder = element(by.css('span[data-automation-id="card-textitem-value-float"]')); + const textField = element(by.css('span[data-automation-id="card-textitem-value-float"]')); return BrowserActions.getText(textField); } getErrorFloat(): Promise { - const errorElement: ElementFinder = element(by.css('mat-error[data-automation-id="card-textitem-error-float"]')); + const errorElement = element(by.css('mat-error[data-automation-id="card-textitem-error-float"]')); return BrowserActions.getText(errorElement); } @@ -215,7 +215,7 @@ export class CardViewComponentPage { } async isErrorNotDisplayed(): Promise { - const errorElement: ElementFinder = element(by.css('mat-error[data-automation-id="card-textitem-error-int"]')); + const errorElement = element(by.css('mat-error[data-automation-id="card-textitem-error-int"]')); try { await BrowserVisibility.waitUntilElementIsNotVisible(errorElement); return true; diff --git a/e2e/pages/adf/comments.page.ts b/e2e/pages/adf/comments.page.ts index e7d5dd46d7..bb2f776897 100644 --- a/e2e/pages/adf/comments.page.ts +++ b/e2e/pages/adf/comments.page.ts @@ -16,18 +16,18 @@ */ import { BrowserActions, BrowserVisibility, TabsPage } from '@alfresco/adf-testing'; -import { by, element, ElementArrayFinder, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; export class CommentsPage { - tabsPage: TabsPage = new TabsPage(); - numberOfComments: ElementFinder = element(by.id('comment-header')); - commentUserIcon: ElementArrayFinder = element.all(by.id('comment-user-icon')); - commentUserName: ElementArrayFinder = element.all(by.id('comment-user')); - commentMessage: ElementArrayFinder = element.all(by.id('comment-message')); - commentTime: ElementArrayFinder = element.all(by.id('comment-time')); - commentInput: ElementFinder = element(by.id('comment-input')); - addCommentButton: ElementFinder = element(by.css("[data-automation-id='comments-input-add']")); + tabsPage = new TabsPage(); + numberOfComments = element(by.id('comment-header')); + commentUserIcon = element.all(by.id('comment-user-icon')); + commentUserName = element.all(by.id('comment-user')); + commentMessage = element.all(by.id('comment-message')); + commentTime = element.all(by.id('comment-time')); + commentInput = element(by.id('comment-input')); + addCommentButton = element(by.css("[data-automation-id='comments-input-add']")); async getTotalNumberOfComments(): Promise { return BrowserActions.getText(this.numberOfComments); @@ -37,16 +37,16 @@ export class CommentsPage { await BrowserVisibility.waitUntilElementIsVisible(this.commentUserIcon.first()); } - getUserName(position): Promise { + getUserName(position: number): Promise { return BrowserActions.getText(this.commentUserName.get(position)); } - getMessage(position): Promise { + getMessage(position: number): Promise { return BrowserActions.getText(this.commentMessage.get(position)); } - getTime(position): Promise { + getTime(position: number): Promise { return BrowserActions.getText(this.commentTime.get(position)); } @@ -54,7 +54,7 @@ export class CommentsPage { await BrowserVisibility.waitUntilElementIsNotVisible(this.commentInput); } - async addComment(comment): Promise { + async addComment(comment: string): Promise { await BrowserActions.clearSendKeys(this.commentInput, comment); await BrowserActions.click(this.addCommentButton); } diff --git a/e2e/pages/adf/content-services.page.ts b/e2e/pages/adf/content-services.page.ts index 3f1502e146..37ac84f29d 100644 --- a/e2e/pages/adf/content-services.page.ts +++ b/e2e/pages/adf/content-services.page.ts @@ -16,7 +16,7 @@ */ import { DropActions, BrowserActions, BrowserVisibility, DateUtil, DocumentListPage, TogglePage, DropdownPage } from '@alfresco/adf-testing'; -import { $$, browser, by, element, ElementFinder, ElementArrayFinder, protractor } from 'protractor'; +import { $$, browser, by, element, ElementFinder, protractor } from 'protractor'; import { CreateLibraryDialogPage } from './dialog/create-library-dialog.page'; import { FolderDialogPage } from './dialog/folder-dialog.page'; import { NavigationBarPage } from './navigation-bar.page'; @@ -33,60 +33,60 @@ export class ContentServicesPage { created: 'Created' }; - contentList: DocumentListPage = new DocumentListPage(element.all(by.css('adf-upload-drag-area adf-document-list')).first()); - togglePage: TogglePage = new TogglePage(); - createFolderDialog: FolderDialogPage = new FolderDialogPage(); - createLibraryDialog: CreateLibraryDialogPage = new CreateLibraryDialogPage(); + contentList = new DocumentListPage(element.all(by.css('adf-upload-drag-area adf-document-list')).first()); + togglePage = new TogglePage(); + createFolderDialog = new FolderDialogPage(); + createLibraryDialog = new CreateLibraryDialogPage(); - multipleFileUploadToggle: ElementFinder = element(by.id('adf-document-list-enable-drop-files')); - uploadBorder: ElementFinder = element(by.id('document-list-container')); - contentServices: ElementFinder = element(by.css('.app-sidenav-link[data-automation-id="Content Services"]')); - currentFolder: ElementFinder = element(by.css('div[class*="adf-breadcrumb-item adf-active"] div')); - createFolderButton: ElementFinder = element(by.css('button[data-automation-id="create-new-folder"]')); - editFolderButton: ElementFinder = element(by.css('button[data-automation-id="edit-folder"]')); - deleteNodesButton: ElementFinder = element(by.css('button[data-automation-id="delete-toolbar-button"]')); - createLibraryButton: ElementFinder = element(by.css('button[data-automation-id="create-new-library"]')); - activeBreadcrumb: ElementFinder = element(by.css('div[class*="active"]')); + multipleFileUploadToggle = element(by.id('adf-document-list-enable-drop-files')); + uploadBorder = element(by.id('document-list-container')); + contentServices = element(by.css('.app-sidenav-link[data-automation-id="Content Services"]')); + currentFolder = element(by.css('div[class*="adf-breadcrumb-item adf-active"] div')); + createFolderButton = element(by.css('button[data-automation-id="create-new-folder"]')); + editFolderButton = element(by.css('button[data-automation-id="edit-folder"]')); + deleteNodesButton = element(by.css('button[data-automation-id="delete-toolbar-button"]')); + createLibraryButton = element(by.css('button[data-automation-id="create-new-library"]')); + activeBreadcrumb = element(by.css('div[class*="active"]')); tooltip = by.css('div[class*="--text adf-full-width"] span'); - uploadFileButton: ElementFinder = element(by.css('.adf-upload-button-file-container button')); - uploadFileButtonInput: ElementFinder = element(by.css('input[data-automation-id="upload-single-file"]')); - uploadMultipleFileButton: ElementFinder = element(by.css('input[data-automation-id="upload-multiple-files"]')); - uploadFolderButton: ElementFinder = element(by.css('input[data-automation-id="uploadFolder"]')); - errorSnackBar: ElementFinder = element(by.css('simple-snack-bar[class*="mat-simple-snackbar"]')); - emptyPagination: ElementFinder = element(by.css('adf-pagination[class*="adf-pagination__empty"]')); - dragAndDrop: ElementFinder = element.all(by.css('adf-upload-drag-area div')).first(); - nameHeader: ElementFinder = element.all(by.css('div[data-automation-id="auto_id_name"] > span')).first(); - sizeHeader: ElementFinder = element.all(by.css('div[data-automation-id="auto_id_content.sizeInBytes"] > span')).first(); - createdByHeader: ElementFinder = element.all(by.css('div[data-automation-id="auto_id_createdByUser.displayName"] > span')).first(); - createdHeader: ElementFinder = element.all(by.css('div[data-automation-id="auto_id_createdAt"] > span')).first(); - recentFiles: ElementFinder = element(by.css('.app-container-recent')); - recentFilesExpanded: ElementFinder = element(by.css('.app-container-recent mat-expansion-panel-header.mat-expanded')); - recentFilesClosed: ElementFinder = element(by.css('.app-container-recent mat-expansion-panel-header')); - recentFileIcon: ElementFinder = element(by.css('.app-container-recent mat-expansion-panel-header mat-icon')); - emptyFolder: ElementFinder = element(by.css('.adf-empty-folder-this-space-is-empty')); - emptyFolderImage: ElementFinder = element(by.css('.adf-empty-folder-image')); - emptyRecent: ElementFinder = element(by.css('.app-container-recent .app-empty-list__title')); - gridViewButton: ElementFinder = element(by.css('button[data-automation-id="document-list-grid-view"]')); - cardViewContainer: ElementFinder = element(by.css('div.app-document-list-container div.adf-datatable-card')); - shareNodeButton: ElementFinder = element(by.cssContainingText('mat-icon', ' share ')); + uploadFileButton = element(by.css('.adf-upload-button-file-container button')); + uploadFileButtonInput = element(by.css('input[data-automation-id="upload-single-file"]')); + uploadMultipleFileButton = element(by.css('input[data-automation-id="upload-multiple-files"]')); + uploadFolderButton = element(by.css('input[data-automation-id="uploadFolder"]')); + errorSnackBar = element(by.css('simple-snack-bar[class*="mat-simple-snackbar"]')); + emptyPagination = element(by.css('adf-pagination[class*="adf-pagination__empty"]')); + dragAndDrop = element.all(by.css('adf-upload-drag-area div')).first(); + nameHeader = element.all(by.css('div[data-automation-id="auto_id_name"] > span')).first(); + sizeHeader = element.all(by.css('div[data-automation-id="auto_id_content.sizeInBytes"] > span')).first(); + createdByHeader = element.all(by.css('div[data-automation-id="auto_id_createdByUser.displayName"] > span')).first(); + createdHeader = element.all(by.css('div[data-automation-id="auto_id_createdAt"] > span')).first(); + recentFiles = element(by.css('.app-container-recent')); + recentFilesExpanded = element(by.css('.app-container-recent mat-expansion-panel-header.mat-expanded')); + recentFilesClosed = element(by.css('.app-container-recent mat-expansion-panel-header')); + recentFileIcon = element(by.css('.app-container-recent mat-expansion-panel-header mat-icon')); + emptyFolder = element(by.css('.adf-empty-folder-this-space-is-empty')); + emptyFolderImage = element(by.css('.adf-empty-folder-image')); + emptyRecent = element(by.css('.app-container-recent .app-empty-list__title')); + gridViewButton = element(by.css('button[data-automation-id="document-list-grid-view"]')); + cardViewContainer = element(by.css('div.app-document-list-container div.adf-datatable-card')); + shareNodeButton = element(by.cssContainingText('mat-icon', ' share ')); nameColumnHeader = 'name'; createdByColumnHeader = 'createdByUser.displayName'; createdColumnHeader = 'createdAt'; - deleteContentElement: ElementFinder = element(by.css('button[data-automation-id*="DELETE"]')); - metadataAction: ElementFinder = element(by.css('button[data-automation-id*="METADATA"]')); - versionManagerAction: ElementFinder = element(by.css('button[data-automation-id*="VERSIONS"]')); - moveContentElement: ElementFinder = element(by.css('button[data-automation-id*="MOVE"]')); - copyContentElement: ElementFinder = element(by.css('button[data-automation-id*="COPY"]')); - lockContentElement: ElementFinder = element(by.css('button[data-automation-id="DOCUMENT_LIST.ACTIONS.LOCK"]')); - downloadContent: ElementFinder = element(by.css('button[data-automation-id*="DOWNLOAD"]')); - downloadButton: ElementFinder = element(by.css('button[title="Download"]')); - favoriteButton: ElementFinder = element(by.css('button[data-automation-id="favorite"]')); - markedFavorite: ElementFinder = element(by.cssContainingText('button[data-automation-id="favorite"] mat-icon', 'star')); - notMarkedFavorite: ElementFinder = element(by.cssContainingText('button[data-automation-id="favorite"] mat-icon', 'star_border')); - multiSelectToggle: ElementFinder = element(by.cssContainingText('span.mat-slide-toggle-content', ' Multiselect (with checkboxes) ')); - selectAllCheckbox: ElementFinder = element.all(by.css('.adf-checkbox-sr-only')).first(); - selectionModeDropdown: ElementFinder = element(by.css('.mat-select[aria-label="Selection Mode"]')); - selectedNodesList: ElementArrayFinder = element.all(by.css('.app-content-service-settings li')); + deleteContentElement = element(by.css('button[data-automation-id*="DELETE"]')); + metadataAction = element(by.css('button[data-automation-id*="METADATA"]')); + versionManagerAction = element(by.css('button[data-automation-id*="VERSIONS"]')); + moveContentElement = element(by.css('button[data-automation-id*="MOVE"]')); + copyContentElement = element(by.css('button[data-automation-id*="COPY"]')); + lockContentElement = element(by.css('button[data-automation-id="DOCUMENT_LIST.ACTIONS.LOCK"]')); + downloadContent = element(by.css('button[data-automation-id*="DOWNLOAD"]')); + downloadButton = element(by.css('button[title="Download"]')); + favoriteButton = element(by.css('button[data-automation-id="favorite"]')); + markedFavorite = element(by.cssContainingText('button[data-automation-id="favorite"] mat-icon', 'star')); + notMarkedFavorite = element(by.cssContainingText('button[data-automation-id="favorite"] mat-icon', 'star_border')); + multiSelectToggle = element(by.cssContainingText('span.mat-slide-toggle-content', ' Multiselect (with checkboxes) ')); + selectAllCheckbox = element.all(by.css('.adf-checkbox-sr-only')).first(); + selectionModeDropdown = element(by.css('.mat-select[aria-label="Selection Mode"]')); + selectedNodesList = element.all(by.css('.app-content-service-settings li')); siteListDropdown = new DropdownPage(element(by.css(`mat-select[data-automation-id='site-my-files-option']`))); sortingDropdown = new DropdownPage(element(by.css('mat-select[data-automation-id="grid-view-sorting"]'))); @@ -96,12 +96,12 @@ export class ContentServicesPage { } async checkContextActionIsVisible(actionName) { - const actionButton: ElementFinder = element(by.css(`button[data-automation-id="context-${actionName}"`)); + const actionButton = element(by.css(`button[data-automation-id="context-${actionName}"`)); await BrowserVisibility.waitUntilElementIsVisible(actionButton); } async isContextActionEnabled(actionName): Promise { - const actionButton: ElementFinder = element(by.css(`button[data-automation-id="context-${actionName}"`)); + const actionButton = element(by.css(`button[data-automation-id="context-${actionName}"`)); await BrowserVisibility.waitUntilElementIsVisible(actionButton); return actionButton.isEnabled(); } @@ -125,7 +125,7 @@ export class ContentServicesPage { async checkDeleteIsDisabled(content): Promise { await this.contentList.clickOnActionMenu(content); await this.waitForContentOptions(); - const disabledDelete: ElementFinder = element(by.css(`button[data-automation-id*='DELETE'][disabled='true']`)); + const disabledDelete = element(by.css(`button[data-automation-id*='DELETE'][disabled='true']`)); await BrowserVisibility.waitUntilElementIsVisible(disabledDelete); } @@ -188,7 +188,7 @@ export class ContentServicesPage { } async clickHyperlinkNavigationToggle(): Promise { - const hyperlinkToggle: ElementFinder = element(by.cssContainingText('.mat-slide-toggle-content', 'Hyperlink navigation')); + const hyperlinkToggle = element(by.cssContainingText('.mat-slide-toggle-content', 'Hyperlink navigation')); await BrowserActions.click(hyperlinkToggle); } @@ -477,22 +477,22 @@ export class ContentServicesPage { } async enableInfiniteScrolling(): Promise { - const infiniteScrollButton: ElementFinder = element(by.cssContainingText('.mat-slide-toggle-content', 'Enable Infinite Scrolling')); + const infiniteScrollButton = element(by.cssContainingText('.mat-slide-toggle-content', 'Enable Infinite Scrolling')); await BrowserActions.click(infiniteScrollButton); } async enableCustomPermissionMessage(): Promise { - const customPermissionMessage: ElementFinder = element(by.cssContainingText('.mat-slide-toggle-content', 'Enable custom permission message')); + const customPermissionMessage = element(by.cssContainingText('.mat-slide-toggle-content', 'Enable custom permission message')); await BrowserActions.click(customPermissionMessage); } async enableMediumTimeFormat(): Promise { - const mediumTimeFormat: ElementFinder = element(by.css('#enableMediumTimeFormat')); + const mediumTimeFormat = element(by.css('#enableMediumTimeFormat')); await BrowserActions.click(mediumTimeFormat); } async enableThumbnails(): Promise { - const thumbnailSlide: ElementFinder = element(by.id('adf-thumbnails-upload-switch')); + const thumbnailSlide = element(by.id('adf-thumbnails-upload-switch')); await BrowserActions.click(thumbnailSlide); } @@ -501,7 +501,7 @@ export class ContentServicesPage { } async getDocumentListRowNumber(): Promise { - const documentList: ElementFinder = element(by.css('adf-upload-drag-area adf-document-list')); + const documentList = element(by.css('adf-upload-drag-area adf-document-list')); await BrowserVisibility.waitUntilElementIsVisible(documentList); return $$('adf-upload-drag-area adf-document-list .adf-datatable-row').count(); } @@ -537,7 +537,7 @@ export class ContentServicesPage { } async checkLockIsDisplayedForElement(name): Promise { - const lockButton: ElementFinder = element(by.css(`div.adf-datatable-cell[data-automation-id="${name}"] button`)); + const lockButton = element(by.css(`div.adf-datatable-cell[data-automation-id="${name}"] button`)); await BrowserVisibility.waitUntilElementIsVisible(lockButton); } @@ -546,7 +546,7 @@ export class ContentServicesPage { } async getStyleValueForRowText(rowName, styleName): Promise { - const row: ElementFinder = element(by.css(`div.adf-datatable-cell[data-automation-id="${rowName}"] span.adf-datatable-cell-value[title="${rowName}"]`)); + const row = element(by.css(`div.adf-datatable-cell[data-automation-id="${rowName}"] span.adf-datatable-cell-value[title="${rowName}"]`)); await BrowserVisibility.waitUntilElementIsVisible(row); return row.getCssValue(styleName); } @@ -566,7 +566,7 @@ export class ContentServicesPage { } async getRowIconImageUrl(fileName): Promise { - const iconRow: ElementFinder = element(by.css(`.app-document-list-container div.adf-datatable-cell[data-automation-id="${fileName}"] img`)); + const iconRow = element(by.css(`.app-document-list-container div.adf-datatable-cell[data-automation-id="${fileName}"] img`)); await BrowserVisibility.waitUntilElementIsVisible(iconRow); return iconRow.getAttribute('src'); } @@ -590,12 +590,12 @@ export class ContentServicesPage { } async getDocumentCardIconForElement(elementName): Promise { - const elementIcon: ElementFinder = element(by.css(`.app-document-list-container div.adf-datatable-cell[data-automation-id="${elementName}"] img`)); + const elementIcon = element(by.css(`.app-document-list-container div.adf-datatable-cell[data-automation-id="${elementName}"] img`)); return elementIcon.getAttribute('src'); } async checkDocumentCardPropertyIsShowed(elementName, propertyName): Promise { - const elementProperty: ElementFinder = element(by.css(`.app-document-list-container div.adf-datatable-cell[data-automation-id="${elementName}"][title="${propertyName}"]`)); + const elementProperty = element(by.css(`.app-document-list-container div.adf-datatable-cell[data-automation-id="${elementName}"][title="${propertyName}"]`)); await BrowserVisibility.waitUntilElementIsVisible(elementProperty); } @@ -605,15 +605,15 @@ export class ContentServicesPage { } async checkMenuIsShowedForElementIndex(elementIndex): Promise { - const elementMenu: ElementFinder = element(by.css(`button[data-automation-id="action_menu_${elementIndex}"]`)); + const elementMenu = element(by.css(`button[data-automation-id="action_menu_${elementIndex}"]`)); await BrowserVisibility.waitUntilElementIsVisible(elementMenu); } async navigateToCardFolder(folderName): Promise { await BrowserActions.closeMenuAndDialogs(); - const folderCard: ElementFinder = element(by.css(`.app-document-list-container div.adf-image-table-cell.adf-datatable-cell[data-automation-id="${folderName}"]`)); + const folderCard = element(by.css(`.app-document-list-container div.adf-image-table-cell.adf-datatable-cell[data-automation-id="${folderName}"]`)); await BrowserActions.click(folderCard); - const folderSelected: ElementFinder = element(by.css(`.adf-datatable-row.adf-is-selected div[data-automation-id="${folderName}"].adf-datatable-cell--image`)); + const folderSelected = element(by.css(`.adf-datatable-row.adf-is-selected div[data-automation-id="${folderName}"].adf-datatable-cell--image`)); await BrowserVisibility.waitUntilElementIsVisible(folderSelected); await browser.actions().sendKeys(protractor.Key.ENTER).perform(); } @@ -656,12 +656,12 @@ export class ContentServicesPage { await BrowserActions.click(this.selectAllCheckbox); } - getRowByName(rowName): ElementFinder { + getRowByName(rowName: string): ElementFinder { return this.contentList.dataTable.getRow(this.columns.name, rowName); } async selectFolder(folderName: string): Promise { - const folderSelected: ElementFinder = element(by.css(`div[data-automation-id="${folderName}"] .adf-datatable-center-img-ie`)); + const folderSelected = element(by.css(`div[data-automation-id="${folderName}"] .adf-datatable-center-img-ie`)); await BrowserVisibility.waitUntilElementIsVisible(folderSelected); await BrowserActions.click(folderSelected); } @@ -682,13 +682,13 @@ export class ContentServicesPage { } async selectItemWithCheckbox(itemName: string): Promise { - const item: ElementFinder = element(by.css(`adf-datatable-row[aria-label="${itemName}"] mat-checkbox .mat-checkbox-input`)); + const item = element(by.css(`adf-datatable-row[aria-label="${itemName}"] mat-checkbox .mat-checkbox-input`)); await BrowserVisibility.waitUntilElementIsVisible(item); await BrowserActions.clickScript(item); } async unSelectItemWithCheckbox(itemName: string): Promise { - const item: ElementFinder = element(by.css(`adf-datatable-row[aria-label="${itemName} selected"] mat-checkbox .mat-checkbox-input`)); + const item = element(by.css(`adf-datatable-row[aria-label="${itemName} selected"] mat-checkbox .mat-checkbox-input`)); await BrowserVisibility.waitUntilElementIsVisible(item); await BrowserActions.click(item); } diff --git a/e2e/pages/adf/content-services/breadcrumb/bread-crumb-dropdown.page.ts b/e2e/pages/adf/content-services/breadcrumb/bread-crumb-dropdown.page.ts index b83438fc76..d175b2d2dc 100644 --- a/e2e/pages/adf/content-services/breadcrumb/bread-crumb-dropdown.page.ts +++ b/e2e/pages/adf/content-services/breadcrumb/bread-crumb-dropdown.page.ts @@ -15,18 +15,18 @@ * limitations under the License. */ -import { element, by, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; import { BrowserActions, DropdownPage } from '@alfresco/adf-testing'; export class BreadCrumbDropdownPage { - breadCrumb: ElementFinder = element(by.css(`adf-dropdown-breadcrumb[data-automation-id='content-node-selector-content-breadcrumb']`)); + breadCrumb = element(by.css(`adf-dropdown-breadcrumb[data-automation-id='content-node-selector-content-breadcrumb']`)); parentFolder = this.breadCrumb.element(by.css(`button[data-automation-id='dropdown-breadcrumb-trigger']`)); currentFolder = this.breadCrumb.element(by.css(`div span[data-automation-id="current-folder"]`)); breadCrumbDropdown = new DropdownPage(element.all(by.css(`div[class*='mat-select-panel']`)).first()); - async choosePath(pathName): Promise { + async choosePath(pathName: string): Promise { await this.breadCrumbDropdown.selectOption(pathName); } diff --git a/e2e/pages/adf/content-services/tree-view.page.ts b/e2e/pages/adf/content-services/tree-view.page.ts index a14c12c6cf..506d3e62f3 100644 --- a/e2e/pages/adf/content-services/tree-view.page.ts +++ b/e2e/pages/adf/content-services/tree-view.page.ts @@ -15,15 +15,15 @@ * limitations under the License. */ -import { element, by, ElementFinder, ElementArrayFinder, protractor } from 'protractor'; +import { element, by, protractor } from 'protractor'; import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; export class TreeViewPage { - treeViewTitle: ElementFinder = element(by.cssContainingText('app-tree-view div', 'TREE VIEW TEST')); - nodeIdInput: ElementFinder = element(by.css('input[placeholder="Node Id"]')); - noNodeMessage: ElementFinder = element(by.id('adf-tree-view-missing-node')); - nodesOnPage: ElementArrayFinder = element.all(by.css('mat-tree-node')); + treeViewTitle = element(by.cssContainingText('app-tree-view div', 'TREE VIEW TEST')); + nodeIdInput = element(by.css('input[placeholder="Node Id"]')); + noNodeMessage = element(by.id('adf-tree-view-missing-node')); + nodesOnPage = element.all(by.css('mat-tree-node')); async checkTreeViewTitleIsDisplayed(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.treeViewTitle); @@ -34,28 +34,28 @@ export class TreeViewPage { return this.nodeIdInput.getAttribute('value'); } - async clickNode(nodeName): Promise { - const node: ElementFinder = element(by.css('mat-tree-node[id="' + nodeName + '-tree-child-node"] button')); + async clickNode(nodeName: string): Promise { + const node = element(by.css('mat-tree-node[id="' + nodeName + '-tree-child-node"] button')); await BrowserActions.click(node); } - async checkNodeIsDisplayedAsClosed(nodeName): Promise { - const node: ElementFinder = element(by.css('mat-tree-node[id="' + nodeName + '-tree-child-node"][aria-expanded="false"]')); + async checkNodeIsDisplayedAsClosed(nodeName: string): Promise { + const node = element(by.css('mat-tree-node[id="' + nodeName + '-tree-child-node"][aria-expanded="false"]')); await BrowserVisibility.waitUntilElementIsVisible(node); } - async checkNodeIsDisplayedAsOpen(nodeName): Promise { - const node: ElementFinder = element(by.css('mat-tree-node[id="' + nodeName + '-tree-child-node"][aria-expanded="true"]')); + async checkNodeIsDisplayedAsOpen(nodeName: string): Promise { + const node = element(by.css('mat-tree-node[id="' + nodeName + '-tree-child-node"][aria-expanded="true"]')); await BrowserVisibility.waitUntilElementIsVisible(node); } - async checkClickedNodeName(nodeName): Promise { - const clickedNode: ElementFinder = element(by.cssContainingText('span', ' CLICKED NODE: ' + nodeName + '')); + async checkClickedNodeName(nodeName: string): Promise { + const clickedNode = element(by.cssContainingText('span', ' CLICKED NODE: ' + nodeName + '')); await BrowserVisibility.waitUntilElementIsVisible(clickedNode); } - async checkNodeIsNotDisplayed(nodeName): Promise { - const node: ElementFinder = element(by.id('' + nodeName + '-tree-child-node')); + async checkNodeIsNotDisplayed(nodeName: string): Promise { + const node = element(by.id('' + nodeName + '-tree-child-node')); await BrowserVisibility.waitUntilElementIsNotVisible(node); } @@ -68,7 +68,7 @@ export class TreeViewPage { await BrowserVisibility.waitUntilElementIsVisible(this.noNodeMessage); } - async addNodeId(nodeId): Promise { + async addNodeId(nodeId: string): Promise { await BrowserActions.click(this.nodeIdInput); await BrowserActions.clearSendKeys(this.nodeIdInput, nodeId); await this.nodeIdInput.sendKeys('a'); @@ -76,11 +76,11 @@ export class TreeViewPage { } async checkErrorMessageIsDisplayed(): Promise { - const clickedNode: ElementFinder = element(by.cssContainingText('span', 'An Error Occurred ')); + const clickedNode = element(by.cssContainingText('span', 'An Error Occurred ')); await BrowserVisibility.waitUntilElementIsVisible(clickedNode); } - async getTotalNodes() { + async getTotalNodes(): Promise { return this.nodesOnPage.count(); } } diff --git a/e2e/pages/adf/core/header.page.ts b/e2e/pages/adf/core/header.page.ts index d51314cf88..873c1d686c 100644 --- a/e2e/pages/adf/core/header.page.ts +++ b/e2e/pages/adf/core/header.page.ts @@ -15,23 +15,22 @@ * limitations under the License. */ -import { element, by, protractor, ElementFinder } from 'protractor'; - +import { element, by, protractor } from 'protractor'; import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; export class HeaderPage { - checkBox: ElementFinder = element(by.cssContainingText('.mat-checkbox-label', 'Show menu button')); - headerColor: ElementFinder = element(by.css('option[value="primary"]')); - titleInput: ElementFinder = element(by.css('input[name="title"]')); - iconInput: ElementFinder = element(by.css('input[placeholder="URL path"]')); - hexColorInput: ElementFinder = element(by.css('input[placeholder="hex color code"]')); - logoHyperlinkInput: ElementFinder = element(by.css('input[placeholder="Redirect URL"]')); - logoTooltipInput: ElementFinder = element(by.css('input[placeholder="Tooltip text"]')); - positionStart: ElementFinder = element.all(by.css('mat-radio-button[value="start"]')).first(); - positionEnd: ElementFinder = element.all(by.css('mat-radio-button[value="end"]')).first(); - sideBarPositionRight: ElementFinder = element(by.css('mat-sidenav.mat-drawer.mat-sidenav.mat-drawer-end')); - sideBarPositionLeft: ElementFinder = element(by.css('mat-sidenav.mat-drawer.mat-sidenav')); + checkBox = element(by.cssContainingText('.mat-checkbox-label', 'Show menu button')); + headerColor = element(by.css('option[value="primary"]')); + titleInput = element(by.css('input[name="title"]')); + iconInput = element(by.css('input[placeholder="URL path"]')); + hexColorInput = element(by.css('input[placeholder="hex color code"]')); + logoHyperlinkInput = element(by.css('input[placeholder="Redirect URL"]')); + logoTooltipInput = element(by.css('input[placeholder="Tooltip text"]')); + positionStart = element.all(by.css('mat-radio-button[value="start"]')).first(); + positionEnd = element.all(by.css('mat-radio-button[value="end"]')).first(); + sideBarPositionRight = element(by.css('mat-sidenav.mat-drawer.mat-sidenav.mat-drawer-end')); + sideBarPositionLeft = element(by.css('mat-sidenav.mat-drawer.mat-sidenav')); async checkShowMenuCheckBoxIsDisplayed(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.checkBox); @@ -50,32 +49,32 @@ export class HeaderPage { } async clickShowMenuButton(): Promise { - const checkBox: ElementFinder = element(by.css('mat-checkbox')); + const checkBox = element(by.css('mat-checkbox')); await BrowserActions.click(checkBox.get(0)); } - async changeHeaderColor(color): Promise { - const headerColor: ElementFinder = element(by.css('option[value="' + color + '"]')); + async changeHeaderColor(color: string): Promise { + const headerColor = element(by.css('option[value="' + color + '"]')); await BrowserActions.click(headerColor); } - async checkAppTitle(name): Promise { - const title: ElementFinder = element(by.cssContainingText('.adf-app-title', name)); + async checkAppTitle(name: string): Promise { + const title = element(by.cssContainingText('.adf-app-title', name)); await BrowserVisibility.waitUntilElementIsVisible(title); } - async addTitle(title): Promise { + async addTitle(title: string): Promise { await BrowserActions.click(this.titleInput); await BrowserActions.clearSendKeys(this.titleInput, title); await this.titleInput.sendKeys(protractor.Key.ENTER); } - async checkIconIsDisplayed(url): Promise { - const icon: ElementFinder = element(by.css('img[src="' + url + '"]')); + async checkIconIsDisplayed(url: string): Promise { + const icon = element(by.css('img[src="' + url + '"]')); await BrowserVisibility.waitUntilElementIsVisible(icon); } - async addIcon(url): Promise { + async addIcon(url: string): Promise { await BrowserActions.click(this.iconInput); await BrowserActions.clearSendKeys(this.iconInput, url); await this.iconInput.sendKeys(protractor.Key.ENTER); @@ -93,19 +92,19 @@ export class HeaderPage { await BrowserVisibility.waitUntilElementIsVisible(this.logoTooltipInput); } - async addHexCodeColor(hexCode): Promise { + async addHexCodeColor(hexCode: string): Promise { await BrowserActions.click(this.hexColorInput); await this.hexColorInput.sendKeys(hexCode); await this.hexColorInput.sendKeys(protractor.Key.ENTER); } - async addLogoHyperlink(hyperlink): Promise { + async addLogoHyperlink(hyperlink: string): Promise { await BrowserActions.click(this.logoHyperlinkInput); await this.logoHyperlinkInput.sendKeys(hyperlink); await this.logoHyperlinkInput.sendKeys(protractor.Key.ENTER); } - async addLogoTooltip(tooltip): Promise { + async addLogoTooltip(tooltip: string): Promise { await BrowserActions.click(this.logoTooltipInput); await this.logoTooltipInput.sendKeys(tooltip); await this.logoTooltipInput.sendKeys(protractor.Key.ENTER); diff --git a/e2e/pages/adf/core/infinite-pagination.page.ts b/e2e/pages/adf/core/infinite-pagination.page.ts index 0549aeeef2..c63589bf4d 100644 --- a/e2e/pages/adf/core/infinite-pagination.page.ts +++ b/e2e/pages/adf/core/infinite-pagination.page.ts @@ -23,7 +23,7 @@ export class InfinitePaginationPage { rootElement: ElementFinder; loadMoreButton; - constructor(rootElement: ElementFinder = element.all(by.css('adf-infinite-pagination')).first()) { + constructor(rootElement = element.all(by.css('adf-infinite-pagination')).first()) { this.rootElement = rootElement; this.loadMoreButton = this.rootElement.element(by.css('button[data-automation-id="adf-infinite-pagination-button"]')); } diff --git a/e2e/pages/adf/demo-shell/custom-sources.page.ts b/e2e/pages/adf/demo-shell/custom-sources.page.ts index 16312e82d4..61e5b12dce 100644 --- a/e2e/pages/adf/demo-shell/custom-sources.page.ts +++ b/e2e/pages/adf/demo-shell/custom-sources.page.ts @@ -16,7 +16,7 @@ */ import { BrowserActions, BrowserVisibility, DataTableComponentPage, DropdownPage } from '@alfresco/adf-testing'; -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; import { NavigationBarPage } from '../navigation-bar.page'; const source = { @@ -36,10 +36,10 @@ const column = { }; export class CustomSourcesPage { - dataTable: DataTableComponentPage = new DataTableComponentPage(); - navigationBarPage: NavigationBarPage = new NavigationBarPage(); + dataTable = new DataTableComponentPage(); + navigationBarPage = new NavigationBarPage(); - toolbar: ElementFinder = element(by.css('app-custom-sources .adf-toolbar-title')); + toolbar = element(by.css('app-custom-sources .adf-toolbar-title')); selectModeDropdown = new DropdownPage(element(by.css('mat-select[data-automation-id="custom-sources-select"]'))); async waitForToolbarToBeVisible(): Promise { @@ -63,15 +63,15 @@ export class CustomSourcesPage { await this.selectModeDropdown.selectDropdownOption(source.sharedLinks); } - checkRowIsDisplayed(rowName): Promise { + checkRowIsDisplayed(rowName: string): Promise { return this.dataTable.checkContentIsDisplayed('Name', rowName); } - checkRowIsNotDisplayed(rowName): Promise { + checkRowIsNotDisplayed(rowName: string): Promise { return this.dataTable.checkContentIsNotDisplayed('Name', rowName); } - async getStatusCell(rowName): Promise { + async getStatusCell(rowName: string): Promise { const cell = this.dataTable.getCellByRowContentAndColumn('Name', rowName, column.status); return BrowserActions.getText(cell); } diff --git a/e2e/pages/adf/demo-shell/data-table.page.ts b/e2e/pages/adf/demo-shell/data-table.page.ts index 4139645b03..441b17dde1 100644 --- a/e2e/pages/adf/demo-shell/data-table.page.ts +++ b/e2e/pages/adf/demo-shell/data-table.page.ts @@ -16,7 +16,7 @@ */ import { BrowserActions, BrowserVisibility, DataTableComponentPage, DropdownPage } from '@alfresco/adf-testing'; -import { browser, by, element, ElementArrayFinder, ElementFinder, protractor } from 'protractor'; +import { browser, by, element, ElementFinder, protractor } from 'protractor'; export class DataTablePage { @@ -33,17 +33,17 @@ export class DataTablePage { }; dataTable: DataTableComponentPage; - multiSelect: ElementFinder = element(by.css(`div[data-automation-id='multiselect'] label > div[class='mat-checkbox-inner-container']`)); - reset: ElementFinder = element(by.xpath(`//span[contains(text(),'Reset to default')]/..`)); - allSelectedRows: ElementArrayFinder = element.all(by.css(`adf-datatable-row[class*='is-selected']`)); - selectedRowNumber: ElementFinder = element(by.css(`adf-datatable-row[class*='is-selected'] div[data-automation-id*='text_']`)); - selectAll: ElementFinder = element(by.css(`div[class*='header'] label`)); - addRowElement: ElementFinder = element(by.xpath(`//span[contains(text(),'Add row')]/..`)); - replaceRowsElement: ElementFinder = element(by.xpath(`//span[contains(text(),'Replace rows')]/..`)); - replaceColumnsElement: ElementFinder = element(by.xpath(`//span[contains(text(),'Replace columns')]/..`)); - createdOnColumn: ElementFinder = element(by.css(`div[data-automation-id='auto_id_createdOn']`)); - idColumnHeader: ElementFinder = element(by.css(`div[data-automation-id='auto_id_id']`)); - pasteClipboardInput: ElementFinder = element(by.css(`input[data-automation-id='paste clipboard input']`)); + multiSelect = element(by.css(`div[data-automation-id='multiselect'] label > div[class='mat-checkbox-inner-container']`)); + reset = element(by.xpath(`//span[contains(text(),'Reset to default')]/..`)); + allSelectedRows = element.all(by.css(`adf-datatable-row[class*='is-selected']`)); + selectedRowNumber = element(by.css(`adf-datatable-row[class*='is-selected'] div[data-automation-id*='text_']`)); + selectAll = element(by.css(`div[class*='header'] label`)); + addRowElement = element(by.xpath(`//span[contains(text(),'Add row')]/..`)); + replaceRowsElement = element(by.xpath(`//span[contains(text(),'Replace rows')]/..`)); + replaceColumnsElement = element(by.xpath(`//span[contains(text(),'Replace columns')]/..`)); + createdOnColumn = element(by.css(`div[data-automation-id='auto_id_createdOn']`)); + idColumnHeader = element(by.css(`div[data-automation-id='auto_id_id']`)); + pasteClipboardInput = element(by.css(`input[data-automation-id='paste clipboard input']`)); selectModeDropdown = new DropdownPage(element(by.css(`mat-select[data-automation-id='datatable-selection-mode']`))); @@ -55,8 +55,8 @@ export class DataTablePage { } } - async insertFilter(filterText): Promise { - const inputFilter: ElementFinder = element(by.css(`#adf-datatable-filter-input`)); + async insertFilter(filterText: string): Promise { + const inputFilter = element(by.css(`#adf-datatable-filter-input`)); await BrowserActions.clearSendKeys(inputFilter, filterText); } @@ -64,7 +64,7 @@ export class DataTablePage { await BrowserActions.click(this.addRowElement); } - async replaceRows(id): Promise { + async replaceRows(id: string): Promise { const rowID = this.dataTable.getCellElementByValue(this.columns.id, id); await BrowserVisibility.waitUntilElementIsVisible(rowID); await BrowserActions.click(this.replaceRowsElement); @@ -128,7 +128,7 @@ export class DataTablePage { await browser.actions().sendKeys(protractor.Key.NULL).perform(); } - async selectSelectionMode(selectionMode): Promise { + async selectSelectionMode(selectionMode: string): Promise { await this.selectModeDropdown.selectDropdownOption(selectionMode); } @@ -174,11 +174,11 @@ export class DataTablePage { await BrowserActions.click(this.dataTable.getCellByRowNumberAndColumnName(rowNumber - 1, this.columns.json)); } - async clickOnNameColumn(name): Promise { + async clickOnNameColumn(name: string): Promise { await this.dataTable.clickColumn(this.columns.name, name); } - async clickOnCreatedByColumn(name): Promise { + async clickOnCreatedByColumn(name: string): Promise { await this.dataTable.clickColumn(this.columns.createdBy, name); } diff --git a/e2e/pages/adf/demo-shell/login.page.ts b/e2e/pages/adf/demo-shell/login.page.ts index be08f74d74..b5eaa56639 100644 --- a/e2e/pages/adf/demo-shell/login.page.ts +++ b/e2e/pages/adf/demo-shell/login.page.ts @@ -15,41 +15,41 @@ * limitations under the License. */ -import { browser, by, element, ElementFinder } from 'protractor'; +import { browser, by, element } from 'protractor'; import { TogglePage, BrowserActions, BrowserVisibility, LoginSSOPage } from '@alfresco/adf-testing'; export class LoginPage { - loginURL: string = browser.baseUrl + '/login'; + loginURL = browser.baseUrl + '/login'; - loginSSOPage: LoginSSOPage = new LoginSSOPage(); + loginSSOPage = new LoginSSOPage(); - togglePage: TogglePage = new TogglePage(); - txtUsername: ElementFinder = element(by.css('input[id="username"]')); - txtPassword: ElementFinder = element(by.css('input[id="password"]')); - logoImg: ElementFinder = element(by.css('img[id="adf-login-img-logo"]')); - successRouteTxt: ElementFinder = element(by.css('input[data-automation-id="adf-success-route"]')); - logoTxt: ElementFinder = element(by.css('input[data-automation-id="adf-url-logo"]')); - usernameTooltip: ElementFinder = element(by.css('span[data-automation-id="username-error"]')); - passwordTooltip: ElementFinder = element(by.css('span[data-automation-id="password-required"]')); - loginTooltip: ElementFinder = element(by.css('span[class="adf-login-error-message"]')); - usernameInactive: ElementFinder = element(by.css('input[id="username"][aria-invalid="false"]')); - passwordInactive: ElementFinder = element(by.css('input[id="password"][aria-invalid="false"]')); - adfLogo: ElementFinder = element(by.css('img[class="adf-img-logo ng-star-inserted"]')); - usernameHighlighted: ElementFinder = element(by.css('input[id="username"][aria-invalid="true"]')); - passwordHighlighted: ElementFinder = element(by.css('input[id="password"][aria-invalid="true"]')); - signInButton: ElementFinder = element(by.id('login-button')); - showPasswordElement: ElementFinder = element(by.css('button[data-automation-id="show_password"]')); - hidePasswordElement: ElementFinder = element(by.css('button[data-automation-id="hide_password"]')); - rememberMe: ElementFinder = element(by.css('mat-checkbox[id="adf-login-remember"]')); - needHelp: ElementFinder = element(by.css('div[id="adf-login-action-left"]')); - register: ElementFinder = element(by.css('div[id="adf-login-action-right"]')); - footerSwitch: ElementFinder = element(by.id('switch4')); - rememberMeSwitch: ElementFinder = element(by.id('adf-toggle-show-rememberme')); - successRouteSwitch: ElementFinder = element(by.id('adf-toggle-show-successRoute')); - logoSwitch: ElementFinder = element(by.id('adf-toggle-logo')); - header: ElementFinder = element(by.id('adf-header')); - settingsIcon: ElementFinder = element(by.cssContainingText('a[data-automation-id="settings"] mat-icon', 'settings')); + togglePage = new TogglePage(); + txtUsername = element(by.css('input[id="username"]')); + txtPassword = element(by.css('input[id="password"]')); + logoImg = element(by.css('img[id="adf-login-img-logo"]')); + successRouteTxt = element(by.css('input[data-automation-id="adf-success-route"]')); + logoTxt = element(by.css('input[data-automation-id="adf-url-logo"]')); + usernameTooltip = element(by.css('span[data-automation-id="username-error"]')); + passwordTooltip = element(by.css('span[data-automation-id="password-required"]')); + loginTooltip = element(by.css('span[class="adf-login-error-message"]')); + usernameInactive = element(by.css('input[id="username"][aria-invalid="false"]')); + passwordInactive = element(by.css('input[id="password"][aria-invalid="false"]')); + adfLogo = element(by.css('img[class="adf-img-logo ng-star-inserted"]')); + usernameHighlighted = element(by.css('input[id="username"][aria-invalid="true"]')); + passwordHighlighted = element(by.css('input[id="password"][aria-invalid="true"]')); + signInButton = element(by.id('login-button')); + showPasswordElement = element(by.css('button[data-automation-id="show_password"]')); + hidePasswordElement = element(by.css('button[data-automation-id="hide_password"]')); + rememberMe = element(by.css('mat-checkbox[id="adf-login-remember"]')); + needHelp = element(by.css('div[id="adf-login-action-left"]')); + register = element(by.css('div[id="adf-login-action-right"]')); + footerSwitch = element(by.id('switch4')); + rememberMeSwitch = element(by.id('adf-toggle-show-rememberme')); + successRouteSwitch = element(by.id('adf-toggle-show-successRoute')); + logoSwitch = element(by.id('adf-toggle-logo')); + header = element(by.id('adf-header')); + settingsIcon = element(by.cssContainingText('a[data-automation-id="settings"] mat-icon', 'settings')); sidenavLayout = element(by.css(`[data-automation-id="sidenav-layout"]`)); async goToLoginPage(): Promise { @@ -62,11 +62,11 @@ export class LoginPage { await BrowserVisibility.waitUntilElementIsVisible(this.txtPassword); } - async enterUsername(username): Promise { + async enterUsername(username: string): Promise { await BrowserActions.clearSendKeys(this.txtUsername, username); } - async enterPassword(password): Promise { + async enterPassword(password: string): Promise { await BrowserActions.clearSendKeys(this.txtPassword, password); } @@ -195,11 +195,11 @@ export class LoginPage { await this.togglePage.enableToggle(this.logoSwitch); } - async enterSuccessRoute(route): Promise { + async enterSuccessRoute(route: string): Promise { await BrowserActions.clearSendKeys(this.successRouteTxt, route); } - async enterLogo(logo): Promise { + async enterLogo(logo: string): Promise { await BrowserActions.clearSendKeys(this.logoTxt, logo); } diff --git a/e2e/pages/adf/demo-shell/monaco-extension.page.ts b/e2e/pages/adf/demo-shell/monaco-extension.page.ts index d1a54c87ac..fba63e04b2 100644 --- a/e2e/pages/adf/demo-shell/monaco-extension.page.ts +++ b/e2e/pages/adf/demo-shell/monaco-extension.page.ts @@ -15,12 +15,12 @@ * limitations under the License. */ -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; import { BrowserVisibility } from '@alfresco/adf-testing'; export class MonacoExtensionPage { - monacoPlugin: ElementFinder = element(by.cssContainingText('mat-row > mat-cell', 'monaco plugin')); + monacoPlugin = element(by.cssContainingText('mat-row > mat-cell', 'monaco plugin')); async checkMonacoPluginIsDisplayed(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.monacoPlugin); diff --git a/e2e/pages/adf/demo-shell/notification.page.ts b/e2e/pages/adf/demo-shell/notification.page.ts index 9d72a6b2a3..b25cc22317 100644 --- a/e2e/pages/adf/demo-shell/notification.page.ts +++ b/e2e/pages/adf/demo-shell/notification.page.ts @@ -15,20 +15,20 @@ * limitations under the License. */ -import { element, by, browser, ElementFinder } from 'protractor'; +import { element, by, browser } from 'protractor'; import { BrowserVisibility, BrowserActions, DropdownPage, SnackbarPage } from '@alfresco/adf-testing'; export class NotificationDemoPage { snackbarPage = new SnackbarPage(); - messageField: ElementFinder = element(by.css('input[data-automation-id="notification-message"]')); - durationField: ElementFinder = element(by.css('input[data-automation-id="notification-duration"]')); - actionToggle: ElementFinder = element(by.css('mat-slide-toggle[data-automation-id="notification-action-toggle"]')); - notificationSnackBar: ElementFinder = element.all(by.css('simple-snack-bar')).first(); - actionOutput: ElementFinder = element(by.css('div[data-automation-id="notification-action-output"]')); - notificationsPage: ElementFinder = element(by.css('.app-sidenav-link[data-automation-id="Notifications"]')); - notificationConfig: ElementFinder = element(by.css('p[data-automation-id="notification-custom-object"]')); + messageField = element(by.css('input[data-automation-id="notification-message"]')); + durationField = element(by.css('input[data-automation-id="notification-duration"]')); + actionToggle = element(by.css('mat-slide-toggle[data-automation-id="notification-action-toggle"]')); + notificationSnackBar = element.all(by.css('simple-snack-bar')).first(); + actionOutput = element(by.css('div[data-automation-id="notification-action-output"]')); + notificationsPage = element(by.css('.app-sidenav-link[data-automation-id="Notifications"]')); + notificationConfig = element(by.css('p[data-automation-id="notification-custom-object"]')); horizontalPositionDropdown = new DropdownPage(element(by.css('mat-select[data-automation-id="notification-horizontal-position"]'))); verticalPositionDropdown = new DropdownPage(element(by.css('mat-select[data-automation-id="notification-vertical-position"]'))); @@ -58,28 +58,28 @@ export class NotificationDemoPage { await this.snackbarPage.waitForSnackBarToClose(); } - async enterMessageField(text): Promise { + async enterMessageField(text: string): Promise { await BrowserActions.clearSendKeys(this.messageField, text); } - async enterDurationField(time): Promise { - await BrowserActions.clearSendKeys(this.durationField, time); + async enterDurationField(time: number): Promise { + await BrowserActions.clearSendKeys(this.durationField, time.toString()); } - async selectHorizontalPosition(selectItem): Promise { + async selectHorizontalPosition(selectItem: string): Promise { await this.horizontalPositionDropdown.selectDropdownOption(selectItem); } - async selectVerticalPosition(selectItem): Promise { + async selectVerticalPosition(selectItem: string): Promise { await this.verticalPositionDropdown.selectDropdownOption(selectItem); } - async selectDirection(selectItem): Promise { + async selectDirection(selectItem: string): Promise { await this.directionDropdown.selectDropdownOption(selectItem); } async clickNotificationButton(): Promise { - const button: ElementFinder = element(by.css('button[data-automation-id="notification-custom-config-button"]')); + const button = element(by.css('button[data-automation-id="notification-custom-config-button"]')); await BrowserActions.click(button); } diff --git a/e2e/pages/adf/demo-shell/process-services/form-demo.page.ts b/e2e/pages/adf/demo-shell/process-services/form-demo.page.ts index 363a56507f..37320fce71 100644 --- a/e2e/pages/adf/demo-shell/process-services/form-demo.page.ts +++ b/e2e/pages/adf/demo-shell/process-services/form-demo.page.ts @@ -16,12 +16,12 @@ */ import { BrowserActions, BrowserVisibility, ConfigEditorPage } from '@alfresco/adf-testing'; -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; export class FormDemoPage { - formCloudEditor: ElementFinder = element.all(by.css('.mat-tab-list .mat-tab-label')).get(1); - formCloudRender: ElementFinder = element.all(by.css('.mat-tab-list .mat-tab-label')).get(0); + formCloudEditor = element.all(by.css('.mat-tab-list .mat-tab-label')).get(1); + formCloudRender = element.all(by.css('.mat-tab-list .mat-tab-label')).get(0); configEditorPage = new ConfigEditorPage(); @@ -33,7 +33,7 @@ export class FormDemoPage { await BrowserActions.click(this.formCloudRender); } - async setConfigToEditor(text): Promise { + async setConfigToEditor(text: string): Promise { const configEditor = element(by.id('adf-form-config-editor')); const form = element(by.css('adf-form')); await this.goToEditor(); diff --git a/e2e/pages/adf/demo-shell/process-services/people-group-cloud-component.page.ts b/e2e/pages/adf/demo-shell/process-services/people-group-cloud-component.page.ts index ad279f197e..18e661ca9a 100644 --- a/e2e/pages/adf/demo-shell/process-services/people-group-cloud-component.page.ts +++ b/e2e/pages/adf/demo-shell/process-services/people-group-cloud-component.page.ts @@ -15,30 +15,30 @@ * limitations under the License. */ -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; export class PeopleGroupCloudComponentPage { - peopleCloudSingleSelectionChecked: ElementFinder = element(by.css('mat-radio-button[data-automation-id="app-people-single-mode"][class*="mat-radio-checked"]')); - peopleCloudMultipleSelectionChecked: ElementFinder = element(by.css('mat-radio-button[data-automation-id="app-people-multiple-mode"][class*="mat-radio-checked"]')); - peopleCloudSingleSelection: ElementFinder = element(by.css('mat-radio-button[data-automation-id="app-people-single-mode"]')); - peopleCloudMultipleSelection: ElementFinder = element(by.css('mat-radio-button[data-automation-id="app-people-multiple-mode"]')); - peopleCloudFilterRole: ElementFinder = element(by.css('mat-radio-button[data-automation-id="app-people-filter-role"]')); - groupCloudSingleSelection: ElementFinder = element(by.css('mat-radio-button[data-automation-id="app-group-single-mode"]')); - groupCloudMultipleSelection: ElementFinder = element(by.css('mat-radio-button[data-automation-id="app-group-multiple-mode"]')); - groupCloudFilterRole: ElementFinder = element(by.css('mat-radio-button[data-automation-id="app-group-filter-role"]')); - peopleRoleInput: ElementFinder = element(by.css('input[data-automation-id="app-people-roles-input"]')); - peopleAppInput: ElementFinder = element(by.css('input[data-automation-id="app-people-app-input"]')); - peoplePreselect: ElementFinder = element(by.css('input[data-automation-id="app-people-preselect-input"]')); - groupRoleInput: ElementFinder = element(by.css('input[data-automation-id="app-group-roles-input"]')); - groupAppInput: ElementFinder = element(by.css('input[data-automation-id="app-group-app-input"]')); - peopleCloudComponentTitle: ElementFinder = element(by.cssContainingText('mat-card-title', 'People Cloud Component')); - groupCloudComponentTitle: ElementFinder = element(by.cssContainingText('mat-card-title', 'Groups Cloud Component')); - preselectValidation: ElementFinder = element.all(by.css('mat-checkbox.app-preselect-value')).first(); - preselectValidationStatus: ElementFinder = element.all(by.css('mat-checkbox.app-preselect-value label input')).first(); - peopleFilterByAppName: ElementFinder = element(by.css('.app-people-control-options mat-radio-button[value="appName"]')); - groupFilterByAppName: ElementFinder = element(by.css('.app-groups-control-options mat-radio-button[value="appName"]')); + peopleCloudSingleSelectionChecked = element(by.css('mat-radio-button[data-automation-id="app-people-single-mode"][class*="mat-radio-checked"]')); + peopleCloudMultipleSelectionChecked = element(by.css('mat-radio-button[data-automation-id="app-people-multiple-mode"][class*="mat-radio-checked"]')); + peopleCloudSingleSelection = element(by.css('mat-radio-button[data-automation-id="app-people-single-mode"]')); + peopleCloudMultipleSelection = element(by.css('mat-radio-button[data-automation-id="app-people-multiple-mode"]')); + peopleCloudFilterRole = element(by.css('mat-radio-button[data-automation-id="app-people-filter-role"]')); + groupCloudSingleSelection = element(by.css('mat-radio-button[data-automation-id="app-group-single-mode"]')); + groupCloudMultipleSelection = element(by.css('mat-radio-button[data-automation-id="app-group-multiple-mode"]')); + groupCloudFilterRole = element(by.css('mat-radio-button[data-automation-id="app-group-filter-role"]')); + peopleRoleInput = element(by.css('input[data-automation-id="app-people-roles-input"]')); + peopleAppInput = element(by.css('input[data-automation-id="app-people-app-input"]')); + peoplePreselect = element(by.css('input[data-automation-id="app-people-preselect-input"]')); + groupRoleInput = element(by.css('input[data-automation-id="app-group-roles-input"]')); + groupAppInput = element(by.css('input[data-automation-id="app-group-app-input"]')); + peopleCloudComponentTitle = element(by.cssContainingText('mat-card-title', 'People Cloud Component')); + groupCloudComponentTitle = element(by.cssContainingText('mat-card-title', 'Groups Cloud Component')); + preselectValidation = element.all(by.css('mat-checkbox.app-preselect-value')).first(); + preselectValidationStatus = element.all(by.css('mat-checkbox.app-preselect-value label input')).first(); + peopleFilterByAppName = element(by.css('.app-people-control-options mat-radio-button[value="appName"]')); + groupFilterByAppName = element(by.css('.app-groups-control-options mat-radio-button[value="appName"]')); async checkPeopleCloudComponentTitleIsDisplayed(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.peopleCloudComponentTitle); @@ -76,11 +76,11 @@ export class PeopleGroupCloudComponentPage { await BrowserActions.click(this.groupCloudFilterRole); } - async enterPeopleRoles(roles): Promise { + async enterPeopleRoles(roles: string): Promise { await BrowserActions.clearSendKeys(this.peopleRoleInput, roles); } - async enterPeoplePreselect(preselect): Promise { + async enterPeoplePreselect(preselect: string): Promise { await BrowserActions.clearSendKeys(this.peoplePreselect, preselect); } @@ -117,11 +117,11 @@ export class PeopleGroupCloudComponentPage { await BrowserActions.click(this.groupFilterByAppName); } - async enterPeopleAppName(appName): Promise { + async enterPeopleAppName(appName: string): Promise { await BrowserActions.clearSendKeys(this.peopleAppInput, appName); } - async enterGroupAppName(appName): Promise { + async enterGroupAppName(appName: string): Promise { await BrowserActions.clearSendKeys(this.groupAppInput, appName); } diff --git a/e2e/pages/adf/demo-shell/process-services/process-cloud-demo.page.ts b/e2e/pages/adf/demo-shell/process-services/process-cloud-demo.page.ts index c98df69757..400f43f756 100644 --- a/e2e/pages/adf/demo-shell/process-services/process-cloud-demo.page.ts +++ b/e2e/pages/adf/demo-shell/process-services/process-cloud-demo.page.ts @@ -16,12 +16,12 @@ */ import { BrowserActions, BrowserVisibility, EditProcessFilterCloudComponentPage, ProcessFiltersCloudComponentPage, ProcessListCloudComponentPage } from '@alfresco/adf-testing'; -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; export class ProcessCloudDemoPage { - createButton: ElementFinder = element(by.css('button[data-automation-id="create-button"')); - newProcessButton: ElementFinder = element(by.css('button[data-automation-id="btn-start-process"]')); + createButton = element(by.css('button[data-automation-id="create-button"')); + newProcessButton = element(by.css('button[data-automation-id="btn-start-process"]')); processListCloud = new ProcessListCloudComponentPage(); editProcessFilterCloud = new EditProcessFilterCloudComponentPage(); diff --git a/e2e/pages/adf/demo-shell/process-services/process-list-demo.page.ts b/e2e/pages/adf/demo-shell/process-services/process-list-demo.page.ts index ef3d7765b8..02ac806c52 100644 --- a/e2e/pages/adf/demo-shell/process-services/process-list-demo.page.ts +++ b/e2e/pages/adf/demo-shell/process-services/process-list-demo.page.ts @@ -16,20 +16,20 @@ */ import { BrowserActions, BrowserVisibility, DataTableComponentPage, DropdownPage } from '@alfresco/adf-testing'; -import { by, element, ElementFinder, protractor } from 'protractor'; +import { by, element, protractor } from 'protractor'; export class ProcessListDemoPage { - appIdInput: ElementFinder = element(by.css('input[data-automation-id="app-id"]')); - resetButton: ElementFinder = element(by.cssContainingText('button span', 'Reset')); - emptyProcessContent: ElementFinder = element(by.css('div[class="adf-empty-content"]')); - processDefinitionInput: ElementFinder = element(by.css('input[data-automation-id="process-definition-id"]')); - processInstanceInput: ElementFinder = element(by.css('input[data-automation-id="process-instance-id"]')); + appIdInput = element(by.css('input[data-automation-id="app-id"]')); + resetButton = element(by.cssContainingText('button span', 'Reset')); + emptyProcessContent = element(by.css('div[class="adf-empty-content"]')); + processDefinitionInput = element(by.css('input[data-automation-id="process-definition-id"]')); + processInstanceInput = element(by.css('input[data-automation-id="process-instance-id"]')); stateDropdown = new DropdownPage(element(by.css('mat-select[data-automation-id="state"'))); sortDropdown = new DropdownPage(element(by.css('mat-select[data-automation-id="sort"'))); - dataTable: DataTableComponentPage = new DataTableComponentPage(); + dataTable = new DataTableComponentPage(); getDisplayedProcessesNames(): Promise { return this.dataTable.getAllRowsColumnValues('Name'); @@ -55,7 +55,7 @@ export class ProcessListDemoPage { } async checkErrorMessageIsDisplayed(error): Promise { - const errorMessage: ElementFinder = element(by.cssContainingText('mat-error', error)); + const errorMessage = element(by.cssContainingText('mat-error', error)); await BrowserVisibility.waitUntilElementIsVisible(errorMessage); } @@ -63,11 +63,11 @@ export class ProcessListDemoPage { await BrowserVisibility.waitUntilElementIsVisible(this.emptyProcessContent); } - async checkProcessIsNotDisplayed(processName): Promise { + async checkProcessIsNotDisplayed(processName: string): Promise { await this.dataTable.checkContentIsNotDisplayed('Name', processName); } - async checkProcessIsDisplayed(processName): Promise { + async checkProcessIsDisplayed(processName: string): Promise { await this.dataTable.checkContentIsDisplayed('Name', processName); } diff --git a/e2e/pages/adf/demo-shell/process-services/task-filters-demo.page.ts b/e2e/pages/adf/demo-shell/process-services/task-filters-demo.page.ts index dbf87b355c..d12abbe2d0 100644 --- a/e2e/pages/adf/demo-shell/process-services/task-filters-demo.page.ts +++ b/e2e/pages/adf/demo-shell/process-services/task-filters-demo.page.ts @@ -16,16 +16,16 @@ */ import { BrowserActions } from '@alfresco/adf-testing'; -import { element, by, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; import { TaskFiltersPage } from '../../process-services/task-filters.page'; export class TaskFiltersDemoPage { - myTasks: ElementFinder = element(by.css('button[data-automation-id="My Tasks_filter"]')); - queuedTask: ElementFinder = element(by.css('button[data-automation-id="Queued Tasks_filter"]')); - completedTask: ElementFinder = element(by.css('button[data-automation-id="Completed Tasks_filter"]')); - involvedTask: ElementFinder = element(by.css('button[data-automation-id="Involved Tasks_filter"]')); - activeFilter: ElementFinder = element(by.css('adf-task-filters .adf-active')); + myTasks = element(by.css('button[data-automation-id="My Tasks_filter"]')); + queuedTask = element(by.css('button[data-automation-id="Queued Tasks_filter"]')); + completedTask = element(by.css('button[data-automation-id="Completed Tasks_filter"]')); + involvedTask = element(by.css('button[data-automation-id="Involved Tasks_filter"]')); + activeFilter = element(by.css('adf-task-filters .adf-active')); myTasksFilter(): TaskFiltersPage { return new TaskFiltersPage(this.myTasks); @@ -43,7 +43,7 @@ export class TaskFiltersDemoPage { return new TaskFiltersPage(this.involvedTask); } - customTaskFilter(filterName): TaskFiltersPage { + customTaskFilter(filterName: string): TaskFiltersPage { return new TaskFiltersPage(element(by.css(`button[data-automation-id="${filterName}_filter"]`))); } diff --git a/e2e/pages/adf/demo-shell/process-services/task-list-demo.page.ts b/e2e/pages/adf/demo-shell/process-services/task-list-demo.page.ts index 09e400402a..d20ff7954f 100644 --- a/e2e/pages/adf/demo-shell/process-services/task-list-demo.page.ts +++ b/e2e/pages/adf/demo-shell/process-services/task-list-demo.page.ts @@ -16,26 +16,26 @@ */ import { BrowserActions, BrowserVisibility, DropdownPage, PaginationPage } from '@alfresco/adf-testing'; -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; import { TasksListPage } from '../../process-services/tasks-list.page'; export class TaskListDemoPage { taskListPage: TasksListPage = new TasksListPage(); - appId: ElementFinder = element(by.css("input[data-automation-id='appId input']")); - itemsPerPage: ElementFinder = element(by.css("input[data-automation-id='items per page']")); - itemsPerPageForm: ElementFinder = element(by.css("mat-form-field[data-automation-id='items per page']")); - processDefinitionId: ElementFinder = element(by.css("input[data-automation-id='process definition id']")); - processInstanceId: ElementFinder = element(by.css("input[data-automation-id='process instance id']")); - page: ElementFinder = element(by.css("input[data-automation-id='page']")); - pageForm: ElementFinder = element(by.css("mat-form-field[data-automation-id='page']")); - taskName: ElementFinder = element(by.css("input[data-automation-id='task name']")); - resetButton: ElementFinder = element(by.css("div[class='app-reset-button'] button")); - dueBefore: ElementFinder = element(by.css("input[data-automation-id='due before']")); - dueAfter: ElementFinder = element(by.css("input[data-automation-id='due after']")); - taskId: ElementFinder = element(by.css("input[data-automation-id='task id']")); + appId = element(by.css("input[data-automation-id='appId input']")); + itemsPerPage = element(by.css("input[data-automation-id='items per page']")); + itemsPerPageForm = element(by.css("mat-form-field[data-automation-id='items per page']")); + processDefinitionId = element(by.css("input[data-automation-id='process definition id']")); + processInstanceId = element(by.css("input[data-automation-id='process instance id']")); + page = element(by.css("input[data-automation-id='page']")); + pageForm = element(by.css("mat-form-field[data-automation-id='page']")); + taskName = element(by.css("input[data-automation-id='task name']")); + resetButton = element(by.css("div[class='app-reset-button'] button")); + dueBefore = element(by.css("input[data-automation-id='due before']")); + dueAfter = element(by.css("input[data-automation-id='due after']")); + taskId = element(by.css("input[data-automation-id='task id']")); - stateDropDownArrow: ElementFinder = element(by.css("mat-form-field[data-automation-id='state']")); + stateDropDownArrow = element(by.css("mat-form-field[data-automation-id='state']")); stateDropdown = new DropdownPage(this.stateDropDownArrow); taskList(): TasksListPage { @@ -46,7 +46,7 @@ export class TaskListDemoPage { return new PaginationPage(); } - async typeAppId(input): Promise { + async typeAppId(input: string): Promise { await BrowserActions.clearSendKeys(this.appId, input); } @@ -59,7 +59,7 @@ export class TaskListDemoPage { return this.appId.getAttribute('value'); } - async typeTaskId(input): Promise { + async typeTaskId(input: string): Promise { await BrowserActions.clearSendKeys(this.taskId, input); } @@ -68,7 +68,7 @@ export class TaskListDemoPage { return this.taskId.getAttribute('value'); } - async typeTaskName(input): Promise { + async typeTaskName(input: string): Promise { await BrowserActions.clearSendKeys(this.taskName, input); } @@ -77,11 +77,11 @@ export class TaskListDemoPage { return this.taskName.getAttribute('value'); } - async typeItemsPerPage(input): Promise { - await BrowserActions.clearSendKeys(this.itemsPerPage, input); + async typeItemsPerPage(input: number): Promise { + await BrowserActions.clearSendKeys(this.itemsPerPage, input.toString()); } - async typeProcessDefinitionId(input): Promise { + async typeProcessDefinitionId(input: string): Promise { await BrowserActions.clearSendKeys(this.processDefinitionId, input); } @@ -90,7 +90,7 @@ export class TaskListDemoPage { return this.processInstanceId.getAttribute('value'); } - async typeProcessInstanceId(input): Promise { + async typeProcessInstanceId(input: string): Promise { await BrowserActions.clearSendKeys(this.processInstanceId, input); } @@ -105,8 +105,8 @@ export class TaskListDemoPage { return BrowserActions.getText(errorMessage); } - async typePage(input): Promise { - await BrowserActions.clearSendKeys(this.page, input); + async typePage(input: number): Promise { + await BrowserActions.clearSendKeys(this.page, input.toString()); } async getPage(): Promise { @@ -120,11 +120,11 @@ export class TaskListDemoPage { return BrowserActions.getText(errorMessage); } - async typeDueAfter(input): Promise { + async typeDueAfter(input: string): Promise { await BrowserActions.clearSendKeys(this.dueAfter, input); } - async typeDueBefore(input): Promise { + async typeDueBefore(input: string): Promise { await BrowserActions.clearSendKeys(this.dueBefore, input); } @@ -138,7 +138,7 @@ export class TaskListDemoPage { await BrowserActions.click(this.resetButton); } - async selectState(state): Promise { + async selectState(state: string): Promise { await this.stateDropdown.selectDropdownOption(state); } diff --git a/e2e/pages/adf/demo-shell/process-services/tasks-cloud-demo.page.ts b/e2e/pages/adf/demo-shell/process-services/tasks-cloud-demo.page.ts index 32483d3433..3dc5b0e8c1 100644 --- a/e2e/pages/adf/demo-shell/process-services/tasks-cloud-demo.page.ts +++ b/e2e/pages/adf/demo-shell/process-services/tasks-cloud-demo.page.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { element, by, browser, ElementFinder, ElementArrayFinder } from 'protractor'; +import { element, by, browser } from 'protractor'; import { TogglePage, TaskFiltersCloudComponentPage, @@ -27,31 +27,31 @@ import { export class TasksCloudDemoPage { - createButton: ElementFinder = element(by.css('button[data-automation-id="create-button"')); - newTaskButton: ElementFinder = element(by.css('button[data-automation-id="btn-start-task"]')); - settingsButton: ElementFinder = element.all(by.cssContainingText('div[class*="mat-tab-label"] .mat-tab-labels div', 'Settings')).first(); - appButton: ElementFinder = element.all(by.cssContainingText('div[class*="mat-tab-label"] .mat-tab-labels div', 'App')).first(); - displayTaskDetailsToggle: ElementFinder = element(by.css('mat-slide-toggle[data-automation-id="taskDetailsRedirection"]')); - displayProcessDetailsToggle: ElementFinder = element(by.css('mat-slide-toggle[data-automation-id="processDetailsRedirection"]')); - actionMenuToggle: ElementFinder = element(by.css('mat-slide-toggle[data-automation-id="actionmenu"]')); - contextMenuToggle: ElementFinder = element(by.css('mat-slide-toggle[data-automation-id="contextmenu"]')); - multiSelectionToggle: ElementFinder = element(by.css('mat-slide-toggle[data-automation-id="multiSelection"]')); - testingModeToggle: ElementFinder = element(by.css('mat-slide-toggle[data-automation-id="testingMode"]')); - selectedRows: ElementFinder = element(by.xpath("//div[text()=' Selected Rows: ']")); - noOfSelectedRows: ElementArrayFinder = element.all(by.xpath("//div[text()=' Selected Rows: ']//li")); - addActionTitle: ElementFinder = element(by.cssContainingText('.mat-card-title', 'Add Action')); - keyInputField: ElementFinder = element(by.css('input[placeholder="Key"]')); - titleInputField: ElementFinder = element(by.css('input[placeholder="Title"]')); - iconInputField: ElementFinder = element(by.css('input[placeholder="Icon"]')); - addActionButton: ElementFinder = element(by.cssContainingText('button span', 'Add')); - disableCheckbox: ElementFinder = element(by.css(`mat-checkbox[formcontrolname='disabled']`)); - visibleCheckbox: ElementFinder = element(by.css(`mat-checkbox[formcontrolname='visible']`)); + createButton = element(by.css('button[data-automation-id="create-button"')); + newTaskButton = element(by.css('button[data-automation-id="btn-start-task"]')); + settingsButton = element.all(by.cssContainingText('div[class*="mat-tab-label"] .mat-tab-labels div', 'Settings')).first(); + appButton = element.all(by.cssContainingText('div[class*="mat-tab-label"] .mat-tab-labels div', 'App')).first(); + displayTaskDetailsToggle = element(by.css('mat-slide-toggle[data-automation-id="taskDetailsRedirection"]')); + displayProcessDetailsToggle = element(by.css('mat-slide-toggle[data-automation-id="processDetailsRedirection"]')); + actionMenuToggle = element(by.css('mat-slide-toggle[data-automation-id="actionmenu"]')); + contextMenuToggle = element(by.css('mat-slide-toggle[data-automation-id="contextmenu"]')); + multiSelectionToggle = element(by.css('mat-slide-toggle[data-automation-id="multiSelection"]')); + testingModeToggle = element(by.css('mat-slide-toggle[data-automation-id="testingMode"]')); + selectedRows = element(by.xpath("//div[text()=' Selected Rows: ']")); + noOfSelectedRows = element.all(by.xpath("//div[text()=' Selected Rows: ']//li")); + addActionTitle = element(by.cssContainingText('.mat-card-title', 'Add Action')); + keyInputField = element(by.css('input[placeholder="Key"]')); + titleInputField = element(by.css('input[placeholder="Title"]')); + iconInputField = element(by.css('input[placeholder="Icon"]')); + addActionButton = element(by.cssContainingText('button span', 'Add')); + disableCheckbox = element(by.css(`mat-checkbox[formcontrolname='disabled']`)); + visibleCheckbox = element(by.css(`mat-checkbox[formcontrolname='visible']`)); modeDropdown = new DropdownPage(element(by.css('mat-form-field[data-automation-id="selectionMode"]'))); - togglePage: TogglePage = new TogglePage(); + togglePage = new TogglePage(); - editTaskFilterCloud: EditTaskFilterCloudComponentPage = new EditTaskFilterCloudComponentPage(); + editTaskFilterCloud = new EditTaskFilterCloudComponentPage(); taskFilterCloudComponent = new TaskFiltersCloudComponentPage(); @@ -103,7 +103,7 @@ export class TasksCloudDemoPage { await BrowserActions.click(this.appButton); } - async selectSelectionMode(mode): Promise { + async selectSelectionMode(mode: string): Promise { await this.modeDropdown.clickDropdown(); await this.modeDropdown.selectOption(mode); } @@ -119,7 +119,7 @@ export class TasksCloudDemoPage { async getSelectedTaskRowText(rowNo: string): Promise { await this.checkSelectedRowsIsDisplayed(); - const row: ElementFinder = element(by.xpath(`//div[text()=' Selected Rows: ']//li[${rowNo}]`)); + const row = element(by.xpath(`//div[text()=' Selected Rows: ']//li[${rowNo}]`)); return BrowserActions.getText(row); } diff --git a/e2e/pages/adf/demo-shell/social.page.ts b/e2e/pages/adf/demo-shell/social.page.ts index 35f1065601..a81172f76d 100644 --- a/e2e/pages/adf/demo-shell/social.page.ts +++ b/e2e/pages/adf/demo-shell/social.page.ts @@ -15,12 +15,12 @@ * limitations under the License. */ -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; import { BrowserActions, BrowserVisibility } from '@alfresco/adf-testing'; export class SocialPage { - nodeIdField: ElementFinder = element(by.css(`input[id="nodeId"]`)); + nodeIdField = element(by.css(`input[id="nodeId"]`)); async getNodeIdFieldValue(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.nodeIdField); diff --git a/e2e/pages/adf/dialog/create-library-dialog.page.ts b/e2e/pages/adf/dialog/create-library-dialog.page.ts index d48db48bc8..342863755a 100644 --- a/e2e/pages/adf/dialog/create-library-dialog.page.ts +++ b/e2e/pages/adf/dialog/create-library-dialog.page.ts @@ -15,26 +15,26 @@ * limitations under the License. */ -import { by, element, browser, protractor, ElementFinder, ElementArrayFinder } from 'protractor'; +import { by, element, browser, protractor } from 'protractor'; import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; export class CreateLibraryDialogPage { - libraryDialog: ElementFinder = element(by.css('[role="dialog"]')); - libraryTitle: ElementFinder = element(by.css('.adf-library-dialog>h2')); - libraryNameField: ElementFinder = element(by.css('input[formcontrolname="title"]')); - libraryIdField: ElementFinder = element(by.css('input[formcontrolname="id"]')); - libraryDescriptionField: ElementFinder = element(by.css('textarea[formcontrolname="description"]')); - publicRadioButton: ElementFinder = element(by.css('[data-automation-id="PUBLIC"]>label')); - privateRadioButton: ElementFinder = element(by.css('[data-automation-id="PRIVATE"]>label')); - moderatedRadioButton: ElementFinder = element(by.css('[data-automation-id="MODERATED"]>label')); - cancelButton: ElementFinder = element(by.css('button[data-automation-id="cancel-library-id"]')); - createButton: ElementFinder = element(by.css('button[data-automation-id="create-library-id"]')); - errorMessage: ElementFinder = element(by.css('.mat-dialog-content .mat-error')); - errorMessages: ElementArrayFinder = element.all(by.css('.mat-dialog-content .mat-error')); - libraryNameHint: ElementFinder = element(by.css('adf-library-dialog .mat-hint')); + libraryDialog = element(by.css('[role="dialog"]')); + libraryTitle = element(by.css('.adf-library-dialog>h2')); + libraryNameField = element(by.css('input[formcontrolname="title"]')); + libraryIdField = element(by.css('input[formcontrolname="id"]')); + libraryDescriptionField = element(by.css('textarea[formcontrolname="description"]')); + publicRadioButton = element(by.css('[data-automation-id="PUBLIC"]>label')); + privateRadioButton = element(by.css('[data-automation-id="PRIVATE"]>label')); + moderatedRadioButton = element(by.css('[data-automation-id="MODERATED"]>label')); + cancelButton = element(by.css('button[data-automation-id="cancel-library-id"]')); + createButton = element(by.css('button[data-automation-id="create-library-id"]')); + errorMessage = element(by.css('.mat-dialog-content .mat-error')); + errorMessages = element.all(by.css('.mat-dialog-content .mat-error')); + libraryNameHint = element(by.css('adf-library-dialog .mat-hint')); async getSelectedRadio(): Promise { - const radio: ElementFinder = element(by.css('.mat-radio-button[class*="checked"]')); + const radio = element(by.css('.mat-radio-button[class*="checked"]')); return BrowserActions.getText(radio); } @@ -66,7 +66,7 @@ export class CreateLibraryDialogPage { return BrowserActions.getText(this.errorMessage); } - async getErrorMessages(position): Promise { + async getErrorMessages(position: number): Promise { return BrowserActions.getText(this.errorMessages.get(position)); } @@ -122,11 +122,11 @@ export class CreateLibraryDialogPage { await BrowserActions.clearSendKeys(this.libraryNameField, libraryName); } - async typeLibraryId(libraryId): Promise { + async typeLibraryId(libraryId: string): Promise { await BrowserActions.clearSendKeys(this.libraryIdField, libraryId); } - async typeLibraryDescription(libraryDescription): Promise { + async typeLibraryDescription(libraryDescription: string): Promise { await BrowserActions.clearSendKeys(this.libraryDescriptionField, libraryDescription); } diff --git a/e2e/pages/adf/dialog/folder-dialog.page.ts b/e2e/pages/adf/dialog/folder-dialog.page.ts index a90a5f7cb0..dd4aa56110 100644 --- a/e2e/pages/adf/dialog/folder-dialog.page.ts +++ b/e2e/pages/adf/dialog/folder-dialog.page.ts @@ -19,13 +19,13 @@ import { by, element, ElementFinder } from 'protractor'; import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; export class FolderDialogPage { - folderDialog: ElementFinder = element(by.css('adf-folder-dialog')); - folderNameField: ElementFinder = this.folderDialog.element(by.id('adf-folder-name-input')); - folderDescriptionField: ElementFinder = this.folderDialog.element(by.id('adf-folder-description-input')); - createUpdateButton: ElementFinder = this.folderDialog.element(by.id('adf-folder-create-button')); - cancelButton: ElementFinder = this.folderDialog.element(by.id('adf-folder-cancel-button')); - folderTitle: ElementFinder = this.folderDialog.element((by.css('h2.mat-dialog-title'))); - validationMessage: ElementFinder = this.folderDialog.element(by.css('div.mat-form-field-subscript-wrapper mat-hint span')); + folderDialog = element(by.css('adf-folder-dialog')); + folderNameField = this.folderDialog.element(by.id('adf-folder-name-input')); + folderDescriptionField = this.folderDialog.element(by.id('adf-folder-description-input')); + createUpdateButton = this.folderDialog.element(by.id('adf-folder-create-button')); + cancelButton = this.folderDialog.element(by.id('adf-folder-cancel-button')); + folderTitle = this.folderDialog.element((by.css('h2.mat-dialog-title'))); + validationMessage = this.folderDialog.element(by.css('div.mat-form-field-subscript-wrapper mat-hint span')); async getDialogTitle(): Promise { return BrowserActions.getText(this.folderTitle); diff --git a/e2e/pages/adf/dialog/search-dialog.page.ts b/e2e/pages/adf/dialog/search-dialog.page.ts index 260573d92b..d94940a599 100644 --- a/e2e/pages/adf/dialog/search-dialog.page.ts +++ b/e2e/pages/adf/dialog/search-dialog.page.ts @@ -15,19 +15,19 @@ * limitations under the License. */ -import { browser, by, element, ElementFinder, Locator, protractor } from 'protractor'; +import { browser, by, element, ElementFinder, protractor } from 'protractor'; import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; export class SearchDialogPage { - searchIcon: ElementFinder = element(by.css(`button[class*='adf-search-button']`)); - searchBar: ElementFinder = element(by.css(`adf-search-control input`)); - searchBarExpanded: ElementFinder = element(by.css(`adf-search-control mat-form-field[class*="mat-focused"] input`)); - noResultMessage: ElementFinder = element(by.css(`p[class*='adf-search-fixed-text']`)); - rowsAuthor: Locator = by.css(`div[class='mat-list-text'] p[class*='adf-search-fixed-text']`); - completeName: Locator = by.css(`h4[class*='adf-search-fixed-text']`); - highlightName: Locator = by.css(`.adf-highlight`); - searchDialog: ElementFinder = element(by.css(`mat-list[id='autocomplete-search-result-list']`)); + searchIcon = element(by.css(`button[class*='adf-search-button']`)); + searchBar = element(by.css(`adf-search-control input`)); + searchBarExpanded = element(by.css(`adf-search-control mat-form-field[class*="mat-focused"] input`)); + noResultMessage = element(by.css(`p[class*='adf-search-fixed-text']`)); + rowsAuthor = by.css(`div[class='mat-list-text'] p[class*='adf-search-fixed-text']`); + completeName = by.css(`h4[class*='adf-search-fixed-text']`); + highlightName = by.css(`.adf-highlight`); + searchDialog = element(by.css(`mat-list[id='autocomplete-search-result-list']`)); async pressDownArrowAndEnter(): Promise { await element(by.css(`adf-search-control div input`)).sendKeys(protractor.Key.ARROW_DOWN); @@ -58,40 +58,40 @@ export class SearchDialogPage { await BrowserVisibility.waitUntilElementIsNotVisible(this.noResultMessage); } - async enterText(text): Promise { + async enterText(text: string): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.searchBar); await this.searchBar.sendKeys(text); } - async enterTextAndPressEnter(text): Promise { + async enterTextAndPressEnter(text: string): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.searchBar); await this.searchBar.sendKeys(text); await this.searchBar.sendKeys(protractor.Key.ENTER); } - async resultTableContainsRow(name): Promise { + async resultTableContainsRow(name: string): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.searchDialog); await BrowserVisibility.waitUntilElementIsVisible(this.getRowByRowName(name)); } - async clickOnSpecificRow(name): Promise { + async clickOnSpecificRow(name: string): Promise { await this.resultTableContainsRow(name); await BrowserActions.click(this.getRowByRowName(name)); } - getRowByRowName(name): ElementFinder { + getRowByRowName(name: string): ElementFinder { return element(by.css(`mat-list-item[data-automation-id='autocomplete_for_${name}']`)); } - async getSpecificRowsHighlightName(name): Promise { + async getSpecificRowsHighlightName(name: string): Promise { return BrowserActions.getText(this.getRowByRowName(name).element(this.highlightName)); } - async getSpecificRowsCompleteName(name): Promise { + async getSpecificRowsCompleteName(name: string): Promise { return BrowserActions.getText(this.getRowByRowName(name).element(this.completeName)); } - async getSpecificRowsAuthor(name): Promise { + async getSpecificRowsAuthor(name: string): Promise { return BrowserActions.getText(this.getRowByRowName(name).element(this.rowsAuthor)); } diff --git a/e2e/pages/adf/dialog/upload-dialog.page.ts b/e2e/pages/adf/dialog/upload-dialog.page.ts index d4f3c41ff0..220682e923 100644 --- a/e2e/pages/adf/dialog/upload-dialog.page.ts +++ b/e2e/pages/adf/dialog/upload-dialog.page.ts @@ -15,28 +15,28 @@ * limitations under the License. */ -import { element, by, browser, ElementFinder, Locator } from 'protractor'; +import { element, by, browser, ElementFinder } from 'protractor'; import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; export class UploadDialogPage { - closeButton: ElementFinder = element((by.css('footer[class*="upload-dialog__actions"] button[id="adf-upload-dialog-close"]'))); - dialog: ElementFinder = element(by.css('div[id="upload-dialog"]')); - minimizedDialog: ElementFinder = element(by.css('div[class*="upload-dialog--minimized"]')); - uploadedStatusIcon: Locator = by.css('mat-icon[class*="status--done"]'); - cancelledStatusIcon: Locator = by.css('div[class*="status--cancelled"]'); + closeButton = element((by.css('footer[class*="upload-dialog__actions"] button[id="adf-upload-dialog-close"]'))); + dialog = element(by.css('div[id="upload-dialog"]')); + minimizedDialog = element(by.css('div[class*="upload-dialog--minimized"]')); + uploadedStatusIcon = by.css('mat-icon[class*="status--done"]'); + cancelledStatusIcon = by.css('div[class*="status--cancelled"]'); errorStatusIcon = by.css('div[class*="status--error"] mat-icon'); - errorTooltip: ElementFinder = element(by.css('div.mat-tooltip')); + errorTooltip = element(by.css('div.mat-tooltip')); rowByRowName = by.xpath('ancestor::adf-file-uploading-list-row'); - title: ElementFinder = element(by.css('span[class*="upload-dialog__title"]')); - minimizeButton: ElementFinder = element(by.css('mat-icon[title="Minimize"]')); - maximizeButton: ElementFinder = element(by.css('mat-icon[title="Maximize"]')); - canUploadConfirmationTitle: ElementFinder = element(by.css('p[class="upload-dialog__confirmation--title"]')); - canUploadConfirmationDescription: ElementFinder = element(by.css('p[class="upload-dialog__confirmation--text"]')); - confirmationDialogNoButton: ElementFinder = element(by.partialButtonText('No')); - confirmationDialogYesButton: ElementFinder = element(by.partialButtonText('Yes')); - cancelUploadsElement: ElementFinder = element((by.css('footer[class*="upload-dialog__actions"] button[id="adf-upload-dialog-cancel-all"]'))); - cancelUploadInProgressButton: ElementFinder = element(by.css('div[data-automation-id="cancel-upload-progress"]')); + title = element(by.css('span[class*="upload-dialog__title"]')); + minimizeButton = element(by.css('mat-icon[title="Minimize"]')); + maximizeButton = element(by.css('mat-icon[title="Maximize"]')); + canUploadConfirmationTitle = element(by.css('p[class="upload-dialog__confirmation--title"]')); + canUploadConfirmationDescription = element(by.css('p[class="upload-dialog__confirmation--text"]')); + confirmationDialogNoButton = element(by.partialButtonText('No')); + confirmationDialogYesButton = element(by.partialButtonText('Yes')); + cancelUploadsElement = element((by.css('footer[class*="upload-dialog__actions"] button[id="adf-upload-dialog-cancel-all"]'))); + cancelUploadInProgressButton = element(by.css('div[data-automation-id="cancel-upload-progress"]')); async clickOnCloseButton(): Promise { await this.checkCloseButtonIsDisplayed(); @@ -59,32 +59,32 @@ export class UploadDialogPage { await BrowserVisibility.waitUntilElementIsNotVisible(this.dialog); } - getRowsByName(content): ElementFinder { + getRowsByName(content: string): ElementFinder { return element.all(by.css(`div[class*='uploading-row'] span[title="${content}"]`)).first(); } - getRowByRowName(content) { + getRowByRowName(content: string) { const rows = this.getRowsByName(content); return rows.element(this.rowByRowName); } - async fileIsUploaded(content): Promise { + async fileIsUploaded(content: string): Promise { const row = await this.getRowByRowName(content); await BrowserVisibility.waitUntilElementIsVisible(row.element(this.uploadedStatusIcon)); } - async fileIsError(content) { + async fileIsError(content: string) { const row = await this.getRowByRowName(content); await BrowserVisibility.waitUntilElementIsVisible(row.element(this.errorStatusIcon)); } - async filesAreUploaded(content): Promise { + async filesAreUploaded(content: string[]): Promise { for (let i = 0; i < content.length; i++) { await this.fileIsUploaded(content[i]); } } - async fileIsNotDisplayedInDialog(content): Promise { + async fileIsNotDisplayedInDialog(content: string): Promise { await BrowserVisibility.waitUntilElementIsNotVisible(element(by.css(`div[class*='uploading-row'] span[title="${content}"]`))); } @@ -100,12 +100,12 @@ export class UploadDialogPage { await BrowserVisibility.waitUntilElementIsVisible(this.cancelUploadInProgressButton); } - async fileIsCancelled(content): Promise { + async fileIsCancelled(content: string): Promise { const row = await this.getRowByRowName(content); await BrowserVisibility.waitUntilElementIsVisible(row.element(this.cancelledStatusIcon), 10000); } - async removeUploadedFile(content): Promise { + async removeUploadedFile(content: string): Promise { const row = await this.getRowByRowName(content); await BrowserVisibility.waitUntilElementIsVisible(row.element(this.uploadedStatusIcon)); const elementRow = await this.getRowByRowName(content); diff --git a/e2e/pages/adf/dialog/upload-toggles.page.ts b/e2e/pages/adf/dialog/upload-toggles.page.ts index d989bbd413..fd226af8ad 100644 --- a/e2e/pages/adf/dialog/upload-toggles.page.ts +++ b/e2e/pages/adf/dialog/upload-toggles.page.ts @@ -15,20 +15,20 @@ * limitations under the License. */ -import { browser, by, element, ElementFinder } from 'protractor'; +import { browser, by, element } from 'protractor'; import { BrowserActions, BrowserVisibility, TogglePage } from '@alfresco/adf-testing'; export class UploadTogglesPage { - togglePage: TogglePage = new TogglePage(); - multipleFileUploadToggle: ElementFinder = element(by.id('adf-multiple-upload-switch')); - uploadFolderToggle: ElementFinder = element(by.css('#adf-folder-upload-switch')); - extensionFilterToggle: ElementFinder = element(by.id('adf-extension-filter-upload-switch')); - maxSizeToggle: ElementFinder = element(by.id('adf-max-size-filter-upload-switch')); - versioningToggle: ElementFinder = element(by.id('adf-version-upload-switch')); - extensionAcceptedField: ElementFinder = element(by.css('input[data-automation-id="accepted-files-type"]')); - maxSizeField: ElementFinder = element(by.css('input[data-automation-id="max-files-size"]')); - disableUploadCheckbox: ElementFinder = element(by.css('[id="adf-disable-upload"]')); + togglePage = new TogglePage(); + multipleFileUploadToggle = element(by.id('adf-multiple-upload-switch')); + uploadFolderToggle = element(by.css('#adf-folder-upload-switch')); + extensionFilterToggle = element(by.id('adf-extension-filter-upload-switch')); + maxSizeToggle = element(by.id('adf-max-size-filter-upload-switch')); + versioningToggle = element(by.id('adf-version-upload-switch')); + extensionAcceptedField = element(by.css('input[data-automation-id="accepted-files-type"]')); + maxSizeField = element(by.css('input[data-automation-id="max-files-size"]')); + disableUploadCheckbox = element(by.css('[id="adf-disable-upload"]')); async enableMultipleFileUpload(): Promise { await browser.executeScript('arguments[0].scrollIntoView()', this.multipleFileUploadToggle); @@ -46,7 +46,7 @@ export class UploadTogglesPage { async checkFolderUploadToggleIsEnabled(): Promise { try { - const enabledFolderUpload: ElementFinder = element(by.css('mat-slide-toggle[id="adf-folder-upload-switch"][class*="mat-checked"]')); + const enabledFolderUpload = element(by.css('mat-slide-toggle[id="adf-folder-upload-switch"][class*="mat-checked"]')); await BrowserVisibility.waitUntilElementIsVisible(enabledFolderUpload); return true; } catch { @@ -55,17 +55,17 @@ export class UploadTogglesPage { } async checkMultipleFileUploadToggleIsEnabled(): Promise { - const enabledToggle: ElementFinder = element(by.css('mat-slide-toggle[id="adf-multiple-upload-switch"][class*="mat-checked"]')); + const enabledToggle = element(by.css('mat-slide-toggle[id="adf-multiple-upload-switch"][class*="mat-checked"]')); await BrowserVisibility.waitUntilElementIsVisible(enabledToggle); } async checkMaxSizeToggleIsEnabled(): Promise { - const enabledToggle: ElementFinder = element(by.css('mat-slide-toggle[id="adf-max-size-filter-upload-switch"][class*="mat-checked"]')); + const enabledToggle = element(by.css('mat-slide-toggle[id="adf-max-size-filter-upload-switch"][class*="mat-checked"]')); await BrowserVisibility.waitUntilElementIsVisible(enabledToggle); } async checkVersioningToggleIsEnabled(): Promise { - const enabledToggle: ElementFinder = element(by.css('mat-slide-toggle[id="adf-version-upload-switch"][class*="mat-checked"]')); + const enabledToggle = element(by.css('mat-slide-toggle[id="adf-version-upload-switch"][class*="mat-checked"]')); await BrowserVisibility.waitUntilElementIsVisible(enabledToggle); } @@ -74,7 +74,7 @@ export class UploadTogglesPage { } async checkFolderUploadToggleIsNotEnabled(): Promise { try { - const inactiveToggleFolder: ElementFinder = element(by.css('#adf-folder-upload-switch .mat-slide-toggle-label')); + const inactiveToggleFolder = element(by.css('#adf-folder-upload-switch .mat-slide-toggle-label')); await BrowserVisibility.waitUntilElementIsVisible(inactiveToggleFolder); return true; } catch { @@ -112,7 +112,7 @@ export class UploadTogglesPage { await BrowserActions.click(this.disableUploadCheckbox); } - async addExtension(extension): Promise { + async addExtension(extension: string): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.extensionAcceptedField); await this.extensionAcceptedField.sendKeys(',' + extension); } diff --git a/e2e/pages/adf/icons.page.ts b/e2e/pages/adf/icons.page.ts index 7ee21b2751..6f2d5a535e 100644 --- a/e2e/pages/adf/icons.page.ts +++ b/e2e/pages/adf/icons.page.ts @@ -19,15 +19,15 @@ import { browser, by, element, ElementFinder } from 'protractor'; export class IconsPage { - locateCustomIcon(name): ElementFinder { + locateCustomIcon(name: string): ElementFinder { return element(by.css(`adf-icon[value='${name}'] svg`)); } - locateLigatureIcon(name): ElementFinder { + locateLigatureIcon(name: string): ElementFinder { return element(by.css(`adf-icon[value='${name}'] .material-icons`)); } - async isCustomIconDisplayed(name) { + async isCustomIconDisplayed(name: string) { const present = await browser.isElementPresent(this.locateCustomIcon(name)); if (present) { return this.locateCustomIcon(name).isDisplayed(); @@ -36,7 +36,7 @@ export class IconsPage { } } - async isLigatureIconDisplayed(name) { + async isLigatureIconDisplayed(name: string) { const present = await browser.isElementPresent(this.locateLigatureIcon(name)); if (present) { return this.locateLigatureIcon(name).isDisplayed(); diff --git a/e2e/pages/adf/lock-file.page.ts b/e2e/pages/adf/lock-file.page.ts index 743a697c10..0304aa1268 100644 --- a/e2e/pages/adf/lock-file.page.ts +++ b/e2e/pages/adf/lock-file.page.ts @@ -15,16 +15,16 @@ * limitations under the License. */ -import { element, by, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; export class LockFilePage { - cancelButton: ElementFinder = element(by.css('button[data-automation-id="lock-dialog-btn-cancel"]')); - saveButton: ElementFinder = element(by.cssContainingText('button span', 'Save')); - lockFileCheckboxText: ElementFinder = element(by.cssContainingText('mat-checkbox label span', ' Lock file ')); - lockFileCheckbox: ElementFinder = element(by.css('mat-checkbox[data-automation-id="adf-lock-node-checkbox"]')); - allowOwnerCheckbox: ElementFinder = element(by.cssContainingText('mat-checkbox[class*="adf-lock-file-name"] span', ' Allow the owner to modify this file ')); + cancelButton = element(by.css('button[data-automation-id="lock-dialog-btn-cancel"]')); + saveButton = element(by.cssContainingText('button span', 'Save')); + lockFileCheckboxText = element(by.cssContainingText('mat-checkbox label span', ' Lock file ')); + lockFileCheckbox = element(by.css('mat-checkbox[data-automation-id="adf-lock-node-checkbox"]')); + allowOwnerCheckbox = element(by.cssContainingText('mat-checkbox[class*="adf-lock-file-name"] span', ' Allow the owner to modify this file ')); async checkLockFileCheckboxIsDisplayed(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.lockFileCheckboxText); diff --git a/e2e/pages/adf/metadata-view.page.ts b/e2e/pages/adf/metadata-view.page.ts index 316424c8f6..8cc5f54d2b 100644 --- a/e2e/pages/adf/metadata-view.page.ts +++ b/e2e/pages/adf/metadata-view.page.ts @@ -15,38 +15,38 @@ * limitations under the License. */ -import { by, element, ElementFinder, Key, protractor } from 'protractor'; +import { by, element, Key, protractor } from 'protractor'; import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; export class MetadataViewPage { - title: ElementFinder = element(by.css(`div[info-drawer-title]`)); - expandedAspect: ElementFinder = element(by.css(`mat-expansion-panel-header[aria-expanded='true']`)); + title = element(by.css(`div[info-drawer-title]`)); + expandedAspect = element(by.css(`mat-expansion-panel-header[aria-expanded='true']`)); aspectTitle = by.css(`mat-panel-title`); - name: ElementFinder = element(by.css(`[data-automation-id='card-textitem-value-name']`)); - creator: ElementFinder = element(by.css(`[data-automation-id='card-textitem-value-createdByUser.displayName']`)); - createdDate: ElementFinder = element(by.css(`span[data-automation-id='card-dateitem-createdAt'] span`)); - modifier: ElementFinder = element(by.css(`[data-automation-id='card-textitem-value-modifiedByUser.displayName']`)); - modifiedDate: ElementFinder = element(by.css(`span[data-automation-id='card-dateitem-modifiedAt'] span`)); - mimetypeName: ElementFinder = element(by.css(`[data-automation-id='card-textitem-value-content.mimeTypeName']`)); - size: ElementFinder = element(by.css(`[data-automation-id='card-textitem-value-content.sizeInBytes']`)); - description: ElementFinder = element(by.css(`span[data-automation-id='card-textitem-value-properties.cm:description']`)); - author: ElementFinder = element(by.css(`[data-automation-id='card-textitem-value-properties.cm:author']`)); - titleProperty: ElementFinder = element(by.css(`span[data-automation-id='card-textitem-value-properties.cm:title'] span`)); - editIcon: ElementFinder = element(by.css(`button[data-automation-id='meta-data-card-toggle-edit']`)); - informationButton: ElementFinder = element(by.css(`button[data-automation-id='meta-data-card-toggle-expand']`)); - informationSpan: ElementFinder = element(by.css(`span[data-automation-id='meta-data-card-toggle-expand-label']`)); - informationIcon: ElementFinder = element(by.css(`span[data-automation-id='meta-data-card-toggle-expand-label'] ~ mat-icon`)); - displayEmptySwitch: ElementFinder = element(by.id(`adf-metadata-empty`)); - readonlySwitch: ElementFinder = element(by.id(`adf-metadata-readonly`)); - multiSwitch: ElementFinder = element(by.id(`adf-metadata-multi`)); - presetSwitch: ElementFinder = element(by.id('adf-toggle-custom-preset')); - defaultPropertiesSwitch: ElementFinder = element(by.id('adf-metadata-default-properties')); - closeButton: ElementFinder = element(by.cssContainingText('button.mat-button span', 'Close')); - displayAspect: ElementFinder = element(by.css(`input[placeholder='Display Aspect']`)); - applyAspect: ElementFinder = element(by.cssContainingText(`button span.mat-button-wrapper`, 'Apply Aspect')); - saveMetadataButton: ElementFinder = element(by.css(`[data-automation-id='save-metadata']`)); - resetMetadataButton: ElementFinder = element(by.css(`[data-automation-id='reset-metadata']`)); + name = element(by.css(`[data-automation-id='card-textitem-value-name']`)); + creator = element(by.css(`[data-automation-id='card-textitem-value-createdByUser.displayName']`)); + createdDate = element(by.css(`span[data-automation-id='card-dateitem-createdAt'] span`)); + modifier = element(by.css(`[data-automation-id='card-textitem-value-modifiedByUser.displayName']`)); + modifiedDate = element(by.css(`span[data-automation-id='card-dateitem-modifiedAt'] span`)); + mimetypeName = element(by.css(`[data-automation-id='card-textitem-value-content.mimeTypeName']`)); + size = element(by.css(`[data-automation-id='card-textitem-value-content.sizeInBytes']`)); + description = element(by.css(`span[data-automation-id='card-textitem-value-properties.cm:description']`)); + author = element(by.css(`[data-automation-id='card-textitem-value-properties.cm:author']`)); + titleProperty = element(by.css(`span[data-automation-id='card-textitem-value-properties.cm:title'] span`)); + editIcon = element(by.css(`button[data-automation-id='meta-data-card-toggle-edit']`)); + informationButton = element(by.css(`button[data-automation-id='meta-data-card-toggle-expand']`)); + informationSpan = element(by.css(`span[data-automation-id='meta-data-card-toggle-expand-label']`)); + informationIcon = element(by.css(`span[data-automation-id='meta-data-card-toggle-expand-label'] ~ mat-icon`)); + displayEmptySwitch = element(by.id(`adf-metadata-empty`)); + readonlySwitch = element(by.id(`adf-metadata-readonly`)); + multiSwitch = element(by.id(`adf-metadata-multi`)); + presetSwitch = element(by.id('adf-toggle-custom-preset')); + defaultPropertiesSwitch = element(by.id('adf-metadata-default-properties')); + closeButton = element(by.cssContainingText('button.mat-button span', 'Close')); + displayAspect = element(by.css(`input[placeholder='Display Aspect']`)); + applyAspect = element(by.cssContainingText(`button span.mat-button-wrapper`, 'Apply Aspect')); + saveMetadataButton = element(by.css(`[data-automation-id='save-metadata']`)); + resetMetadataButton = element(by.css(`[data-automation-id='reset-metadata']`)); async getTitle(): Promise { return BrowserActions.getText(this.title); @@ -129,7 +129,7 @@ export class MetadataViewPage { } async clickOnPropertiesTab(): Promise { - const propertiesTab: ElementFinder = element(by.cssContainingText(`.adf-info-drawer-layout-content div.mat-tab-labels div .mat-tab-label-content`, `Properties`)); + const propertiesTab = element(by.cssContainingText(`.adf-info-drawer-layout-content div.mat-tab-labels div .mat-tab-label-content`, `Properties`)); await BrowserActions.click(propertiesTab); } @@ -138,70 +138,70 @@ export class MetadataViewPage { } async editPropertyIconIsDisplayed(propertyName: string) { - const editPropertyIcon: ElementFinder = element(by.css('[data-automation-id="header-' + propertyName + '"] .adf-textitem-edit-icon')); + const editPropertyIcon = element(by.css('[data-automation-id="header-' + propertyName + '"] .adf-textitem-edit-icon')); await BrowserVisibility.waitUntilElementIsPresent(editPropertyIcon); } async clickResetButton(): Promise { - const clearPropertyIcon: ElementFinder = element(by.css('button[data-automation-id="reset-metadata"]')); + const clearPropertyIcon = element(by.css('button[data-automation-id="reset-metadata"]')); await BrowserActions.click(clearPropertyIcon); } async enterPropertyText(propertyName: string, text: string | number): Promise { - const textField: ElementFinder = element(by.css('input[data-automation-id="card-textitem-value-' + propertyName + '"]')); + const textField = element(by.css('input[data-automation-id="card-textitem-value-' + propertyName + '"]')); await BrowserActions.clearSendKeys(textField, text.toString()); await textField.sendKeys(protractor.Key.ENTER); } async enterPresetText(text: string): Promise { - const presetField: ElementFinder = element(by.css('input[data-automation-id="adf-text-custom-preset"]')); + const presetField = element(by.css('input[data-automation-id="adf-text-custom-preset"]')); await BrowserActions.clearSendKeys(presetField, text.toString()); await presetField.sendKeys(protractor.Key.ENTER); - const applyButton: ElementFinder = element(by.css('button[id="adf-metadata-aplly"]')); + const applyButton = element(by.css('button[id="adf-metadata-aplly"]')); await BrowserActions.click(applyButton); } async enterDescriptionText(text: string): Promise { - const textField: ElementFinder = element(by.css('textarea[data-automation-id="card-textitem-value-properties.cm:description"]')); + const textField = element(by.css('textarea[data-automation-id="card-textitem-value-properties.cm:description"]')); await BrowserActions.clearSendKeys(textField, text); await textField.sendKeys(Key.TAB); } async getPropertyText(propertyName: string, type?: string): Promise { const propertyType = type || 'textitem'; - const textField: ElementFinder = element(by.css('[data-automation-id="card-' + propertyType + '-value-' + propertyName + '"]')); + const textField = element(by.css('[data-automation-id="card-' + propertyType + '-value-' + propertyName + '"]')); return BrowserActions.getInputValue(textField); } async getPropertyIconTooltip(propertyName: string): Promise { - const editPropertyIcon: ElementFinder = element(by.css('[data-automation-id="header-' + propertyName + '"] .adf-textitem-edit-icon')); + const editPropertyIcon = element(by.css('[data-automation-id="header-' + propertyName + '"] .adf-textitem-edit-icon')); return editPropertyIcon.getAttribute('title'); } async clickMetadataGroup(groupName: string): Promise { - const group: ElementFinder = element(by.css('mat-expansion-panel[data-automation-id="adf-metadata-group-' + groupName + '"]')); + const group = element(by.css('mat-expansion-panel[data-automation-id="adf-metadata-group-' + groupName + '"]')); await BrowserActions.click(group); } async checkMetadataGroupIsPresent(groupName: string): Promise { - const group: ElementFinder = element(by.css('mat-expansion-panel[data-automation-id="adf-metadata-group-' + groupName + '"]')); + const group = element(by.css('mat-expansion-panel[data-automation-id="adf-metadata-group-' + groupName + '"]')); await BrowserVisibility.waitUntilElementIsVisible(group); } async checkMetadataGroupIsNotPresent(groupName: string): Promise { - const group: ElementFinder = element(by.css('mat-expansion-panel[data-automation-id="adf-metadata-group-' + groupName + '"]')); + const group = element(by.css('mat-expansion-panel[data-automation-id="adf-metadata-group-' + groupName + '"]')); await BrowserVisibility.waitUntilElementIsNotVisible(group); } async checkMetadataGroupIsExpand(groupName: string): Promise { - const group: ElementFinder = element(by.css('mat-expansion-panel[data-automation-id="adf-metadata-group-' + groupName + '"] > mat-expansion-panel-header')); + const group = element(by.css('mat-expansion-panel[data-automation-id="adf-metadata-group-' + groupName + '"] > mat-expansion-panel-header')); await BrowserVisibility.waitUntilElementIsVisible(group); await expect(await group.getAttribute('class')).toContain('mat-expanded'); } async checkMetadataGroupIsNotExpand(groupName: string): Promise { - const group: ElementFinder = element(by.css('mat-expansion-panel[data-automation-id="adf-metadata-group-' + groupName + '"] > mat-expansion-panel-header')); + const group = element(by.css('mat-expansion-panel[data-automation-id="adf-metadata-group-' + groupName + '"] > mat-expansion-panel-header')); await BrowserVisibility.waitUntilElementIsPresent(group); await expect(await group.getAttribute('class')).not.toContain('mat-expanded'); } @@ -212,12 +212,12 @@ export class MetadataViewPage { } async checkPropertyIsVisible(propertyName: string, type: string): Promise { - const property: ElementFinder = element(by.css('div[data-automation-id="card-' + type + '-label-' + propertyName + '"]')); + const property = element(by.css('div[data-automation-id="card-' + type + '-label-' + propertyName + '"]')); await BrowserVisibility.waitUntilElementIsVisible(property); } async checkPropertyIsNotVisible(propertyName: string, type: string): Promise { - const property: ElementFinder = element(by.css('div[data-automation-id="card-' + type + '-label-' + propertyName + '"]')); + const property = element(by.css('div[data-automation-id="card-' + type + '-label-' + propertyName + '"]')); await BrowserVisibility.waitUntilElementIsNotVisible(property); } diff --git a/e2e/pages/adf/navigation-bar.page.ts b/e2e/pages/adf/navigation-bar.page.ts index 7ba51b0784..7427198565 100644 --- a/e2e/pages/adf/navigation-bar.page.ts +++ b/e2e/pages/adf/navigation-bar.page.ts @@ -22,22 +22,22 @@ import { ProcessServicesPage } from './process-services/process-services.page'; export class NavigationBarPage { - linkListContainer: ElementFinder = element(by.css('.app-sidenav-linklist')); - linkMenuChildrenContainer: ElementFinder = element(by.css('.nestedMenu')); + linkListContainer = element(by.css('.app-sidenav-linklist')); + linkMenuChildrenContainer = element(by.css('.nestedMenu')); dataTableNestedButton = this.linkMenuChildrenContainer.element(by.css('.app-sidenav-link[data-automation-id="Datatable"]')); dataTableCopyContentButton = this.linkMenuChildrenContainer.element(by.css('.app-sidenav-link[data-automation-id="Copy Content"]')); dataTableDragAndDropButton = this.linkMenuChildrenContainer.element(by.css('.app-sidenav-link[data-automation-id="Drag and Drop"]')); processServicesNestedButton = this.linkMenuChildrenContainer.element(by.css('.app-sidenav-link[data-automation-id="App"]')); processServicesCloudHomeButton = this.linkMenuChildrenContainer.element(by.css('.app-sidenav-link[data-automation-id="Home"]')); - themeButton: ElementFinder = element(by.css('button[data-automation-id="theme menu"]')); - themeMenuContent: ElementFinder = element(by.css('div[class*="mat-menu-panel"]')); - languageMenuButton: ElementFinder = element(by.css('button[data-automation-id="language-menu-button"]')); - appTitle: ElementFinder = element(by.css('.adf-app-title')); - menuButton: ElementFinder = element(by.css('button[data-automation-id="adf-menu-icon"]')); + themeButton = element(by.css('button[data-automation-id="theme menu"]')); + themeMenuContent = element(by.css('div[class*="mat-menu-panel"]')); + languageMenuButton = element(by.css('button[data-automation-id="language-menu-button"]')); + appTitle = element(by.css('.adf-app-title')); + menuButton = element(by.css('button[data-automation-id="adf-menu-icon"]')); formButton = this.linkMenuChildrenContainer.element(by.css('.app-sidenav-link[data-automation-id="Form"]')); peopleGroupCloudButton = this.linkMenuChildrenContainer.element(by.css('.app-sidenav-link[data-automation-id="People/Group Cloud"]')); - async clickNavigationBarItem(title): Promise { + async clickNavigationBarItem(title: string): Promise { const menu = element(by.css(`.app-sidenav-link[data-automation-id="${title}"]`)); await BrowserActions.closeMenuAndDialogs(); await BrowserActions.click(menu); @@ -185,7 +185,7 @@ export class NavigationBarPage { } async clickOnSpecificThemeButton(themeName): Promise { - const themeElement: ElementFinder = element(by.css(`button[data-automation-id="${themeName}"]`)); + const themeElement = element(by.css(`button[data-automation-id="${themeName}"]`)); await BrowserActions.click(themeElement); await BrowserVisibility.waitUntilElementIsNotPresent(this.linkMenuChildrenContainer); } @@ -201,7 +201,7 @@ export class NavigationBarPage { } async chooseLanguage(language): Promise { - const buttonLanguage: ElementFinder = element(by.xpath(`//adf-language-menu//button[contains(text(), '${language}')]`)); + const buttonLanguage = element(by.xpath(`//adf-language-menu//button[contains(text(), '${language}')]`)); await BrowserActions.click(buttonLanguage); await BrowserVisibility.waitUntilElementIsNotPresent(this.linkMenuChildrenContainer); } @@ -214,13 +214,13 @@ export class NavigationBarPage { await BrowserVisibility.waitUntilElementIsNotVisible(this.menuButton); } - async checkToolbarColor(color): Promise { - const toolbarColor: ElementFinder = element(by.css(`mat-toolbar[class*="mat-${color}"]`)); + async checkToolbarColor(color: string): Promise { + const toolbarColor = element(by.css(`mat-toolbar[class*="mat-${color}"]`)); await BrowserVisibility.waitUntilElementIsVisible(toolbarColor); } - async clickAppLogo(logoTitle): Promise { - const appLogo: ElementFinder = element(by.css('a[title="' + logoTitle + '"]')); + async clickAppLogo(logoTitle: string): Promise { + const appLogo = element(by.css('a[title="' + logoTitle + '"]')); await BrowserActions.click(appLogo); } @@ -228,12 +228,12 @@ export class NavigationBarPage { await BrowserActions.click(this.appTitle); } - async checkLogoTooltip(logoTooltipTitle): Promise { - const logoTooltip: ElementFinder = element(by.css('a[title="' + logoTooltipTitle + '"]')); + async checkLogoTooltip(logoTooltipTitle: string): Promise { + const logoTooltip = element(by.css('a[title="' + logoTooltipTitle + '"]')); await BrowserVisibility.waitUntilElementIsVisible(logoTooltip); } - async openViewer(nodeId): Promise { + async openViewer(nodeId: string): Promise { await BrowserActions.getUrl(browser.params.testConfig.adf.url + `/files(overlay:files/${nodeId}/view`); } diff --git a/e2e/pages/adf/permissions.page.ts b/e2e/pages/adf/permissions.page.ts index 5224d2bf6a..8e6408e743 100644 --- a/e2e/pages/adf/permissions.page.ts +++ b/e2e/pages/adf/permissions.page.ts @@ -16,7 +16,7 @@ */ import { BrowserActions, BrowserVisibility, DataTableComponentPage, DropdownPage } from '@alfresco/adf-testing'; -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; const column = { role: 'Role' @@ -26,16 +26,16 @@ export class PermissionsPage { dataTableComponentPage: DataTableComponentPage = new DataTableComponentPage(); - addPermissionButton: ElementFinder = element(by.css("button[data-automation-id='adf-add-permission-button']")); - addPermissionDialog: ElementFinder = element(by.css('adf-add-permission-dialog')); - searchUserInput: ElementFinder = element(by.id('searchInput')); - searchResults: ElementFinder = element(by.css('#adf-add-permission-authority-results #adf-search-results-content')); - addButton: ElementFinder = element(by.id('add-permission-dialog-confirm-button')); - permissionInheritedButton: ElementFinder = element.all(by.css("div[class='app-inherit_permission_button'] button")).first(); - noPermissions: ElementFinder = element(by.css('div[id="adf-no-permissions-template"]')); - deletePermissionButton: ElementFinder = element(by.css(`button[data-automation-id='adf-delete-permission-button']`)); - permissionDisplayContainer: ElementFinder = element(by.css(`div[id='adf-permission-display-container']`)); - closeButton: ElementFinder = element(by.id('add-permission-dialog-close-button')); + addPermissionButton = element(by.css("button[data-automation-id='adf-add-permission-button']")); + addPermissionDialog = element(by.css('adf-add-permission-dialog')); + searchUserInput = element(by.id('searchInput')); + searchResults = element(by.css('#adf-add-permission-authority-results #adf-search-results-content')); + addButton = element(by.id('add-permission-dialog-confirm-button')); + permissionInheritedButton = element.all(by.css("div[class='app-inherit_permission_button'] button")).first(); + noPermissions = element(by.css('div[id="adf-no-permissions-template"]')); + deletePermissionButton = element(by.css(`button[data-automation-id='adf-delete-permission-button']`)); + permissionDisplayContainer = element(by.css(`div[id='adf-permission-display-container']`)); + closeButton = element(by.id('add-permission-dialog-close-button')); async clickCloseButton(): Promise { await BrowserActions.click(this.closeButton); @@ -57,7 +57,7 @@ export class PermissionsPage { await BrowserVisibility.waitUntilElementIsVisible(this.searchUserInput); } - async searchUserOrGroup(name): Promise { + async searchUserOrGroup(name: string): Promise { await BrowserActions.clearSendKeys(this.searchUserInput, name); } @@ -65,19 +65,19 @@ export class PermissionsPage { await BrowserVisibility.waitUntilElementIsVisible(this.searchResults); } - async clickUserOrGroup(name): Promise { - const userOrGroupName: ElementFinder = element(by.cssContainingText('mat-list-option .mat-list-text', name)); + async clickUserOrGroup(name: string): Promise { + const userOrGroupName = element(by.cssContainingText('mat-list-option .mat-list-text', name)); await BrowserActions.clickScript(userOrGroupName); await BrowserActions.click(this.addButton); } - async checkUserOrGroupIsAdded(name): Promise { - const userOrGroupName: ElementFinder = element(by.css('div[data-automation-id="text_' + name + '"]')); + async checkUserOrGroupIsAdded(name: string): Promise { + const userOrGroupName = element(by.css('div[data-automation-id="text_' + name + '"]')); await BrowserVisibility.waitUntilElementIsVisible(userOrGroupName); } - async checkUserOrGroupIsDeleted(name): Promise { - const userOrGroupName: ElementFinder = element(by.css('div[data-automation-id="text_' + name + '"]')); + async checkUserOrGroupIsDeleted(name: string): Promise { + const userOrGroupName = element(by.css('div[data-automation-id="text_' + name + '"]')); await BrowserVisibility.waitUntilElementIsNotVisible(userOrGroupName); } @@ -105,12 +105,12 @@ export class PermissionsPage { await BrowserVisibility.waitUntilElementIsVisible(element(by.css('[class*="adf-datatable-permission"]'))); } - async getRoleCellValue(rowName): Promise { + async getRoleCellValue(rowName: string): Promise { const locator = this.dataTableComponentPage.getCellByRowContentAndColumn('Authority ID', rowName, column.role); return BrowserActions.getText(locator); } - async clickRoleDropdownByUserOrGroupName(name): Promise { + async clickRoleDropdownByUserOrGroupName(name: string): Promise { const row = this.dataTableComponentPage.getRow('Authority ID', name); await BrowserActions.click(row.element(by.id('adf-select-role-permission'))); } @@ -119,7 +119,7 @@ export class PermissionsPage { return element.all(by.css('.mat-option-text')); } - async selectOption(name): Promise { + async selectOption(name: string): Promise { await new DropdownPage().selectOption(name); } @@ -127,8 +127,8 @@ export class PermissionsPage { await BrowserVisibility.waitUntilElementIsVisible(this.permissionDisplayContainer); } - async checkUserOrGroupIsDisplayed(name): Promise { - const userOrGroupName: ElementFinder = element(by.cssContainingText('mat-list-option .mat-list-text', name)); + async checkUserOrGroupIsDisplayed(name: string): Promise { + const userOrGroupName = element(by.cssContainingText('mat-list-option .mat-list-text', name)); await BrowserVisibility.waitUntilElementIsVisible(userOrGroupName); } } diff --git a/e2e/pages/adf/process-services/analytics.page.ts b/e2e/pages/adf/process-services/analytics.page.ts index b270908686..1847925581 100644 --- a/e2e/pages/adf/process-services/analytics.page.ts +++ b/e2e/pages/adf/process-services/analytics.page.ts @@ -15,18 +15,18 @@ * limitations under the License. */ -import { element, by, protractor, ElementFinder } from 'protractor'; +import { element, by, protractor } from 'protractor'; import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; export class AnalyticsPage { - toolbarTitleInput: ElementFinder = element(by.css('input[data-automation-id="reportName"]')); - toolbarTitleContainer: ElementFinder = element(by.css('adf-toolbar-title')); - toolbarTitle: ElementFinder = element(by.xpath('//mat-toolbar/adf-toolbar-title/div/h4')); - reportMessage: ElementFinder = element(by.css('div[class="ng-star-inserted"] span')); + toolbarTitleInput = element(by.css('input[data-automation-id="reportName"]')); + toolbarTitleContainer = element(by.css('adf-toolbar-title')); + toolbarTitle = element(by.xpath('//mat-toolbar/adf-toolbar-title/div/h4')); + reportMessage = element(by.css('div[class="ng-star-inserted"] span')); - async getReport(title): Promise { - const reportTitle: ElementFinder = element(by.css(`mat-icon[data-automation-id="${title}_filter"]`)); + async getReport(title: string): Promise { + const reportTitle = element(by.css(`mat-icon[data-automation-id="${title}_filter"]`)); await BrowserActions.click(reportTitle); } diff --git a/e2e/pages/adf/process-services/attach-form.page.ts b/e2e/pages/adf/process-services/attach-form.page.ts index 291888772a..6fa8e13909 100644 --- a/e2e/pages/adf/process-services/attach-form.page.ts +++ b/e2e/pages/adf/process-services/attach-form.page.ts @@ -15,17 +15,17 @@ * limitations under the License. */ -import { element, by, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; import { BrowserVisibility, BrowserActions, DropdownPage } from '@alfresco/adf-testing'; export class AttachFormPage { - noFormMessage: ElementFinder = element(by.css('.adf-empty-content__title')); - attachFormButton: ElementFinder = element(by.id('adf-attach-form-attach-button')); - completeButton: ElementFinder = element(by.id('adf-attach-form-complete-button')); - formDropdown: ElementFinder = element(by.id('form_id')); - cancelButton: ElementFinder = element(by.id('adf-attach-form-cancel-button')); - defaultTitle: ElementFinder = element(by.css('mat-card-title[class="mat-card-title mat-card-title"]')); + noFormMessage = element(by.css('.adf-empty-content__title')); + attachFormButton = element(by.id('adf-attach-form-attach-button')); + completeButton = element(by.id('adf-attach-form-complete-button')); + formDropdown = element(by.id('form_id')); + cancelButton = element(by.id('adf-attach-form-cancel-button')); + defaultTitle = element(by.css('mat-card-title[class="mat-card-title mat-card-title"]')); attachFormDropdown = new DropdownPage(element(by.css("div[class='adf-attach-form-row']"))); async checkNoFormMessageIsDisplayed(): Promise { diff --git a/e2e/pages/adf/process-services/attachment-list.page.ts b/e2e/pages/adf/process-services/attachment-list.page.ts index 7534659b04..3141c0c62f 100644 --- a/e2e/pages/adf/process-services/attachment-list.page.ts +++ b/e2e/pages/adf/process-services/attachment-list.page.ts @@ -15,33 +15,33 @@ * limitations under the License. */ -import { element, by, protractor, browser, ElementFinder } from 'protractor'; +import { element, by, protractor, browser } from 'protractor'; import * as path from 'path'; import * as remote from 'selenium-webdriver/remote'; import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; export class AttachmentListPage { - attachFileButton: ElementFinder = element(by.css("input[type='file']")); - buttonMenu: ElementFinder = element(by.css("button[data-automation-id='action_menu_0']")); - viewButton: ElementFinder = element(by.css("button[data-automation-id*='MENU_ACTIONS.VIEW_CONTENT']")); - removeButton: ElementFinder = element(by.css("button[data-automation-id*='MENU_ACTIONS.REMOVE_CONTENT']")); - downloadButton: ElementFinder = element(by.css("button[data-automation-id*='MENU_ACTIONS.DOWNLOAD_CONTENT']")); - noContentContainer: ElementFinder = element(by.css("div[class*='adf-no-content-container']")); + attachFileButton = element(by.css("input[type='file']")); + buttonMenu = element(by.css("button[data-automation-id='action_menu_0']")); + viewButton = element(by.css("button[data-automation-id*='MENU_ACTIONS.VIEW_CONTENT']")); + removeButton = element(by.css("button[data-automation-id*='MENU_ACTIONS.REMOVE_CONTENT']")); + downloadButton = element(by.css("button[data-automation-id*='MENU_ACTIONS.DOWNLOAD_CONTENT']")); + noContentContainer = element(by.css("div[class*='adf-no-content-container']")); async checkEmptyAttachmentList(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.noContentContainer); } - async clickAttachFileButton(fileLocation): Promise { + async clickAttachFileButton(fileLocation: string): Promise { browser.setFileDetector(new remote.FileDetector()); await BrowserVisibility.waitUntilElementIsPresent(this.attachFileButton); await this.attachFileButton.sendKeys(path.resolve(path.join(browser.params.testConfig.main.rootPath, fileLocation))); } - async checkFileIsAttached(name): Promise { - const fileAttached: ElementFinder = element.all(by.css('div[data-automation-id="' + name + '"]')).first(); + async checkFileIsAttached(name: string): Promise { + const fileAttached = element.all(by.css('div[data-automation-id="' + name + '"]')).first(); await BrowserVisibility.waitUntilElementIsVisible(fileAttached); } @@ -49,7 +49,7 @@ export class AttachmentListPage { await BrowserVisibility.waitUntilElementIsNotVisible(this.attachFileButton); } - async viewFile(name): Promise { + async viewFile(name: string): Promise { await BrowserActions.closeMenuAndDialogs(); await BrowserActions.click(element.all(by.css('div[data-automation-id="' + name + '"]')).first()); await BrowserActions.click(this.buttonMenu); @@ -58,7 +58,7 @@ export class AttachmentListPage { await browser.sleep(500); } - async removeFile(name): Promise { + async removeFile(name: string): Promise { await BrowserActions.closeMenuAndDialogs(); await BrowserActions.click(element.all(by.css('div[data-automation-id="' + name + '"]')).first()); await BrowserActions.click(this.buttonMenu); @@ -67,7 +67,7 @@ export class AttachmentListPage { await browser.sleep(500); } - async downloadFile(name): Promise { + async downloadFile(name: string): Promise { await BrowserActions.closeMenuAndDialogs(); await BrowserActions.click(element.all(by.css('div[data-automation-id="' + name + '"]')).first()); await BrowserActions.click(this.buttonMenu); @@ -75,16 +75,16 @@ export class AttachmentListPage { await BrowserActions.click(this.downloadButton); } - async doubleClickFile(name): Promise { + async doubleClickFile(name: string): Promise { await BrowserActions.closeMenuAndDialogs(); await BrowserVisibility.waitUntilElementIsVisible(element.all(by.css('div[data-automation-id="' + name + '"]')).first()); - const fileAttached: ElementFinder = element.all(by.css('div[data-automation-id="' + name + '"]')).first(); + const fileAttached = element.all(by.css('div[data-automation-id="' + name + '"]')).first(); await BrowserActions.click(fileAttached); await browser.actions().sendKeys(protractor.Key.ENTER).perform(); } - async checkFileIsRemoved(name): Promise { - const fileAttached: ElementFinder = element.all(by.css('div[data-automation-id="' + name + '"]')).first(); + async checkFileIsRemoved(name: string): Promise { + const fileAttached = element.all(by.css('div[data-automation-id="' + name + '"]')).first(); await BrowserVisibility.waitUntilElementIsNotVisible(fileAttached); } diff --git a/e2e/pages/adf/process-services/dialog/app-settings-toggles.page.ts b/e2e/pages/adf/process-services/dialog/app-settings-toggles.page.ts index c01379a027..0c04d0e405 100644 --- a/e2e/pages/adf/process-services/dialog/app-settings-toggles.page.ts +++ b/e2e/pages/adf/process-services/dialog/app-settings-toggles.page.ts @@ -16,15 +16,15 @@ */ import { TogglePage } from '@alfresco/adf-testing'; -import { element, by, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; export class AppSettingsTogglesPage { - togglePage: TogglePage = new TogglePage(); + togglePage = new TogglePage(); - showDetailsHeaderToggle: ElementFinder = element(by.id('adf-show-header')); - showTaskFilterIconsToggle: ElementFinder = element(by.id('adf-show-task-filter-icon')); - showProcessFilterIconsToggle: ElementFinder = element(by.id('adf-show-process-filter-icon')); + showDetailsHeaderToggle = element(by.id('adf-show-header')); + showTaskFilterIconsToggle = element(by.id('adf-show-task-filter-icon')); + showProcessFilterIconsToggle = element(by.id('adf-show-process-filter-icon')); async enableShowHeader(): Promise { await this.togglePage.enableToggle(this.showDetailsHeaderToggle); diff --git a/e2e/pages/adf/process-services/dialog/create-checklist-dialog.page.ts b/e2e/pages/adf/process-services/dialog/create-checklist-dialog.page.ts index 596edd14fa..ac3c0a7db0 100644 --- a/e2e/pages/adf/process-services/dialog/create-checklist-dialog.page.ts +++ b/e2e/pages/adf/process-services/dialog/create-checklist-dialog.page.ts @@ -15,17 +15,17 @@ * limitations under the License. */ -import { element, by, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; export class ChecklistDialog { - nameField: ElementFinder = element(by.css('input[data-automation-id="checklist-name"]')); - addChecklistButton: ElementFinder = element(by.css('button[id="add-check"] span')); - closeButton: ElementFinder = element(by.css('button[id="close-check-dialog"] span')); - dialogTitle: ElementFinder = element(by.id('add-checklist-title')); + nameField = element(by.css('input[data-automation-id="checklist-name"]')); + addChecklistButton = element(by.css('button[id="add-check"] span')); + closeButton = element(by.css('button[id="close-check-dialog"] span')); + dialogTitle = element(by.id('add-checklist-title')); - async addName(name): Promise { + async addName(name: string): Promise { await BrowserActions.clearSendKeys(this.nameField, name); } diff --git a/e2e/pages/adf/process-services/dialog/start-task-dialog.page.ts b/e2e/pages/adf/process-services/dialog/start-task-dialog.page.ts index 2e2ee6654a..bc6aaede58 100644 --- a/e2e/pages/adf/process-services/dialog/start-task-dialog.page.ts +++ b/e2e/pages/adf/process-services/dialog/start-task-dialog.page.ts @@ -20,13 +20,13 @@ import { BrowserVisibility, BrowserActions, DropdownPage } from '@alfresco/adf-t export class StartTaskDialogPage { - name: ElementFinder = element(by.css('input[id="name_id"]')); - dueDate: ElementFinder = element(by.css('input[id="date_id"]')); - description: ElementFinder = element(by.css('textarea[id="description_id"]')); - assignee: ElementFinder = element(by.css('div#people-widget-content input')); - startButton: ElementFinder = element(by.css('button[id="button-start"]')); - startButtonEnabled: ElementFinder = element(by.css('button[id="button-start"]:not(disabled)')); - cancelButton: ElementFinder = element(by.css('button[id="button-cancel"]')); + name = element(by.css('input[id="name_id"]')); + dueDate = element(by.css('input[id="date_id"]')); + description = element(by.css('textarea[id="description_id"]')); + assignee = element(by.css('div#people-widget-content input')); + startButton = element(by.css('button[id="button-start"]')); + startButtonEnabled = element(by.css('button[id="button-start"]:not(disabled)')); + cancelButton = element(by.css('button[id="button-cancel"]')); selectFormDropdown = new DropdownPage(element(by.css('mat-select[id="form_id"]'))); selectAssigneeDropdown = new DropdownPage(); @@ -88,7 +88,7 @@ export class StartTaskDialogPage { } async checkValidationErrorIsDisplayed(error: string, elementRef = 'mat-error'): Promise { - const errorElement: ElementFinder = element(by.cssContainingText(elementRef, error)); + const errorElement = element(by.cssContainingText(elementRef, error)); await BrowserVisibility.waitUntilElementIsVisible(errorElement); } } diff --git a/e2e/pages/adf/process-services/filters.page.ts b/e2e/pages/adf/process-services/filters.page.ts index fdcbbf81ec..4b38ebf646 100644 --- a/e2e/pages/adf/process-services/filters.page.ts +++ b/e2e/pages/adf/process-services/filters.page.ts @@ -16,11 +16,11 @@ */ import { BrowserActions, BrowserVisibility, DataTableComponentPage } from '@alfresco/adf-testing'; -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; export class FiltersPage { - activeFilter: ElementFinder = element(by.css('.adf-active')); + activeFilter = element(by.css('.adf-active')); dataTable: DataTableComponentPage = new DataTableComponentPage(); async getActiveFilter(): Promise { @@ -41,7 +41,7 @@ export class FiltersPage { } async checkFilterIsHighlighted(filterName: string): Promise { - const highlightedFilter: ElementFinder = element(by.css(`.adf-active [data-automation-id='${filterName}_filter']`)); + const highlightedFilter = element(by.css(`.adf-active [data-automation-id='${filterName}_filter']`)); await BrowserVisibility.waitUntilElementIsVisible(highlightedFilter); } } diff --git a/e2e/pages/adf/process-services/process-details.page.ts b/e2e/pages/adf/process-services/process-details.page.ts index 4c0561253b..bbdc30fa63 100644 --- a/e2e/pages/adf/process-services/process-details.page.ts +++ b/e2e/pages/adf/process-services/process-details.page.ts @@ -15,32 +15,32 @@ * limitations under the License. */ -import { by, element, ElementFinder, protractor } from 'protractor'; +import { by, element, protractor } from 'protractor'; import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; export class ProcessDetailsPage { - processTitle: ElementFinder = element(by.css('mat-card-title[class="mat-card-title"]')); - processDetailsMessage: ElementFinder = element(by.css('adf-process-instance-details div[class="ng-star-inserted"]')); - processStatusField: ElementFinder = element(by.css('[data-automation-id="card-textitem-value-status"]')); - processEndDateField: ElementFinder = element(by.css('span[data-automation-id="card-dateitem-ended"]')); - processCategoryField: ElementFinder = element(by.css('[data-automation-id="card-textitem-value-category"]')); - processBusinessKeyField: ElementFinder = element(by.css('[data-automation-id="card-textitem-value-businessKey"]')); - processCreatedByField: ElementFinder = element(by.css('[data-automation-id="card-textitem-value-assignee"]')); - processCreatedField: ElementFinder = element(by.css('span[data-automation-id="card-dateitem-created"]')); - processIdField: ElementFinder = element(by.css('[data-automation-id="card-textitem-value-id"]')); - processDescription: ElementFinder = element(by.css('[data-automation-id="card-textitem-value-description"]')); - showDiagramButtonDisabled: ElementFinder = element(by.css('button[id="show-diagram-button"][disabled]')); - propertiesList: ElementFinder = element(by.css('div[class="adf-property-list"]')); - showDiagramButton: ElementFinder = element(by.id('show-diagram-button')); - diagramCanvas: ElementFinder = element(by.css('svg[xmlns="http://www.w3.org/2000/svg"]')); - backButton: ElementFinder = element(by.css('app-show-diagram button[class="mat-mini-fab mat-accent"]')); - commentInput: ElementFinder = element(by.id('comment-input')); - auditLogButton: ElementFinder = element(by.css('button[adf-process-audit]')); - auditLogEmptyListMessage: ElementFinder = element(by.css('.app-empty-list-header')); - cancelProcessButton: ElementFinder = element(by.css('div[data-automation-id="header-status"] > button')); - activeTask: ElementFinder = element(by.css('div[data-automation-id="active-tasks"]')); - completedTask: ElementFinder = element(by.css('div[data-automation-id="completed-tasks"]')); - taskTitle: ElementFinder = element(by.css('h2[class="adf-activiti-task-details__header"]')); + processTitle = element(by.css('mat-card-title[class="mat-card-title"]')); + processDetailsMessage = element(by.css('adf-process-instance-details div[class="ng-star-inserted"]')); + processStatusField = element(by.css('[data-automation-id="card-textitem-value-status"]')); + processEndDateField = element(by.css('span[data-automation-id="card-dateitem-ended"]')); + processCategoryField = element(by.css('[data-automation-id="card-textitem-value-category"]')); + processBusinessKeyField = element(by.css('[data-automation-id="card-textitem-value-businessKey"]')); + processCreatedByField = element(by.css('[data-automation-id="card-textitem-value-assignee"]')); + processCreatedField = element(by.css('span[data-automation-id="card-dateitem-created"]')); + processIdField = element(by.css('[data-automation-id="card-textitem-value-id"]')); + processDescription = element(by.css('[data-automation-id="card-textitem-value-description"]')); + showDiagramButtonDisabled = element(by.css('button[id="show-diagram-button"][disabled]')); + propertiesList = element(by.css('div[class="adf-property-list"]')); + showDiagramButton = element(by.id('show-diagram-button')); + diagramCanvas = element(by.css('svg[xmlns="http://www.w3.org/2000/svg"]')); + backButton = element(by.css('app-show-diagram button[class="mat-mini-fab mat-accent"]')); + commentInput = element(by.id('comment-input')); + auditLogButton = element(by.css('button[adf-process-audit]')); + auditLogEmptyListMessage = element(by.css('.app-empty-list-header')); + cancelProcessButton = element(by.css('div[data-automation-id="header-status"] > button')); + activeTask = element(by.css('div[data-automation-id="active-tasks"]')); + completedTask = element(by.css('div[data-automation-id="completed-tasks"]')); + taskTitle = element(by.css('h2[class="adf-activiti-task-details__header"]')); async checkDetailsAreDisplayed(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.processStatusField); @@ -115,8 +115,8 @@ export class ProcessDetailsPage { await this.commentInput.sendKeys(protractor.Key.ENTER); } - async checkCommentIsDisplayed(comment): Promise { - const commentInserted: ElementFinder = element(by.cssContainingText('div[id="comment-message"]', comment)); + async checkCommentIsDisplayed(comment: string): Promise { + const commentInserted = element(by.cssContainingText('div[id="comment-message"]', comment)); await BrowserVisibility.waitUntilElementIsVisible(commentInserted); } diff --git a/e2e/pages/adf/process-services/process-filters.page.ts b/e2e/pages/adf/process-services/process-filters.page.ts index 1af4393630..dc4d1f9dea 100644 --- a/e2e/pages/adf/process-services/process-filters.page.ts +++ b/e2e/pages/adf/process-services/process-filters.page.ts @@ -16,23 +16,23 @@ */ import { BrowserActions, BrowserVisibility, DataTableComponentPage, StartProcessPage } from '@alfresco/adf-testing'; -import { by, element, ElementFinder, Locator } from 'protractor'; +import { by, element } from 'protractor'; export class ProcessFiltersPage { dataTable = new DataTableComponentPage(); - runningFilter: ElementFinder = element(by.css('button[data-automation-id="Running_filter"]')); - completedFilter: ElementFinder = element(by.css('button[data-automation-id="Completed_filter"]')); - allFilter: ElementFinder = element(by.css('button[data-automation-id="All_filter"]')); - createProcessButton: ElementFinder = element(by.css('.app-processes-menu button[data-automation-id="create-button"] > span')); - newProcessButton: ElementFinder = element(by.css('div > button[data-automation-id="btn-start-process"]')); - processesPage: ElementFinder = element(by.css('div[class="app-grid"] > div[class="app-grid-item app-processes-menu"]')); - accordionMenu: ElementFinder = element(by.css('.app-processes-menu mat-accordion')); - buttonWindow: ElementFinder = element(by.css('div > button[data-automation-id="btn-start-process"] > div')); - noContentMessage: ElementFinder = element.all(by.css('div[class="adf-empty-content__title"]')).first(); - rows: Locator = by.css('adf-process-instance-list div[class="adf-datatable-body"] adf-datatable-row[class*="adf-datatable-row"]'); - tableBody: ElementFinder = element.all(by.css('adf-datatable div[class="adf-datatable-body"]')).first(); - nameColumn: Locator = by.css('div[class*="adf-datatable-body"] adf-datatable-row[class*="adf-datatable-row"] div[title="Name"] span'); + runningFilter = element(by.css('button[data-automation-id="Running_filter"]')); + completedFilter = element(by.css('button[data-automation-id="Completed_filter"]')); + allFilter = element(by.css('button[data-automation-id="All_filter"]')); + createProcessButton = element(by.css('.app-processes-menu button[data-automation-id="create-button"] > span')); + newProcessButton = element(by.css('div > button[data-automation-id="btn-start-process"]')); + processesPage = element(by.css('div[class="app-grid"] > div[class="app-grid-item app-processes-menu"]')); + accordionMenu = element(by.css('.app-processes-menu mat-accordion')); + buttonWindow = element(by.css('div > button[data-automation-id="btn-start-process"] > div')); + noContentMessage = element.all(by.css('div[class="adf-empty-content__title"]')).first(); + rows = by.css('adf-process-instance-list div[class="adf-datatable-body"] adf-datatable-row[class*="adf-datatable-row"]'); + tableBody = element.all(by.css('adf-datatable div[class="adf-datatable-body"]')).first(); + nameColumn = by.css('div[class*="adf-datatable-body"] adf-datatable-row[class*="adf-datatable-row"] div[title="Name"] span'); processIcon = by.css('adf-icon[data-automation-id="adf-filter-icon"]'); async startProcess(): Promise { @@ -71,14 +71,14 @@ export class ProcessFiltersPage { await BrowserVisibility.waitUntilElementIsVisible(this.noContentMessage); } - async selectFromProcessList(title): Promise { + async selectFromProcessList(title: string): Promise { await BrowserActions.closeMenuAndDialogs(); - const processName: ElementFinder = element.all(by.css(`div[data-automation-id="text_${title}"]`)).first(); + const processName = element.all(by.css(`div[data-automation-id="text_${title}"]`)).first(); await BrowserActions.click(processName); } - async checkFilterIsHighlighted(filterName): Promise { - const processNameHighlighted: ElementFinder = element(by.css(`adf-process-instance-filters .adf-active button[data-automation-id='${filterName}_filter']`)); + async checkFilterIsHighlighted(filterName: string): Promise { + const processNameHighlighted = element(by.css(`adf-process-instance-filters .adf-active button[data-automation-id='${filterName}_filter']`)); await BrowserVisibility.waitUntilElementIsVisible(processNameHighlighted); } @@ -103,26 +103,26 @@ export class ProcessFiltersPage { return this.dataTable.getAllRowsColumnValues('Name'); } - async checkFilterIsDisplayed(name): Promise { - const filterName: ElementFinder = element(by.css(`button[data-automation-id='${name}_filter']`)); + async checkFilterIsDisplayed(name: string): Promise { + const filterName = element(by.css(`button[data-automation-id='${name}_filter']`)); await BrowserVisibility.waitUntilElementIsVisible(filterName); } - async checkFilterHasNoIcon(name): Promise { - const filterName: ElementFinder = element(by.css(`button[data-automation-id='${name}_filter']`)); + async checkFilterHasNoIcon(name: string): Promise { + const filterName = element(by.css(`button[data-automation-id='${name}_filter']`)); await BrowserVisibility.waitUntilElementIsVisible(filterName); await BrowserVisibility.waitUntilElementIsNotVisible(filterName.element(this.processIcon)); } - async getFilterIcon(name): Promise { - const filterName: ElementFinder = element(by.css(`button[data-automation-id='${name}_filter']`)); + async getFilterIcon(name: string): Promise { + const filterName = element(by.css(`button[data-automation-id='${name}_filter']`)); await BrowserVisibility.waitUntilElementIsVisible(filterName); const icon = filterName.element(this.processIcon); return BrowserActions.getText(icon); } - async checkFilterIsNotDisplayed(name): Promise { - const filterName: ElementFinder = element(by.css(`button[data-automation-id='${name}_filter']`)); + async checkFilterIsNotDisplayed(name: string): Promise { + const filterName = element(by.css(`button[data-automation-id='${name}_filter']`)); await BrowserVisibility.waitUntilElementIsNotVisible(filterName); } diff --git a/e2e/pages/adf/process-services/process-list.page.ts b/e2e/pages/adf/process-services/process-list.page.ts index bd70876c54..ac4260bab9 100644 --- a/e2e/pages/adf/process-services/process-list.page.ts +++ b/e2e/pages/adf/process-services/process-list.page.ts @@ -16,12 +16,12 @@ */ import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; -import { element, by, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; export class ProcessListPage { - processListTitle: ElementFinder = element(by.css('div[class="adf-empty-content__title"]')); - processInstanceList: ElementFinder = element(by.css('adf-process-instance-list')); + processListTitle = element(by.css('div[class="adf-empty-content__title"]')); + processInstanceList = element(by.css('adf-process-instance-list')); getDisplayedProcessListTitle(): Promise { return BrowserActions.getText(this.processListTitle); diff --git a/e2e/pages/adf/process-services/process-service-tab-bar.page.ts b/e2e/pages/adf/process-services/process-service-tab-bar.page.ts index c6a1e04f63..c6d797ad47 100644 --- a/e2e/pages/adf/process-services/process-service-tab-bar.page.ts +++ b/e2e/pages/adf/process-services/process-service-tab-bar.page.ts @@ -16,15 +16,15 @@ */ import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; -import { element, by, browser, ElementFinder } from 'protractor'; +import { element, by, browser } from 'protractor'; export class ProcessServiceTabBarPage { - tasksButton: ElementFinder = element.all(by.cssContainingText('div[class*="mat-tab-label"] .mat-tab-labels div', 'Tasks')).first(); - processButton: ElementFinder = element.all(by.cssContainingText('div[class*="mat-tab-label"] .mat-tab-labels div', 'Process')).first(); - reportsButton: ElementFinder = element.all(by.cssContainingText('div[class*="mat-tab-label"] .mat-tab-labels div', 'Reports')).first(); - settingsButton: ElementFinder = element.all(by.cssContainingText('div[class*="mat-tab-label"] .mat-tab-labels div', 'Settings')).first(); - reportsButtonSelected: ElementFinder = element.all(by.cssContainingText('div[class*="mat-tab-label"] .mat-tab-labels div[aria-selected="true"]', 'Reports')).first(); + tasksButton = element.all(by.cssContainingText('div[class*="mat-tab-label"] .mat-tab-labels div', 'Tasks')).first(); + processButton = element.all(by.cssContainingText('div[class*="mat-tab-label"] .mat-tab-labels div', 'Process')).first(); + reportsButton = element.all(by.cssContainingText('div[class*="mat-tab-label"] .mat-tab-labels div', 'Reports')).first(); + settingsButton = element.all(by.cssContainingText('div[class*="mat-tab-label"] .mat-tab-labels div', 'Settings')).first(); + reportsButtonSelected = element.all(by.cssContainingText('div[class*="mat-tab-label"] .mat-tab-labels div[aria-selected="true"]', 'Reports')).first(); async clickTasksButton(): Promise { await BrowserActions.click(this.tasksButton); diff --git a/e2e/pages/adf/process-services/process-services.page.ts b/e2e/pages/adf/process-services/process-services.page.ts index 9ee0535895..64008ece0a 100644 --- a/e2e/pages/adf/process-services/process-services.page.ts +++ b/e2e/pages/adf/process-services/process-services.page.ts @@ -17,14 +17,14 @@ import { ProcessServiceTabBarPage } from './process-service-tab-bar.page'; -import { element, by, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; import { __await } from 'tslib'; export class ProcessServicesPage { - apsAppsContainer: ElementFinder = element(by.css('div[class="adf-app-listgrid ng-star-inserted"]')); - taskApp: ElementFinder = element(by.css('mat-card[title="Task App"]')); + apsAppsContainer = element(by.css('div[class="adf-app-listgrid ng-star-inserted"]')); + taskApp = element(by.css('mat-card[title="Task App"]')); iconTypeLocator = by.css('mat-icon[class*="card-logo-icon"]'); descriptionLocator = by.css('mat-card-subtitle[class*="subtitle"]'); @@ -32,8 +32,8 @@ export class ProcessServicesPage { await BrowserVisibility.waitUntilElementIsVisible(this.apsAppsContainer); } - async goToApp(applicationName): Promise { - const app: ElementFinder = element(by.css('mat-card[title="' + applicationName + '"]')); + async goToApp(applicationName: string): Promise { + const app = element(by.css('mat-card[title="' + applicationName + '"]')); await BrowserActions.click(app); return new ProcessServiceTabBarPage(); } @@ -43,33 +43,33 @@ export class ProcessServicesPage { return new ProcessServiceTabBarPage(); } - async getAppIconType(applicationName): Promise { - const app: ElementFinder = element(by.css('mat-card[title="' + applicationName + '"]')); + async getAppIconType(applicationName: string): Promise { + const app = element(by.css('mat-card[title="' + applicationName + '"]')); await BrowserVisibility.waitUntilElementIsVisible(app); const iconType = app.element(this.iconTypeLocator); return BrowserActions.getText(iconType); } - async getBackgroundColor(applicationName): Promise { - const app: ElementFinder = element(by.css('mat-card[title="' + applicationName + '"]')); + async getBackgroundColor(applicationName: string): Promise { + const app = element(by.css('mat-card[title="' + applicationName + '"]')); await BrowserVisibility.waitUntilElementIsVisible(app); return app.getCssValue('background-color'); } - async getDescription(applicationName): Promise { - const app: ElementFinder = element(by.css('mat-card[title="' + applicationName + '"]')); + async getDescription(applicationName: string): Promise { + const app = element(by.css('mat-card[title="' + applicationName + '"]')); await BrowserVisibility.waitUntilElementIsVisible(app); const description = app.element(this.descriptionLocator); return BrowserActions.getText(description); } - async checkAppIsNotDisplayed(applicationName): Promise { - const app: ElementFinder = element(by.css('mat-card[title="' + applicationName + '"]')); + async checkAppIsNotDisplayed(applicationName: string): Promise { + const app = element(by.css('mat-card[title="' + applicationName + '"]')); await BrowserVisibility.waitUntilElementIsNotVisible(app); } - async checkAppIsDisplayed(applicationName): Promise { - const app: ElementFinder = element(by.css('mat-card[title="' + applicationName + '"]')); + async checkAppIsDisplayed(applicationName: string): Promise { + const app = element(by.css('mat-card[title="' + applicationName + '"]')); await BrowserVisibility.waitUntilElementIsVisible(app); } diff --git a/e2e/pages/adf/process-services/task-details.page.ts b/e2e/pages/adf/process-services/task-details.page.ts index a6117b78ae..dee0983157 100644 --- a/e2e/pages/adf/process-services/task-details.page.ts +++ b/e2e/pages/adf/process-services/task-details.page.ts @@ -16,55 +16,55 @@ */ import { BrowserActions, BrowserVisibility, DropdownPage, TabsPage } from '@alfresco/adf-testing'; -import { browser, by, element, ElementFinder, Key } from 'protractor'; +import { browser, by, element, Key } from 'protractor'; import { AppSettingsTogglesPage } from './dialog/app-settings-toggles.page'; export class TaskDetailsPage { appSettingsTogglesClass = new AppSettingsTogglesPage(); - formContent: ElementFinder = element(by.css('adf-form')); - formNameField: ElementFinder = element(by.css('[data-automation-id="card-textitem-value-formName"]')); - formNameButton: ElementFinder = element(by.css('[data-automation-id="card-textitem-toggle-formName"]')); - assigneeField: ElementFinder = element(by.css('[data-automation-id="card-textitem-value-assignee"]')); - assigneeButton: ElementFinder = element(by.css('[data-automation-id="card-textitem-toggle-assignee"]')); - statusField: ElementFinder = element(by.css('[data-automation-id="card-textitem-value-status"]')); - categoryField: ElementFinder = element(by.css('[data-automation-id="card-textitem-value-category"] ')); - parentNameField: ElementFinder = element(by.css('span[data-automation-id*="parentName"] span')); - parentTaskIdField: ElementFinder = element(by.css('[data-automation-id="card-textitem-value-parentTaskId"] ')); - durationField: ElementFinder = element(by.css('[data-automation-id="card-textitem-value-duration"] ')); - endDateField: ElementFinder = element.all(by.css('span[data-automation-id*="endDate"] span')).first(); - createdField: ElementFinder = element(by.css('span[data-automation-id="card-dateitem-created"] span')); - idField: ElementFinder = element.all(by.css('[data-automation-id="card-textitem-value-id"]')).first(); - descriptionField: ElementFinder = element(by.css('[data-automation-id="card-textitem-value-description"]')); - dueDateField: ElementFinder = element.all(by.css('span[data-automation-id*="dueDate"] span')).first(); - activitiesTitle: ElementFinder = element(by.css('div[class*="adf-info-drawer-layout-header-title"] div')); - commentField: ElementFinder = element(by.id('comment-input')); - addCommentButton: ElementFinder = element(by.css('[data-automation-id="comments-input-add"]')); - involvePeopleButton: ElementFinder = element(by.css('div[class*="add-people"]')); - addPeopleField: ElementFinder = element(by.css('input[data-automation-id="adf-people-search-input"]')); - addInvolvedUserButton: ElementFinder = element(by.css('button[id="add-people"] span')); + formContent = element(by.css('adf-form')); + formNameField = element(by.css('[data-automation-id="card-textitem-value-formName"]')); + formNameButton = element(by.css('[data-automation-id="card-textitem-toggle-formName"]')); + assigneeField = element(by.css('[data-automation-id="card-textitem-value-assignee"]')); + assigneeButton = element(by.css('[data-automation-id="card-textitem-toggle-assignee"]')); + statusField = element(by.css('[data-automation-id="card-textitem-value-status"]')); + categoryField = element(by.css('[data-automation-id="card-textitem-value-category"] ')); + parentNameField = element(by.css('span[data-automation-id*="parentName"] span')); + parentTaskIdField = element(by.css('[data-automation-id="card-textitem-value-parentTaskId"] ')); + durationField = element(by.css('[data-automation-id="card-textitem-value-duration"] ')); + endDateField = element.all(by.css('span[data-automation-id*="endDate"] span')).first(); + createdField = element(by.css('span[data-automation-id="card-dateitem-created"] span')); + idField = element.all(by.css('[data-automation-id="card-textitem-value-id"]')).first(); + descriptionField = element(by.css('[data-automation-id="card-textitem-value-description"]')); + dueDateField = element.all(by.css('span[data-automation-id*="dueDate"] span')).first(); + activitiesTitle = element(by.css('div[class*="adf-info-drawer-layout-header-title"] div')); + commentField = element(by.id('comment-input')); + addCommentButton = element(by.css('[data-automation-id="comments-input-add"]')); + involvePeopleButton = element(by.css('div[class*="add-people"]')); + addPeopleField = element(by.css('input[data-automation-id="adf-people-search-input"]')); + addInvolvedUserButton = element(by.css('button[id="add-people"] span')); emailInvolvedUser = by.xpath('following-sibling::div[@class="adf-people-email"]'); - taskDetailsInfoDrawer: ElementFinder = element(by.tagName('adf-info-drawer')); - taskDetailsSection: ElementFinder = element(by.css('div[data-automation-id="app-tasks-details"]')); - taskDetailsEmptySection: ElementFinder = element(by.css('div[data-automation-id="adf-tasks-details--empty"]')); - completeTask: ElementFinder = element(by.css('button[id="adf-no-form-complete-button"]')); - completeFormTask: ElementFinder = element(by.css('button[id="adf-form-complete"]')); - taskDetailsTitle: ElementFinder = element(by.css('h2[class="adf-activiti-task-details__header"] span')); - auditLogButton: ElementFinder = element(by.css('button[adf-task-audit]')); - noPeopleInvolved: ElementFinder = element(by.id('no-people-label')); - cancelInvolvePeopleButton: ElementFinder = element(by.id('close-people-search')); - involvePeopleHeader: ElementFinder = element(by.css('div[class="adf-search-text-header"]')); - removeInvolvedPeople: ElementFinder = element(by.css('button[data-automation-id="Remove"]')); - peopleTitle: ElementFinder = element(by.id('people-title')); - noFormMessage: ElementFinder = element(by.css('span[id*="no-form-message"]')); - cancelAttachForm: ElementFinder = element(by.id('adf-no-form-cancel-button')); - attachFormButton: ElementFinder = element(by.id('adf-no-form-attach-form-button')); - disabledAttachFormButton: ElementFinder = element(by.css('button[id="adf-no-form-attach-form-button"][disabled]')); - removeAttachForm: ElementFinder = element(by.id('adf-attach-form-remove-button')); - attachFormName: ElementFinder = element(by.css('span[class="adf-form-title ng-star-inserted"]')); - emptyTaskDetails: ElementFinder = element(by.css('adf-task-details > div > div')); - priority: ElementFinder = element(by.css('[data-automation-id*="card-textitem-value-priority"]')); + taskDetailsInfoDrawer = element(by.tagName('adf-info-drawer')); + taskDetailsSection = element(by.css('div[data-automation-id="app-tasks-details"]')); + taskDetailsEmptySection = element(by.css('div[data-automation-id="adf-tasks-details--empty"]')); + completeTask = element(by.css('button[id="adf-no-form-complete-button"]')); + completeFormTask = element(by.css('button[id="adf-form-complete"]')); + taskDetailsTitle = element(by.css('h2[class="adf-activiti-task-details__header"] span')); + auditLogButton = element(by.css('button[adf-task-audit]')); + noPeopleInvolved = element(by.id('no-people-label')); + cancelInvolvePeopleButton = element(by.id('close-people-search')); + involvePeopleHeader = element(by.css('div[class="adf-search-text-header"]')); + removeInvolvedPeople = element(by.css('button[data-automation-id="Remove"]')); + peopleTitle = element(by.id('people-title')); + noFormMessage = element(by.css('span[id*="no-form-message"]')); + cancelAttachForm = element(by.id('adf-no-form-cancel-button')); + attachFormButton = element(by.id('adf-no-form-attach-form-button')); + disabledAttachFormButton = element(by.css('button[id="adf-no-form-attach-form-button"][disabled]')); + removeAttachForm = element(by.id('adf-attach-form-remove-button')); + attachFormName = element(by.css('span[class="adf-form-title ng-star-inserted"]')); + emptyTaskDetails = element(by.css('adf-task-details > div > div')); + priority = element(by.css('[data-automation-id*="card-textitem-value-priority"]')); editableAssignee = element(by.css('[data-automation-id="card-textitem-value-assignee"][class*="clickable"]')); claimElement = element(by.css('[data-automation-id="header-claim-button"]')); releaseElement = element(by.css('[data-automation-id="header-unclaim-button"]')); @@ -261,18 +261,18 @@ export class TaskDetailsPage { await tabsPage.clickTabByTitle('Details'); } - async addComment(comment): Promise { + async addComment(comment: string): Promise { await BrowserActions.clearSendKeys(this.commentField, comment); await BrowserActions.click(this.addCommentButton); } - async checkCommentIsDisplayed(comment): Promise { - const row: ElementFinder = element(by.cssContainingText('div[id="comment-message"]', comment)); + async checkCommentIsDisplayed(comment: string): Promise { + const row = element(by.cssContainingText('div[id="comment-message"]', comment)); await BrowserVisibility.waitUntilElementIsVisible(row); } async checkIsEmptyCommentListDisplayed(): Promise { - const emptyList: ElementFinder = element(by.cssContainingText('div[id="comment-header"]', '(0)')); + const emptyList = element(by.cssContainingText('div[id="comment-header"]', '(0)')); await BrowserVisibility.waitUntilElementIsVisible(emptyList); } @@ -283,7 +283,7 @@ export class TaskDetailsPage { await BrowserActions.click(this.involvePeopleButton); } - async typeUser(user): Promise { + async typeUser(user: string): Promise { await BrowserActions.clearSendKeys(this.addPeopleField, user); } @@ -292,8 +292,8 @@ export class TaskDetailsPage { await BrowserActions.click(row); } - async checkUserIsSelected(user): Promise { - const row: ElementFinder = element(by.cssContainingText('div[class*="search-list-container"] div[class*="people-full-name"]', user)); + async checkUserIsSelected(user: string): Promise { + const row = element(by.cssContainingText('div[class*="search-list-container"] div[class*="people-full-name"]', user)); await BrowserVisibility.waitUntilElementIsVisible(row); } @@ -301,7 +301,7 @@ export class TaskDetailsPage { await BrowserActions.click(this.addInvolvedUserButton); } - getRowsUser(user) { + getRowsUser(user: string) { return element(by.cssContainingText('div[class*="people-full-name"]', user)); } diff --git a/e2e/pages/adf/process-services/tasks-list.page.ts b/e2e/pages/adf/process-services/tasks-list.page.ts index 3e31f9d9f7..667d5ec106 100644 --- a/e2e/pages/adf/process-services/tasks-list.page.ts +++ b/e2e/pages/adf/process-services/tasks-list.page.ts @@ -16,15 +16,15 @@ */ import { BrowserActions, BrowserVisibility, DataTableComponentPage } from '@alfresco/adf-testing'; -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; export class TasksListPage { - taskList: ElementFinder = element(by.css('adf-tasklist')); - noTasksFound: ElementFinder = element.all(by.css("div[class='adf-empty-content__title']")).first(); - dataTable: DataTableComponentPage = new DataTableComponentPage(this.taskList); + taskList = element(by.css('adf-tasklist')); + noTasksFound = element.all(by.css("div[class='adf-empty-content__title']")).first(); + dataTable = new DataTableComponentPage(this.taskList); - getDataTable() { + getDataTable(): DataTableComponentPage { return this.dataTable; } diff --git a/e2e/pages/adf/process-services/tasks.page.ts b/e2e/pages/adf/process-services/tasks.page.ts index db4c6a278f..19aeb19068 100644 --- a/e2e/pages/adf/process-services/tasks.page.ts +++ b/e2e/pages/adf/process-services/tasks.page.ts @@ -21,22 +21,22 @@ import { TaskDetailsPage } from './task-details.page'; import { FiltersPage } from './filters.page'; import { ChecklistDialog } from './dialog/create-checklist-dialog.page'; import { TasksListPage } from './tasks-list.page'; -import { element, by, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; import { BrowserVisibility, BrowserActions, FormFields } from '@alfresco/adf-testing'; export class TasksPage { - createButton: ElementFinder = element(by.css('button[data-automation-id="create-button"')); - newTaskButton: ElementFinder = element(by.css('button[data-automation-id="btn-start-task"]')); - addChecklistButton: ElementFinder = element(by.css('button[class*="adf-add-to-checklist-button"]')); + createButton = element(by.css('button[data-automation-id="create-button"')); + newTaskButton = element(by.css('button[data-automation-id="btn-start-task"]')); + addChecklistButton = element(by.css('button[class*="adf-add-to-checklist-button"]')); rowByRowName = by.xpath('ancestor::mat-chip'); checklistContainer = by.css('div[class*="checklist-menu"]'); taskTitle = 'h2[class="adf-activiti-task-details__header"] span'; rows = by.css('div[class*="adf-datatable-body"] adf-datatable-row[class*="adf-datatable-row"] div[class*="adf-datatable-cell"]'); - completeButtonNoForm: ElementFinder = element(by.id('adf-no-form-complete-button')); - checklistDialog: ElementFinder = element(by.id('checklist-dialog')); - checklistNoMessage: ElementFinder = element(by.id('checklist-none-message')); - numberOfChecklists: ElementFinder = element(by.css('[data-automation-id="checklist-label"] mat-chip')); + completeButtonNoForm = element(by.id('adf-no-form-complete-button')); + checklistDialog = element(by.id('checklist-dialog')); + checklistNoMessage = element(by.id('checklist-none-message')); + numberOfChecklists = element(by.css('[data-automation-id="checklist-label"] mat-chip')); sortByName = by.css('div[data-automation-id="auto_id_name"]'); async createNewTask(): Promise { @@ -90,7 +90,7 @@ export class TasksPage { } getRowsName(name) { - const row: ElementFinder = element(this.checklistContainer).element(by.cssContainingText('span', name)); + const row = element(this.checklistContainer).element(by.cssContainingText('span', name)); return row; } @@ -105,13 +105,13 @@ export class TasksPage { await BrowserVisibility.waitUntilElementIsVisible(checklistEle); } - async checkChecklistIsNotDisplayed(checklist): Promise { + async checkChecklistIsNotDisplayed(checklist: string): Promise { await BrowserVisibility.waitUntilElementIsNotVisible(element(this.checklistContainer).element(by.cssContainingText('span', checklist))); } - async checkTaskTitle(taskName): Promise { + async checkTaskTitle(taskName: string): Promise { await BrowserVisibility.waitUntilElementIsVisible(element(by.css(this.taskTitle))); - const title: ElementFinder = element(by.cssContainingText(this.taskTitle, taskName)); + const title = element(by.cssContainingText(this.taskTitle, taskName)); await BrowserVisibility.waitUntilElementIsVisible(title); } diff --git a/e2e/pages/adf/search-filters.page.ts b/e2e/pages/adf/search-filters.page.ts index 98c0f01e0f..e875578112 100644 --- a/e2e/pages/adf/search-filters.page.ts +++ b/e2e/pages/adf/search-filters.page.ts @@ -16,28 +16,28 @@ */ import { BrowserVisibility, DateRangeFilterPage, NumberRangeFilterPage, SearchCategoriesPage, SearchCheckListPage, SearchRadioPage, SearchSliderPage, SearchTextPage } from '@alfresco/adf-testing'; -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; export class SearchFiltersPage { searchCategoriesPage: SearchCategoriesPage = new SearchCategoriesPage(); - searchFilters: ElementFinder = element(by.css('adf-search-filter')); - fileTypeFilter: ElementFinder = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-SEARCH.FACET_FIELDS.TYPE"]')); - creatorFilter: ElementFinder = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-SEARCH.FACET_FIELDS.CREATOR"]')); - fileSizeFilter: ElementFinder = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-SEARCH.FACET_FIELDS.SIZE"]')); - nameFilter: ElementFinder = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-Name"]')); - checkListFilter: ElementFinder = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-Check List"]')); - createdDateRangeFilter: ElementFinder = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-Created Date (range)"]')); - typeFilter: ElementFinder = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-Type"]')); - sizeRangeFilter: ElementFinder = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-Content Size (range)"]')); - sizeSliderFilter: ElementFinder = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-Content Size"]')); - facetQueriesDefaultGroup: ElementFinder = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-SEARCH.FACET_QUERIES.MY_FACET_QUERIES"],' + + searchFilters = element(by.css('adf-search-filter')); + fileTypeFilter = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-SEARCH.FACET_FIELDS.TYPE"]')); + creatorFilter = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-SEARCH.FACET_FIELDS.CREATOR"]')); + fileSizeFilter = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-SEARCH.FACET_FIELDS.SIZE"]')); + nameFilter = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-Name"]')); + checkListFilter = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-Check List"]')); + createdDateRangeFilter = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-Created Date (range)"]')); + typeFilter = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-Type"]')); + sizeRangeFilter = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-Content Size (range)"]')); + sizeSliderFilter = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-Content Size"]')); + facetQueriesDefaultGroup = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-SEARCH.FACET_QUERIES.MY_FACET_QUERIES"],' + 'mat-expansion-panel[data-automation-id="expansion-panel-My facet queries"]')); - facetQueriesTypeGroup: ElementFinder = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-Type facet queries"]')); - facetQueriesSizeGroup: ElementFinder = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-Size facet queries"]')); - facetIntervalsByCreated: ElementFinder = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-The Created"]')); - facetIntervalsByModified: ElementFinder = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-TheModified"]')); + facetQueriesTypeGroup = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-Type facet queries"]')); + facetQueriesSizeGroup = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-Size facet queries"]')); + facetIntervalsByCreated = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-The Created"]')); + facetIntervalsByModified = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-TheModified"]')); async checkSearchFiltersIsDisplayed(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.searchFilters); @@ -71,7 +71,7 @@ export class SearchFiltersPage { return SearchCategoriesPage.radioFiltersPage(this.typeFilter); } - async checkCustomFacetFieldLabelIsDisplayed(fieldLabel): Promise { + async checkCustomFacetFieldLabelIsDisplayed(fieldLabel: string): Promise { await BrowserVisibility.waitUntilElementIsVisible(element(by.css(`mat-expansion-panel[data-automation-id="expansion-panel-${fieldLabel}"]`))); } diff --git a/e2e/pages/adf/search-results.page.ts b/e2e/pages/adf/search-results.page.ts index 95bdc0ac2d..a923407393 100644 --- a/e2e/pages/adf/search-results.page.ts +++ b/e2e/pages/adf/search-results.page.ts @@ -16,17 +16,17 @@ */ import { BrowserVisibility, DataTableComponentPage, SearchSortingPickerPage } from '@alfresco/adf-testing'; -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; import { ContentServicesPage } from './content-services.page'; export class SearchResultsPage { - noResultsMessage: ElementFinder = element(by.css('div[class="app-no-result-message"]')); - dataTable: DataTableComponentPage = new DataTableComponentPage(); - searchSortingPicker: SearchSortingPickerPage = new SearchSortingPickerPage(); - contentServices: ContentServicesPage = new ContentServicesPage(); + noResultsMessage = element(by.css('div[class="app-no-result-message"]')); + dataTable = new DataTableComponentPage(); + searchSortingPicker = new SearchSortingPickerPage(); + contentServices = new ContentServicesPage(); - getNodeHighlight(content) { + getNodeHighlight(content: string) { return this.dataTable.getCellByRowContentAndColumn('Display name', content, 'Search'); } @@ -34,7 +34,7 @@ export class SearchResultsPage { await this.dataTable.tableIsLoaded(); } - async checkContentIsDisplayed(content): Promise { + async checkContentIsDisplayed(content: string): Promise { await this.dataTable.checkContentIsDisplayed('Display name', content); } @@ -42,7 +42,7 @@ export class SearchResultsPage { return this.dataTable.numberOfRows(); } - async checkContentIsNotDisplayed(content): Promise { + async checkContentIsNotDisplayed(content: string): Promise { await this.dataTable.checkContentIsNotDisplayed('Display name', content); } @@ -54,11 +54,11 @@ export class SearchResultsPage { await BrowserVisibility.waitUntilElementIsNotVisible(this.noResultsMessage); } - async navigateToFolder(content): Promise { + async navigateToFolder(content: string): Promise { await this.dataTable.doubleClickRow('Display name', content); } - async deleteContent(content): Promise { + async deleteContent(content: string): Promise { await this.contentServices.deleteContent(content); } diff --git a/e2e/pages/adf/tag.page.ts b/e2e/pages/adf/tag.page.ts index ed26846b27..086ef3c488 100644 --- a/e2e/pages/adf/tag.page.ts +++ b/e2e/pages/adf/tag.page.ts @@ -15,25 +15,25 @@ * limitations under the License. */ -import { element, by, protractor, browser, ElementFinder, ElementArrayFinder } from 'protractor'; +import { element, by, protractor, browser } from 'protractor'; import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; export class TagPage { - addTagButton: ElementFinder = element(by.css('button[id="add-tag"]')); - insertNodeIdElement: ElementFinder = element(by.css('input[id="nodeId"]')); - newTagInput: ElementFinder = element(by.css('input[id="new-tag-text"]')); - tagListRow: ElementFinder = element(by.css('adf-tag-node-actions-list mat-list-item')); - tagListByNodeIdRow: ElementFinder = element(by.css('adf-tag-node-list mat-chip')); - errorMessage: ElementFinder = element(by.css('mat-hint[data-automation-id="errorMessage"]')); + addTagButton = element(by.css('button[id="add-tag"]')); + insertNodeIdElement = element(by.css('input[id="nodeId"]')); + newTagInput = element(by.css('input[id="new-tag-text"]')); + tagListRow = element(by.css('adf-tag-node-actions-list mat-list-item')); + tagListByNodeIdRow = element(by.css('adf-tag-node-list mat-chip')); + errorMessage = element(by.css('mat-hint[data-automation-id="errorMessage"]')); tagListRowLocator = by.css('adf-tag-node-actions-list mat-list-item div'); tagListByNodeIdRowLocator = by.css('adf-tag-node-list mat-chip span'); tagListContentServicesRowLocator = by.css('div[class*="adf-list-tag"]'); - showDeleteButton: ElementFinder = element(by.id('adf-remove-button-tag')); - showMoreButton: ElementFinder = element(by.css('button[data-automation-id="show-more-tags"]')); - showLessButton: ElementFinder = element(by.css('button[data-automation-id="show-fewer-tags"]')); - tagsOnPage: ElementArrayFinder = element.all(by.css('div[class*="adf-list-tag"]')); - confirmTag: ElementFinder = element(by.id('adf-tag-node-send')); + showDeleteButton = element(by.id('adf-remove-button-tag')); + showMoreButton = element(by.css('button[data-automation-id="show-more-tags"]')); + showLessButton = element(by.css('button[data-automation-id="show-fewer-tags"]')); + tagsOnPage = element.all(by.css('div[class*="adf-list-tag"]')); + confirmTag = element(by.id('adf-tag-node-send')); async getNodeId(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.insertNodeIdElement); @@ -59,13 +59,13 @@ export class TagPage { await BrowserActions.click(this.addTagButton); } - async deleteTagFromTagListByNodeId(name): Promise { - const deleteChip: ElementFinder = element(by.id('tag_chips_delete_' + name)); + async deleteTagFromTagListByNodeId(name: string): Promise { + const deleteChip = element(by.id('tag_chips_delete_' + name)); await BrowserActions.click(deleteChip); } - async deleteTagFromTagList(name): Promise { - const deleteChip: ElementFinder = element(by.id('tag_chips_delete_' + name)); + async deleteTagFromTagList(name: string): Promise { + const deleteChip = element(by.id('tag_chips_delete_' + name)); await BrowserActions.click(deleteChip); } @@ -84,23 +84,23 @@ export class TagPage { return this.addTagButton.isEnabled(); } - async checkTagIsDisplayedInTagList(tagName): Promise { - const tag: ElementFinder = element(by.cssContainingText('div[id*="tag_name"]', tagName)); + async checkTagIsDisplayedInTagList(tagName: string): Promise { + const tag = element(by.cssContainingText('div[id*="tag_name"]', tagName)); await BrowserVisibility.waitUntilElementIsVisible(tag); } - async checkTagIsNotDisplayedInTagList(tagName): Promise { - const tag: ElementFinder = element(by.cssContainingText('div[id*="tag_name"]', tagName)); + async checkTagIsNotDisplayedInTagList(tagName: string): Promise { + const tag = element(by.cssContainingText('div[id*="tag_name"]', tagName)); await BrowserVisibility.waitUntilElementIsNotVisible(tag); } async checkTagIsNotDisplayedInTagListByNodeId(tagName): Promise { - const tag: ElementFinder = element(by.cssContainingText('span[id*="tag_name"]', tagName)); + const tag = element(by.cssContainingText('span[id*="tag_name"]', tagName)); await BrowserVisibility.waitUntilElementIsNotVisible(tag); } async checkTagIsDisplayedInTagListByNodeId(tagName): Promise { - const tag: ElementFinder = element(by.cssContainingText('span[id*="tag_name"]', tagName)); + const tag = element(by.cssContainingText('span[id*="tag_name"]', tagName)); await BrowserVisibility.waitUntilElementIsVisible(tag); } @@ -113,7 +113,7 @@ export class TagPage { } async checkTagIsDisplayedInTagListContentServices(tagName): Promise { - const tag: ElementFinder = element(by.cssContainingText('div[class="adf-list-tag"][id*="tag_name"]', tagName)); + const tag = element(by.cssContainingText('div[class="adf-list-tag"][id*="tag_name"]', tagName)); await BrowserVisibility.waitUntilElementIsVisible(tag); } @@ -134,7 +134,7 @@ export class TagPage { } async checkListIsSorted(sortOrder, locator): Promise { - const tagList: ElementArrayFinder = element.all(locator); + const tagList = element.all(locator); await BrowserVisibility.waitUntilElementIsVisible(tagList.first()); const initialList = []; await tagList.each(async (currentElement) => { @@ -149,13 +149,13 @@ export class TagPage { return initialList.toString() === sortedList.toString(); } - async checkDeleteTagFromTagListByNodeIdIsDisplayed(name): Promise { - const deleteChip: ElementFinder = element(by.id('tag_chips_delete_' + name)); + async checkDeleteTagFromTagListByNodeIdIsDisplayed(name: string): Promise { + const deleteChip = element(by.id('tag_chips_delete_' + name)); await BrowserVisibility.waitUntilElementIsVisible(deleteChip); } - async checkDeleteTagFromTagListByNodeIdIsNotDisplayed(name): Promise { - const deleteChip: ElementFinder = element(by.id('tag_chips_delete_' + name)); + async checkDeleteTagFromTagListByNodeIdIsNotDisplayed(name: string): Promise { + const deleteChip = element(by.id('tag_chips_delete_' + name)); await BrowserVisibility.waitUntilElementIsNotVisible(deleteChip); } diff --git a/e2e/pages/adf/trashcan.page.ts b/e2e/pages/adf/trashcan.page.ts index f3f0e7f6a6..edd32c673d 100644 --- a/e2e/pages/adf/trashcan.page.ts +++ b/e2e/pages/adf/trashcan.page.ts @@ -16,17 +16,16 @@ */ import { BrowserActions, BrowserVisibility, DocumentListPage } from '@alfresco/adf-testing'; - -import { element, by, ElementFinder, Locator } from 'protractor'; +import { element, by } from 'protractor'; export class TrashcanPage { - contentList: DocumentListPage = new DocumentListPage(element(by.css('adf-document-list'))); - rows: Locator = by.css('adf-document-list div[class*="adf-datatable-body"] adf-datatable-row[class*="adf-datatable-row"]'); - tableBody: ElementFinder = element.all(by.css('adf-document-list div[class="adf-datatable-body"]')).first(); - pagination: ElementFinder = element(by.css('adf-pagination')); - emptyTrashcan: ElementFinder = element(by.css('adf-empty-content')); - restoreButton: ElementFinder = element(by.css(`button[title='Restore']`)); + contentList = new DocumentListPage(element(by.css('adf-document-list'))); + rows = by.css('adf-document-list div[class*="adf-datatable-body"] adf-datatable-row[class*="adf-datatable-row"]'); + tableBody = element.all(by.css('adf-document-list div[class="adf-datatable-body"]')).first(); + pagination = element(by.css('adf-pagination')); + emptyTrashcan = element(by.css('adf-empty-content')); + restoreButton = element(by.css(`button[title='Restore']`)); async numberOfResultsDisplayed(): Promise { return element.all(this.rows).count(); diff --git a/e2e/pages/adf/version-manager.page.ts b/e2e/pages/adf/version-manager.page.ts index 5423c98c5a..907464eb4d 100644 --- a/e2e/pages/adf/version-manager.page.ts +++ b/e2e/pages/adf/version-manager.page.ts @@ -17,23 +17,23 @@ import * as path from 'path'; import { BrowserActions, BrowserVisibility, TogglePage } from '@alfresco/adf-testing'; -import { browser, by, element, ElementFinder } from 'protractor'; +import { browser, by, element } from 'protractor'; export class VersionManagePage { - togglePage: TogglePage = new TogglePage(); + togglePage = new TogglePage(); - showNewVersionButton: ElementFinder = element(by.id('adf-show-version-upload-button')); - uploadNewVersionInput: ElementFinder = element(by.css('adf-upload-version-button input[data-automation-id="upload-single-file"]')); - uploadNewVersionButton: ElementFinder = element(by.css('adf-upload-version-button')); - uploadNewVersionContainer: ElementFinder = element(by.id('adf-new-version-uploader-container')); - cancelButton: ElementFinder = element(by.id('adf-new-version-cancel')); - majorRadio: ElementFinder = element(by.id('adf-new-version-major')); - minorRadio: ElementFinder = element(by.id('adf-new-version-minor')); - commentText: ElementFinder = element(by.id('adf-new-version-text-area')); - readOnlySwitch: ElementFinder = element(by.id('adf-version-manager-switch-readonly')); - downloadSwitch: ElementFinder = element(by.id('adf-version-manager-switch-download')); - commentsSwitch: ElementFinder = element(by.id('adf-version-manager-switch-comments')); + showNewVersionButton = element(by.id('adf-show-version-upload-button')); + uploadNewVersionInput = element(by.css('adf-upload-version-button input[data-automation-id="upload-single-file"]')); + uploadNewVersionButton = element(by.css('adf-upload-version-button')); + uploadNewVersionContainer = element(by.id('adf-new-version-uploader-container')); + cancelButton = element(by.id('adf-new-version-cancel')); + majorRadio = element(by.id('adf-new-version-major')); + minorRadio = element(by.id('adf-new-version-minor')); + commentText = element(by.id('adf-new-version-text-area')); + readOnlySwitch = element(by.id('adf-version-manager-switch-readonly')); + downloadSwitch = element(by.id('adf-version-manager-switch-download')); + commentsSwitch = element(by.id('adf-version-manager-switch-comments')); async checkUploadNewVersionsButtonIsDisplayed(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.showNewVersionButton); @@ -43,48 +43,48 @@ export class VersionManagePage { await BrowserVisibility.waitUntilElementIsVisible(this.cancelButton); } - async uploadNewVersionFile(fileLocation): Promise { + async uploadNewVersionFile(fileLocation: string): Promise { await BrowserVisibility.waitUntilElementIsPresent(this.uploadNewVersionInput); await this.uploadNewVersionInput.sendKeys(path.resolve(path.join(browser.params.testConfig.main.rootPath, fileLocation))); await BrowserVisibility.waitUntilElementIsVisible(this.showNewVersionButton); } - async getFileVersionName(version): Promise { - const fileElement: ElementFinder = element(by.css(`[id="adf-version-list-item-name-${version}"]`)); + async getFileVersionName(version: string): Promise { + const fileElement = element(by.css(`[id="adf-version-list-item-name-${version}"]`)); return BrowserActions.getText(fileElement); } - async checkFileVersionExist(version): Promise { - const fileVersion: ElementFinder = element(by.id(`adf-version-list-item-version-${version}`)); + async checkFileVersionExist(version: string): Promise { + const fileVersion = element(by.id(`adf-version-list-item-version-${version}`)); await BrowserVisibility.waitUntilElementIsVisible(fileVersion); } - async checkFileVersionNotExist(version): Promise { - const fileVersion: ElementFinder = element(by.id(`adf-version-list-item-version-${version}`)); + async checkFileVersionNotExist(version: string): Promise { + const fileVersion = element(by.id(`adf-version-list-item-version-${version}`)); await BrowserVisibility.waitUntilElementIsNotVisible(fileVersion); } - async getFileVersionComment(version): Promise { - const fileComment: ElementFinder = element(by.id(`adf-version-list-item-comment-${version}`)); + async getFileVersionComment(version: string): Promise { + const fileComment = element(by.id(`adf-version-list-item-comment-${version}`)); return BrowserActions.getText(fileComment); } - async getFileVersionDate(version): Promise { - const fileDate: ElementFinder = element(by.id(`adf-version-list-item-date-${version}`)); + async getFileVersionDate(version: string): Promise { + const fileDate = element(by.id(`adf-version-list-item-date-${version}`)); return BrowserActions.getText(fileDate); } - async enterCommentText(text): Promise { + async enterCommentText(text: string): Promise { await BrowserActions.clearSendKeys(this.commentText, text); } async clickMajorChange(): Promise { - const radioMajor: ElementFinder = element(by.id(`adf-new-version-major`)); + const radioMajor = element(by.id(`adf-new-version-major`)); await BrowserActions.click(radioMajor); } async clickMinorChange(): Promise { - const radioMinor: ElementFinder = element(by.id(`adf-new-version-minor`)); + const radioMinor = element(by.id(`adf-new-version-minor`)); await BrowserActions.click(radioMinor); } @@ -131,7 +131,7 @@ export class VersionManagePage { await this.togglePage.enableToggle(this.commentsSwitch); } - async clickActionButton(version): Promise { + async clickActionButton(version: string): Promise { await BrowserActions.click(element(by.id(`adf-version-list-action-menu-button-${version}`))); await BrowserVisibility.waitUntilElementIsVisible(element(by.css('.cdk-overlay-container .mat-menu-content'))); } @@ -149,31 +149,31 @@ export class VersionManagePage { } async closeDisabledActionsMenu(): Promise { - const container: ElementFinder = element(by.css('div.cdk-overlay-backdrop.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing')); + const container = element(by.css('div.cdk-overlay-backdrop.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing')); await BrowserActions.closeDisabledMenu(); await BrowserVisibility.waitUntilElementIsNotVisible(container); } - async downloadFileVersion(version): Promise { + async downloadFileVersion(version: string): Promise { await this.clickActionButton(version); - const downloadButton: ElementFinder = element(by.id(`adf-version-list-action-download-${version}`)); + const downloadButton = element(by.id(`adf-version-list-action-download-${version}`)); await BrowserActions.click(downloadButton); await BrowserVisibility.waitUntilElementIsNotVisible(downloadButton); } - async deleteFileVersion(version): Promise { + async deleteFileVersion(version: string): Promise { await this.clickActionButton(version); - const deleteButton: ElementFinder = element(by.id(`adf-version-list-action-delete-${version}`)); + const deleteButton = element(by.id(`adf-version-list-action-delete-${version}`)); await BrowserActions.click(deleteButton); } - async restoreFileVersion(version): Promise { + async restoreFileVersion(version: string): Promise { await this.clickActionButton(version); - const restoreButton: ElementFinder = element(by.id(`adf-version-list-action-restore-${version}`)); + const restoreButton = element(by.id(`adf-version-list-action-restore-${version}`)); await BrowserActions.click(restoreButton); } - async checkActionsArePresent(version): Promise { + async checkActionsArePresent(version: string): Promise { await BrowserVisibility.waitUntilElementIsVisible(element(by.id(`adf-version-list-action-download-${version}`))); await BrowserVisibility.waitUntilElementIsVisible(element(by.id(`adf-version-list-action-delete-${version}`))); await BrowserVisibility.waitUntilElementIsVisible(element(by.id(`adf-version-list-action-restore-${version}`))); diff --git a/e2e/process-services/custom-tasks-filters.e2e.ts b/e2e/process-services/custom-tasks-filters.e2e.ts index 010780ddd5..9aa169343c 100644 --- a/e2e/process-services/custom-tasks-filters.e2e.ts +++ b/e2e/process-services/custom-tasks-filters.e2e.ts @@ -251,7 +251,7 @@ describe('Start Task - Custom App', () => { }); it('[C286406] Invalid values for items per page', async () => { - await taskListSinglePage.typeItemsPerPage('0'); + await taskListSinglePage.typeItemsPerPage(0); await taskListSinglePage.clickAppId(); await expect(await taskListSinglePage.getItemsPerPageFieldErrorMessage()).toEqual('Value must be greater than or equal to 1'); }); @@ -304,12 +304,12 @@ describe('Start Task - Custom App', () => { }); it('[C286405] Type invalid values to page field', async () => { - await taskListSinglePage.typePage('0'); + await taskListSinglePage.typePage(0); await taskListSinglePage.clickAppId(); await expect(await taskListSinglePage.getPageFieldErrorMessage()).toEqual('Value must be greater than or equal to 1'); await taskListSinglePage.clickResetButton(); - await taskListSinglePage.typePage('2'); + await taskListSinglePage.typePage(2); await taskListSinglePage.paginationPage().checkPaginationIsNotDisplayed(); }); diff --git a/e2e/search/components/search-date-range.e2e.ts b/e2e/search/components/search-date-range.e2e.ts index 46a19792b9..857fa8596c 100644 --- a/e2e/search/components/search-date-range.e2e.ts +++ b/e2e/search/components/search-date-range.e2e.ts @@ -16,7 +16,7 @@ */ import { DataTableComponentPage, DatePickerCalendarPage, DateUtil, LocalStorageUtil, LoginSSOPage } from '@alfresco/adf-testing'; -import { browser } from 'protractor'; +import { browser, ElementFinder } from 'protractor'; import { SearchDialogPage } from '../../pages/adf/dialog/search-dialog.page'; import { NavigationBarPage } from '../../pages/adf/navigation-bar.page'; import { SearchFiltersPage } from '../../pages/adf/search-filters.page'; @@ -121,13 +121,13 @@ describe('Search Date Range Filter', () => { await searchResults.sortByCreated('ASC'); - const results: any = dataTable.geCellElementDetail('Created'); + const results = await dataTable.geCellElementDetail('Created') as ElementFinder[]; for (const currentResult of results) { - const currentDate = currentResult.getAttribute('title'); - const currentDateFormatted = DateUtil.parse(currentDate, 'MMM DD, YYYY, h:mm:ss a'); + const currentDate = await currentResult.getAttribute('title'); + const currentDateFormatted = DateUtil.parse(currentDate, 'MMM DD, YYYY, h:mm:ss a'); - await expect(currentDateFormatted <= DateUtil.parse(toDate, 'DD-MM-YY')).toBe(true); - await expect(currentDateFormatted >= DateUtil.parse(fromDate, 'DD-MM-YY')).toBe(true); + await expect(currentDateFormatted <= DateUtil.parse(toDate, 'DD-MM-YY')).toBe(true); + await expect(currentDateFormatted >= DateUtil.parse(fromDate, 'DD-MM-YY')).toBe(true); } }); diff --git a/e2e/search/components/search-number-range.e2e.ts b/e2e/search/components/search-number-range.e2e.ts index 178123fe44..e48e92f5e5 100644 --- a/e2e/search/components/search-number-range.e2e.ts +++ b/e2e/search/components/search-number-range.e2e.ts @@ -29,7 +29,7 @@ import { SearchResultsPage } from '../../pages/adf/search-results.page'; import { NavigationBarPage } from '../../pages/adf/navigation-bar.page'; import { SearchFiltersPage } from '../../pages/adf/search-filters.page'; import { FileModel } from '../../models/ACS/file.model'; -import { browser } from 'protractor'; +import { browser, ElementFinder } from 'protractor'; import { SearchConfiguration } from '../search.config'; import { UsersActions } from '../../actions/users.actions'; @@ -173,7 +173,7 @@ describe('Search Number Range Filter', () => { await searchResults.tableIsLoaded(); await searchResults.sortBySize('DESC'); - const results: any = dataTable.geCellElementDetail('Size'); + const results = await dataTable.geCellElementDetail('Size') as ElementFinder[]; for (const currentResult of results) { try { const currentSize = await currentResult.getAttribute('title'); @@ -202,7 +202,7 @@ describe('Search Number Range Filter', () => { await sizeRangeFilter.clickApplyButton(); await searchResults.sortBySize('DESC'); - const results: any = dataTable.geCellElementDetail('Size'); + const results = await dataTable.geCellElementDetail('Size') as ElementFinder[]; for (const currentResult of results) { try { const currentSize = await currentResult.getAttribute('title'); @@ -218,7 +218,7 @@ describe('Search Number Range Filter', () => { await nameFilter.searchByName('z*'); await searchResults.sortBySize('DESC'); - const resultsSize: any = dataTable.geCellElementDetail('Size'); + const resultsSize = await dataTable.geCellElementDetail('Size') as ElementFinder[]; for (const currentResult of resultsSize) { try { const currentSize = await currentResult.getAttribute('title'); @@ -229,7 +229,7 @@ describe('Search Number Range Filter', () => { } } - const resultsDisplay: any = dataTable.geCellElementDetail('Display name'); + const resultsDisplay = await dataTable.geCellElementDetail('Display name') as ElementFinder[]; for (const currentResult of resultsDisplay) { try { const name = await currentResult.getAttribute('title'); @@ -269,7 +269,7 @@ describe('Search Number Range Filter', () => { await searchResults.tableIsLoaded(); await searchResults.sortBySize('DESC'); - const results: any = dataTable.geCellElementDetail('Size'); + const results = await dataTable.geCellElementDetail('Size') as ElementFinder[]; for (const currentResult of results) { try { const currentSize = await currentResult.getAttribute('title'); @@ -311,7 +311,7 @@ describe('Search Number Range Filter', () => { await sizeRangeFilter.clickApplyButton(); await searchResults.sortBySize('DESC'); - const results: any = dataTable.geCellElementDetail('Size'); + const results = await dataTable.geCellElementDetail('Size') as ElementFinder[]; for (const currentResult of results) { try { const currentSize = await currentResult.getAttribute('title'); @@ -327,7 +327,7 @@ describe('Search Number Range Filter', () => { await expect(await sizeRangeFilter.getFromNumber()).toEqual(''); await expect(await sizeRangeFilter.getToNumber()).toEqual(''); - const resultsSize: any = dataTable.geCellElementDetail('Size'); + const resultsSize = await dataTable.geCellElementDetail('Size') as ElementFinder[]; for (const currentResult of resultsSize) { try { const currentSize = await currentResult.getAttribute('title'); @@ -415,7 +415,7 @@ describe('Search Number Range Filter', () => { await searchResults.tableIsLoaded(); await searchResults.sortByCreated('DESC'); - const results: any = dataTable.geCellElementDetail('Created'); + const results = await dataTable.geCellElementDetail('Created') as ElementFinder[]; for (const currentResult of results) { const currentDate = await currentResult.getAttribute('title'); const currentDateFormatted = DateUtil.parse(currentDate, 'MMM DD, YYYY, h:mm:ss a'); diff --git a/e2e/search/components/search-slider.e2e.ts b/e2e/search/components/search-slider.e2e.ts index eafb4809e0..450d3d7d6f 100644 --- a/e2e/search/components/search-slider.e2e.ts +++ b/e2e/search/components/search-slider.e2e.ts @@ -28,7 +28,7 @@ import { SearchResultsPage } from '../../pages/adf/search-results.page'; import { NavigationBarPage } from '../../pages/adf/navigation-bar.page'; import { SearchFiltersPage } from '../../pages/adf/search-filters.page'; import { FileModel } from '../../models/ACS/file.model'; -import { browser } from 'protractor'; +import { browser, ElementFinder } from 'protractor'; import { SearchConfiguration } from '../search.config'; import { UsersActions } from '../../actions/users.actions'; @@ -124,7 +124,7 @@ describe('Search Slider Filter', () => { await searchResults.sortBySize('DESC'); await searchResults.tableIsLoaded(); - const results: any = dataTable.geCellElementDetail('Size'); + const results = await dataTable.geCellElementDetail('Size') as ElementFinder[]; for (const currentResult of results) { try { const currentSize = await currentResult.getAttribute('title'); @@ -141,7 +141,7 @@ describe('Search Slider Filter', () => { await searchResults.sortBySize('DESC'); await searchResults.tableIsLoaded(); - const resultsSize: any = dataTable.geCellElementDetail('Size'); + const resultsSize = await dataTable.geCellElementDetail('Size') as ElementFinder[]; for (const currentResult of resultsSize) { try { const currentSize = await currentResult.getAttribute('title'); diff --git a/e2e/search/components/search-sorting-picker.e2e.ts b/e2e/search/components/search-sorting-picker.e2e.ts index 849daa69e2..209c3faff5 100644 --- a/e2e/search/components/search-sorting-picker.e2e.ts +++ b/e2e/search/components/search-sorting-picker.e2e.ts @@ -180,13 +180,13 @@ describe('Search Sorting Picker', () => { it('[C277286] Should be able to sort the search results by "Created Date" ASC', async () => { await searchResults.sortByCreated('ASC'); - const results: any = searchResults.dataTable.geCellElementDetail('Created'); + const results = await searchResults.dataTable.geCellElementDetail('Created'); await expect(contentServices.checkElementsDateSortedAsc(results)).toBe(true); }); it('[C277287] Should be able to sort the search results by "Created Date" DESC', async () => { await searchResults.sortByCreated('DESC'); - const results = searchResults.dataTable.geCellElementDetail('Created'); + const results = await searchResults.dataTable.geCellElementDetail('Created'); await expect(contentServices.checkElementsDateSortedDesc(results)).toBe(true); }); diff --git a/lib/testing/src/lib/content-services/dialog/content-node-selector-dialog.page.ts b/lib/testing/src/lib/content-services/dialog/content-node-selector-dialog.page.ts index c243061578..757ca6d848 100644 --- a/lib/testing/src/lib/content-services/dialog/content-node-selector-dialog.page.ts +++ b/lib/testing/src/lib/content-services/dialog/content-node-selector-dialog.page.ts @@ -15,24 +15,23 @@ * limitations under the License. */ -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; import { DocumentListPage } from '../pages/document-list.page'; import { BrowserVisibility } from '../../core/utils/browser-visibility'; import { BrowserActions } from '../../core/utils/browser-actions'; import { DropdownPage } from '../../core/pages/material/dropdown.page'; -import { DataTableComponentPage } from '../../core/pages/data-table-component.page'; export class ContentNodeSelectorDialogPage { - dialog: ElementFinder = element(by.css(`adf-content-node-selector`)); - header: ElementFinder = this.dialog.element(by.css(`header[data-automation-id='content-node-selector-title']`)); - searchInputElement: ElementFinder = this.dialog.element(by.css(`input[data-automation-id='content-node-selector-search-input']`)); - searchLabel: ElementFinder = this.searchInputElement.element(by.xpath("ancestor::div[@class='mat-form-field-infix']/span/label")); - selectedRow: ElementFinder = this.dialog.element(by.css(`adf-datatable-row[class*="adf-is-selected"]`)); - cancelButton: ElementFinder = element(by.css(`button[data-automation-id='content-node-selector-actions-cancel']`)); - moveCopyButton: ElementFinder = element(by.css(`button[data-automation-id='content-node-selector-actions-choose']`)); + dialog = element(by.css(`adf-content-node-selector`)); + header = this.dialog.element(by.css(`header[data-automation-id='content-node-selector-title']`)); + searchInputElement = this.dialog.element(by.css(`input[data-automation-id='content-node-selector-search-input']`)); + searchLabel = this.searchInputElement.element(by.xpath("ancestor::div[@class='mat-form-field-infix']/span/label")); + selectedRow = this.dialog.element(by.css(`adf-datatable-row[class*="adf-is-selected"]`)); + cancelButton = element(by.css(`button[data-automation-id='content-node-selector-actions-cancel']`)); + moveCopyButton = element(by.css(`button[data-automation-id='content-node-selector-actions-choose']`)); - contentList: DocumentListPage = new DocumentListPage(this.dialog); - dataTable: DataTableComponentPage = this.contentList.dataTablePage(); + contentList = new DocumentListPage(this.dialog); + dataTable = this.contentList.dataTablePage(); siteListDropdown = new DropdownPage(this.dialog.element(by.css(`mat-select[data-automation-id='site-my-files-option']`))); async checkDialogIsDisplayed(): Promise { @@ -55,7 +54,7 @@ export class ContentNodeSelectorDialogPage { return BrowserActions.getText(this.searchLabel); } - async checkSelectedSiteIsDisplayed(siteName): Promise { + async checkSelectedSiteIsDisplayed(siteName: string): Promise { await this.siteListDropdown.checkOptionIsSelected(siteName); } @@ -100,11 +99,11 @@ export class ContentNodeSelectorDialogPage { await BrowserActions.clearSendKeys(this.searchInputElement, text); } - async clickContentNodeSelectorResult(name): Promise { + async clickContentNodeSelectorResult(name: string): Promise { await this.dataTable.clickRowByContent(name); } - async doubleClickContentNodeSelectorResult(name): Promise { + async doubleClickContentNodeSelectorResult(name: string): Promise { // First click to select from search mode and second click to actually open node await this.dataTable.doubleClickRowByContent(name); await this.dataTable.doubleClickRowByContent(name); diff --git a/lib/testing/src/lib/content-services/dialog/download-dialog.page.ts b/lib/testing/src/lib/content-services/dialog/download-dialog.page.ts index e9c3796cc4..539a784d0b 100644 --- a/lib/testing/src/lib/content-services/dialog/download-dialog.page.ts +++ b/lib/testing/src/lib/content-services/dialog/download-dialog.page.ts @@ -15,11 +15,11 @@ * limitations under the License. */ -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; import { BrowserActions } from '../../core/utils/browser-actions'; export class DownloadDialogPage { - cancelButton: ElementFinder = element(by.id(`cancel-button`)); + cancelButton = element(by.id(`cancel-button`)); async clickCancelButton(): Promise { await BrowserActions.click(this.cancelButton); diff --git a/lib/testing/src/lib/content-services/pages/document-list.page.ts b/lib/testing/src/lib/content-services/pages/document-list.page.ts index 001f13e280..0dd6792d5f 100644 --- a/lib/testing/src/lib/content-services/pages/document-list.page.ts +++ b/lib/testing/src/lib/content-services/pages/document-list.page.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { by, element, ElementFinder, browser, Locator } from 'protractor'; +import { by, element, ElementFinder, browser } from 'protractor'; import { DataTableComponentPage } from '../../core/pages/data-table-component.page'; import { BrowserVisibility } from '../../core/utils/browser-visibility'; import { BrowserActions } from '../../core/utils/browser-actions'; @@ -23,11 +23,11 @@ import { BrowserActions } from '../../core/utils/browser-actions'; export class DocumentListPage { rootElement: ElementFinder; - optionButton: Locator = by.css('button[data-automation-id*="action_menu_"]'); + optionButton = by.css('button[data-automation-id*="action_menu_"]'); tableBody: ElementFinder; dataTable: DataTableComponentPage; - constructor(rootElement: ElementFinder = element.all(by.css('adf-document-list')).first()) { + constructor(rootElement = element.all(by.css('adf-document-list')).first()) { this.rootElement = rootElement; this.dataTable = new DataTableComponentPage(this.rootElement); this.tableBody = rootElement.all(by.css('div[class="adf-datatable-body"]')).first(); @@ -67,7 +67,7 @@ export class DocumentListPage { async clickOnActionMenu(content: string): Promise { await BrowserActions.closeMenuAndDialogs(); - const row: ElementFinder = this.dataTable.getRow('Display name', content); + const row = this.dataTable.getRow('Display name', content); await BrowserActions.click(row.element(this.optionButton)); await BrowserActions.waitUntilActionMenuIsVisible(); await browser.sleep(500); diff --git a/lib/testing/src/lib/content-services/pages/search/search-radio.page.ts b/lib/testing/src/lib/content-services/pages/search/search-radio.page.ts index 9df0e17168..0ad873aa06 100644 --- a/lib/testing/src/lib/content-services/pages/search/search-radio.page.ts +++ b/lib/testing/src/lib/content-services/pages/search/search-radio.page.ts @@ -22,8 +22,8 @@ import { BrowserVisibility } from '../../../core/utils/browser-visibility'; export class SearchRadioPage { filter: ElementFinder; - showMoreButton: ElementFinder = element(by.css('adf-search-radio button[title="Show more"]')); - showLessButton: ElementFinder = element(by.css('adf-search-radio button[title="Show less"]')); + showMoreButton = element(by.css('adf-search-radio button[title="Show more"]')); + showLessButton = element(by.css('adf-search-radio button[title="Show less"]')); constructor(filter: ElementFinder) { this.filter = filter; diff --git a/lib/testing/src/lib/core/dialog/edit-json-dialog.ts b/lib/testing/src/lib/core/dialog/edit-json-dialog.ts index 9a2c072fed..757a2a97b3 100644 --- a/lib/testing/src/lib/core/dialog/edit-json-dialog.ts +++ b/lib/testing/src/lib/core/dialog/edit-json-dialog.ts @@ -15,15 +15,15 @@ * limitations under the License. */ -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; import { BrowserActions } from '../../core/utils/browser-actions'; import { BrowserVisibility } from '../../core/utils/browser-visibility'; export class EditJsonDialog { - dialog: ElementFinder = element(by.css(`.adf-edit-json-dialog`)); - closeButton: ElementFinder = element(by.cssContainingText(`button span`, 'Close')); - dialogContent: ElementFinder = this.dialog.element(by.css(`mat-dialog-content textarea`)); + dialog = element(by.css(`.adf-edit-json-dialog`)); + closeButton = element(by.cssContainingText(`button span`, 'Close')); + dialogContent = this.dialog.element(by.css(`mat-dialog-content textarea`)); async checkDialogIsDisplayed(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.dialog); diff --git a/lib/testing/src/lib/core/pages/about.page.ts b/lib/testing/src/lib/core/pages/about.page.ts index ab0b2eff8f..55f92e0581 100644 --- a/lib/testing/src/lib/core/pages/about.page.ts +++ b/lib/testing/src/lib/core/pages/about.page.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { element, by, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; import { BrowserVisibility } from '../utils/browser-visibility'; import { DataTableComponentPage } from './data-table-component.page'; @@ -47,23 +47,23 @@ export class AboutPage { version: 'version' }; - appTitle: ElementFinder = element(by.css('[data-automation-id="adf-github-app-title"]')); - sourceCodeTitle: ElementFinder = element(by.css('[data-automation-id="adf-github-source-code-title"]')); - githubUrl: ElementFinder = element(by.css('[data-automation-id="adf-github-url"]')); - githubVersion: ElementFinder = element(by.css('[data-automation-id="adf-github-version"]')); - bpmHost: ElementFinder = element(by.css('[data-automation-id="adf-process-service-host"]')); - ecmHost: ElementFinder = element(by.css('[data-automation-id="adf-content-service-host"]')); - productVersionTitle: ElementFinder = element(by.css('[data-automation-id="adf-about-product-version-title"]')); - bpmEdition: ElementFinder = element(by.css('[data-automation-id="adf-about-bpm-edition"]')); - ecmEdition: ElementFinder = element(by.css('[data-automation-id="adf-about-ecm-edition"]')); - bpmVersion: ElementFinder = element(by.css('[data-automation-id="adf-about-bpm-version"]')); - ecmVersion: ElementFinder = element(by.css('[data-automation-id="adf-about-ecm-version"]')); - ecmStatusTitle: ElementFinder = element(by.css('[data-automation-id="adf-about-ecm-status-title"]')); - ecmLicenseTitle: ElementFinder = element(by.css('[data-automation-id="adf-about-ecm-license-title"]')); - ecmModulesTitle: ElementFinder = element(by.css('[data-automation-id="adf-about-ecm-modules-title"]')); - aboutModulesTitle: ElementFinder = element(by.css('[data-automation-id="adf-about-modules-title"]')); + appTitle = element(by.css('[data-automation-id="adf-github-app-title"]')); + sourceCodeTitle = element(by.css('[data-automation-id="adf-github-source-code-title"]')); + githubUrl = element(by.css('[data-automation-id="adf-github-url"]')); + githubVersion = element(by.css('[data-automation-id="adf-github-version"]')); + bpmHost = element(by.css('[data-automation-id="adf-process-service-host"]')); + ecmHost = element(by.css('[data-automation-id="adf-content-service-host"]')); + productVersionTitle = element(by.css('[data-automation-id="adf-about-product-version-title"]')); + bpmEdition = element(by.css('[data-automation-id="adf-about-bpm-edition"]')); + ecmEdition = element(by.css('[data-automation-id="adf-about-ecm-edition"]')); + bpmVersion = element(by.css('[data-automation-id="adf-about-bpm-version"]')); + ecmVersion = element(by.css('[data-automation-id="adf-about-ecm-version"]')); + ecmStatusTitle = element(by.css('[data-automation-id="adf-about-ecm-status-title"]')); + ecmLicenseTitle = element(by.css('[data-automation-id="adf-about-ecm-license-title"]')); + ecmModulesTitle = element(by.css('[data-automation-id="adf-about-ecm-modules-title"]')); + aboutModulesTitle = element(by.css('[data-automation-id="adf-about-modules-title"]')); - dataTable: DataTableComponentPage = new DataTableComponentPage(); + dataTable = new DataTableComponentPage(); getDataTable(): DataTableComponentPage { return this.dataTable; diff --git a/lib/testing/src/lib/core/pages/bread-crumb.page.ts b/lib/testing/src/lib/core/pages/bread-crumb.page.ts index fa340afd82..cbac261d57 100644 --- a/lib/testing/src/lib/core/pages/bread-crumb.page.ts +++ b/lib/testing/src/lib/core/pages/bread-crumb.page.ts @@ -15,15 +15,15 @@ * limitations under the License. */ -import { element, by, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; import { BrowserActions } from '../utils/browser-actions'; export class BreadcrumbPage { - breadcrumb: ElementFinder = element(by.css(`adf-breadcrumb nav[data-automation-id='breadcrumb']`)); - currentItem: ElementFinder = element(by.css('.adf-breadcrumb-item-current')); + breadcrumb = element(by.css(`adf-breadcrumb nav[data-automation-id='breadcrumb']`)); + currentItem = element(by.css('.adf-breadcrumb-item-current')); - async chooseBreadCrumb(breadCrumbItem): Promise { + async chooseBreadCrumb(breadCrumbItem: string): Promise { const path = this.breadcrumb.element(by.css(`a[data-automation-id='breadcrumb_${breadCrumbItem}']`)); await BrowserActions.click(path); } diff --git a/lib/testing/src/lib/core/pages/card-view/card-view-boolean-item.page.ts b/lib/testing/src/lib/core/pages/card-view/card-view-boolean-item.page.ts index 5dbaa9ba41..40e1b4c96f 100644 --- a/lib/testing/src/lib/core/pages/card-view/card-view-boolean-item.page.ts +++ b/lib/testing/src/lib/core/pages/card-view/card-view-boolean-item.page.ts @@ -33,7 +33,7 @@ export class CardBooleanItemPage { } async checkLabelIsPresent(): Promise { - const labelElement: ElementFinder = this.rootElement.element(this.labelLocator); + const labelElement = this.rootElement.element(this.labelLocator); await BrowserVisibility.waitUntilElementIsPresent(labelElement); } } diff --git a/lib/testing/src/lib/core/pages/card-view/card-view-date-item.page.ts b/lib/testing/src/lib/core/pages/card-view/card-view-date-item.page.ts index 9c12008fc5..16ad7a5ab9 100644 --- a/lib/testing/src/lib/core/pages/card-view/card-view-date-item.page.ts +++ b/lib/testing/src/lib/core/pages/card-view/card-view-date-item.page.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { element, by, ElementFinder, Locator } from 'protractor'; +import { element, by, ElementFinder } from 'protractor'; import { DateTimePickerPage } from '../material/date-time-picker.page'; import { DatePickerPage } from '../material/date-picker.page'; @@ -25,10 +25,10 @@ export class CardDateItemPage { dateTimePickerPage: DateTimePickerPage; datePickerPage = new DatePickerPage(); - labelLocator: Locator = by.css('div[data-automation-id*="card-date-label"]'); - valueLocator: Locator = by.css('span[data-automation-id*="card-date"]'); - dateTimePicker: ElementFinder = element.all(by.css('.mat-datetimepicker-toggle')).first(); - saveButton: Locator = by.css('button[data-automation-id*="card-dateitem-update"]'); + labelLocator = by.css('div[data-automation-id*="card-date-label"]'); + valueLocator = by.css('span[data-automation-id*="card-date"]'); + dateTimePicker = element.all(by.css('.mat-datetimepicker-toggle')).first(); + saveButton = by.css('button[data-automation-id*="card-dateitem-update"]'); constructor(label: string = 'minDate') { this.rootElement = element(by.xpath(`//div[contains(@data-automation-id, "label-${label}")]/ancestor::adf-card-view-dateitem`)); diff --git a/lib/testing/src/lib/core/pages/card-view/card-view-select-item.page.ts b/lib/testing/src/lib/core/pages/card-view/card-view-select-item.page.ts index ad74f99d6d..519da59205 100644 --- a/lib/testing/src/lib/core/pages/card-view/card-view-select-item.page.ts +++ b/lib/testing/src/lib/core/pages/card-view/card-view-select-item.page.ts @@ -31,7 +31,7 @@ export class CardSelectItemPage { } async checkLabelIsPresent(): Promise { - const labelElement: ElementFinder = this.rootElement.element(this.labelLocator); + const labelElement = this.rootElement.element(this.labelLocator); await BrowserVisibility.waitUntilElementIsPresent(labelElement); } diff --git a/lib/testing/src/lib/core/pages/card-view/card-view-text-item.page.ts b/lib/testing/src/lib/core/pages/card-view/card-view-text-item.page.ts index f483aea103..95cce61cce 100644 --- a/lib/testing/src/lib/core/pages/card-view/card-view-text-item.page.ts +++ b/lib/testing/src/lib/core/pages/card-view/card-view-text-item.page.ts @@ -15,19 +15,19 @@ * limitations under the License. */ -import { element, by, ElementFinder, Locator, Key } from 'protractor'; +import { element, by, ElementFinder, Key } from 'protractor'; import { BrowserActions, BrowserVisibility } from '../../utils/public-api'; export class CardTextItemPage { rootElement: ElementFinder; - textField: Locator = by.css('[data-automation-id*="card-textitem-value"]'); - saveButton: Locator = by.css('button[data-automation-id*="card-textitem-update"]'); - clearButton: Locator = by.css('button[data-automation-id*="card-textitem-reset"]'); - field: Locator = by.css('[data-automation-id*="card-textitem-value"]'); - labelLocator: Locator = by.css('div[data-automation-id*="card-textitem-label"]'); - errorMessage: Locator = by.css('.adf-textitem-editable-error'); - clickableElement: Locator = by.css('.adf-textitem-clickable'); - readOnlyField: Locator = by.css('.adf-property-read-only'); + textField = by.css('[data-automation-id*="card-textitem-value"]'); + saveButton = by.css('button[data-automation-id*="card-textitem-update"]'); + clearButton = by.css('button[data-automation-id*="card-textitem-reset"]'); + field = by.css('[data-automation-id*="card-textitem-value"]'); + labelLocator = by.css('div[data-automation-id*="card-textitem-label"]'); + errorMessage = by.css('.adf-textitem-editable-error'); + clickableElement = by.css('.adf-textitem-clickable'); + readOnlyField = by.css('.adf-property-read-only'); constructor(label: string = 'assignee') { this.rootElement = element(by.xpath(`//div[contains(@data-automation-id, "label-${label}")]/ancestor::adf-card-view-textitem`)); @@ -39,7 +39,7 @@ export class CardTextItemPage { } async checkLabelIsPresent(): Promise { - const labelElement: ElementFinder = this.rootElement.element(this.labelLocator); + const labelElement = this.rootElement.element(this.labelLocator); await BrowserVisibility.waitUntilElementIsPresent(labelElement); } diff --git a/lib/testing/src/lib/core/pages/config-editor-page.ts b/lib/testing/src/lib/core/pages/config-editor-page.ts index ab0da2c2b2..32ea64b459 100644 --- a/lib/testing/src/lib/core/pages/config-editor-page.ts +++ b/lib/testing/src/lib/core/pages/config-editor-page.ts @@ -15,26 +15,26 @@ * limitations under the License. */ -import { element, by, browser, ElementFinder } from 'protractor'; +import { element, by, browser } from 'protractor'; import { BrowserVisibility } from '../utils/browser-visibility'; import { BrowserActions } from '../utils/browser-actions'; export class ConfigEditorPage { - textField: ElementFinder = element(by.css('#adf-form-config-editor div.overflow-guard > textarea')); + textField = element(by.css('#adf-form-config-editor div.overflow-guard > textarea')); - async enterConfiguration(text): Promise { + async enterConfiguration(text: string): Promise { await BrowserActions.clearSendKeys(this.textField, text); } async clickSaveButton(): Promise { - const saveButton: ElementFinder = element(by.id('app-form-config-save')); + const saveButton = element(by.id('app-form-config-save')); await BrowserActions.click(saveButton); } async clickClearButton(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.textField); - const clearButton: ElementFinder = element(by.id('app-form-config-clear')); + const clearButton = element(by.id('app-form-config-clear')); await BrowserActions.click(clearButton); } diff --git a/lib/testing/src/lib/core/pages/context-menu.page.ts b/lib/testing/src/lib/core/pages/context-menu.page.ts index 056c3a97cb..7dec35ee58 100644 --- a/lib/testing/src/lib/core/pages/context-menu.page.ts +++ b/lib/testing/src/lib/core/pages/context-menu.page.ts @@ -16,11 +16,11 @@ */ import { BrowserActions } from '../utils/browser-actions'; -import { element, by, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; import { BrowserVisibility } from '../public-api'; export class ContextMenuPage { - contextMenu: ElementFinder = element(by.id('adf-context-menu-content')); + contextMenu = element(by.id('adf-context-menu-content')); async isContextMenuDisplayed(): Promise { try { diff --git a/lib/testing/src/lib/core/pages/data-table-component.page.ts b/lib/testing/src/lib/core/pages/data-table-component.page.ts index 39d34899eb..086abae51e 100644 --- a/lib/testing/src/lib/core/pages/data-table-component.page.ts +++ b/lib/testing/src/lib/core/pages/data-table-component.page.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { browser, by, element, Locator, protractor, ElementFinder, ElementArrayFinder } from 'protractor'; +import { browser, by, element, protractor, ElementFinder, ElementArrayFinder } from 'protractor'; import { BrowserVisibility } from '../utils/browser-visibility'; import { BrowserActions } from '../utils/browser-actions'; @@ -25,14 +25,14 @@ export class DataTableComponentPage { list: ElementArrayFinder; contents: ElementArrayFinder; tableBody: ElementFinder; - rows: Locator = by.css(`adf-datatable div[class*='adf-datatable-body'] adf-datatable-row[class*='adf-datatable-row']`); + rows = by.css(`adf-datatable div[class*='adf-datatable-body'] adf-datatable-row[class*='adf-datatable-row']`); allColumns: ElementArrayFinder; selectedRowNumber: ElementFinder; allSelectedRows: ElementArrayFinder; selectAll: ElementFinder; copyColumnTooltip: ElementFinder; - constructor(rootElement: ElementFinder = element.all(by.css('adf-datatable')).first()) { + constructor(rootElement = element.all(by.css('adf-datatable')).first()) { this.rootElement = rootElement; this.list = this.rootElement.all(by.css(`div[class*='adf-datatable-body'] adf-datatable-row[class*='adf-datatable-row']`)); this.contents = this.rootElement.all(by.css('div[class="adf-datatable-body"] span')); diff --git a/lib/testing/src/lib/core/pages/data-table/data-table-item.ts b/lib/testing/src/lib/core/pages/data-table/data-table-item.ts index 23e55297ad..4d15a9c8f2 100644 --- a/lib/testing/src/lib/core/pages/data-table/data-table-item.ts +++ b/lib/testing/src/lib/core/pages/data-table/data-table-item.ts @@ -25,7 +25,7 @@ export class DataTableItem { rootElement: ElementFinder; rows: Locator = by.css(`div[class*='adf-datatable-body'] adf-datatable-row[class*='adf-datatable-row']`); - constructor(rootElement: ElementFinder = element.all(by.css('adf-datatable')).first()) { + constructor(rootElement = element.all(by.css('adf-datatable')).first()) { this.rootElement = rootElement; } diff --git a/lib/testing/src/lib/core/pages/error.page.ts b/lib/testing/src/lib/core/pages/error.page.ts index f67729d619..5874c54f35 100644 --- a/lib/testing/src/lib/core/pages/error.page.ts +++ b/lib/testing/src/lib/core/pages/error.page.ts @@ -16,14 +16,14 @@ */ import { BrowserVisibility } from '../utils/browser-visibility'; -import { element, by, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; import { BrowserActions } from '../utils/browser-actions'; export class ErrorPage { - errorPageCode: ElementFinder = element(by.css('adf-error-content .adf-error-content-code')); - errorPageTitle: ElementFinder = element(by.css('adf-error-content .adf-error-content-title')); - errorPageDescription: ElementFinder = element(by.css('adf-error-content .adf-error-content-description')); + errorPageCode = element(by.css('adf-error-content .adf-error-content-code')); + errorPageTitle = element(by.css('adf-error-content .adf-error-content-title')); + errorPageDescription = element(by.css('adf-error-content .adf-error-content-description')); async checkErrorCode(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.errorPageCode); diff --git a/lib/testing/src/lib/core/pages/form/form-fields.ts b/lib/testing/src/lib/core/pages/form/form-fields.ts index 405d014897..3310338d21 100644 --- a/lib/testing/src/lib/core/pages/form/form-fields.ts +++ b/lib/testing/src/lib/core/pages/form/form-fields.ts @@ -15,24 +15,24 @@ * limitations under the License. */ -import { by, element, Locator, ElementFinder } from 'protractor'; +import { by, element, ElementFinder } from 'protractor'; import { BrowserVisibility, BrowserActions } from '../../utils/public-api'; import { DropdownPage } from '../material/dropdown.page'; export class FormFields { - formContent: ElementFinder = element(by.css('adf-form-renderer')); - refreshButton: ElementFinder = element(by.css('div[class*="form-reload-button"] mat-icon')); - saveButton: ElementFinder = element(by.cssContainingText('mat-card-actions[class*="adf-for"] span', 'SAVE')); - valueLocator: Locator = by.css('input'); - labelLocator: Locator = by.css('label'); - noFormMessage: ElementFinder = element(by.css('.adf-empty-content__title')); - noFormTemplate: ElementFinder = element(by.css('adf-empty-content')); - completedTaskNoFormMessage: ElementFinder = element(by.css('div[id*="completed-form-message"] p')); - attachFormButton: ElementFinder = element(by.id('adf-attach-form-attach-button')); - completeButton: ElementFinder = element(by.id('adf-form-complete')); - cancelButton: ElementFinder = element(by.css('#adf-no-form-cancel-button')); - errorMessage: Locator = by.css('.adf-error-text-container .adf-error-text'); + formContent = element(by.css('adf-form-renderer')); + refreshButton = element(by.css('div[class*="form-reload-button"] mat-icon')); + saveButton = element(by.cssContainingText('mat-card-actions[class*="adf-for"] span', 'SAVE')); + valueLocator = by.css('input'); + labelLocator = by.css('label'); + noFormMessage = element(by.css('.adf-empty-content__title')); + noFormTemplate = element(by.css('adf-empty-content')); + completedTaskNoFormMessage = element(by.css('div[id*="completed-form-message"] p')); + attachFormButton = element(by.id('adf-attach-form-attach-button')); + completeButton = element(by.id('adf-form-complete')); + cancelButton = element(by.css('#adf-no-form-cancel-button')); + errorMessage = by.css('.adf-error-text-container .adf-error-text'); selectFormDropdown = new DropdownPage(element.all(by.css('adf-attach-form div[class*="mat-select-arrow"]')).first()); @@ -41,8 +41,8 @@ export class FormFields { await BrowserActions.clearSendKeys(fieldElement, value); } - async clickField(locator, field: string, fieldtext?: string): Promise { - const fieldElement = fieldtext ? element(locator(field, fieldtext)) : element(locator(field)); + async clickField(locator, field: string, fieldText?: string): Promise { + const fieldElement = fieldText ? element(locator(field, fieldText)) : element(locator(field)); await BrowserActions.click(fieldElement); } @@ -61,12 +61,12 @@ export class FormFields { await BrowserVisibility.waitUntilElementIsNotVisible(hiddenElement, 6000); } - getWidget(fieldId): ElementFinder { + getWidget(fieldId: string): ElementFinder { return element(by.css(`adf-form-field div[id='field-${fieldId}-container']`)); } async getFieldValue(fieldId: string, valueLocatorParam?: any): Promise { - const valueWidget: ElementFinder = await (await this.getWidget(fieldId)).element(valueLocatorParam || this.valueLocator); + const valueWidget = await (await this.getWidget(fieldId)).element(valueLocatorParam || this.valueLocator); await BrowserVisibility.waitUntilElementIsVisible(valueWidget); return valueWidget.getAttribute('value'); @@ -89,7 +89,7 @@ export class FormFields { } async getFieldPlaceHolder(fieldId: string, locator = 'input'): Promise { - const placeHolderLocator: ElementFinder = element(by.css(`${locator}#${fieldId}`)); + const placeHolderLocator = element(by.css(`${locator}#${fieldId}`)); await BrowserVisibility.waitUntilElementIsVisible(placeHolderLocator); return placeHolderLocator.getAttribute('placeholder'); } @@ -146,7 +146,7 @@ export class FormFields { await BrowserActions.click(formNameElement); } - async checkWidgetIsReadOnlyMode(fieldId): Promise { + async checkWidgetIsReadOnlyMode(fieldId: string): Promise { const widget = element(by.css(`adf-form-field div[id='field-${fieldId}-container']`)); const widgetReadOnly = widget.element(by.css('div[class*="adf-readonly"]')); await BrowserVisibility.waitUntilElementIsVisible(widgetReadOnly); diff --git a/lib/testing/src/lib/core/pages/form/form.page.ts b/lib/testing/src/lib/core/pages/form/form.page.ts index fa99ff467c..3e96a49bd1 100644 --- a/lib/testing/src/lib/core/pages/form/form.page.ts +++ b/lib/testing/src/lib/core/pages/form/form.page.ts @@ -15,29 +15,29 @@ * limitations under the License. */ -import { element, by, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; import { BrowserVisibility } from '../../utils/browser-visibility'; import { BrowserActions } from '../../utils/public-api'; export class FormPage { - errorLog: ElementFinder = element(by.css('div[class*="console"]')); - saveButton: ElementFinder = element(by.cssContainingText('mat-card-actions[class*="adf-for"] span', 'SAVE')); + errorLog = element(by.css('div[class*="console"]')); + saveButton = element(by.cssContainingText('mat-card-actions[class*="adf-for"] span', 'SAVE')); - async checkErrorMessageForWidgetIsDisplayed(errorMessage): Promise { + async checkErrorMessageForWidgetIsDisplayed(errorMessage: string): Promise { await BrowserVisibility.waitUntilElementIsVisible(element(by.cssContainingText('.adf-error-text', errorMessage))); } - async checkErrorMessageForWidgetIsNotDisplayed(errorMessage): Promise { + async checkErrorMessageForWidgetIsNotDisplayed(errorMessage: string): Promise { await BrowserVisibility.waitUntilElementIsNotVisible(element(by.cssContainingText('.adf-error-text', errorMessage))); } - async checkErrorLogMessage(errorMessage): Promise { + async checkErrorLogMessage(errorMessage: string): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.errorLog); await BrowserVisibility.waitUntilElementIsVisible(element(by.cssContainingText('div[class*="console"] p', errorMessage))); } - async checkErrorMessageIsNotDisplayed(errorMessage): Promise { + async checkErrorMessageIsNotDisplayed(errorMessage: string): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.errorLog); await BrowserVisibility.waitUntilElementIsNotVisible(element(by.cssContainingText('div[class*="console"] p', errorMessage))); } diff --git a/lib/testing/src/lib/core/pages/form/widgets/attach-file-widget.page.ts b/lib/testing/src/lib/core/pages/form/widgets/attach-file-widget.page.ts index 503bf1261e..e2ab396fda 100644 --- a/lib/testing/src/lib/core/pages/form/widgets/attach-file-widget.page.ts +++ b/lib/testing/src/lib/core/pages/form/widgets/attach-file-widget.page.ts @@ -18,20 +18,20 @@ import { FormFields } from '../form-fields'; import { BrowserVisibility, BrowserActions } from '../../../utils/public-api'; import * as remote from 'selenium-webdriver/remote'; -import { element, by, browser, ElementFinder } from 'protractor'; +import { element, by, browser } from 'protractor'; export class AttachFileWidgetPage { - formFields: FormFields = new FormFields(); + formFields = new FormFields(); uploadLocator = by.css('button[id="attachfile"]'); - localStorageButton: ElementFinder = element(by.css('input[id="attachfile"]')); + localStorageButton = element(by.css('input[id="attachfile"]')); filesListLocator = by.css('div[id="adf-attach-widget-readonly-list"]'); - attachFileWidget: ElementFinder = element(by.css('#attachfile')); - attachedFileMenu: ElementFinder = element(by.css('mat-list-item button')); - attachedFileOptions: ElementFinder = element(by.css('.mat-menu-panel .mat-menu-content')); - viewFileOptionButton: ElementFinder = element(by.css(`.mat-menu-panel .mat-menu-content button[id$="show-file"]`)); - downloadFileOptionButton: ElementFinder = element(by.css(`.mat-menu-panel .mat-menu-content button[id$="download-file"]`)); - removeFileOptionButton: ElementFinder = element(by.css(`.mat-menu-panel .mat-menu-content button[id$="remove"]`)); + attachFileWidget = element(by.css('#attachfile')); + attachedFileMenu = element(by.css('mat-list-item button')); + attachedFileOptions = element(by.css('.mat-menu-panel .mat-menu-content')); + viewFileOptionButton = element(by.css(`.mat-menu-panel .mat-menu-content button[id$="show-file"]`)); + downloadFileOptionButton = element(by.css(`.mat-menu-panel .mat-menu-content button[id$="download-file"]`)); + removeFileOptionButton = element(by.css(`.mat-menu-panel .mat-menu-content button[id$="remove"]`)); async attachFile(fieldId, fileLocation): Promise { browser.setFileDetector(new remote.FileDetector()); @@ -48,7 +48,7 @@ export class AttachFileWidgetPage { await BrowserVisibility.waitUntilElementIsVisible(fileAttached); } - async viewFile(name): Promise { + async viewFile(name: string): Promise { const fileView = element(this.filesListLocator).element(by.cssContainingText('mat-list-item span ', name)); await BrowserActions.click(fileView); await browser.actions().doubleClick(fileView).perform(); diff --git a/lib/testing/src/lib/core/pages/form/widgets/checkbox-widget.page.ts b/lib/testing/src/lib/core/pages/form/widgets/checkbox-widget.page.ts index 10d26e3548..2fe6a35738 100644 --- a/lib/testing/src/lib/core/pages/form/widgets/checkbox-widget.page.ts +++ b/lib/testing/src/lib/core/pages/form/widgets/checkbox-widget.page.ts @@ -17,34 +17,34 @@ import { FormFields } from '../form-fields'; import { BrowserActions, BrowserVisibility } from '../../../utils/public-api'; -import { by, element, Locator, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; export class CheckboxWidgetPage { - formFields: FormFields = new FormFields(); - checkboxLabel: ElementFinder = element(by.css('span[class*="mat-checkbox-label"]')); - checkboxLocator: Locator = by.css('mat-checkbox'); + formFields = new FormFields(); + checkboxLabel = element(by.css('span[class*="mat-checkbox-label"]')); + checkboxLocator = by.css('mat-checkbox'); getCheckboxLabel(): Promise { return BrowserActions.getText(this.checkboxLabel); } - async clickCheckboxInput(fieldId): Promise { + async clickCheckboxInput(fieldId: string): Promise { const checkboxInput = element.all(by.css(`mat-checkbox[id="${fieldId}"] div`)).first(); await BrowserActions.click(checkboxInput); } - async isCheckboxDisplayed(fieldId): Promise { + async isCheckboxDisplayed(fieldId: string): Promise { await this.formFields.checkWidgetIsVisible(fieldId); } - async isCheckboxHidden(fieldId): Promise { + async isCheckboxHidden(fieldId: string): Promise { await this.formFields.checkWidgetIsHidden(fieldId); } - async isCheckboxChecked(fieldId): Promise { + async isCheckboxChecked(fieldId: string): Promise { let isChecked: boolean = false; - const checkboxWidget: ElementFinder = await (await this.formFields.getWidget(fieldId)).element(this.checkboxLocator); + const checkboxWidget = await (await this.formFields.getWidget(fieldId)).element(this.checkboxLocator); await BrowserVisibility.waitUntilElementIsVisible(checkboxWidget); await checkboxWidget.getAttribute('class').then((attributeValue) => { isChecked = attributeValue.includes('mat-checkbox-checked'); diff --git a/lib/testing/src/lib/core/pages/form/widgets/date-time-widget.page.ts b/lib/testing/src/lib/core/pages/form/widgets/date-time-widget.page.ts index 4b9699495e..4b76b50eb6 100644 --- a/lib/testing/src/lib/core/pages/form/widgets/date-time-widget.page.ts +++ b/lib/testing/src/lib/core/pages/form/widgets/date-time-widget.page.ts @@ -16,13 +16,13 @@ */ import { FormFields } from '../form-fields'; -import { element, by, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; import { BrowserVisibility, BrowserActions } from '../../../utils/public-api'; export class DateTimeWidgetPage { - formFields: FormFields = new FormFields(); - outsideLayer: ElementFinder = element(by.css('div[class*="cdk-overlay-container"]')); + formFields = new FormFields(); + outsideLayer = element(by.css('div[class*="cdk-overlay-container"]')); async checkWidgetIsVisible(fieldId): Promise { await this.formFields.checkWidgetIsVisible(fieldId); @@ -46,34 +46,34 @@ export class DateTimeWidgetPage { await BrowserActions.click(this.outsideLayer); } - async getErrorMessage(fieldId): Promise { + async getErrorMessage(fieldId: string): Promise { const errorMessage = element(by.css(`adf-form-field div[id="field-${fieldId}-container"] div[class="adf-error-text"]`)); return BrowserActions.getText(errorMessage); } - async selectDay(day): Promise { + async selectDay(day: string): Promise { const selectedDay = element(by.cssContainingText('div[class*="mat-datetimepicker-calendar-body-cell-content"]', day)); await BrowserActions.click(selectedDay); } - async openDatepicker(fieldId): Promise { + async openDatepicker(fieldId: string): Promise { await BrowserActions.click(element(by.id(fieldId))); } - async selectTime(time): Promise { + async selectTime(time: string): Promise { const selectedTime = element.all(by.cssContainingText('div[class*="mat-datetimepicker-clock-cell"]', time)).first(); await BrowserActions.click(selectedTime); } - async selectHour(hour): Promise { + async selectHour(hour: string): Promise { return this.selectTime(hour); } - async selectMinute(minute): Promise { + async selectMinute(minute: string): Promise { return this.selectTime(minute); } - async getPlaceholder(fieldId): Promise { + async getPlaceholder(fieldId: string): Promise { return this.formFields.getFieldPlaceHolder(fieldId); } @@ -83,7 +83,7 @@ export class DateTimeWidgetPage { await BrowserActions.clearWithBackSpace(amountWidgetInput); } - async clearDateTimeInput(fieldId): Promise { + async clearDateTimeInput(fieldId: string): Promise { const dateInput = element(by.id(fieldId)); await BrowserVisibility.waitUntilElementIsVisible(dateInput); await dateInput.clear(); diff --git a/lib/testing/src/lib/core/pages/form/widgets/dynamic-table-widget.page.ts b/lib/testing/src/lib/core/pages/form/widgets/dynamic-table-widget.page.ts index 85e39aebb5..e1ce924b1e 100644 --- a/lib/testing/src/lib/core/pages/form/widgets/dynamic-table-widget.page.ts +++ b/lib/testing/src/lib/core/pages/form/widgets/dynamic-table-widget.page.ts @@ -16,25 +16,25 @@ */ import { FormFields } from '../form-fields'; -import { by, element, ElementArrayFinder, ElementFinder, Locator, protractor } from 'protractor'; +import { by, element, protractor } from 'protractor'; import { BrowserVisibility, BrowserActions } from '../../../utils/public-api'; export class DynamicTableWidgetPage { - formFields: FormFields = new FormFields(); + formFields = new FormFields(); - labelLocator: Locator = by.css('dynamic-table-widget div div'); - columnNameLocator: Locator = by.css('table[id*="dynamic-table"] th'); - cancelButton: ElementFinder = element(by.cssContainingText('button span', 'Cancel')); - editButton: ElementFinder = element(by.cssContainingText('button span', 'edit')); - columnDateTime: ElementFinder = element(by.id('columnDateTime')); - columnDate: ElementFinder = element(by.id('columnDate')); - calendarHeader: ElementFinder = element(by.css('div[class="mat-datetimepicker-calendar-header-date-time"]')); - calendarContent: ElementFinder = element(by.css('div[class="mat-datetimepicker-calendar-content"]')); - saveButton: ElementFinder = element(by.cssContainingText('button span', 'Save')); - errorMessage: ElementFinder = element(by.css('div[class="adf-error-text"]')); - dateWidget: ElementFinder = element.all(by.css('mat-datepicker-toggle button')).first(); - tableRow: ElementArrayFinder = element.all(by.css('tbody tr')); + labelLocator = by.css('dynamic-table-widget div div'); + columnNameLocator = by.css('table[id*="dynamic-table"] th'); + cancelButton = element(by.cssContainingText('button span', 'Cancel')); + editButton = element(by.cssContainingText('button span', 'edit')); + columnDateTime = element(by.id('columnDateTime')); + columnDate = element(by.id('columnDate')); + calendarHeader = element(by.css('div[class="mat-datetimepicker-calendar-header-date-time"]')); + calendarContent = element(by.css('div[class="mat-datetimepicker-calendar-content"]')); + saveButton = element(by.cssContainingText('button span', 'Save')); + errorMessage = element(by.css('div[class="adf-error-text"]')); + dateWidget = element.all(by.css('mat-datepicker-toggle button')).first(); + tableRow = element.all(by.css('tbody tr')); getFieldLabel(fieldId): Promise { return this.formFields.getFieldLabel(fieldId, this.labelLocator); @@ -63,7 +63,7 @@ export class DynamicTableWidgetPage { } async setDatatableInput(text, id = 'id'): Promise { - const dataTableInput: ElementFinder = element(by.id(id)); + const dataTableInput = element(by.id(id)); await BrowserVisibility.waitUntilElementIsVisible(dataTableInput); await BrowserActions.clearSendKeys(dataTableInput, text); } diff --git a/lib/testing/src/lib/core/pages/form/widgets/group-widget.page.ts b/lib/testing/src/lib/core/pages/form/widgets/group-widget.page.ts index 35d1ffffc4..52b00dede0 100644 --- a/lib/testing/src/lib/core/pages/form/widgets/group-widget.page.ts +++ b/lib/testing/src/lib/core/pages/form/widgets/group-widget.page.ts @@ -16,25 +16,25 @@ */ import { FormFields } from '../form-fields'; -import { by, element, ElementFinder, Locator } from 'protractor'; +import { by, element } from 'protractor'; import { BrowserVisibility, BrowserActions } from '../../../utils/public-api'; export class GroupWidgetPage { - groupField: ElementFinder = element(by.css('input[data-automation-id="adf-group-search-input"]')); - firstResult: ElementFinder = element(by.id('adf-group-widget-user-0')); - formFields: FormFields = new FormFields(); - groupDropDownList: Locator = by.css('.mat-autocomplete-panel'); + groupField = element(by.css('input[data-automation-id="adf-group-search-input"]')); + firstResult = element(by.id('adf-group-widget-user-0')); + formFields = new FormFields(); + groupDropDownList = by.css('.mat-autocomplete-panel'); - getFieldLabel(fieldId): Promise { + getFieldLabel(fieldId: string): Promise { return this.formFields.getFieldLabel(fieldId); } - getFieldValue(fieldId): Promise { + getFieldValue(fieldId: string): Promise { return this.formFields.getFieldValue(fieldId); } - getFieldText(fieldId): Promise { + getFieldText(fieldId: string): Promise { return this.formFields.getFieldText(fieldId); } diff --git a/lib/testing/src/lib/core/pages/form/widgets/people-widget.page.ts b/lib/testing/src/lib/core/pages/form/widgets/people-widget.page.ts index a563343948..3c0885f14e 100644 --- a/lib/testing/src/lib/core/pages/form/widgets/people-widget.page.ts +++ b/lib/testing/src/lib/core/pages/form/widgets/people-widget.page.ts @@ -16,31 +16,31 @@ */ import { FormFields } from '../form-fields'; -import { by, element, ElementFinder, Locator } from 'protractor'; +import { by, element } from 'protractor'; import { BrowserVisibility, BrowserActions } from '../../../utils/public-api'; export class PeopleWidgetPage { - peopleField: ElementFinder = element(by.css('input[data-automation-id="adf-people-search-input"]')); - firstResult: ElementFinder = element(by.id('adf-people-widget-user-0')); - formFields: FormFields = new FormFields(); - labelLocator: Locator = by.css('div[class*="display-text-widget"]'); - inputLocator: Locator = by.id('involvepeople'); - peopleDropDownList: Locator = by.css('div[class*="adf-people-widget-list"]'); + peopleField = element(by.css('input[data-automation-id="adf-people-search-input"]')); + firstResult = element(by.id('adf-people-widget-user-0')); + formFields = new FormFields(); + labelLocator = by.css('div[class*="display-text-widget"]'); + inputLocator = by.id('involvepeople'); + peopleDropDownList = by.css('div[class*="adf-people-widget-list"]'); - getFieldLabel(fieldId): Promise { + getFieldLabel(fieldId: string): Promise { return this.formFields.getFieldLabel(fieldId, this.labelLocator); } - getFieldValue(fieldId): Promise { + getFieldValue(fieldId: string): Promise { return this.formFields.getFieldValue(fieldId, this.inputLocator); } - getFieldText(fieldId): Promise { + getFieldText(fieldId: string): Promise { return this.formFields.getFieldText(fieldId, this.labelLocator); } - insertUser(fieldId, value): Promise { + insertUser(fieldId: string, value: string): Promise { return this.formFields.setValueInInputById(fieldId, value); } @@ -48,12 +48,12 @@ export class PeopleWidgetPage { await BrowserVisibility.waitUntilElementIsVisible(element(this.peopleDropDownList)); } - async checkUserIsListed(userName): Promise { + async checkUserIsListed(userName: string): Promise { const user = element(by.cssContainingText('.adf-people-label-name', userName)); await BrowserVisibility.waitUntilElementIsVisible(user); } - async selectUserFromDropDown(userName): Promise { + async selectUserFromDropDown(userName: string): Promise { const user = element(by.cssContainingText('.adf-people-label-name', userName)); await BrowserActions.click(user); } diff --git a/lib/testing/src/lib/core/pages/form/widgets/typeahead-widget.page.ts b/lib/testing/src/lib/core/pages/form/widgets/typeahead-widget.page.ts index 2432296c04..e2611f4401 100644 --- a/lib/testing/src/lib/core/pages/form/widgets/typeahead-widget.page.ts +++ b/lib/testing/src/lib/core/pages/form/widgets/typeahead-widget.page.ts @@ -16,29 +16,29 @@ */ import { FormFields } from '../form-fields'; -import { by, element, ElementFinder, Locator } from 'protractor'; +import { by, element } from 'protractor'; import { BrowserVisibility, BrowserActions } from '../../../utils/public-api'; export class TypeaheadWidgetPage { - field: ElementFinder = element(by.css('input[data-automation-id="adf-typeahed-search-input"]')); - firstResult: ElementFinder = element(by.id('adf-typeahed-widget-user-0')); - formFields: FormFields = new FormFields(); - groupDropDownList: Locator = by.css('.mat-autocomplete-panel'); + field = element(by.css('input[data-automation-id="adf-typeahed-search-input"]')); + firstResult = element(by.id('adf-typeahed-widget-user-0')); + formFields = new FormFields(); + groupDropDownList = by.css('.mat-autocomplete-panel'); - getFieldLabel(fieldId): Promise { + getFieldLabel(fieldId: string): Promise { return this.formFields.getFieldLabel(fieldId); } - getFieldValue(fieldId): Promise { + getFieldValue(fieldId: string): Promise { return this.formFields.getFieldValue(fieldId); } - getFieldText(fieldId): Promise { + getFieldText(fieldId: string): Promise { return this.formFields.getFieldText(fieldId); } - insertValue(fieldId, value): Promise { + insertValue(fieldId: string, value: string): Promise { return this.formFields.setValueInInputById(fieldId, value); } @@ -46,7 +46,7 @@ export class TypeaheadWidgetPage { await BrowserVisibility.waitUntilElementIsVisible(element(this.groupDropDownList)); } - async checkOptionIsListed(option): Promise { + async checkOptionIsListed(option: string): Promise { const optionElement = element(by.cssContainingText('[id="adf-typeahed-label-name"]', option)); await BrowserVisibility.waitUntilElementIsVisible(optionElement); } @@ -57,7 +57,7 @@ export class TypeaheadWidgetPage { return element.all(option).map((elementFinder) => elementFinder.getText()); } - async selectOptionFromDropDown(userName): Promise { + async selectOptionFromDropDown(userName: string): Promise { const option = element(by.cssContainingText('[id="adf-typeahed-label-name"]', userName)); await BrowserActions.click(option); } @@ -66,7 +66,7 @@ export class TypeaheadWidgetPage { await BrowserVisibility.waitUntilElementIsVisible(this.field); } - async fillTypeaheadField(value): Promise { + async fillTypeaheadField(value: string): Promise { await BrowserVisibility.waitUntilElementIsClickable(this.field); await BrowserActions.clearSendKeys(this.field, value); } diff --git a/lib/testing/src/lib/core/pages/header.page.ts b/lib/testing/src/lib/core/pages/header.page.ts index 4e8a29ea7b..9d3e4ec614 100644 --- a/lib/testing/src/lib/core/pages/header.page.ts +++ b/lib/testing/src/lib/core/pages/header.page.ts @@ -15,23 +15,23 @@ * limitations under the License. */ -import { element, by, protractor, browser, ElementFinder } from 'protractor'; +import { element, by, protractor, browser } from 'protractor'; import { BrowserVisibility } from '../utils/browser-visibility'; import { BrowserActions } from '../utils/browser-actions'; export class HeaderPage { - checkBox: ElementFinder = element(by.cssContainingText('.mat-checkbox-label', 'Show menu button')); - headerColor: ElementFinder = element(by.css('option[value="primary"]')); - titleInput: ElementFinder = element(by.css('input[name="title"]')); - iconInput: ElementFinder = element(by.css('input[placeholder="URL path"]')); - hexColorInput: ElementFinder = element(by.css('input[placeholder="hex color code"]')); - logoHyperlinkInput: ElementFinder = element(by.css('input[placeholder="Redirect URL"]')); - logoTooltipInput: ElementFinder = element(by.css('input[placeholder="Tooltip text"]')); - positionStart: ElementFinder = element.all(by.css('mat-radio-button[value="start"]')).first(); - positionEnd: ElementFinder = element.all(by.css('mat-radio-button[value="end"]')).first(); - sideBarPositionRight: ElementFinder = element(by.css('mat-sidenav.mat-drawer.mat-sidenav.mat-drawer-end')); - sideBarPositionLeft: ElementFinder = element(by.css('mat-sidenav.mat-drawer.mat-sidenav')); + checkBox = element(by.cssContainingText('.mat-checkbox-label', 'Show menu button')); + headerColor = element(by.css('option[value="primary"]')); + titleInput = element(by.css('input[name="title"]')); + iconInput = element(by.css('input[placeholder="URL path"]')); + hexColorInput = element(by.css('input[placeholder="hex color code"]')); + logoHyperlinkInput = element(by.css('input[placeholder="Redirect URL"]')); + logoTooltipInput = element(by.css('input[placeholder="Tooltip text"]')); + positionStart = element.all(by.css('mat-radio-button[value="start"]')).first(); + positionEnd = element.all(by.css('mat-radio-button[value="end"]')).first(); + sideBarPositionRight = element(by.css('mat-sidenav.mat-drawer.mat-sidenav.mat-drawer-end')); + sideBarPositionLeft = element(by.css('mat-sidenav.mat-drawer.mat-sidenav')); async checkShowMenuCheckBoxIsDisplayed(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.checkBox); @@ -54,28 +54,28 @@ export class HeaderPage { await BrowserActions.click(checkBox); } - async changeHeaderColor(color): Promise { + async changeHeaderColor(color: string): Promise { const headerColor = element(by.css('option[value="' + color + '"]')); await BrowserActions.click(headerColor); } - async checkAppTitle(name): Promise { + async checkAppTitle(name: string): Promise { const title = element(by.cssContainingText('.adf-app-title', name)); await BrowserVisibility.waitUntilElementIsVisible(title); } - async addTitle(title): Promise { + async addTitle(title: string): Promise { await BrowserActions.click(this.titleInput); await BrowserActions.clearSendKeys(this.titleInput, title); await this.titleInput.sendKeys(protractor.Key.ENTER); } - async checkIconIsDisplayed(url): Promise { + async checkIconIsDisplayed(url: string): Promise { const icon = element(by.css('img[src="' + url + '"]')); await BrowserVisibility.waitUntilElementIsVisible(icon); } - async addIcon(url): Promise { + async addIcon(url: string): Promise { await BrowserActions.click(this.iconInput); await BrowserActions.clearSendKeys(this.iconInput, url); await this.iconInput.sendKeys(protractor.Key.ENTER); @@ -93,19 +93,19 @@ export class HeaderPage { await BrowserVisibility.waitUntilElementIsVisible(this.logoTooltipInput); } - async addHexCodeColor(hexCode): Promise { + async addHexCodeColor(hexCode: string): Promise { await BrowserActions.click(this.hexColorInput); await BrowserActions.clearSendKeys(this.hexColorInput, hexCode); await this.hexColorInput.sendKeys(protractor.Key.ENTER); } - async addLogoHyperlink(hyperlink): Promise { + async addLogoHyperlink(hyperlink: string): Promise { await BrowserActions.click(this.logoHyperlinkInput); await BrowserActions.clearSendKeys(this.logoHyperlinkInput, hyperlink); await this.logoHyperlinkInput.sendKeys(protractor.Key.ENTER); } - async addLogoTooltip(tooltip): Promise { + async addLogoTooltip(tooltip: string): Promise { await BrowserActions.click(this.logoTooltipInput); await BrowserActions.clearSendKeys(this.logoTooltipInput, tooltip); await this.logoTooltipInput.sendKeys(protractor.Key.ENTER); diff --git a/lib/testing/src/lib/core/pages/login-sso.page.ts b/lib/testing/src/lib/core/pages/login-sso.page.ts index 0dc018d9cb..7d265aac7d 100644 --- a/lib/testing/src/lib/core/pages/login-sso.page.ts +++ b/lib/testing/src/lib/core/pages/login-sso.page.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { element, by, browser, protractor, ElementFinder } from 'protractor'; +import { element, by, browser, protractor } from 'protractor'; import { BrowserVisibility } from '../utils/browser-visibility'; import { BrowserActions } from '../utils/browser-actions'; import { LocalStorageUtil } from '../utils/local-storage.util'; @@ -29,9 +29,9 @@ export class LoginSSOPage { header = element(by.tagName('adf-layout-header')); loginError = element(by.css(`div[data-automation-id="login-error"]`)); - txtUsernameBasicAuth: ElementFinder = element(by.css('input[id="username"]')); - txtPasswordBasicAuth: ElementFinder = element(by.css('input[id="password"]')); - signInButtonBasicAuth: ElementFinder = element(by.id('login-button')); + txtUsernameBasicAuth = element(by.css('input[id="username"]')); + txtPasswordBasicAuth = element(by.css('input[id="password"]')); + signInButtonBasicAuth = element(by.id('login-button')); async goToLoginPage(): Promise { let currentUrl; @@ -95,11 +95,11 @@ export class LoginSSOPage { await BrowserActions.click(this.signInButtonBasicAuth); } - async enterUsernameBasicAuth(username): Promise { + async enterUsernameBasicAuth(username: string): Promise { await BrowserActions.clearSendKeys(this.txtUsernameBasicAuth, username); } - async enterPasswordBasicAuth(password): Promise { + async enterPasswordBasicAuth(password: string): Promise { await BrowserActions.clearSendKeys(this.txtPasswordBasicAuth, password); } diff --git a/lib/testing/src/lib/core/pages/material/date-picker-calendar.page.ts b/lib/testing/src/lib/core/pages/material/date-picker-calendar.page.ts index 9df37a3fba..454735e236 100644 --- a/lib/testing/src/lib/core/pages/material/date-picker-calendar.page.ts +++ b/lib/testing/src/lib/core/pages/material/date-picker-calendar.page.ts @@ -15,17 +15,17 @@ * limitations under the License. */ -import { element, by, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; import { DateUtil } from '../../utils/date-util'; import { BrowserVisibility } from '../../utils/browser-visibility'; import { BrowserActions } from '../../utils/browser-actions'; export class DatePickerCalendarPage { - datePicker: ElementFinder = element(by.css('mat-calendar')); - nextMonthButton: ElementFinder = element(by.css('button[class*="mat-calendar-next-button"]')); - previousMonthButton: ElementFinder = element(by.css('button[class*="mat-calendar-previous-button"]')); - todayDate: ElementFinder = element(by.css('.mat-calendar-body-today')); + datePicker = element(by.css('mat-calendar')); + nextMonthButton = element(by.css('button[class*="mat-calendar-next-button"]')); + previousMonthButton = element(by.css('button[class*="mat-calendar-previous-button"]')); + todayDate = element(by.css('.mat-calendar-body-today')); async getSelectedDate(): Promise { return element(by.css('td[class*="mat-calendar-body-active"]')).getAttribute('aria-label'); diff --git a/lib/testing/src/lib/core/pages/material/date-picker.page.ts b/lib/testing/src/lib/core/pages/material/date-picker.page.ts index 1b386f8d1d..233cc291c1 100644 --- a/lib/testing/src/lib/core/pages/material/date-picker.page.ts +++ b/lib/testing/src/lib/core/pages/material/date-picker.page.ts @@ -15,13 +15,13 @@ * limitations under the License. */ -import { element, by, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; import { BrowserActions } from '../../utils/browser-actions'; import { DatePickerCalendarPage } from './date-picker-calendar.page'; export class DatePickerPage { - datePicker: ElementFinder = element.all(by.css('.mat-datepicker-toggle')).first(); + datePicker = element.all(by.css('.mat-datepicker-toggle')).first(); dateTime = new DatePickerCalendarPage(); async setTodayDateValue(): Promise { diff --git a/lib/testing/src/lib/core/pages/material/date-time-picker-calendar.page.ts b/lib/testing/src/lib/core/pages/material/date-time-picker-calendar.page.ts index 93e885c158..9ef893cb2d 100644 --- a/lib/testing/src/lib/core/pages/material/date-time-picker-calendar.page.ts +++ b/lib/testing/src/lib/core/pages/material/date-time-picker-calendar.page.ts @@ -15,21 +15,21 @@ * limitations under the License. */ -import { element, by, ElementFinder, Locator } from 'protractor'; +import { element, by } from 'protractor'; import { BrowserVisibility } from '../../utils/browser-visibility'; import { BrowserActions } from '../../utils/browser-actions'; export class DateTimePickerCalendarPage { - datePicker: ElementFinder = element(by.css(`.mat-datetimepicker-calendar`)); - today: ElementFinder = element(by.css(`.mat-datetimepicker-calendar-body-today`)); - timePicker: ElementFinder = element(by.css('.mat-datetimepicker-clock')); - hourTime: ElementFinder = element.all(by.css('.mat-datetimepicker-clock-hours .mat-datetimepicker-clock-cell')).first(); - minutesTime: ElementFinder = element.all(by.css('.mat-datetimepicker-clock-minutes .mat-datetimepicker-clock-cell')).first(); - firstEnabledHourSelector: Locator = by.css('.mat-datetimepicker-clock-cell:not(.mat-datetimepicker-clock-cell-disabled)'); - firstEnabledMinutesSelector: Locator = by.css('.mat-datetimepicker-clock-cell:not(.mat-datetimepicker-clock-cell-disabled)'); - hoursPicker: ElementFinder = element(by.css('.mat-datetimepicker-clock-hours')); - minutePicker: ElementFinder = element(by.css('.mat-datetimepicker-clock-minutes')); + datePicker = element(by.css(`.mat-datetimepicker-calendar`)); + today = element(by.css(`.mat-datetimepicker-calendar-body-today`)); + timePicker = element(by.css('.mat-datetimepicker-clock')); + hourTime = element.all(by.css('.mat-datetimepicker-clock-hours .mat-datetimepicker-clock-cell')).first(); + minutesTime = element.all(by.css('.mat-datetimepicker-clock-minutes .mat-datetimepicker-clock-cell')).first(); + firstEnabledHourSelector = by.css('.mat-datetimepicker-clock-cell:not(.mat-datetimepicker-clock-cell-disabled)'); + firstEnabledMinutesSelector = by.css('.mat-datetimepicker-clock-cell:not(.mat-datetimepicker-clock-cell-disabled)'); + hoursPicker = element(by.css('.mat-datetimepicker-clock-hours')); + minutePicker = element(by.css('.mat-datetimepicker-clock-minutes')); async waitTillDateDisplayed(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.datePicker); diff --git a/lib/testing/src/lib/core/pages/material/date-time-picker.page.ts b/lib/testing/src/lib/core/pages/material/date-time-picker.page.ts index 6d35e6c449..bdbbc72e68 100644 --- a/lib/testing/src/lib/core/pages/material/date-time-picker.page.ts +++ b/lib/testing/src/lib/core/pages/material/date-time-picker.page.ts @@ -22,7 +22,7 @@ import { DateTimePickerCalendarPage } from './date-time-picker-calendar.page'; export class DateTimePickerPage { rootElement: ElementFinder; - dateTimePicker: ElementFinder = element(by.css('.mat-datetimepicker-toggle')); + dateTimePicker = element(by.css('.mat-datetimepicker-toggle')); dateTime = new DateTimePickerCalendarPage(); constructor(rootElement?: ElementFinder) { diff --git a/lib/testing/src/lib/core/pages/material/dropdown.page.ts b/lib/testing/src/lib/core/pages/material/dropdown.page.ts index 3888dfa149..a3dd544483 100644 --- a/lib/testing/src/lib/core/pages/material/dropdown.page.ts +++ b/lib/testing/src/lib/core/pages/material/dropdown.page.ts @@ -23,7 +23,7 @@ export class DropdownPage { dropDownElement: ElementFinder; - constructor(dropDownElement: ElementFinder = element.all(by.css('div[class="mat-select-arrow-wrapper"]')).first()) { + constructor(dropDownElement = element.all(by.css('div[class="mat-select-arrow-wrapper"]')).first()) { this.dropDownElement = dropDownElement; } @@ -58,8 +58,8 @@ export class DropdownPage { await BrowserVisibility.waitUntilElementIsVisible(selectedOption); } - async selectOptionFromIndex(index): Promise { - const value: ElementFinder = element.all(by.className('mat-option')).get(index); + async selectOptionFromIndex(index: number): Promise { + const value = element.all(by.className('mat-option')).get(index); await BrowserActions.click(value); } diff --git a/lib/testing/src/lib/core/pages/notification-history.page.ts b/lib/testing/src/lib/core/pages/notification-history.page.ts index 979c1f9e53..71db9c0ee5 100644 --- a/lib/testing/src/lib/core/pages/notification-history.page.ts +++ b/lib/testing/src/lib/core/pages/notification-history.page.ts @@ -15,13 +15,13 @@ * limitations under the License. */ -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; import { BrowserActions } from '../utils/browser-actions'; import { BrowserVisibility } from '../utils/browser-visibility'; export class NotificationHistoryPage { - notificationList: ElementFinder = element(by.css('#adf-notification-history-list')); + notificationList = element(by.css('#adf-notification-history-list')); async clickNotificationButton(): Promise { await BrowserActions.clickExecuteScript('#adf-notification-history-open-button'); diff --git a/lib/testing/src/lib/core/pages/pagination.page.ts b/lib/testing/src/lib/core/pages/pagination.page.ts index f69554f96f..002aa7e3ac 100644 --- a/lib/testing/src/lib/core/pages/pagination.page.ts +++ b/lib/testing/src/lib/core/pages/pagination.page.ts @@ -15,28 +15,28 @@ * limitations under the License. */ -import { browser, by, element, Locator, ElementFinder } from 'protractor'; +import { browser, by, element } from 'protractor'; import { BrowserVisibility } from '../utils/browser-visibility'; import { BrowserActions } from '../utils/browser-actions'; export class PaginationPage { - pageSelectorDropDown: ElementFinder = element(by.css('div[class*="adf-pagination__page-selector"]')); - pageSelectorArrow: ElementFinder = element(by.css('button[data-automation-id="page-selector"]')); - itemsPerPage: ElementFinder = element(by.css('span[class="adf-pagination__max-items"]')); - itemsPerPageOpenDropdown: ElementFinder = element(by.css('.adf-pagination__perpage-block button')); - itemsPerPageOptions: Locator = by.css('.adf-pagination__page-selector .mat-menu-item'); - currentPage: ElementFinder = element(by.css('span[class="adf-pagination__current-page"]')); - totalPages: ElementFinder = element(by.css('span[class="adf-pagination__total-pages"]')); - paginationRange: ElementFinder = element(by.css('span[class="adf-pagination__range"]')); - nextPageButton: ElementFinder = element(by.css('button[class*="adf-pagination__next-button"]')); - nextButtonDisabled: ElementFinder = element(by.css('button[class*="adf-pagination__next-button"][disabled]')); - previousButtonDisabled: ElementFinder = element(by.css('button[class*="adf-pagination__previous-button"][disabled]')); - pageDropDown: ElementFinder = element(by.css('div[class*="adf-pagination__actualinfo-block"] button')); - pageDropDownOptions: Locator = by.css('div[class*="mat-menu-content"] button'); - paginationSection: ElementFinder = element(by.css('adf-pagination')); - paginationSectionEmpty: ElementFinder = element(by.css('adf-pagination[class*="adf-pagination__empty"]')); - totalFiles: ElementFinder = element(by.css('span[class="adf-pagination__range"]')); + pageSelectorDropDown = element(by.css('div[class*="adf-pagination__page-selector"]')); + pageSelectorArrow = element(by.css('button[data-automation-id="page-selector"]')); + itemsPerPage = element(by.css('span[class="adf-pagination__max-items"]')); + itemsPerPageOpenDropdown = element(by.css('.adf-pagination__perpage-block button')); + itemsPerPageOptions = by.css('.adf-pagination__page-selector .mat-menu-item'); + currentPage = element(by.css('span[class="adf-pagination__current-page"]')); + totalPages = element(by.css('span[class="adf-pagination__total-pages"]')); + paginationRange = element(by.css('span[class="adf-pagination__range"]')); + nextPageButton = element(by.css('button[class*="adf-pagination__next-button"]')); + nextButtonDisabled = element(by.css('button[class*="adf-pagination__next-button"][disabled]')); + previousButtonDisabled = element(by.css('button[class*="adf-pagination__previous-button"][disabled]')); + pageDropDown = element(by.css('div[class*="adf-pagination__actualinfo-block"] button')); + pageDropDownOptions = by.css('div[class*="mat-menu-content"] button'); + paginationSection = element(by.css('adf-pagination')); + paginationSectionEmpty = element(by.css('adf-pagination[class*="adf-pagination__empty"]')); + totalFiles = element(by.css('span[class="adf-pagination__range"]')); async selectItemsPerPage(numberOfItem: string): Promise { await browser.executeScript(`document.querySelector('div[class*="adf-pagination__perpage-block"] button').click();`); diff --git a/lib/testing/src/lib/core/pages/settings.page.ts b/lib/testing/src/lib/core/pages/settings.page.ts index 9a5697a3c8..0d5c964def 100644 --- a/lib/testing/src/lib/core/pages/settings.page.ts +++ b/lib/testing/src/lib/core/pages/settings.page.ts @@ -15,29 +15,29 @@ * limitations under the License. */ -import { browser, by, element, ElementFinder } from 'protractor'; +import { browser, by, element } from 'protractor'; import { BrowserVisibility } from '../utils/browser-visibility'; import { BrowserActions } from '../utils/browser-actions'; import { DropdownPage } from '../../core/pages/material/dropdown.page'; export class SettingsPage { - settingsURL: string = browser.baseUrl + '/settings'; - ecmText: ElementFinder = element(by.css('input[data-automation-id*="ecmHost"]')); - bpmText: ElementFinder = element(by.css('input[data-automation-id*="bpmHost"]')); - clientIdText: ElementFinder = element(by.css('input[id="clientId"]')); - authHostText: ElementFinder = element(by.css('input[id="oauthHost"]')); - logoutUrlText: ElementFinder = element(by.css('input[id="logout-url"]')); - basicAuthRadioButton: ElementFinder = element(by.cssContainingText('mat-radio-button[id*="mat-radio"]', 'Basic Authentication')); - identityHostText: ElementFinder = element(by.css('input[id="identityHost"]')); - ssoRadioButton: ElementFinder = element(by.cssContainingText('[id*="mat-radio"]', 'SSO')); - silentLoginToggleLabel: ElementFinder = element(by.css('mat-slide-toggle[name="silentLogin"] label')); - silentLoginToggleElement: ElementFinder = element(by.css('mat-slide-toggle[name="silentLogin"]')); - implicitFlowLabel: ElementFinder = element(by.css('mat-slide-toggle[name="implicitFlow"] label')); - implicitFlowElement: ElementFinder = element(by.css('mat-slide-toggle[name="implicitFlow"]')); - applyButton: ElementFinder = element(by.css('button[data-automation-id*="host-button"]')); - backButton: ElementFinder = element(by.cssContainingText('button span[class="mat-button-wrapper"]', 'Back')); - validationMessage: ElementFinder = element(by.cssContainingText('mat-error', 'This field is required')); + settingsURL = browser.baseUrl + '/settings'; + ecmText = element(by.css('input[data-automation-id*="ecmHost"]')); + bpmText = element(by.css('input[data-automation-id*="bpmHost"]')); + clientIdText = element(by.css('input[id="clientId"]')); + authHostText = element(by.css('input[id="oauthHost"]')); + logoutUrlText = element(by.css('input[id="logout-url"]')); + basicAuthRadioButton = element(by.cssContainingText('mat-radio-button[id*="mat-radio"]', 'Basic Authentication')); + identityHostText = element(by.css('input[id="identityHost"]')); + ssoRadioButton = element(by.cssContainingText('[id*="mat-radio"]', 'SSO')); + silentLoginToggleLabel = element(by.css('mat-slide-toggle[name="silentLogin"] label')); + silentLoginToggleElement = element(by.css('mat-slide-toggle[name="silentLogin"]')); + implicitFlowLabel = element(by.css('mat-slide-toggle[name="implicitFlow"] label')); + implicitFlowElement = element(by.css('mat-slide-toggle[name="implicitFlow"]')); + applyButton = element(by.css('button[data-automation-id*="host-button"]')); + backButton = element(by.cssContainingText('button span[class="mat-button-wrapper"]', 'Back')); + validationMessage = element(by.cssContainingText('mat-error', 'This field is required')); providerDropdown = new DropdownPage(element(by.css('mat-select[id="adf-provider-selector"]'))); diff --git a/lib/testing/src/lib/core/pages/snackbar.page.ts b/lib/testing/src/lib/core/pages/snackbar.page.ts index 3c6ef3cda5..a0d2837422 100644 --- a/lib/testing/src/lib/core/pages/snackbar.page.ts +++ b/lib/testing/src/lib/core/pages/snackbar.page.ts @@ -15,14 +15,14 @@ * limitations under the License. */ -import { element, by, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; import { BrowserVisibility } from '../utils/browser-visibility'; import { BrowserActions } from '../utils/browser-actions'; export class SnackbarPage { - notificationSnackBar: ElementFinder = element.all(by.css('simple-snack-bar span')).first(); - snackBarAction: ElementFinder = element(by.css('simple-snack-bar button span')); + notificationSnackBar = element.all(by.css('simple-snack-bar span')).first(); + snackBarAction = element(by.css('simple-snack-bar button span')); snackBarContainerCss = by.css('.mat-snack-bar-container'); async waitForSnackBarToAppear() { diff --git a/lib/testing/src/lib/core/pages/user-info.page.ts b/lib/testing/src/lib/core/pages/user-info.page.ts index 10ad81dc78..63620883a1 100644 --- a/lib/testing/src/lib/core/pages/user-info.page.ts +++ b/lib/testing/src/lib/core/pages/user-info.page.ts @@ -15,30 +15,30 @@ * limitations under the License. */ -import { element, by, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; import { BrowserVisibility } from '../utils/browser-visibility'; import { TabsPage } from '../../core/pages/material/tabs.page'; import { BrowserActions } from '../utils/browser-actions'; export class UserInfoPage { - dialog: ElementFinder = element.all(by.css('mat-card[class*="adf-userinfo-card"]')).first(); - userImage: ElementFinder = element(by.css('div[id="user-initial-image"]')); - userInfoEcmHeaderTitle: ElementFinder = element(by.css('div[id="ecm-username"]')); - userInfoEcmTitle: ElementFinder = element(by.css('mat-card-content span[id="ecm-full-name"]')); - ecmEmail: ElementFinder = element(by.css('span[id="ecm-email"]')); - ecmJobTitle: ElementFinder = element(by.css('span[id="ecm-job-title"]')); - userInfoProcessHeaderTitle: ElementFinder = element(by.css('div[id="bpm-username"]')); - userInfoProcessTitle: ElementFinder = element(by.css('mat-card-content span[id="bpm-full-name"]')); - processEmail: ElementFinder = element(by.css('span[id="bpm-email"]')); - processTenant: ElementFinder = element(by.css('span[class="detail-profile"]')); - apsImage: ElementFinder = element(by.css('img[id="bpm-user-detail-image"]')); - acsImage: ElementFinder = element(by.css('img[id="ecm-user-detail-image"]')); - initialImage: ElementFinder = element.all(by.css('div[id="user-initials-image"]')).first(); - userInfoSsoHeaderTitle: ElementFinder = this.dialog.element(by.css('div[id="identity-username"]')); - userInfoSsoTitle: ElementFinder = element(by.css('.adf-userinfo__detail-title')); - ssoEmail: ElementFinder = element(by.id('identity-email')); - userProfileButton: ElementFinder = element(by.css('button[data-automation-id="adf-user-profile"]')); + dialog = element.all(by.css('mat-card[class*="adf-userinfo-card"]')).first(); + userImage = element(by.css('div[id="user-initial-image"]')); + userInfoEcmHeaderTitle = element(by.css('div[id="ecm-username"]')); + userInfoEcmTitle = element(by.css('mat-card-content span[id="ecm-full-name"]')); + ecmEmail = element(by.css('span[id="ecm-email"]')); + ecmJobTitle = element(by.css('span[id="ecm-job-title"]')); + userInfoProcessHeaderTitle = element(by.css('div[id="bpm-username"]')); + userInfoProcessTitle = element(by.css('mat-card-content span[id="bpm-full-name"]')); + processEmail = element(by.css('span[id="bpm-email"]')); + processTenant = element(by.css('span[class="detail-profile"]')); + apsImage = element(by.css('img[id="bpm-user-detail-image"]')); + acsImage = element(by.css('img[id="ecm-user-detail-image"]')); + initialImage = element.all(by.css('div[id="user-initials-image"]')).first(); + userInfoSsoHeaderTitle = this.dialog.element(by.css('div[id="identity-username"]')); + userInfoSsoTitle = element(by.css('.adf-userinfo__detail-title')); + ssoEmail = element(by.id('identity-email')); + userProfileButton = element(by.css('button[data-automation-id="adf-user-profile"]')); tabsPage: TabsPage; constructor() { diff --git a/lib/testing/src/lib/core/pages/viewer.page.ts b/lib/testing/src/lib/core/pages/viewer.page.ts index ad8d1a8131..758d5145e8 100644 --- a/lib/testing/src/lib/core/pages/viewer.page.ts +++ b/lib/testing/src/lib/core/pages/viewer.page.ts @@ -19,95 +19,95 @@ import { BrowserActions } from '../utils/browser-actions'; import { TabsPage } from './material/tabs.page'; import { TogglePage } from './material/toggle.page'; import { BrowserVisibility } from '../utils/browser-visibility'; -import { element, by, ElementFinder, browser, protractor } from 'protractor'; +import { element, by, browser, protractor } from 'protractor'; export class ViewerPage { - tabsPage: TabsPage = new TabsPage(); - togglePage: TogglePage = new TogglePage(); + tabsPage = new TabsPage(); + togglePage = new TogglePage(); - closeButton: ElementFinder = element(by.css('button[data-automation-id="adf-toolbar-back"]')); - fileName: ElementFinder = element(by.id('adf-viewer-display-name')); - infoButton: ElementFinder = element(by.css('button[data-automation-id="adf-toolbar-sidebar"]')); - leftSideBarButton: ElementFinder = element(by.css('button[data-automation-id="adf-toolbar-left-sidebar"]')); - previousPageButton: ElementFinder = element(by.id('viewer-previous-page-button')); - nextPageButton: ElementFinder = element(by.id('viewer-next-page-button')); - zoomInButton: ElementFinder = element(by.id('viewer-zoom-in-button')); - zoomOutButton: ElementFinder = element(by.id('viewer-zoom-out-button')); - scalePageButton: ElementFinder = element(by.id('viewer-scale-page-button')); - fullScreenButton: ElementFinder = element(by.css('button[data-automation-id="adf-toolbar-fullscreen"]')); - rotateLeft: ElementFinder = element(by.css('button[id="viewer-rotate-left-button"]')); - rotateRight: ElementFinder = element(by.css('button[id="viewer-rotate-right-button"]')); - scaleImg: ElementFinder = element(by.css('button[id="viewer-reset-button"]')); - fileThumbnail: ElementFinder = element(by.css('img[data-automation-id="adf-file-thumbnail"]')); - pageSelectorInput: ElementFinder = element(by.css('input[data-automation-id="adf-page-selector"]')); - imgContainer: ElementFinder = element(by.css('div[data-automation-id="adf-image-container"]')); - mediaContainer: ElementFinder = element(by.css('adf-media-player[class="adf-media-player ng-star-inserted"]')); - percentage: ElementFinder = element(by.css('div[data-automation-id="adf-page-scale"')); - thumbnailsBtn: ElementFinder = element(by.css('button[data-automation-id="adf-thumbnails-button"]')); - thumbnailsContent: ElementFinder = element(by.css('div[data-automation-id="adf-thumbnails-content"]')); - thumbnailsClose: ElementFinder = element(by.css('button[data-automation-id="adf-thumbnails-close"]')); - secondThumbnail: ElementFinder = element(by.css('adf-pdf-thumb > img[title="Page 2"')); - lastThumbnailDisplayed: ElementFinder = element.all(by.css('adf-pdf-thumb')).last(); - passwordDialog: ElementFinder = element(by.css('adf-pdf-viewer-password-dialog')); - passwordSubmit: ElementFinder = element(by.css('button[data-automation-id="adf-password-dialog-submit"]')); - passwordDialogClose: ElementFinder = element(by.css('button[data-automation-id="adf-password-dialog-close"]')); - passwordSubmitDisabled: ElementFinder = element(by.css('button[data-automation-id="adf-password-dialog-submit"][disabled]')); - passwordInput: ElementFinder = element(by.css('input[data-automation-id="adf-password-dialog-input"]')); - passwordError: ElementFinder = element(by.css('mat-error[data-automation-id="adf-password-dialog-error"]')); - infoSideBar: ElementFinder = element(by.id('adf-right-sidebar')); - leftSideBar: ElementFinder = element(by.id('adf-left-sidebar')); - viewer: ElementFinder = element(by.css('adf-viewer')); - pdfViewer: ElementFinder = element(by.css('adf-pdf-viewer')); - imgViewer: ElementFinder = element(by.css('adf-img-viewer')); - activeTab: ElementFinder = element(by.css('div[class*="mat-tab-label-active"]')); - toolbarSwitch: ElementFinder = element(by.id('adf-switch-toolbar')); - toolbar: ElementFinder = element(by.id('adf-viewer-toolbar')); - lastButton: ElementFinder = element.all(by.css('#adf-viewer-toolbar mat-toolbar > button[data-automation-id*="adf-toolbar-"]')).last(); - goBackSwitch: ElementFinder = element(by.id('adf-switch-goback')); - canvasLayer: ElementFinder = element.all(by.css('div[class="canvasWrapper"] > canvas')).first(); + closeButton = element(by.css('button[data-automation-id="adf-toolbar-back"]')); + fileName = element(by.id('adf-viewer-display-name')); + infoButton = element(by.css('button[data-automation-id="adf-toolbar-sidebar"]')); + leftSideBarButton = element(by.css('button[data-automation-id="adf-toolbar-left-sidebar"]')); + previousPageButton = element(by.id('viewer-previous-page-button')); + nextPageButton = element(by.id('viewer-next-page-button')); + zoomInButton = element(by.id('viewer-zoom-in-button')); + zoomOutButton = element(by.id('viewer-zoom-out-button')); + scalePageButton = element(by.id('viewer-scale-page-button')); + fullScreenButton = element(by.css('button[data-automation-id="adf-toolbar-fullscreen"]')); + rotateLeft = element(by.css('button[id="viewer-rotate-left-button"]')); + rotateRight = element(by.css('button[id="viewer-rotate-right-button"]')); + scaleImg = element(by.css('button[id="viewer-reset-button"]')); + fileThumbnail = element(by.css('img[data-automation-id="adf-file-thumbnail"]')); + pageSelectorInput = element(by.css('input[data-automation-id="adf-page-selector"]')); + imgContainer = element(by.css('div[data-automation-id="adf-image-container"]')); + mediaContainer = element(by.css('adf-media-player[class="adf-media-player ng-star-inserted"]')); + percentage = element(by.css('div[data-automation-id="adf-page-scale"')); + thumbnailsBtn = element(by.css('button[data-automation-id="adf-thumbnails-button"]')); + thumbnailsContent = element(by.css('div[data-automation-id="adf-thumbnails-content"]')); + thumbnailsClose = element(by.css('button[data-automation-id="adf-thumbnails-close"]')); + secondThumbnail = element(by.css('adf-pdf-thumb > img[title="Page 2"')); + lastThumbnailDisplayed = element.all(by.css('adf-pdf-thumb')).last(); + passwordDialog = element(by.css('adf-pdf-viewer-password-dialog')); + passwordSubmit = element(by.css('button[data-automation-id="adf-password-dialog-submit"]')); + passwordDialogClose = element(by.css('button[data-automation-id="adf-password-dialog-close"]')); + passwordSubmitDisabled = element(by.css('button[data-automation-id="adf-password-dialog-submit"][disabled]')); + passwordInput = element(by.css('input[data-automation-id="adf-password-dialog-input"]')); + passwordError = element(by.css('mat-error[data-automation-id="adf-password-dialog-error"]')); + infoSideBar = element(by.id('adf-right-sidebar')); + leftSideBar = element(by.id('adf-left-sidebar')); + viewer = element(by.css('adf-viewer')); + pdfViewer = element(by.css('adf-pdf-viewer')); + imgViewer = element(by.css('adf-img-viewer')); + activeTab = element(by.css('div[class*="mat-tab-label-active"]')); + toolbarSwitch = element(by.id('adf-switch-toolbar')); + toolbar = element(by.id('adf-viewer-toolbar')); + lastButton = element.all(by.css('#adf-viewer-toolbar mat-toolbar > button[data-automation-id*="adf-toolbar-"]')).last(); + goBackSwitch = element(by.id('adf-switch-goback')); + canvasLayer = element.all(by.css('div[class="canvasWrapper"] > canvas')).first(); - openWithSwitch: ElementFinder = element(by.id('adf-switch-openwith')); - openWith: ElementFinder = element(by.id('adf-viewer-openwith')); + openWithSwitch = element(by.id('adf-switch-openwith')); + openWith = element(by.id('adf-viewer-openwith')); - moreActionsMenuSwitch: ElementFinder = element(by.id('adf-switch-moreactionsmenu')); - moreActionsMenu: ElementFinder = element(by.css('button[data-automation-id="adf-toolbar-more-actions"]')); + moreActionsMenuSwitch = element(by.id('adf-switch-moreactionsmenu')); + moreActionsMenu = element(by.css('button[data-automation-id="adf-toolbar-more-actions"]')); - customNameSwitch: ElementFinder = element(by.id('adf-switch-custoname')); - customToolbarToggle: ElementFinder = element(by.id('adf-toggle-custom-toolbar')); - customToolbar: ElementFinder = element(by.css('adf-viewer-toolbar[data-automation-id="adf-viewer-custom-toolbar"]')); + customNameSwitch = element(by.id('adf-switch-custoname')); + customToolbarToggle = element(by.id('adf-toggle-custom-toolbar')); + customToolbar = element(by.css('adf-viewer-toolbar[data-automation-id="adf-viewer-custom-toolbar"]')); - showRightSidebarSwitch: ElementFinder = element(by.id('adf-switch-showrightsidebar')); - showLeftSidebarSwitch: ElementFinder = element(by.id('adf-switch-showleftsidebar')); + showRightSidebarSwitch = element(by.id('adf-switch-showrightsidebar')); + showLeftSidebarSwitch = element(by.id('adf-switch-showleftsidebar')); - moreActionsSwitch: ElementFinder = element(by.id('adf-switch-moreactions')); - pdfPageLoaded: ElementFinder = element(by.css('[data-page-number="1"][data-loaded="true"], adf-img-viewer, adf-txt-viewer')); + moreActionsSwitch = element(by.id('adf-switch-moreactions')); + pdfPageLoaded = element(by.css('[data-page-number="1"][data-loaded="true"], adf-img-viewer, adf-txt-viewer')); - downloadSwitch: ElementFinder = element(by.id('adf-switch-download')); - downloadButton: ElementFinder = element(by.id('adf-viewer-download')); + downloadSwitch = element(by.id('adf-switch-download')); + downloadButton = element(by.id('adf-viewer-download')); - printSwitch: ElementFinder = element(by.id('adf-switch-print')); - printButton: ElementFinder = element(by.id('adf-viewer-print')); + printSwitch = element(by.id('adf-switch-print')); + printButton = element(by.id('adf-viewer-print')); - allowSidebarSwitch: ElementFinder = element(by.id('adf-switch-allowsidebar')); - allowLeftSidebarSwitch: ElementFinder = element(by.id('adf-switch-allowLeftSidebar')); + allowSidebarSwitch = element(by.id('adf-switch-allowsidebar')); + allowLeftSidebarSwitch = element(by.id('adf-switch-allowLeftSidebar')); - uploadButton: ElementFinder = element(by.id('adf-viewer-upload')); - timeButton: ElementFinder = element(by.id('adf-viewer-time')); - bugButton: ElementFinder = element(by.id('adf-viewer-bug')); + uploadButton = element(by.id('adf-viewer-upload')); + timeButton = element(by.id('adf-viewer-time')); + bugButton = element(by.id('adf-viewer-bug')); - codeViewer: ElementFinder = element(by.id('adf-monaco-file-editor')); + codeViewer = element(by.id('adf-monaco-file-editor')); - showTabWithIconSwitch: ElementFinder = element(by.id('adf-tab-with-icon')); - showTabWithIconAndLabelSwitch: ElementFinder = element(by.id('adf-icon-and-label-tab')); - unknownFormat: ElementFinder = element(by.css(`adf-viewer-unknown-format .adf-viewer__unknown-format-view`)); + showTabWithIconSwitch = element(by.id('adf-tab-with-icon')); + showTabWithIconAndLabelSwitch = element(by.id('adf-icon-and-label-tab')); + unknownFormat = element(by.css(`adf-viewer-unknown-format .adf-viewer__unknown-format-view`)); async checkCodeViewerIsDisplayed(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.codeViewer); } async viewFile(fileName): Promise { - const fileView: ElementFinder = element.all(by.css(`#document-list-container div[data-automation-id="${fileName}"]`)).first(); + const fileView = element.all(by.css(`#document-list-container div[data-automation-id="${fileName}"]`)).first(); await BrowserActions.click(fileView); await browser.actions().sendKeys(protractor.Key.ENTER).perform(); } @@ -176,7 +176,7 @@ export class ViewerPage { } async checkCurrentThumbnailIsSelected(): Promise { - const selectedThumbnail: ElementFinder = element(by.css('adf-pdf-thumb[class="adf-pdf-thumbnails__thumb ng-star-inserted adf-pdf-thumbnails__thumb--selected"] > img')); + const selectedThumbnail = element(by.css('adf-pdf-thumb[class="adf-pdf-thumbnails__thumb ng-star-inserted adf-pdf-thumbnails__thumb--selected"] > img')); const pageNumber = await this.pageSelectorInput.getAttribute('value'); await expect('Page ' + pageNumber).toEqual(await selectedThumbnail.getAttribute('title')); @@ -274,9 +274,9 @@ export class ViewerPage { async checkFileContent(pageNumber: string, text: string): Promise { const allPages = this.canvasLayer; - const pageLoaded: ElementFinder = element.all(by.css('div[data-page-number="' + pageNumber + '"][data-loaded="true"]')).first(); - const textLayerLoaded: ElementFinder = element.all(by.css('div[data-page-number="' + pageNumber + '"] div[class="textLayer"]')).first(); - const specificText: ElementFinder = element.all(by.cssContainingText('div[data-page-number="' + pageNumber + '"] div[class="textLayer"]', text)).first(); + const pageLoaded = element.all(by.css('div[data-page-number="' + pageNumber + '"][data-loaded="true"]')).first(); + const textLayerLoaded = element.all(by.css('div[data-page-number="' + pageNumber + '"] div[class="textLayer"]')).first(); + const specificText = element.all(by.cssContainingText('div[data-page-number="' + pageNumber + '"] div[class="textLayer"]', text)).first(); await BrowserVisibility.waitUntilElementIsVisible(allPages); await BrowserVisibility.waitUntilElementIsVisible(pageLoaded); @@ -346,7 +346,7 @@ export class ViewerPage { } async checkTabIsActive(tabName): Promise { - const tab: ElementFinder = element(by.cssContainingText('.adf-info-drawer-layout-content div.mat-tab-labels div.mat-tab-label-active .mat-tab-label-content', tabName)); + const tab = element(by.cssContainingText('.adf-info-drawer-layout-content div.mat-tab-labels div.mat-tab-label-active .mat-tab-label-content', tabName)); await BrowserVisibility.waitUntilElementIsVisible(tab); } @@ -593,7 +593,7 @@ export class ViewerPage { } async enterCustomName(text: string): Promise { - const textField: ElementFinder = element(by.css('input[data-automation-id="adf-text-custom-name"]')); + const textField = element(by.css('input[data-automation-id="adf-text-custom-name"]')); // await BrowserVisibility.waitUntilElementIsVisible(textField); await BrowserActions.clearSendKeys(textField, text); } @@ -611,22 +611,22 @@ export class ViewerPage { } async checkTabHasNoIcon(index: number): Promise { - const tab: ElementFinder = element(by.css(`div[id="mat-tab-label-1-${index}"] div[class="mat-tab-label-content"] mat-icon`)); + const tab = element(by.css(`div[id="mat-tab-label-1-${index}"] div[class="mat-tab-label-content"] mat-icon`)); await BrowserVisibility.waitUntilElementIsNotVisible(tab); } async checkTabHasNoLabel(index: number): Promise { - const tab: ElementFinder = element(by.css(`div[id="mat-tab-label-1-${index}"] div[class="mat-tab-label-content"] span`)); + const tab = element(by.css(`div[id="mat-tab-label-1-${index}"] div[class="mat-tab-label-content"] span`)); await BrowserVisibility.waitUntilElementIsNotVisible(tab); } async getTabLabelById(index: number): Promise { - const tab: ElementFinder = element(by.css(`div[id="mat-tab-label-1-${index}"] div[class="mat-tab-label-content"] span`)); + const tab = element(by.css(`div[id="mat-tab-label-1-${index}"] div[class="mat-tab-label-content"] span`)); return BrowserActions.getText(tab); } async getTabIconById(index: number): Promise { - const tab: ElementFinder = element(by.css(`div[id="mat-tab-label-1-${index}"] div[class="mat-tab-label-content"] mat-icon`)); + const tab = element(by.css(`div[id="mat-tab-label-1-${index}"] div[class="mat-tab-label-content"] mat-icon`)); return BrowserActions.getText(tab); } diff --git a/lib/testing/src/lib/process-services-cloud/app/app-list-cloud.page.ts b/lib/testing/src/lib/process-services-cloud/app/app-list-cloud.page.ts index bf39d38245..52f46cf042 100644 --- a/lib/testing/src/lib/process-services-cloud/app/app-list-cloud.page.ts +++ b/lib/testing/src/lib/process-services-cloud/app/app-list-cloud.page.ts @@ -15,23 +15,23 @@ * limitations under the License. */ -import { element, by, ElementArrayFinder, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; import { BrowserVisibility } from '../../core/utils/browser-visibility'; import { BrowserActions } from '../../core/utils/browser-actions'; export class AppListCloudPage { - apsAppsContainer: ElementFinder = element(by.css('adf-cloud-app-list')); - allApps: ElementArrayFinder = element.all(by.css('adf-cloud-app-details')); - nameOfAllApps: ElementArrayFinder = element.all(by.css('adf-cloud-app-details div[class*="item-card-title"] h1')); - firstApp: ElementFinder = element.all(by.css('adf-cloud-app-details div[class*="item-card-title"] h1')).first(); + apsAppsContainer = element(by.css('adf-cloud-app-list')); + allApps = element.all(by.css('adf-cloud-app-details')); + nameOfAllApps = element.all(by.css('adf-cloud-app-details div[class*="item-card-title"] h1')); + firstApp = element.all(by.css('adf-cloud-app-details div[class*="item-card-title"] h1')).first(); async checkApsContainer(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.apsAppsContainer); await BrowserVisibility.waitUntilElementIsVisible(this.firstApp); } - async goToApp(applicationName): Promise { + async goToApp(applicationName: string): Promise { await BrowserActions.clickExecuteScript('mat-card[title="' + applicationName + '"]'); } @@ -43,12 +43,12 @@ export class AppListCloudPage { return BrowserActions.getArrayText(this.nameOfAllApps); } - async checkAppIsNotDisplayed(applicationName): Promise { + async checkAppIsNotDisplayed(applicationName: string): Promise { const app = element(by.css('mat-card[title="' + applicationName + '"]')); await BrowserVisibility.waitUntilElementIsNotVisible(app); } - async checkAppIsDisplayed(applicationName): Promise { + async checkAppIsDisplayed(applicationName: string): Promise { const app = element(by.css('mat-card[title="' + applicationName + '"]')); await BrowserVisibility.waitUntilElementIsVisible(app); } diff --git a/lib/testing/src/lib/process-services-cloud/pages/dialog/edit-process-filter-dialog.page.ts b/lib/testing/src/lib/process-services-cloud/pages/dialog/edit-process-filter-dialog.page.ts index b09d3ae708..03ce37ec44 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/dialog/edit-process-filter-dialog.page.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/dialog/edit-process-filter-dialog.page.ts @@ -15,17 +15,17 @@ * limitations under the License. */ -import { browser, by, element, ElementFinder, Locator } from 'protractor'; +import { browser, by, element } from 'protractor'; import { BrowserVisibility } from '../../../core/utils/browser-visibility'; import { BrowserActions } from '../../../core/utils/browser-actions'; export class EditProcessFilterDialogPage { - componentElement: ElementFinder = element(by.css('adf-cloud-process-filter-dialog-cloud')); - title: ElementFinder = element(by.id('adf-process-filter-dialog-title')); - filterNameInput: ElementFinder = element(by.id('adf-filter-name-id')); - saveButtonLocator: Locator = by.id('adf-save-button-id'); - cancelButtonLocator: Locator = by.id('adf-cancel-button-id'); + componentElement = element(by.css('adf-cloud-process-filter-dialog-cloud')); + title = element(by.id('adf-process-filter-dialog-title')); + filterNameInput = element(by.id('adf-filter-name-id')); + saveButtonLocator = by.id('adf-save-button-id'); + cancelButtonLocator = by.id('adf-cancel-button-id'); async clickOnSaveButton(): Promise { const saveButton = this.componentElement.element(this.saveButtonLocator); diff --git a/lib/testing/src/lib/process-services-cloud/pages/dialog/edit-task-filter-dialog.page.ts b/lib/testing/src/lib/process-services-cloud/pages/dialog/edit-task-filter-dialog.page.ts index 3afea789ef..e158a8893d 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/dialog/edit-task-filter-dialog.page.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/dialog/edit-task-filter-dialog.page.ts @@ -15,17 +15,17 @@ * limitations under the License. */ -import { browser, by, element, Locator, ElementFinder } from 'protractor'; +import { browser, by, element } from 'protractor'; import { BrowserVisibility } from '../../../core/utils/browser-visibility'; import { BrowserActions } from '../../../core/utils/browser-actions'; export class EditTaskFilterDialogPage { - componentElement: ElementFinder = element(by.css('adf-cloud-task-filter-dialog')); - title: ElementFinder = element(by.id('adf-task-filter-dialog-title')); - filterNameInput: ElementFinder = element(by.id('adf-filter-name-id')); - saveButtonLocator: Locator = by.id('adf-save-button-id'); - cancelButtonLocator: Locator = by.id('adf-cancel-button-id'); + componentElement = element(by.css('adf-cloud-task-filter-dialog')); + title = element(by.id('adf-task-filter-dialog-title')); + filterNameInput = element(by.id('adf-filter-name-id')); + saveButtonLocator = by.id('adf-save-button-id'); + cancelButtonLocator = by.id('adf-cancel-button-id'); async clickOnSaveButton(): Promise { const saveButton = this.componentElement.element(this.saveButtonLocator); diff --git a/lib/testing/src/lib/process-services-cloud/pages/edit-process-filter-cloud-component.page.ts b/lib/testing/src/lib/process-services-cloud/pages/edit-process-filter-cloud-component.page.ts index 48f4199651..27f60ac9e6 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/edit-process-filter-cloud-component.page.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/edit-process-filter-cloud-component.page.ts @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { browser, by, element, protractor, ElementFinder } from 'protractor'; +import { browser, by, element, protractor } from 'protractor'; import { EditProcessFilterDialogPage } from './dialog/edit-process-filter-dialog.page'; import { BrowserVisibility } from '../../core/utils/browser-visibility'; import { BrowserActions } from '../../core/utils/browser-actions'; @@ -22,11 +22,11 @@ import { DropdownPage } from '../../core/pages/material/dropdown.page'; export class EditProcessFilterCloudComponentPage { - customiseFilter: ElementFinder = element(by.id('adf-edit-process-filter-title-id')); - saveButton: ElementFinder = element(by.css('button[data-automation-id="adf-filter-action-save"]')); - saveAsButton: ElementFinder = element(by.css('button[data-automation-id="adf-filter-action-saveAs"]')); - deleteButton: ElementFinder = element(by.css('button[data-automation-id="adf-filter-action-delete"]')); - filter: ElementFinder = element(by.css(`adf-cloud-edit-process-filter mat-expansion-panel-header`)); + customiseFilter = element(by.id('adf-edit-process-filter-title-id')); + saveButton = element(by.css('button[data-automation-id="adf-filter-action-save"]')); + saveAsButton = element(by.css('button[data-automation-id="adf-filter-action-saveAs"]')); + deleteButton = element(by.css('button[data-automation-id="adf-filter-action-delete"]')); + filter = element(by.css(`adf-cloud-edit-process-filter mat-expansion-panel-header`)); private locatorAppNameDropdown = element(by.css(`mat-select[data-automation-id='adf-cloud-edit-process-property-appName']`)); private locatorStatusDropdown = element(by.css(`mat-select[data-automation-id='adf-cloud-edit-process-property-status']`)); @@ -115,15 +115,15 @@ export class EditProcessFilterCloudComponentPage { return BrowserVisibility.waitUntilElementIsNotVisible(emptyList); } - async setProcessInstanceId(option): Promise { + async setProcessInstanceId(option: string): Promise { await this.setProperty('processInstanceId', option); } - async setProcessDefinitionKey(option): Promise { + async setProcessDefinitionKey(option: string): Promise { await this.setProperty('processDefinitionKey', option); } - async setProcessName(option): Promise { + async setProcessName(option: string): Promise { await this.setProperty('processName', option); } diff --git a/lib/testing/src/lib/process-services-cloud/pages/edit-task-filter-cloud-component.page.ts b/lib/testing/src/lib/process-services-cloud/pages/edit-task-filter-cloud-component.page.ts index 1bce87f120..acf968bcf9 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/edit-task-filter-cloud-component.page.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/edit-task-filter-cloud-component.page.ts @@ -23,21 +23,21 @@ import { DropdownPage } from '../../core/pages/material/dropdown.page'; export class EditTaskFilterCloudComponentPage { - customiseFilter: ElementFinder = element(by.id('adf-edit-task-filter-title-id')); - assignee: ElementFinder = element(by.css('input[data-automation-id="adf-cloud-edit-task-property-assignee"]')); - priority: ElementFinder = element(by.css('input[data-automation-id="adf-cloud-edit-task-property-priority"]')); - taskName: ElementFinder = element(by.css('input[data-automation-id="adf-cloud-edit-task-property-taskName"]')); - id: ElementFinder = element(by.css('input[data-automation-id="adf-cloud-edit-task-property-taskId"]')); - processDefinitionId: ElementFinder = element(by.css('input[data-automation-id="adf-cloud-edit-task-property-processDefinitionId"]')); - processInstanceId: ElementFinder = element(by.css('input[data-automation-id="adf-cloud-edit-task-property-processInstanceId"]')); - lastModifiedFrom: ElementFinder = element(by.css('input[placeholder="LastModifiedFrom"]')); - lastModifiedTo: ElementFinder = element(by.css('input[placeholder="LastModifiedTo"]')); - parentTaskId: ElementFinder = element(by.css('input[data-automation-id="adf-cloud-edit-task-property-parentTaskId"]')); - owner: ElementFinder = element(by.css('input[data-automation-id="adf-cloud-edit-task-property-owner"]')); - saveButton: ElementFinder = element(by.css('[data-automation-id="adf-filter-action-save"]')); - saveAsButton: ElementFinder = element(by.css('[data-automation-id="adf-filter-action-saveAs"]')); - deleteButton: ElementFinder = element(by.css('[data-automation-id="adf-filter-action-delete"]')); - filter: ElementFinder = element(by.css(`adf-cloud-edit-task-filter mat-expansion-panel-header`)); + customiseFilter = element(by.id('adf-edit-task-filter-title-id')); + assignee = element(by.css('input[data-automation-id="adf-cloud-edit-task-property-assignee"]')); + priority = element(by.css('input[data-automation-id="adf-cloud-edit-task-property-priority"]')); + taskName = element(by.css('input[data-automation-id="adf-cloud-edit-task-property-taskName"]')); + id = element(by.css('input[data-automation-id="adf-cloud-edit-task-property-taskId"]')); + processDefinitionId = element(by.css('input[data-automation-id="adf-cloud-edit-task-property-processDefinitionId"]')); + processInstanceId = element(by.css('input[data-automation-id="adf-cloud-edit-task-property-processInstanceId"]')); + lastModifiedFrom = element(by.css('input[placeholder="LastModifiedFrom"]')); + lastModifiedTo = element(by.css('input[placeholder="LastModifiedTo"]')); + parentTaskId = element(by.css('input[data-automation-id="adf-cloud-edit-task-property-parentTaskId"]')); + owner = element(by.css('input[data-automation-id="adf-cloud-edit-task-property-owner"]')); + saveButton = element(by.css('[data-automation-id="adf-filter-action-save"]')); + saveAsButton = element(by.css('[data-automation-id="adf-filter-action-saveAs"]')); + deleteButton = element(by.css('[data-automation-id="adf-filter-action-delete"]')); + filter = element(by.css(`adf-cloud-edit-task-filter mat-expansion-panel-header`)); private locatorAppNameDropdown = element(by.css(`mat-select[data-automation-id='adf-cloud-edit-task-property-appName']`)); private locatorStatusDropdown = element(by.css(`mat-select[data-automation-id='adf-cloud-edit-task-property-status']`)); @@ -200,7 +200,7 @@ export class EditTaskFilterCloudComponentPage { return this.appNameDropdown.getSelectedOptionText(); } - async setId(option): Promise { + async setId(option: string): Promise { await this.setProperty('taskId', option); } diff --git a/lib/testing/src/lib/process-services-cloud/pages/form-cloud-component.page.ts b/lib/testing/src/lib/process-services-cloud/pages/form-cloud-component.page.ts index b9d426124f..7d5d37d2f9 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/form-cloud-component.page.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/form-cloud-component.page.ts @@ -15,15 +15,15 @@ * limitations under the License. */ -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; import { BrowserVisibility } from '../../core/utils/browser-visibility'; import { BrowserActions } from '../../core/utils/browser-actions'; import { ConfigEditorPage } from '../../core/pages/config-editor-page'; export class FormCloudComponentPage { - formCloudEditor: ElementFinder = element.all(by.css('.mat-tab-list .mat-tab-label')).get(1); - formCloudRender: ElementFinder = element.all(by.css('.mat-tab-list .mat-tab-label')).get(0); + formCloudEditor = element.all(by.css('.mat-tab-list .mat-tab-label')).get(1); + formCloudRender = element.all(by.css('.mat-tab-list .mat-tab-label')).get(0); configEditorPage = new ConfigEditorPage(); diff --git a/lib/testing/src/lib/process-services-cloud/pages/group-cloud-component.page.ts b/lib/testing/src/lib/process-services-cloud/pages/group-cloud-component.page.ts index 0b789794d5..70ddcc2d33 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/group-cloud-component.page.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/group-cloud-component.page.ts @@ -15,21 +15,21 @@ * limitations under the License. */ -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; import { BrowserVisibility } from '../../core/utils/browser-visibility'; import { BrowserActions } from '../../core/utils/browser-actions'; import { FormFields } from '../../core/pages/form/form-fields'; export class GroupCloudComponentPage { - groupCloudSearch: ElementFinder = element(by.css('input[data-automation-id="adf-cloud-group-search-input"]')); - formFields: FormFields = new FormFields(); + groupCloudSearch = element(by.css('input[data-automation-id="adf-cloud-group-search-input"]')); + formFields = new FormFields(); async searchGroups(name: string): Promise { await BrowserActions.clearSendKeys(this.groupCloudSearch, name); } - async searchGroupsToExisting(name) { + async searchGroupsToExisting(name: string) { await BrowserActions.clearSendKeys(this.groupCloudSearch, name); } @@ -87,7 +87,7 @@ export class GroupCloudComponentPage { } } - async checkGroupActiveField(name): Promise { + async checkGroupActiveField(name: string): Promise { const activeGroupField = element(by.css('group-cloud-widget .adf-readonly')); try { await BrowserActions.clearSendKeys(activeGroupField, name); diff --git a/lib/testing/src/lib/process-services-cloud/pages/people-cloud-component.page.ts b/lib/testing/src/lib/process-services-cloud/pages/people-cloud-component.page.ts index b9aa9bd249..d96b84c3db 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/people-cloud-component.page.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/people-cloud-component.page.ts @@ -15,20 +15,20 @@ * limitations under the License. */ -import { by, element, ElementFinder, Locator, protractor } from 'protractor'; +import { by, element, protractor } from 'protractor'; import { BrowserVisibility } from '../../core/utils/browser-visibility'; import { BrowserActions } from '../../core/utils/browser-actions'; import { FormFields } from '../../core/pages/form/form-fields'; export class PeopleCloudComponentPage { - peopleCloudSearch: ElementFinder = element(by.css('input[data-automation-id="adf-people-cloud-search-input"]')); - assigneeField: ElementFinder = element(by.css('input[data-automation-id="adf-people-cloud-search-input"]')); - selectionReady: ElementFinder = element(by.css('div[data-automation-id="adf-people-cloud-row"]')); - formFields: FormFields = new FormFields(); - labelLocator: Locator = by.css("label[class*='adf-label']"); - inputLocator: Locator = by.css('input'); - assigneeChipList: ElementFinder = element(by.css('mat-chip-list[data-automation-id="adf-cloud-people-chip-list"]')); + peopleCloudSearch = element(by.css('input[data-automation-id="adf-people-cloud-search-input"]')); + assigneeField = element(by.css('input[data-automation-id="adf-people-cloud-search-input"]')); + selectionReady = element(by.css('div[data-automation-id="adf-people-cloud-row"]')); + formFields = new FormFields(); + labelLocator = by.css("label[class*='adf-label']"); + inputLocator = by.css('input'); + assigneeChipList = element(by.css('mat-chip-list[data-automation-id="adf-cloud-people-chip-list"]')); async clearAssignee(): Promise { await BrowserActions.clearSendKeys(this.peopleCloudSearch, ' '); @@ -100,11 +100,11 @@ export class PeopleCloudComponentPage { return this.assigneeField.getAttribute('value'); } - getFieldLabel(fieldId): Promise { + getFieldLabel(fieldId: string): Promise { return this.formFields.getFieldLabel(fieldId, this.labelLocator); } - getFieldValue(fieldId): Promise { + getFieldValue(fieldId: string): Promise { return this.formFields.getFieldValue(fieldId, this.inputLocator); } @@ -127,7 +127,7 @@ export class PeopleCloudComponentPage { } } - async clickPeopleInput(fieldId): Promise { + async clickPeopleInput(fieldId: string): Promise { const peopleInput = element.all(by.css(`div[id="field-${fieldId}-container"] `)).first(); await BrowserActions.click(peopleInput); } @@ -142,7 +142,7 @@ export class PeopleCloudComponentPage { } } - async checkPeopleActiveField(name): Promise { + async checkPeopleActiveField(name: string): Promise { const activePeopleField = element(by.css('people-cloud-widget .adf-readonly')); try { await BrowserActions.clearSendKeys(activePeopleField, name); diff --git a/lib/testing/src/lib/process-services-cloud/pages/process-filters-cloud-component.page.ts b/lib/testing/src/lib/process-services-cloud/pages/process-filters-cloud-component.page.ts index 9344e2e317..0b6a23358b 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/process-filters-cloud-component.page.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/process-filters-cloud-component.page.ts @@ -24,10 +24,10 @@ export class ProcessFiltersCloudComponentPage { filter: ElementFinder; filterIcon = by.css('adf-icon[data-automation-id="adf-filter-icon"]'); - processFilters: ElementFinder = element(by.css("mat-expansion-panel[data-automation-id='Process Filters']")); + processFilters = element(by.css("mat-expansion-panel[data-automation-id='Process Filters']")); - activeFilter: ElementFinder = element(by.css('.adf-active [data-automation-id="adf-filter-label"]')); - processFiltersList: ElementFinder = element(by.css('adf-cloud-process-filters')); + activeFilter = element(by.css('.adf-active [data-automation-id="adf-filter-label"]')); + processFiltersList = element(by.css('adf-cloud-process-filters')); async checkProcessFilterIsDisplayed(filterName: string): Promise { this.filter = this.getProcessFilterLocatorByFilterName(filterName); diff --git a/lib/testing/src/lib/process-services-cloud/pages/process-header-cloud-component.page.ts b/lib/testing/src/lib/process-services-cloud/pages/process-header-cloud-component.page.ts index 14b41265a4..a41fa83a1b 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/process-header-cloud-component.page.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/process-header-cloud-component.page.ts @@ -15,19 +15,19 @@ * limitations under the License. */ -import { element, by, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; import { BrowserActions } from '../../core/utils/browser-actions'; export class ProcessHeaderCloudPage { - idField: ElementFinder = element.all(by.css('[data-automation-id="card-textitem-value-id"]')).first(); - nameField: ElementFinder = element.all(by.css('[data-automation-id="card-textitem-value-name"]')).first(); - statusField: ElementFinder = element(by.css('[data-automation-id="card-textitem-value-status"]')); - initiatorField: ElementFinder = element(by.css('[data-automation-id="card-textitem-value-initiator"]')); - startDateField: ElementFinder = element.all(by.css('span[data-automation-id*="startDate"] span')).first(); - lastModifiedField: ElementFinder = element.all(by.css('span[data-automation-id*="lastModified"] span')).first(); - parentIdField: ElementFinder = element(by.css('[data-automation-id="card-textitem-value-parentId"]')); - businessKeyField: ElementFinder = element(by.css('[data-automation-id="card-textitem-value-businessKey"]')); + idField = element.all(by.css('[data-automation-id="card-textitem-value-id"]')).first(); + nameField = element.all(by.css('[data-automation-id="card-textitem-value-name"]')).first(); + statusField = element(by.css('[data-automation-id="card-textitem-value-status"]')); + initiatorField = element(by.css('[data-automation-id="card-textitem-value-initiator"]')); + startDateField = element.all(by.css('span[data-automation-id*="startDate"] span')).first(); + lastModifiedField = element.all(by.css('span[data-automation-id*="lastModified"] span')).first(); + parentIdField = element(by.css('[data-automation-id="card-textitem-value-parentId"]')); + businessKeyField = element(by.css('[data-automation-id="card-textitem-value-businessKey"]')); async getId(): Promise { return BrowserActions.getInputValue(this.idField); diff --git a/lib/testing/src/lib/process-services-cloud/pages/process-list-cloud-component.page.ts b/lib/testing/src/lib/process-services-cloud/pages/process-list-cloud-component.page.ts index 21d3872162..62fd122f5a 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/process-list-cloud-component.page.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/process-list-cloud-component.page.ts @@ -17,7 +17,7 @@ import { BrowserVisibility } from '../../core/utils/browser-visibility'; import { DataTableComponentPage } from '../../core/pages/data-table-component.page'; -import { element, by, ElementFinder, Locator, browser } from 'protractor'; +import { element, by, browser } from 'protractor'; import { BrowserActions } from '../../core/utils/browser-actions'; export class ProcessListCloudComponentPage { @@ -27,10 +27,10 @@ export class ProcessListCloudComponentPage { name: 'Name' }; - processList: ElementFinder = element(by.css('adf-cloud-process-list')); - noProcessFound: ElementFinder = element.all(by.css("div[class='adf-empty-content__title']")).first(); - actionMenu: ElementFinder = element(by.css('*[role="menu"]')); - optionButton: Locator = by.css('button[data-automation-id*="action_menu_"]'); + processList = element(by.css('adf-cloud-process-list')); + noProcessFound = element.all(by.css("div[class='adf-empty-content__title']")).first(); + actionMenu = element(by.css('*[role="menu"]')); + optionButton = by.css('button[data-automation-id*="action_menu_"]'); dataTable: DataTableComponentPage = new DataTableComponentPage(this.processList); @@ -38,43 +38,43 @@ export class ProcessListCloudComponentPage { return this.dataTable; } - selectRow(processName): Promise { + selectRow(processName: string): Promise { return this.dataTable.selectRow(this.columns.name, processName); } - selectRowById(processId): Promise { + selectRowById(processId: string): Promise { return this.dataTable.selectRow(this.columns.id, processId); } - checkRowIsSelectedById(processId): Promise { + checkRowIsSelectedById(processId: string): Promise { return this.dataTable.checkRowIsSelected(this.columns.id, processId); } - checkRowIsNotSelectedById(processId): Promise { + checkRowIsNotSelectedById(processId: string): Promise { return this.dataTable.checkRowIsNotSelected(this.columns.id, processId); } - checkRowIsCheckedById(processId): Promise { + checkRowIsCheckedById(processId: string): Promise { return this.dataTable.checkRowIsChecked(this.columns.id, processId); } - checkRowIsNotCheckedById(processId): Promise { + checkRowIsNotCheckedById(processId: string): Promise { return this.dataTable.checkRowIsNotChecked(this.columns.id, processId); } - checkCheckboxById(processId): Promise { + checkCheckboxById(processId: string): Promise { return this.dataTable.clickCheckbox(this.columns.id, processId); } - checkContentIsDisplayedByName(processName): Promise { + checkContentIsDisplayedByName(processName: string): Promise { return this.dataTable.checkContentIsDisplayed(this.columns.name, processName); } - checkContentIsNotDisplayedByName(processName): Promise { + checkContentIsNotDisplayedByName(processName: string): Promise { return this.dataTable.checkContentIsNotDisplayed(this.columns.name, processName); } - checkContentIsDisplayedById(processId): Promise { + checkContentIsDisplayedById(processId: string): Promise { return this.dataTable.checkContentIsDisplayed(this.columns.id, processId); } @@ -104,7 +104,7 @@ export class ProcessListCloudComponentPage { async clickOptionsButton(content: string): Promise { await BrowserActions.closeMenuAndDialogs(); - const row: ElementFinder = this.dataTable.getRow('Id', content); + const row = this.dataTable.getRow('Id', content); await browser.sleep(1000); await BrowserActions.click(row.element(this.optionButton)); await BrowserVisibility.waitUntilElementIsVisible(this.actionMenu); diff --git a/lib/testing/src/lib/process-services-cloud/pages/start-tasks-cloud-component.page.ts b/lib/testing/src/lib/process-services-cloud/pages/start-tasks-cloud-component.page.ts index e8e0e1f291..b5997b1c51 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/start-tasks-cloud-component.page.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/start-tasks-cloud-component.page.ts @@ -21,16 +21,16 @@ import { BrowserActions } from '../../core/utils/browser-actions'; export class StartTasksCloudPage { - name: ElementFinder = element(by.css('input[id="name_id"]')); - dueDate: ElementFinder = element(by.css('input[id="date_id"]')); - description: ElementFinder = element(by.css('textarea[id="description_id"]')); - priority: ElementFinder = element(by.css('input[formcontrolname="priority"]')); - startButton: ElementFinder = element(by.css('button[id="button-start"]')); + name = element(by.css('input[id="name_id"]')); + dueDate = element(by.css('input[id="date_id"]')); + description = element(by.css('textarea[id="description_id"]')); + priority = element(by.css('input[formcontrolname="priority"]')); + startButton = element(by.css('button[id="button-start"]')); startButtonEnabled = element(by.css('button[id="button-start"]:not(disabled)')); - cancelButton: ElementFinder = element(by.css('button[id="button-cancel"]')); - form: ElementFinder = element.all(by.css('adf-cloud-start-task form')).first(); - formDefinitionSelector: ElementFinder = element(by.css('.adf-form-definition-selector')); - priorityStartTaskField: ElementFinder = element(by.css('input[formControlName="priority"]')); + cancelButton = element(by.css('button[id="button-cancel"]')); + form = element.all(by.css('adf-cloud-start-task form')).first(); + formDefinitionSelector = element(by.css('.adf-form-definition-selector')); + priorityStartTaskField = element(by.css('input[formControlName="priority"]')); async checkFormIsDisplayed(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.form); diff --git a/lib/testing/src/lib/process-services-cloud/pages/task-filters-cloud-component.page.ts b/lib/testing/src/lib/process-services-cloud/pages/task-filters-cloud-component.page.ts index 20008ba82d..051369469f 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/task-filters-cloud-component.page.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/task-filters-cloud-component.page.ts @@ -22,8 +22,8 @@ import { BrowserActions } from '../../core/utils/browser-actions'; export class TaskFiltersCloudComponentPage { filter: ElementFinder; - taskFilters: ElementFinder = element(by.css(`mat-expansion-panel[data-automation-id='Task Filters']`)); - activeFilter: ElementFinder = element(by.css('.adf-active [data-automation-id="adf-filter-label"]')); + taskFilters = element(by.css(`mat-expansion-panel[data-automation-id='Task Filters']`)); + activeFilter = element(by.css('.adf-active [data-automation-id="adf-filter-label"]')); async checkTaskFilterIsDisplayed(filterName: string): Promise { this.filter = this.getTaskFilterLocatorByFilterName(filterName); diff --git a/lib/testing/src/lib/process-services-cloud/pages/task-form-cloud-component.page.ts b/lib/testing/src/lib/process-services-cloud/pages/task-form-cloud-component.page.ts index ba4c6f54de..d8ac80e3a3 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/task-form-cloud-component.page.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/task-form-cloud-component.page.ts @@ -22,16 +22,16 @@ import { FormFields } from '../../core/pages/form/form-fields'; export class TaskFormCloudComponent { - cancelButton: ElementFinder = element(by.css('button[id="adf-cloud-cancel-task"]')); - completeButton: ElementFinder = element(by.css('button[id="adf-form-complete"]')); - releaseButton: ElementFinder = element(by.css('button[adf-cloud-unclaim-task]')); - saveButton: ElementFinder = element(by.css('button[id="adf-form-save"]')); - claimButton: ElementFinder = element(by.css('button[adf-cloud-claim-task]')); - form: ElementFinder = element(by.css('adf-cloud-form')); - formTitle: ElementFinder = element(by.css(`span.adf-form-title`)); - emptyContentIcon: ElementFinder = element(by.css(`div.adf-empty-content adf-icon.adf-empty-content__icon`)); - emptyContentTitle: ElementFinder = element(by.css(`div.adf-empty-content div.adf-empty-content__title`)); - emptyContentSubtitle: ElementFinder = element(by.css(`div.adf-empty-content div.adf-empty-content__subtitle`)); + cancelButton = element(by.css('button[id="adf-cloud-cancel-task"]')); + completeButton = element(by.css('button[id="adf-form-complete"]')); + releaseButton = element(by.css('button[adf-cloud-unclaim-task]')); + saveButton = element(by.css('button[id="adf-form-save"]')); + claimButton = element(by.css('button[adf-cloud-claim-task]')); + form = element(by.css('adf-cloud-form')); + formTitle = element(by.css(`span.adf-form-title`)); + emptyContentIcon = element(by.css(`div.adf-empty-content adf-icon.adf-empty-content__icon`)); + emptyContentTitle = element(by.css(`div.adf-empty-content div.adf-empty-content__title`)); + emptyContentSubtitle = element(by.css(`div.adf-empty-content div.adf-empty-content__subtitle`)); readOnlyForm = element(by.css('div[class="adf-readonly-form"]')); async isCompleteButtonEnabled(): Promise { diff --git a/lib/testing/src/lib/process-services-cloud/pages/task-header-cloud-component.page.ts b/lib/testing/src/lib/process-services-cloud/pages/task-header-cloud-component.page.ts index 8a094e4d31..06ed8006b8 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/task-header-cloud-component.page.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/task-header-cloud-component.page.ts @@ -15,25 +15,25 @@ * limitations under the License. */ -import { element, by, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; import { BrowserActions } from '../../core/utils/browser-actions'; import { BrowserVisibility } from '../../core/utils/browser-visibility'; import { CardTextItemPage } from '../../core/pages/card-view/card-view-text-item.page'; export class TaskHeaderCloudPage { - assigneeCardTextItem: CardTextItemPage = new CardTextItemPage('assignee'); - statusCardTextItem: CardTextItemPage = new CardTextItemPage('status'); - priorityCardTextItem: CardTextItemPage = new CardTextItemPage('priority'); - dueDateField: ElementFinder = element.all(by.css('span[data-automation-id*="dueDate"] span')).first(); - categoryCardTextItem: CardTextItemPage = new CardTextItemPage('category'); - createdField: ElementFinder = element(by.css('span[data-automation-id="card-dateitem-created"] span')); - parentNameCardTextItem: CardTextItemPage = new CardTextItemPage('parentName'); - parentTaskIdCardTextItem: CardTextItemPage = new CardTextItemPage('parentTaskId'); - endDateField: ElementFinder = element.all(by.css('span[data-automation-id*="endDate"] span')).first(); - idCardTextItem: CardTextItemPage = new CardTextItemPage('id'); - descriptionCardTextItem: CardTextItemPage = new CardTextItemPage('description'); - taskPropertyList: ElementFinder = element(by.css('adf-cloud-task-header adf-card-view div[class="adf-property-list"]')); + assigneeCardTextItem = new CardTextItemPage('assignee'); + statusCardTextItem = new CardTextItemPage('status'); + priorityCardTextItem = new CardTextItemPage('priority'); + dueDateField = element.all(by.css('span[data-automation-id*="dueDate"] span')).first(); + categoryCardTextItem = new CardTextItemPage('category'); + createdField = element(by.css('span[data-automation-id="card-dateitem-created"] span')); + parentNameCardTextItem = new CardTextItemPage('parentName'); + parentTaskIdCardTextItem = new CardTextItemPage('parentTaskId'); + endDateField = element.all(by.css('span[data-automation-id*="endDate"] span')).first(); + idCardTextItem = new CardTextItemPage('id'); + descriptionCardTextItem = new CardTextItemPage('description'); + taskPropertyList = element(by.css('adf-cloud-task-header adf-card-view div[class="adf-property-list"]')); async getAssignee(): Promise { return this.assigneeCardTextItem.getFieldValue(); diff --git a/lib/testing/src/lib/process-services-cloud/pages/task-list-cloud-component.page.ts b/lib/testing/src/lib/process-services-cloud/pages/task-list-cloud-component.page.ts index 9e9d226e43..98b7cd1871 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/task-list-cloud-component.page.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/task-list-cloud-component.page.ts @@ -17,7 +17,7 @@ import { BrowserVisibility } from '../../core/utils/browser-visibility'; import { DataTableComponentPage } from '../../core/pages/data-table-component.page'; -import { element, by, ElementFinder, Locator } from 'protractor'; +import { element, by, ElementFinder } from 'protractor'; import { BrowserActions } from '../../core/utils/browser-actions'; const column = { @@ -36,8 +36,8 @@ export class TaskListCloudComponentPage { taskList = element(by.css('adf-cloud-task-list')); noTasksFound = element.all(by.css("div[class='adf-empty-content__title']")).first(); - actionMenu: ElementFinder = element(by.css('*[role="menu"]')); - optionButton: Locator = by.css('button[data-automation-id*="action_menu_"]'); + actionMenu = element(by.css('*[role="menu"]')); + optionButton = by.css('button[data-automation-id*="action_menu_"]'); dataTable = new DataTableComponentPage(this.taskList); @@ -89,7 +89,7 @@ export class TaskListCloudComponentPage { return this.dataTable.selectRow(column.id, taskId); } - getRow(taskName): ElementFinder { + getRow(taskName: string): ElementFinder { return this.dataTable.getCellElementByValue(column.name, taskName); } @@ -164,7 +164,7 @@ export class TaskListCloudComponentPage { async clickOptionsButton(content: string) { await BrowserActions.closeMenuAndDialogs(); - const row: ElementFinder = this.dataTable.getRow('Id', content); + const row = this.dataTable.getRow('Id', content); await BrowserActions.click(row.element(this.optionButton)); await BrowserVisibility.waitUntilElementIsVisible(this.actionMenu); } diff --git a/lib/testing/src/lib/process-services/pages/external-node-selector-dialog.page.ts b/lib/testing/src/lib/process-services/pages/external-node-selector-dialog.page.ts index 2f664eb1bc..8dbbe22aa2 100644 --- a/lib/testing/src/lib/process-services/pages/external-node-selector-dialog.page.ts +++ b/lib/testing/src/lib/process-services/pages/external-node-selector-dialog.page.ts @@ -15,17 +15,17 @@ * limitations under the License. */ -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; import { BrowserActions } from '../../core/utils/browser-actions'; import { BrowserVisibility } from '../../core/utils/browser-visibility'; import { ContentNodeSelectorDialogPage } from '../../content-services/dialog/content-node-selector-dialog.page'; import { DocumentListPage } from '../../content-services/pages/document-list.page'; export class ExternalNodeSelectorDialogPage extends ContentNodeSelectorDialogPage { - txtUsername: ElementFinder = element(by.css('input[id="username"]')); - txtPassword: ElementFinder = element(by.css('input[id="password"]')); - loginElement: ElementFinder = element(by.css('[data-automation-id="attach-file-dialog-actions-login"]')); - title: ElementFinder = element(by.css('[data-automation-id="content-node-selector-title"]')); + txtUsername = element(by.css('input[id="username"]')); + txtPassword = element(by.css('input[id="password"]')); + loginElement = element(by.css('[data-automation-id="attach-file-dialog-actions-login"]')); + title = element(by.css('[data-automation-id="content-node-selector-title"]')); constructor() { super(); diff --git a/lib/testing/src/lib/process-services/pages/filters.page.ts b/lib/testing/src/lib/process-services/pages/filters.page.ts index 86c6385074..407c8b9602 100644 --- a/lib/testing/src/lib/process-services/pages/filters.page.ts +++ b/lib/testing/src/lib/process-services/pages/filters.page.ts @@ -21,8 +21,8 @@ import { by, element, ElementFinder } from 'protractor'; export class FiltersPage { - accordionMenu: ElementFinder = element(by.css('.app-processes-menu mat-accordion')); - buttonWindow: ElementFinder = element(by.css('div > button[data-automation-id="btn-start-process"] > div')); + accordionMenu = element(by.css('.app-processes-menu mat-accordion')); + buttonWindow = element(by.css('div > button[data-automation-id="btn-start-process"] > div')); processIcon = by.css('adf-icon[data-automation-id="adf-filter-icon"]'); async clickFilterButton(filterElement: ElementFinder): Promise { @@ -33,8 +33,8 @@ export class FiltersPage { return filterElement.isEnabled(); } - async isFilterHighlighted(filterName): Promise { - const processNameHighlighted: ElementFinder = element(by.css(`.adf-active [data-automation-id='${filterName}_filter']`)); + async isFilterHighlighted(filterName: string): Promise { + const processNameHighlighted = element(by.css(`.adf-active [data-automation-id='${filterName}_filter']`)); try { await BrowserVisibility.waitUntilElementIsVisible(processNameHighlighted); return true; @@ -43,8 +43,8 @@ export class FiltersPage { } } - async isFilterDisplayed(name): Promise { - const filterName: ElementFinder = element(by.css(`[data-automation-id='${name}_filter']`)); + async isFilterDisplayed(name: string): Promise { + const filterName = element(by.css(`[data-automation-id='${name}_filter']`)); try { await BrowserVisibility.waitUntilElementIsVisible(filterName); return true; @@ -53,14 +53,14 @@ export class FiltersPage { } } - async checkFilterHasNoIcon(name): Promise { - const filterName: ElementFinder = element(by.css(`[data-automation-id='${name}_filter']`)); + async checkFilterHasNoIcon(name: string): Promise { + const filterName = element(by.css(`[data-automation-id='${name}_filter']`)); await BrowserVisibility.waitUntilElementIsVisible(filterName); await BrowserVisibility.waitUntilElementIsNotVisible(filterName.element(this.processIcon)); } - async getFilterIcon(name): Promise { - const filterName: ElementFinder = element(by.css(`[data-automation-id='${name}_filter']`)); + async getFilterIcon(name: string): Promise { + const filterName = element(by.css(`[data-automation-id='${name}_filter']`)); await BrowserVisibility.waitUntilElementIsVisible(filterName); const icon = filterName.element(this.processIcon); return BrowserActions.getText(icon); diff --git a/lib/testing/src/lib/process-services/pages/form-fields.page.ts b/lib/testing/src/lib/process-services/pages/form-fields.page.ts index 9ea02cb98e..b83d533d5c 100644 --- a/lib/testing/src/lib/process-services/pages/form-fields.page.ts +++ b/lib/testing/src/lib/process-services/pages/form-fields.page.ts @@ -23,16 +23,16 @@ import { DropdownPage } from '../../core/pages/material/dropdown.page'; export class FormFieldsPage { - formContent: ElementFinder = element(by.css('adf-form')); - refreshButton: ElementFinder = element(by.css('div[class*="form-reload-button"] mat-icon')); - saveButton: ElementFinder = element(by.cssContainingText('mat-card-actions[class*="adf-for"] span', 'SAVE')); - valueLocator: Locator = by.css('input'); - labelLocator: Locator = by.css('label'); - noFormMessage: ElementFinder = element(by.css('.adf-empty-content__title')); - completedTaskNoFormMessage: ElementFinder = element(by.css('div[id*="completed-form-message"] p')); - attachFormButton: ElementFinder = element(by.id('adf-attach-form-attach-button')); - completeButton: ElementFinder = element(by.id('adf-form-complete')); - errorMessage: Locator = by.css('.adf-error-text-container .adf-error-text'); + formContent = element(by.css('adf-form')); + refreshButton = element(by.css('div[class*="form-reload-button"] mat-icon')); + saveButton = element(by.cssContainingText('mat-card-actions[class*="adf-for"] span', 'SAVE')); + valueLocator = by.css('input'); + labelLocator = by.css('label'); + noFormMessage = element(by.css('.adf-empty-content__title')); + completedTaskNoFormMessage = element(by.css('div[id*="completed-form-message"] p')); + attachFormButton = element(by.id('adf-attach-form-attach-button')); + completeButton = element(by.id('adf-form-complete')); + errorMessage = by.css('.adf-error-text-container .adf-error-text'); selectFormDropdown = new DropdownPage(element.all(by.css('adf-attach-form div[class*="mat-select-arrow"]')).first()); @@ -59,7 +59,7 @@ export class FormFieldsPage { } async getFieldValue(fieldId: string, valueLocatorParam: Locator): Promise { - const widget: ElementFinder = await this.getWidget(fieldId); + const widget = await this.getWidget(fieldId); const value = widget.element(valueLocatorParam || this.valueLocator); await BrowserVisibility.waitUntilElementIsVisible(value); return value.getAttribute('value'); diff --git a/lib/testing/src/lib/process-services/pages/process-filters.page.ts b/lib/testing/src/lib/process-services/pages/process-filters.page.ts index a5687cdc2c..b21371b390 100644 --- a/lib/testing/src/lib/process-services/pages/process-filters.page.ts +++ b/lib/testing/src/lib/process-services/pages/process-filters.page.ts @@ -15,17 +15,17 @@ * limitations under the License. */ -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; import { FiltersPage } from './filters.page'; export class ProcessFiltersPage { filtersPage = new FiltersPage(); - runningFilter: ElementFinder = element(by.css('button[data-automation-id="Running_filter"]')); - completedFilter: ElementFinder = element(by.css('button[data-automation-id="Completed_filter"]')); - allFilter: ElementFinder = element(by.css('button[data-automation-id="All_filter"]')); - accordionMenu: ElementFinder = element(by.css('.app-processes-menu mat-accordion')); + runningFilter = element(by.css('button[data-automation-id="Running_filter"]')); + completedFilter = element(by.css('button[data-automation-id="Completed_filter"]')); + allFilter = element(by.css('button[data-automation-id="All_filter"]')); + accordionMenu = element(by.css('.app-processes-menu mat-accordion')); async clickRunningFilterButton(): Promise { await this.filtersPage.clickFilterButton(this.runningFilter); diff --git a/lib/testing/src/lib/process-services/pages/process-instance-tasks.page.ts b/lib/testing/src/lib/process-services/pages/process-instance-tasks.page.ts index f5d89c85e6..e55523dabd 100644 --- a/lib/testing/src/lib/process-services/pages/process-instance-tasks.page.ts +++ b/lib/testing/src/lib/process-services/pages/process-instance-tasks.page.ts @@ -16,15 +16,15 @@ */ import { BrowserVisibility } from '../../core/utils/browser-visibility'; -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; import { BrowserActions } from '../../core/utils/browser-actions'; export class ProcessInstanceTasksPage { - startProcessDialog: ElementFinder = element(by.id('adf-start-process-dialog')); - title: ElementFinder = this.startProcessDialog.element(by.css('h4.mat-dialog-title')); - closeButton: ElementFinder = this.startProcessDialog.element(by.cssContainingText(`div.adf-start-process-dialog-actions button span`, 'Close')); - startForm: ElementFinder = element(by.css('div[data-automation-id="start-form"]')); + startProcessDialog = element(by.id('adf-start-process-dialog')); + title = this.startProcessDialog.element(by.css('h4.mat-dialog-title')); + closeButton = this.startProcessDialog.element(by.cssContainingText(`div.adf-start-process-dialog-actions button span`, 'Close')); + startForm = element(by.css('div[data-automation-id="start-form"]')); async clickOnStartForm(): Promise { await BrowserActions.click(this.startForm); diff --git a/lib/testing/src/lib/process-services/pages/process-list.page.ts b/lib/testing/src/lib/process-services/pages/process-list.page.ts index ab7ab0ff8b..f1306c7892 100644 --- a/lib/testing/src/lib/process-services/pages/process-list.page.ts +++ b/lib/testing/src/lib/process-services/pages/process-list.page.ts @@ -18,13 +18,13 @@ import { BrowserVisibility } from '../../core/utils/browser-visibility'; import { DataTableComponentPage } from '../../core/pages/data-table-component.page'; import { BrowserActions } from '../../core/utils/browser-actions'; -import { element, by, ElementFinder } from 'protractor'; +import { element, by } from 'protractor'; export class ProcessListPage { - processListEmptyTitle: ElementFinder = element(by.css('div[class="adf-empty-content__title"]')); - processInstanceList: ElementFinder = element(by.css('adf-process-instance-list')); - dataTable: DataTableComponentPage = new DataTableComponentPage(this.processInstanceList); + processListEmptyTitle = element(by.css('div[class="adf-empty-content__title"]')); + processInstanceList = element(by.css('adf-process-instance-list')); + dataTable = new DataTableComponentPage(this.processInstanceList); getDisplayedProcessListEmptyTitle(): Promise { return BrowserActions.getText(this.processListEmptyTitle); diff --git a/lib/testing/src/lib/process-services/pages/select-apps-dialog.page.ts b/lib/testing/src/lib/process-services/pages/select-apps-dialog.page.ts index 80d3b3c203..fb05ca5245 100644 --- a/lib/testing/src/lib/process-services/pages/select-apps-dialog.page.ts +++ b/lib/testing/src/lib/process-services/pages/select-apps-dialog.page.ts @@ -16,16 +16,16 @@ */ import { BrowserVisibility } from '../../core/utils/browser-visibility'; -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; import { BrowserActions } from '../../core/utils/browser-actions'; import { DropdownPage } from '../../core/pages/material/dropdown.page'; export class SelectAppsDialog { - selectAppsDialog: ElementFinder = element(by.css('mat-dialog-container[aria-labelledby="adf-select-app-dialog-title"]')); - title: ElementFinder = element(by.id('adf-select-app-dialog-title')); + selectAppsDialog = element(by.css('mat-dialog-container[aria-labelledby="adf-select-app-dialog-title"]')); + title = element(by.id('adf-select-app-dialog-title')); appsDropdown = new DropdownPage(element(by.id('adf-select-app-dialog-dropdown'))); - continueButton: ElementFinder = element(by.css('adf-select-apps-dialog .mat-button-wrapper')); + continueButton = element(by.css('adf-select-apps-dialog .mat-button-wrapper')); async checkSelectAppsDialogIsDisplayed(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.selectAppsDialog); diff --git a/lib/testing/src/lib/process-services/pages/start-process.page.ts b/lib/testing/src/lib/process-services/pages/start-process.page.ts index 2dfd2d708d..f32a945873 100644 --- a/lib/testing/src/lib/process-services/pages/start-process.page.ts +++ b/lib/testing/src/lib/process-services/pages/start-process.page.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { by, element, Key, protractor, browser, ElementFinder } from 'protractor'; +import { by, element, Key, protractor, browser } from 'protractor'; import { BrowserVisibility } from '../../core/utils/browser-visibility'; import { BrowserActions } from '../../core/utils/browser-actions'; import { DropdownPage } from '../../core/pages/material/dropdown.page'; @@ -23,16 +23,16 @@ import { FormFields } from '../../core/pages/form/form-fields'; export class StartProcessPage { - defaultProcessName: ElementFinder = element(by.css('input[id="processName"]')); - processNameInput: ElementFinder = element(by.id('processName')); - disabledSelectProcessDropdown: ElementFinder = element(by.css('input[id="processDefinitionName"][disabled]')); - selectProcessDropdownArrow: ElementFinder = element(by.css('button[id="adf-select-process-dropdown"]')); - cancelProcessButton: ElementFinder = element(by.id('cancel_process')); - formStartProcessButton: ElementFinder = element(by.css('button[data-automation-id="adf-form-start process"]')); - startProcessButton: ElementFinder = element(by.css('button[data-automation-id="btn-start"]')); - noProcess: ElementFinder = element(by.css('.adf-empty-content__title')); - processDefinition: ElementFinder = element(by.css('input[id="processDefinitionName"]')); - processDefinitionOptionsPanel: ElementFinder = element(by.css('div[class*="mat-autocomplete-panel"]')); + defaultProcessName = element(by.css('input[id="processName"]')); + processNameInput = element(by.id('processName')); + disabledSelectProcessDropdown = element(by.css('input[id="processDefinitionName"][disabled]')); + selectProcessDropdownArrow = element(by.css('button[id="adf-select-process-dropdown"]')); + cancelProcessButton = element(by.id('cancel_process')); + formStartProcessButton = element(by.css('button[data-automation-id="adf-form-start process"]')); + startProcessButton = element(by.css('button[data-automation-id="btn-start"]')); + noProcess = element(by.css('.adf-empty-content__title')); + processDefinition = element(by.css('input[id="processDefinitionName"]')); + processDefinitionOptionsPanel = element(by.css('div[class*="mat-autocomplete-panel"]')); processDefinitionDropdown = new DropdownPage(element(by.id('adf-select-process-dropdown'))); applicationDropdown = new DropdownPage(element(by.css('[data-automation-id*="start-process-app"] div[class="mat-select-arrow"]'))); @@ -134,8 +134,8 @@ export class StartProcessPage { return processPlaceholder; } - async checkValidationErrorIsDisplayed(error, elementRef = 'mat-error'): Promise { - const errorElement: ElementFinder = element(by.cssContainingText(elementRef, error)); + async checkValidationErrorIsDisplayed(error: string, elementRef = 'mat-error'): Promise { + const errorElement = element(by.cssContainingText(elementRef, error)); await BrowserVisibility.waitUntilElementIsVisible(errorElement); } diff --git a/lib/testing/src/lib/process-services/pages/task-filters.page.ts b/lib/testing/src/lib/process-services/pages/task-filters.page.ts index 967b3694a2..e2cafa5caa 100644 --- a/lib/testing/src/lib/process-services/pages/task-filters.page.ts +++ b/lib/testing/src/lib/process-services/pages/task-filters.page.ts @@ -15,18 +15,18 @@ * limitations under the License. */ -import { by, element, ElementFinder } from 'protractor'; +import { by, element } from 'protractor'; import { FiltersPage } from './filters.page'; export class TaskFiltersPage { filtersPage = new FiltersPage(); - myTasks: ElementFinder = element(by.css('[data-automation-id="My Tasks_filter"]')); - queuedTask: ElementFinder = element(by.css('[data-automation-id="Queued Tasks_filter"]')); - completedTask: ElementFinder = element(by.css('[data-automation-id="Completed Tasks_filter"]')); - involvedTask: ElementFinder = element(by.css('[data-automation-id="Involved Tasks_filter"]')); - accordionMenu: ElementFinder = element(by.css('.app-processes-menu mat-accordion')); + myTasks = element(by.css('[data-automation-id="My Tasks_filter"]')); + queuedTask = element(by.css('[data-automation-id="Queued Tasks_filter"]')); + completedTask = element(by.css('[data-automation-id="Completed Tasks_filter"]')); + involvedTask = element(by.css('[data-automation-id="Involved Tasks_filter"]')); + accordionMenu = element(by.css('.app-processes-menu mat-accordion')); async clickMyTasksFilterButton(): Promise { await this.filtersPage.clickFilterButton(this.myTasks); diff --git a/lib/testing/src/lib/process-services/pages/task-list.page.ts b/lib/testing/src/lib/process-services/pages/task-list.page.ts index a9f35f246f..4dac795f25 100644 --- a/lib/testing/src/lib/process-services/pages/task-list.page.ts +++ b/lib/testing/src/lib/process-services/pages/task-list.page.ts @@ -26,7 +26,7 @@ export class TaskListPage { noTasksFound: ElementFinder; constructor( - rootElement: ElementFinder = element.all(by.css('adf-tasklist')).first() + rootElement = element.all(by.css('adf-tasklist')).first() ) { this.rootElement = rootElement; this.dataTable = new DataTableComponentPage(this.rootElement);