diff --git a/.travis.yml b/.travis.yml index 6584205f7e..1c7d8cf6b4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -88,7 +88,7 @@ jobs: env: STAGE=test-export script: npm run test-export - stage: Create Docker PR - script: node ./scripts/download-build-in-cs.js --username "$E2E_USERNAME" --password "$E2E_PASSWORD" --host "$E2E_HOST" --folder $TRAVIS_BUILD_NUMBER --base-href $TRAVIS_BUILD_NUMBER -n $TRAVIS_BUILD_NUMBER && (./scripts/pr-publish.sh -n $TRAVIS_BUILD_NUMBER -r $REPO_DOCKER -u $USERNAME_DOCKER -p $PASSWORD_DOCKER || exit 1) + script: node ./scripts/download-build-in-cs.js --username "$E2E_USERNAME" --password "$E2E_PASSWORD" --host "$E2E_HOST" --folder $TRAVIS_BUILD_NUMBER --base-href $TRAVIS_BUILD_NUMBER && (./scripts/pr-publish.sh -n $TRAVIS_BUILD_NUMBER -r $REPO_DOCKER -u $USERNAME_DOCKER -p $PASSWORD_DOCKER || exit 1) - stage: Deploy Docker PR script: node ./scripts/pr-deploy.js -n $TRAVIS_BUILD_NUMBER -u $RANCHER_TOKEN -p $RANCHER_SECRET -s $REPO_RANCHER --image "docker:$REPO_DOCKER/adf/demo-shell:$TRAVIS_BUILD_NUMBER" --env $ENVIRONMENT_NAME -r $ENVIRONMENT_URL || exit 1 diff --git a/demo-shell/src/app/components/notifications/notifications.component.html b/demo-shell/src/app/components/notifications/notifications.component.html index 2e41aff60d..765a36e7fc 100644 --- a/demo-shell/src/app/components/notifications/notifications.component.html +++ b/demo-shell/src/app/components/notifications/notifications.component.html @@ -16,10 +16,6 @@ data-automation-id="notification-message"> - -
this.actionOutput = 'Action clicked'); - } else { - this.notificationService.openSnackMessage(this.message, this.snackBarConfig.duration); - } - } - } - sendCustomConfig() { this.actionOutput = ''; this.snackBarConfigObject = `{"direction": "${this.snackBarConfig.direction}", diff --git a/e2e/actions/ACS/upload.actions.ts b/e2e/actions/ACS/upload.actions.ts index 4c409f1e31..e91126b7d2 100644 --- a/e2e/actions/ACS/upload.actions.ts +++ b/e2e/actions/ACS/upload.actions.ts @@ -18,13 +18,10 @@ import path = require('path'); import fs = require('fs'); import TestConfig = require('../../test.config'); -import remote = require('selenium-webdriver/remote'); export class UploadActions { async uploadFile(alfrescoJsApi, fileLocation, fileName, parentFolderId) { - browser.setFileDetector(new remote.FileDetector()); - let pathFile = path.join(TestConfig.main.rootPath + fileLocation); let file = fs.createReadStream(pathFile); @@ -42,8 +39,6 @@ export class UploadActions { } async createEmptyFiles(alfrescoJsApi, emptyFileNames: string[], parentFolderId) { - browser.setFileDetector(new remote.FileDetector()); - let filesRequest = []; for (let i = 0; i < emptyFileNames.length; i++) { @@ -59,8 +54,6 @@ export class UploadActions { } async uploadFolder(alfrescoJsApi, folderName, parentFolderId) { - browser.setFileDetector(new remote.FileDetector()); - return alfrescoJsApi.nodes.addNode(parentFolderId, { 'name': folderName, 'nodeType': 'cm:folder' diff --git a/e2e/content-services/comments/comment_component.e2e.ts b/e2e/content-services/comments/comment_component.e2e.ts index 86c78d1e08..0375fc27ad 100644 --- a/e2e/content-services/comments/comment_component.e2e.ts +++ b/e2e/content-services/comments/comment_component.e2e.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import LoginPage = require('../../pages/adf/loginPage'); -import ContentServicesPage = require('../../pages/adf/contentServicesPage'); +import { LoginPage } from '../../pages/adf/loginPage'; +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import { ViewerPage } from '../../pages/adf/viewerPage'; import { CommentsPage } from '../../pages/adf/commentsPage'; diff --git a/e2e/content-services/directives/create_folder_directive.e2e.ts b/e2e/content-services/directives/create_folder_directive.e2e.ts index c20fb941ab..33637287c5 100644 --- a/e2e/content-services/directives/create_folder_directive.e2e.ts +++ b/e2e/content-services/directives/create_folder_directive.e2e.ts @@ -15,10 +15,10 @@ * limitations under the License. */ -import LoginPage = require('../../pages/adf/loginPage'); -import ContentServicesPage = require('../../pages/adf/contentServicesPage'); +import { LoginPage } from '../../pages/adf/loginPage'; +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import CreateFolderDialog = require('../../pages/adf/dialog/createFolderDialog'); -import NotificationPage = require('../../pages/adf/notificationPage'); +import { NotificationPage } from '../../pages/adf/notificationPage'; import MetadataViewPage = require('../../pages/adf/metadataViewPage'); import ContentListPage = require('../../pages/adf/dialog/contentList'); diff --git a/e2e/content-services/document-list/document_list_actions.e2e.ts b/e2e/content-services/document-list/document_list_actions.e2e.ts index 7d31169b7e..ad7770849c 100644 --- a/e2e/content-services/document-list/document_list_actions.e2e.ts +++ b/e2e/content-services/document-list/document_list_actions.e2e.ts @@ -16,8 +16,8 @@ */ import { browser } from 'protractor'; -import LoginPage = require('../../pages/adf/loginPage'); -import ContentServicesPage = require('../../pages/adf/contentServicesPage'); +import { LoginPage } from '../../pages/adf/loginPage'; +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import ContentListPage = require('../../pages/adf/dialog/contentList'); import AcsUserModel = require('../../models/ACS/acsUserModel'); import TestConfig = require('../../test.config'); diff --git a/e2e/content-services/document-list/document_list_component.e2e.ts b/e2e/content-services/document-list/document_list_component.e2e.ts index af0a95f54b..04285f0d1a 100644 --- a/e2e/content-services/document-list/document_list_component.e2e.ts +++ b/e2e/content-services/document-list/document_list_component.e2e.ts @@ -16,8 +16,8 @@ */ import { browser } from 'protractor'; -import LoginPage = require('../../pages/adf/loginPage'); -import ContentServicesPage = require('../../pages/adf/contentServicesPage'); +import { LoginPage } from '../../pages/adf/loginPage'; +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import NavigationBarPage = require('../../pages/adf/navigationBarPage'); import AcsUserModel = require('../../models/ACS/acsUserModel'); import TestConfig = require('../../test.config'); diff --git a/e2e/content-services/document-list/document_list_pagination.e2e.ts b/e2e/content-services/document-list/document_list_pagination.e2e.ts index 9f659d0545..65b63d513f 100644 --- a/e2e/content-services/document-list/document_list_pagination.e2e.ts +++ b/e2e/content-services/document-list/document_list_pagination.e2e.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import LoginPage = require('../../pages/adf/loginPage'); -import ContentServicesPage = require('../../pages/adf/contentServicesPage'); +import { LoginPage } from '../../pages/adf/loginPage'; +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import PaginationPage = require('../../pages/adf/paginationPage'); import NavigationBarPage = require('../../pages/adf/navigationBarPage'); diff --git a/e2e/content-services/notifications_component.e2e.ts b/e2e/content-services/notifications_component.e2e.ts index 0ce7cace3b..f3d559294e 100644 --- a/e2e/content-services/notifications_component.e2e.ts +++ b/e2e/content-services/notifications_component.e2e.ts @@ -15,11 +15,11 @@ * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); +import { LoginPage } from '../pages/adf/loginPage'; import AcsUserModel = require('../models/ACS/acsUserModel'); import TestConfig = require('../test.config'); import AlfrescoApi = require('alfresco-js-api-node'); -import NotificationPage = require('../pages/adf/notificationPage'); +import { NotificationPage } from '../pages/adf/notificationPage'; import { browser } from 'protractor'; describe('Notifications Component', () => { @@ -46,26 +46,35 @@ describe('Notifications Component', () => { notificationPage.goToNotificationsPage(); + notificationPage.enterDurationField(6000); + + done(); + }); + + afterEach(async (done) => { + notificationPage.enterDurationField(1); + notificationPage.clickNotificationButton(); + browser.sleep(100); + notificationPage.enterDurationField(6000); done(); }); it('[C279977] Should show notification when the message is not empty and button is clicked', () => { notificationPage.enterMessageField('Notification test'); - notificationPage.clickDefaultNotificationButton(); + notificationPage.clickNotificationButton(); notificationPage.checkNotificationSnackBarIsDisplayedWithMessage('Notification test'); }); it('[C279979] Should not show notification when the message is empty and button is clicked', () => { notificationPage.clearMessage(); - notificationPage.clickDefaultNotificationButton(); + notificationPage.clickNotificationButton(); notificationPage.checkNotificationSnackBarIsNotDisplayed(); }); it('[C279978] Should show notification with action when the message is not empty and button is clicked', () => { notificationPage.enterMessageField('Notification test'); notificationPage.clickActionToggle(); - notificationPage.enterDurationField(6000); - notificationPage.clickCustomNotificationButton(); + notificationPage.clickNotificationButton(); notificationPage.checkNotificationSnackBarIsDisplayedWithMessage('Notification test'); notificationPage.clickActionButton(); notificationPage.checkActionEvent(); @@ -74,14 +83,14 @@ describe('Notifications Component', () => { it('[C279981] Should show notification with action when the message is not empty and custom configuration button is clicked', () => { notificationPage.enterMessageField('Notification test'); - notificationPage.clickCustomNotificationButton(); + notificationPage.clickNotificationButton(); notificationPage.checkNotificationSnackBarIsDisplayed(); }); it('[C279987] Should show custom notification during a limited time when a duration is added', () => { notificationPage.enterMessageField('Notification test'); notificationPage.enterDurationField(1000); - notificationPage.clickCustomNotificationButton(); + notificationPage.clickNotificationButton(); notificationPage.checkNotificationSnackBarIsDisplayed(); browser.sleep(1500); notificationPage.checkNotificationSnackBarIsNotDisplayed(); @@ -90,7 +99,7 @@ describe('Notifications Component', () => { it('[C280000] Should show notification with action when the message is not empty and custom button is clicked', () => { notificationPage.enterMessageField('Notification test'); notificationPage.clickActionToggle(); - notificationPage.clickCustomNotificationButton(); + notificationPage.clickNotificationButton(); notificationPage.checkNotificationSnackBarIsDisplayedWithMessage('Notification test'); notificationPage.clickActionButton(); notificationPage.checkActionEvent(); @@ -103,7 +112,7 @@ describe('Notifications Component', () => { notificationPage.selectHorizontalPosition('Right'); notificationPage.selectVerticalPosition('Top'); notificationPage.selectDirection('Left to right'); - notificationPage.clickCustomNotificationButton(); + notificationPage.clickNotificationButton(); expect(notificationPage.getConfigObject()).toBe('{"direction": "ltr", "duration": "1000", "horizontalPosition": "right", "verticalPosition": "top"}'); }); }); diff --git a/e2e/content-services/permissions_component.e2e.ts b/e2e/content-services/permissions_component.e2e.ts index 318f873a2a..708bf493f8 100644 --- a/e2e/content-services/permissions_component.e2e.ts +++ b/e2e/content-services/permissions_component.e2e.ts @@ -16,8 +16,8 @@ */ import { PermissionsPage } from '../pages/adf/permissionsPage'; -import LoginPage = require('../pages/adf/loginPage'); -import ContentServicesPage = require('../pages/adf/contentServicesPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ContentServicesPage } from '../pages/adf/contentServicesPage'; import AcsUserModel = require('../models/ACS/acsUserModel'); import TestConfig = require('../test.config'); import resources = require('../util/resources'); @@ -25,7 +25,7 @@ import ContentListPage = require('../pages/adf/dialog/contentList'); import AlfrescoApi = require('alfresco-js-api-node'); import FileModel = require('../models/ACS/fileModel'); import { UploadActions } from '../actions/ACS/upload.actions'; -import Util = require('../util/util.js'); +import Util = require('../util/util'); import { browser } from 'protractor'; describe('Permissions Component', function () { diff --git a/e2e/content-services/search/search_component.e2e.ts b/e2e/content-services/search/search_component.e2e.ts index 54c340bc99..7386d2e934 100644 --- a/e2e/content-services/search/search_component.e2e.ts +++ b/e2e/content-services/search/search_component.e2e.ts @@ -17,9 +17,9 @@ import { browser } from 'protractor'; -import LoginPage = require('../../pages/adf/loginPage'); +import { LoginPage } from '../../pages/adf/loginPage'; import SearchDialog = require('../../pages/adf/dialog/searchDialog'); -import ContentServicesPage = require('../../pages/adf/contentServicesPage'); +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import filePreviewPage = require('../../pages/adf/filePreviewPage'); import SearchResultPage = require('../../pages/adf/searchResultsPage'); @@ -55,6 +55,7 @@ describe('Search component - Search Bar', () => { let firstFolderName = Util.generateRandomString(16); let secondFolderName = Util.generateRandomString(16); let thirdFolderName = Util.generateRandomString(16); + let filesToDelete = []; let firstFileModel = new FileModel({ 'name': filename, 'shortName': filename.substring(0, 8) @@ -87,11 +88,11 @@ describe('Search component - Search Bar', () => { let firstFileUploaded = await uploadActions.uploadFile(this.alfrescoJsApi, firstFileModel.location, firstFileModel.name, '-my-'); Object.assign(firstFileModel, firstFileUploaded.entry); - await uploadActions.uploadFolder(this.alfrescoJsApi, firstFolderModel.name, '-my-'); - await uploadActions.uploadFolder(this.alfrescoJsApi, secondFolder.name, '-my-'); - await uploadActions.uploadFolder(this.alfrescoJsApi, thirdFolder.name, '-my-'); + filesToDelete.push(await uploadActions.uploadFolder(this.alfrescoJsApi, firstFolderModel.name, '-my-')); + filesToDelete.push(await uploadActions.uploadFolder(this.alfrescoJsApi, secondFolder.name, '-my-')); + filesToDelete.push(await uploadActions.uploadFolder(this.alfrescoJsApi, thirdFolder.name, '-my-')); - await browser.driver.sleep(5000); // wait search index previous file/folder uploaded + await browser.driver.sleep(15000); // wait search index previous file/folder uploaded loginPage.loginToContentServicesUsingUserModel(acsUser); @@ -100,13 +101,16 @@ describe('Search component - Search Bar', () => { done(); }); - // afterAll((done) => { - // NodesAPI.deleteContent(acsUser, firstFileModel.id, () => { - // NodesAPI.deleteContent(acsUser, firstFolderModel.id, () => { - // done(); - // }); - // }); - // }); + afterAll(async (done) => { + let uploadActions = new UploadActions(); + + filesToDelete.forEach(async (currentNode) => { + await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, currentNode.entry.id); + + }); + + done(); + }); it('[C272798] Search bar is visible', () => { searchDialog.checkSearchBarIsNotVisible().checkSearchIconIsVisible(); diff --git a/e2e/content-services/search/search_filters.e2e.ts b/e2e/content-services/search/search_filters.e2e.ts index e389485495..23270472b7 100644 --- a/e2e/content-services/search/search_filters.e2e.ts +++ b/e2e/content-services/search/search_filters.e2e.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import LoginPage = require('../../pages/adf/loginPage'); +import { LoginPage } from '../../pages/adf/loginPage'; import SearchDialog = require('../../pages/adf/dialog/searchDialog'); import SearchFiltersPage = require('../../pages/adf/searchFiltersPage'); diff --git a/e2e/content-services/search/search_multiselect.e2e.ts b/e2e/content-services/search/search_multiselect.e2e.ts index 82c8d16cf8..b552d39513 100644 --- a/e2e/content-services/search/search_multiselect.e2e.ts +++ b/e2e/content-services/search/search_multiselect.e2e.ts @@ -24,7 +24,7 @@ import CONSTANTS = require('../../util/constants'); import { UploadActions } from '../../actions/ACS/upload.actions'; import { browser } from 'protractor'; -import LoginPage = require('../../pages/adf/loginPage'); +import { LoginPage } from '../../pages/adf/loginPage'; import SearchDialog = require('../../pages/adf/dialog/searchDialog'); import SearchResultPage = require('../../pages/adf/searchResultsPage'); import SearchFiltersPage = require('../../pages/adf/searchFiltersPage'); @@ -80,7 +80,7 @@ describe('Search Component - Multi-Select Facet', () => { txtFileSite = await uploadActions.uploadFile(this.alfrescoJsApi, txtFileInfo.location, txtFileInfo.name, site.entry.guid); - await browser.driver.sleep(20000); + await browser.driver.sleep(30000); loginPage.loginToContentServicesUsingUserModel(acsUser); @@ -162,7 +162,7 @@ describe('Search Component - Multi-Select Facet', () => { jpgFile = await uploadActions.uploadFile(this.alfrescoJsApi, jpgFileInfo.location, jpgFileInfo.name, site.entry.guid); - await browser.driver.sleep(20000); + await browser.driver.sleep(30000); loginPage.loginToContentServicesUsingUserModel(userUploadingImg); @@ -226,7 +226,7 @@ describe('Search Component - Multi-Select Facet', () => { }); txtFile = await uploadActions.uploadFile(this.alfrescoJsApi, txtFileInfo.location, txtFileInfo.name, '-my-'); - await browser.driver.sleep(20000); + await browser.driver.sleep(30000); loginPage.loginToContentServicesUsingUserModel(acsUser); diff --git a/e2e/content-services/search/search_page_component.e2e.ts b/e2e/content-services/search/search_page_component.e2e.ts index 9bf577a060..aaafc3f314 100644 --- a/e2e/content-services/search/search_page_component.e2e.ts +++ b/e2e/content-services/search/search_page_component.e2e.ts @@ -17,9 +17,10 @@ import { browser } from 'protractor'; -import LoginPage = require('../../pages/adf/loginPage'); +import { LoginPage } from '../../pages/adf/loginPage'; + import SearchDialog = require('../../pages/adf/dialog/searchDialog'); -import ContentServicesPage = require('../../pages/adf/contentServicesPage'); +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import SearchResultPage = require('../../pages/adf/searchResultsPage'); import filePreviewPage = require('../../pages/adf/filePreviewPage'); diff --git a/e2e/content-services/tag_component.e2e.ts b/e2e/content-services/tag_component.e2e.ts index 0d10c70887..8fddbf2816 100644 --- a/e2e/content-services/tag_component.e2e.ts +++ b/e2e/content-services/tag_component.e2e.ts @@ -18,9 +18,9 @@ import AcsUserModel = require('../models/ACS/acsUserModel'); import FileModel = require('../models/ACS/fileModel'); -import LoginPage = require('../pages/adf/loginPage'); -import TagPage = require('../pages/adf/tagPage'); -import AppNavigationBarPage = require('../pages/adf/process_services/appNavigationBarPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { TagPage } from '../pages/adf/tagPage'; +import { AppNavigationBarPage } from '../pages/adf/process_services/appNavigationBarPage'; import TestConfig = require('../test.config'); import resources = require('../util/resources'); @@ -199,7 +199,7 @@ describe('Tag component', () => { tagPage.checkDeleteTagFromTagListByNodeIdIsNotDisplayed(tagList[3]); }); - it('[C286472] Should be able to click Show more/less button on "List Tags Content Services"', () => { + it('[C286472] Should be able to click Show more/less button on List Tags Content Services', () => { tagPage.insertNodeId(pdfFileModel.id); tagPage.checkShowMoreButtonIsDisplayed(); diff --git a/e2e/content-services/trashcan_pagination.e2e.ts b/e2e/content-services/trashcan_pagination.e2e.ts index 7f7caebadd..daa5b86bba 100644 --- a/e2e/content-services/trashcan_pagination.e2e.ts +++ b/e2e/content-services/trashcan_pagination.e2e.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); +import { LoginPage } from '../pages/adf/loginPage'; import { TrashcanPage } from '../pages/adf/trashcanPage'; import PaginationPage = require('../pages/adf/paginationPage'); diff --git a/e2e/content-services/unshare_file.e2e.ts b/e2e/content-services/unshare_file.e2e.ts index 96d05df7c1..330f683162 100644 --- a/e2e/content-services/unshare_file.e2e.ts +++ b/e2e/content-services/unshare_file.e2e.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); -import ContentServicesPage = require('../pages/adf/contentServicesPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ContentServicesPage } from '../pages/adf/contentServicesPage'; import ContentListPage = require('../pages/adf/dialog/contentList'); import ErrorPage = require('../pages/adf/errorPage'); import { ShareDialog } from '../pages/adf/dialog/shareDialog'; diff --git a/e2e/content-services/upload/excluded_file.e2e.ts b/e2e/content-services/upload/excluded_file.e2e.ts index 5d33a2bf6a..c42a6632fe 100644 --- a/e2e/content-services/upload/excluded_file.e2e.ts +++ b/e2e/content-services/upload/excluded_file.e2e.ts @@ -17,8 +17,8 @@ import { element, by, browser } from 'protractor'; -import LoginPage = require('../../pages/adf/loginPage'); -import ContentServicesPage = require('../../pages/adf/contentServicesPage'); +import { LoginPage } from '../../pages/adf/loginPage'; +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import UploadDialog = require('../../pages/adf/dialog/uploadDialog'); import { UploadToggles } from '../../pages/adf/dialog/uploadToggles'; import NavigationBarPage = require('../../pages/adf/navigationBarPage'); diff --git a/e2e/content-services/upload/uploader_component.e2e.ts b/e2e/content-services/upload/uploader_component.e2e.ts index 0f0d670f03..1c272f245e 100644 --- a/e2e/content-services/upload/uploader_component.e2e.ts +++ b/e2e/content-services/upload/uploader_component.e2e.ts @@ -18,8 +18,8 @@ /* tslint:disable */ import { element, by, browser } from 'protractor'; -import LoginPage = require('../../pages/adf/loginPage'); -import ContentServicesPage = require('../../pages/adf/contentServicesPage'); +import { LoginPage } from '../../pages/adf/loginPage'; +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import UploadDialog = require('../../pages/adf/dialog/uploadDialog'); import { UploadToggles } from '../../pages/adf/dialog/uploadToggles'; diff --git a/e2e/content-services/upload/user_permission.e2e.ts b/e2e/content-services/upload/user_permission.e2e.ts index 21070c7cce..cf37f55d56 100644 --- a/e2e/content-services/upload/user_permission.e2e.ts +++ b/e2e/content-services/upload/user_permission.e2e.ts @@ -19,12 +19,12 @@ import { element, by } from 'protractor'; import Util = require('../../util/util'); -import LoginPage = require('../../pages/adf/loginPage'); -import ContentServicesPage = require('../../pages/adf/contentServicesPage'); +import { LoginPage } from '../../pages/adf/loginPage'; +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import UploadDialog = require('../../pages/adf/dialog/uploadDialog'); import { UploadToggles } from '../../pages/adf/dialog/uploadToggles'; import NavigationBarPage = require('../../pages/adf/navigationBarPage'); -import NotificationPage = require('../../pages/adf/notificationPage'); +import { NotificationPage } from '../../pages/adf/notificationPage'; import AcsUserModel = require('../../models/ACS/acsUserModel'); import FileModel = require('../../models/ACS/fileModel'); diff --git a/e2e/content-services/version/version-actions.e2e.ts b/e2e/content-services/version/version-actions.e2e.ts index 90102252d0..6f1714b405 100644 --- a/e2e/content-services/version/version-actions.e2e.ts +++ b/e2e/content-services/version/version-actions.e2e.ts @@ -17,8 +17,8 @@ import { by, element } from 'protractor'; -import LoginPage = require('../../pages/adf/loginPage'); -import ContentServicesPage = require('../../pages/adf/contentServicesPage'); +import { LoginPage } from '../../pages/adf/loginPage'; +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import ContentListPage = require('../../pages/adf/dialog/contentList'); import { VersionManagePage } from '../../pages/adf/versionManagerPage'; diff --git a/e2e/content-services/version/version-permissions.e2e.ts b/e2e/content-services/version/version-permissions.e2e.ts index 51008a91a9..970c49f8fc 100644 --- a/e2e/content-services/version/version-permissions.e2e.ts +++ b/e2e/content-services/version/version-permissions.e2e.ts @@ -17,12 +17,12 @@ import { element, by } from 'protractor'; -import LoginPage = require('../../pages/adf/loginPage'); +import { LoginPage } from '../../pages/adf/loginPage'; import ContentListPage = require('../../pages/adf/dialog/contentList'); import NavigationBarPage = require('../../pages/adf/navigationBarPage'); import { VersionManagePage } from '../../pages/adf/versionManagerPage'; import UploadDialog = require('../../pages/adf/dialog/uploadDialog'); -import NotificationPage = require('../../pages/adf/notificationPage'); +import { NotificationPage } from '../../pages/adf/notificationPage'; import AcsUserModel = require('../../models/ACS/acsUserModel'); import FileModel = require('../../models/ACS/fileModel'); diff --git a/e2e/content-services/version/version-properties.e2e.ts b/e2e/content-services/version/version-properties.e2e.ts index 65cce6259d..4f1b2051c7 100644 --- a/e2e/content-services/version/version-properties.e2e.ts +++ b/e2e/content-services/version/version-properties.e2e.ts @@ -17,8 +17,8 @@ import { by, element } from 'protractor'; -import LoginPage = require('../../pages/adf/loginPage'); -import ContentServicesPage = require('../../pages/adf/contentServicesPage'); +import { LoginPage } from '../../pages/adf/loginPage'; +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import ContentListPage = require('../../pages/adf/dialog/contentList'); import { VersionManagePage } from '../../pages/adf/versionManagerPage'; diff --git a/e2e/content-services/version/version-smoke-tests.e2e.ts b/e2e/content-services/version/version-smoke-tests.e2e.ts index 55deb20687..a9e3060a94 100644 --- a/e2e/content-services/version/version-smoke-tests.e2e.ts +++ b/e2e/content-services/version/version-smoke-tests.e2e.ts @@ -17,8 +17,8 @@ import { browser } from 'protractor'; -import LoginPage = require('../../pages/adf/loginPage'); -import ContentServicesPage = require('../../pages/adf/contentServicesPage'); +import { LoginPage } from '../../pages/adf/loginPage'; +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import ContentListPage = require('../../pages/adf/dialog/contentList'); import { VersionManagePage } from '../../pages/adf/versionManagerPage'; diff --git a/e2e/core/card-view/aspect-oriented-config.e2e.ts b/e2e/core/card-view/aspect-oriented-config.e2e.ts index b9ab5f8192..c42a5747c1 100644 --- a/e2e/core/card-view/aspect-oriented-config.e2e.ts +++ b/e2e/core/card-view/aspect-oriented-config.e2e.ts @@ -17,7 +17,7 @@ import { browser } from 'protractor'; -import LoginPage = require('../../pages/adf/loginPage'); +import { LoginPage } from '../../pages/adf/loginPage'; import { ViewerPage } from '../../pages/adf/viewerPage'; import CardViewPage = require('../../pages/adf/metadataViewPage'); import NavigationBarPage = require('../../pages/adf/navigationBarPage'); @@ -31,7 +31,7 @@ import resources = require('../../util/resources'); import AlfrescoApi = require('alfresco-js-api-node'); import { UploadActions } from '../../actions/ACS/upload.actions'; -import ContentServicesPage = require('../../pages/adf/contentServicesPage'); +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; describe('Aspect oriented config', () => { diff --git a/e2e/core/card-view/card-view-component.e2e.ts b/e2e/core/card-view/card-view-component.e2e.ts index 9239b8af59..6975e875cd 100644 --- a/e2e/core/card-view/card-view-component.e2e.ts +++ b/e2e/core/card-view/card-view-component.e2e.ts @@ -17,7 +17,7 @@ import { element, by } from 'protractor'; -import LoginPage = require('../../pages/adf/loginPage'); +import { LoginPage } from '../../pages/adf/loginPage'; import NavigationBarPage = require('../../pages/adf/navigationBarPage'); import CardViewPage = require('../../pages/adf/metadataViewPage'); diff --git a/e2e/core/card-view/metadata-permissions.e2e.ts b/e2e/core/card-view/metadata-permissions.e2e.ts index ffedee8fc3..775043a36c 100644 --- a/e2e/core/card-view/metadata-permissions.e2e.ts +++ b/e2e/core/card-view/metadata-permissions.e2e.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import LoginPage = require('../../pages/adf/loginPage'); +import { LoginPage } from '../../pages/adf/loginPage'; import { ViewerPage } from '../../pages/adf/viewerPage'; import CardViewPage = require('../../pages/adf/metadataViewPage'); import NavigationBarPage = require('../../pages/adf/navigationBarPage'); diff --git a/e2e/core/card-view/metadata-properties.e2e.ts b/e2e/core/card-view/metadata-properties.e2e.ts index 140119e944..c8f6580261 100644 --- a/e2e/core/card-view/metadata-properties.e2e.ts +++ b/e2e/core/card-view/metadata-properties.e2e.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import LoginPage = require('../../pages/adf/loginPage'); -import ContentServicesPage = require('../../pages/adf/contentServicesPage'); +import { LoginPage } from '../../pages/adf/loginPage'; +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import { ViewerPage } from '../../pages/adf/viewerPage'; import CardViewPage = require('../../pages/adf/metadataViewPage'); diff --git a/e2e/core/card-view/metadata-smoke-tests.e2e.ts b/e2e/core/card-view/metadata-smoke-tests.e2e.ts index 80598a3e38..94b6392319 100644 --- a/e2e/core/card-view/metadata-smoke-tests.e2e.ts +++ b/e2e/core/card-view/metadata-smoke-tests.e2e.ts @@ -17,8 +17,8 @@ import { browser } from 'protractor'; -import LoginPage = require('../../pages/adf/loginPage'); -import ContentServicesPage = require('../../pages/adf/contentServicesPage'); +import { LoginPage } from '../../pages/adf/loginPage'; +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import { ViewerPage } from '../../pages/adf/viewerPage'; import CardViewPage = require('../../pages/adf/metadataViewPage'); import ContentListPage = require('../../pages/adf/dialog/contentList'); diff --git a/e2e/core/datatable/data-table-component-selection.e2e.ts b/e2e/core/datatable/data-table-component-selection.e2e.ts index fc24bf3507..b9761fcd26 100644 --- a/e2e/core/datatable/data-table-component-selection.e2e.ts +++ b/e2e/core/datatable/data-table-component-selection.e2e.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import LoginPage = require('../../pages/adf/loginPage'); +import { LoginPage } from '../../pages/adf/loginPage'; import DataTablePage = require('../../pages/adf/dataTablePage'); import TestConfig = require('../../test.config'); diff --git a/e2e/core/datatable/data-table-component.e2e.ts b/e2e/core/datatable/data-table-component.e2e.ts index bfb0e9c58d..c41fe86c07 100644 --- a/e2e/core/datatable/data-table-component.e2e.ts +++ b/e2e/core/datatable/data-table-component.e2e.ts @@ -15,10 +15,10 @@ * limitations under the License. */ -import LoginPage = require('../../pages/adf/loginPage.js'); -import DataTablePage = require('../../pages/adf/dataTablePage.js'); -import AcsUserModel = require('../../models/ACS/acsUserModel.js'); -import TestConfig = require('../../test.config.js'); +import { LoginPage } from '../../pages/adf/loginPage'; +import DataTablePage = require('../../pages/adf/dataTablePage'); +import AcsUserModel = require('../../models/ACS/acsUserModel'); +import TestConfig = require('../../test.config'); import AlfrescoApi = require('alfresco-js-api-node'); diff --git a/e2e/core/error_component.e2e.ts b/e2e/core/error_component.e2e.ts index 8332063f15..659a0ce0e5 100644 --- a/e2e/core/error_component.e2e.ts +++ b/e2e/core/error_component.e2e.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); +import { LoginPage } from '../pages/adf/loginPage'; import AcsUserModel = require('../models/ACS/acsUserModel'); import TestConfig = require('../test.config'); import AlfrescoApi = require('alfresco-js-api-node'); diff --git a/e2e/core/header_component.e2e.ts b/e2e/core/header_component.e2e.ts index d69c7d8a52..f3a4014c75 100644 --- a/e2e/core/header_component.e2e.ts +++ b/e2e/core/header_component.e2e.ts @@ -14,11 +14,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); +import { LoginPage } from '../pages/adf/loginPage'; import NavigationBarPage = require('../pages/adf/navigationBarPage'); import { HeaderPage } from '../pages/adf/core/headerPage'; -import SettingsPage = require('../pages/adf/settingsPage'); - +import { SettingsPage } from '../pages/adf/settingsPage'; import TestConfig = require('../test.config'); import AlfrescoApi = require('alfresco-js-api-node'); diff --git a/e2e/core/infinite_scrolling.e2e.ts b/e2e/core/infinite_scrolling.e2e.ts index 30f726b24e..795fa180ed 100644 --- a/e2e/core/infinite_scrolling.e2e.ts +++ b/e2e/core/infinite_scrolling.e2e.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); -import ContentServicesPage = require('../pages/adf/contentServicesPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ContentServicesPage } from '../pages/adf/contentServicesPage'; import AcsUserModel = require('../models/ACS/acsUserModel'); import FolderModel = require('../models/ACS/folderModel'); diff --git a/e2e/core/login/login_component.e2e.ts b/e2e/core/login/login_component.e2e.ts index 6ff3b109bb..4c440a0122 100644 --- a/e2e/core/login/login_component.e2e.ts +++ b/e2e/core/login/login_component.e2e.ts @@ -17,23 +17,23 @@ import { browser } from 'protractor'; -import LoginPage = require('../../pages/adf/loginPage'); -import ContentServicesPage = require('../../pages/adf/contentServicesPage'); -import ProcessServicesPage = require('../../pages/adf/process_services/processServicesPage'); +import { LoginPage } from '../../pages/adf/loginPage'; +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; +import { ProcessServicesPage } from '../../pages/adf/process_services/processServicesPage'; import NavigationBarPage = require('../../pages/adf/navigationBarPage'); -import UserInfoDialog = require('../../pages/adf/dialog/userInfoDialog'); +import { UserInfoDialog } from '../../pages/adf/dialog/userInfoDialog'; import TestConfig = require('../../test.config'); import AcsUserModel = require('../../models/ACS/acsUserModel'); -import AdfSettingsPage = require('../../pages/adf/settingsPage'); +import { SettingsPage } from '../../pages/adf/settingsPage'; import AlfrescoApi = require('alfresco-js-api-node'); import Util = require('../../util/util'); describe('Login component', () => { - let adfSettingsPage = new AdfSettingsPage(); + let settingsPage = new SettingsPage(); let processServicesPage = new ProcessServicesPage(); let navigationBarPage = new NavigationBarPage(); let userInfoDialog = new UserInfoDialog(); @@ -152,7 +152,7 @@ describe('Login component', () => { it('[C260049] Login to Process Services with Content Services disabled', () => { loginPage.goToLoginPage(); loginPage.checkSignInButtonIsDisabled(); - adfSettingsPage.setProviderBpm(); + settingsPage.setProviderBpm(); loginPage.login(adminUserModel.id, adminUserModel.password); navigationBarPage.clickProcessServicesButton(); processServicesPage.checkApsContainer(); @@ -163,7 +163,7 @@ describe('Login component', () => { it('[C260050] Login to Content Services with Process Services disabled', () => { loginPage.goToLoginPage(); loginPage.checkSignInButtonIsDisabled(); - adfSettingsPage.setProviderEcm(); + settingsPage.setProviderEcm(); loginPage.login(TestConfig.adf.adminUser, TestConfig.adf.adminPassword); navigationBarPage.clickContentServicesButton(); contentServicesPage.checkAcsContainer(); @@ -172,9 +172,9 @@ describe('Login component', () => { }); it('[C260051] Able to login to both Content Services and Process Services', () => { - adfSettingsPage.setProviderEcmBpm(); + settingsPage.setProviderEcmBpm(); loginPage.checkSignInButtonIsDisabled(); - adfSettingsPage.setProviderEcmBpm(); + settingsPage.setProviderEcmBpm(); loginPage.login(adminUserModel.id, adminUserModel.password); navigationBarPage.clickProcessServicesButton(); processServicesPage.checkApsContainer(); @@ -185,7 +185,7 @@ describe('Login component', () => { }); it('[C277754] Should the user be redirect to the login page when the Content Service session expire', () => { - adfSettingsPage.setProviderEcmBpm(); + settingsPage.setProviderEcmBpm(); loginPage.login(adminUserModel.id, adminUserModel.password); browser.executeScript('window.localStorage.removeItem("ticket-ECM");').then(() => { browser.get(TestConfig.adf.url + '/files'); @@ -195,7 +195,7 @@ describe('Login component', () => { }); it('[C279932] Should successRoute property change the landing page when the user Login', () => { - adfSettingsPage.setProviderEcmBpm(); + settingsPage.setProviderEcmBpm(); loginPage.enableSuccessRouteSwitch(); loginPage.enterSuccessRoute('activiti'); loginPage.login(adminUserModel.id, adminUserModel.password); @@ -203,7 +203,7 @@ describe('Login component', () => { }); it('[C279931] Should the user be redirect to the login page when the Process Service session expire', () => { - adfSettingsPage.setProviderEcmBpm(); + settingsPage.setProviderEcmBpm(); loginPage.login(adminUserModel.id, adminUserModel.password); browser.executeScript('window.localStorage.removeItem("ticket-BPM");').then(() => { browser.get(TestConfig.adf.url + '/activiti'); @@ -212,7 +212,7 @@ describe('Login component', () => { }); it('[C279930] Should a user still be logged-in when open a new tab', () => { - adfSettingsPage.setProviderEcmBpm(); + settingsPage.setProviderEcmBpm(); loginPage.login(adminUserModel.id, adminUserModel.password); Util.openNewTabInBrowser(); @@ -242,7 +242,7 @@ describe('Login component', () => { }); it('[C279933] Should be possible change the login component logo when logoImageUrl is changed', () => { - adfSettingsPage.setProviderEcmBpm(); + settingsPage.setProviderEcmBpm(); loginPage.enableLogoSwitch(); loginPage.enterLogo('https://rawgit.com/Alfresco/alfresco-ng2-components/master/assets/angular2.png'); loginPage.checkLoginImgURL('https://rawgit.com/Alfresco/alfresco-ng2-components/master/assets/angular2.png'); diff --git a/e2e/core/login/redirection.e2e.ts b/e2e/core/login/redirection.e2e.ts index d04918f2a3..c59fb0286e 100644 --- a/e2e/core/login/redirection.e2e.ts +++ b/e2e/core/login/redirection.e2e.ts @@ -17,23 +17,24 @@ import { browser } from 'protractor'; -import LoginPage = require('../../pages/adf/loginPage'); -import ContentServicesPage = require('../../pages/adf/contentServicesPage'); -import ProcessServicesPage = require('../../pages/adf/process_services/processServicesPage'); +import { LoginPage } from '../../pages/adf/loginPage'; +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; +import { ProcessServicesPage } from '../../pages/adf/process_services/processServicesPage'; import NavigationBarPage = require('../../pages/adf/navigationBarPage'); import TestConfig = require('../../test.config'); import AcsUserModel = require('../../models/ACS/acsUserModel'); -import AdfSettingsPage = require('../../pages/adf/settingsPage'); +import { SettingsPage } from '../../pages/adf/settingsPage'; + import AlfrescoApi = require('alfresco-js-api-node'); import Util = require('../../util/util'); import { UploadActions } from '../../actions/ACS/upload.actions'; -describe('Login component', () => { +describe('Login component - Redirect', () => { - let adfSettingsPage = new AdfSettingsPage(); + let settingsPage = new SettingsPage(); let processServicesPage = new ProcessServicesPage(); let navigationBarPage = new NavigationBarPage(); let contentServicesPage = new ContentServicesPage(); @@ -56,7 +57,7 @@ describe('Login component', () => { }); it('[C213838] Should after login in CS be redirect to Login page when try to access to PS', () => { - adfSettingsPage.setProviderEcm(); + settingsPage.setProviderEcm(); loginPage.login(adminUserModel.id, adminUserModel.password); navigationBarPage.clickContentServicesButton(); @@ -68,7 +69,7 @@ describe('Login component', () => { }); it('[C260085] Should after login in PS be redirect to Login page when try to access to CS', () => { - adfSettingsPage.setProviderBpm(); + settingsPage.setProviderBpm(); loginPage.enableSuccessRouteSwitch(); loginPage.enterSuccessRoute('activiti'); @@ -84,7 +85,7 @@ describe('Login component', () => { }); it('[C260081] Should after login in BOTH not be redirect to Login page when try to access to CS or PS', () => { - adfSettingsPage.setProviderEcmBpm(); + settingsPage.setProviderEcmBpm(); loginPage.login(adminUserModel.id, adminUserModel.password); @@ -101,7 +102,7 @@ describe('Login component', () => { let uploadedFolder; let folderName = Util.generateRandomString(); - adfSettingsPage.setProviderEcmBpm(); + settingsPage.setProviderEcmBpm(); loginPage.login(adminUserModel.id, adminUserModel.password); browser.controlFlow().execute(async () => { diff --git a/e2e/core/login/remember_me.e2e.ts b/e2e/core/login/remember_me.e2e.ts index ce074d26e7..638dff9fd5 100644 --- a/e2e/core/login/remember_me.e2e.ts +++ b/e2e/core/login/remember_me.e2e.ts @@ -15,17 +15,16 @@ * limitations under the License. */ -import LoginPage = require('../../pages/adf/loginPage'); - -import AdfSettingsPage = require('../../pages/adf/settingsPage'); +import { LoginPage } from '../../pages/adf/loginPage'; +import { SettingsPage } from '../../pages/adf/settingsPage'; describe('Login component - Remember Me', () => { - let adfSettingsPage = new AdfSettingsPage(); + let settingsPage = new SettingsPage(); let loginPage = new LoginPage(); beforeAll((done) => { - adfSettingsPage.setProviderEcmBpm(); + settingsPage.setProviderEcmBpm(); done(); }); diff --git a/e2e/core/pagination_empty_current_page.e2e.ts b/e2e/core/pagination_empty_current_page.e2e.ts index c73f57db2c..18052282d1 100644 --- a/e2e/core/pagination_empty_current_page.e2e.ts +++ b/e2e/core/pagination_empty_current_page.e2e.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); -import ContentServicesPage = require('../pages/adf/contentServicesPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ContentServicesPage } from '../pages/adf/contentServicesPage'; import PaginationPage = require('../pages/adf/paginationPage'); import AcsUserModel = require('../models/ACS/acsUserModel'); diff --git a/e2e/core/theming_component.e2e.ts b/e2e/core/theming_component.e2e.ts index b358717391..b896bc24cd 100644 --- a/e2e/core/theming_component.e2e.ts +++ b/e2e/core/theming_component.e2e.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); +import { LoginPage } from '../pages/adf/loginPage'; import NavigationBarPage = require('../pages/adf/navigationBarPage'); import TestConfig = require('../test.config'); diff --git a/e2e/core/user_info_component.e2e.ts b/e2e/core/user_info_component.e2e.ts index b46173378f..003ab4e9c8 100644 --- a/e2e/core/user_info_component.e2e.ts +++ b/e2e/core/user_info_component.e2e.ts @@ -15,9 +15,9 @@ * limitations under the License. */ -import AdfSettingsPage = require('../pages/adf/settingsPage'); -import LoginPage = require('../pages/adf/loginPage'); -import UserInfoDialog = require('../pages/adf/dialog/userInfoDialog'); +import { SettingsPage } from '../pages/adf/settingsPage'; +import { LoginPage } from '../pages/adf/loginPage'; +import { UserInfoDialog } from '../pages/adf/dialog/userInfoDialog'; import NavigationBarPage = require('../pages/adf/navigationBarPage'); import AcsUserModel = require('../models/ACS/acsUserModel'); @@ -33,7 +33,7 @@ import { UsersActions } from '../actions/users.actions'; describe('User Info component', () => { - let adfSettingsPage = new AdfSettingsPage(); + let settingsPage = new SettingsPage(); let loginPage = new LoginPage(); let navigationBarPage = new NavigationBarPage(); let userInfoDialog = new UserInfoDialog(); @@ -75,29 +75,34 @@ describe('User Info component', () => { it('[C260111] Enable Process Services and Content Services ', () => { loginPage.goToLoginPage(); - adfSettingsPage.setProviderEcmBpm(); + settingsPage.setProviderEcmBpm(); loginPage.login(contentUserModel.id, contentUserModel.password); navigationBarPage.clickUserProfile(); - userInfoDialog.dialogIsDisplayed().contentServicesTabIsDisplayed().processServicesTabIsDisplayed(); + expect(userInfoDialog.getContentHeaderTitle()).toEqual(contentUserModel.firstName + ' ' + contentUserModel.lastName); expect(userInfoDialog.getContentTitle()).toEqual(contentUserModel.firstName + ' ' + contentUserModel.lastName); expect(userInfoDialog.getContentEmail()).toEqual(contentUserModel.email); expect(userInfoDialog.getContentJobTitle()).toEqual(contentUserModel.jobTitle); + userInfoDialog.checkInitialImage(); userInfoDialog.APSProfileImageNotDisplayed(); userInfoDialog.ACSProfileImageNotDisplayed(); userInfoDialog.clickOnContentServicesTab(); + expect(userInfoDialog.getContentHeaderTitle()).toEqual(contentUserModel.firstName + ' ' + contentUserModel.lastName); expect(userInfoDialog.getContentTitle()).toEqual(contentUserModel.firstName + ' ' + contentUserModel.lastName); expect(userInfoDialog.getContentEmail()).toEqual(contentUserModel.email); expect(userInfoDialog.getContentJobTitle()).toEqual(contentUserModel.jobTitle); + userInfoDialog.checkInitialImage(); userInfoDialog.APSProfileImageNotDisplayed(); userInfoDialog.ACSProfileImageNotDisplayed(); - userInfoDialog.clickOnProcessServicesTab().processServicesTabIsDisplayed(); + userInfoDialog.clickOnProcessServicesTab(); + expect(userInfoDialog.getProcessHeaderTitle()).toEqual(processUserModel.firstName + ' ' + processUserModel.lastName); expect(userInfoDialog.getProcessTitle()).toEqual(processUserModel.firstName + ' ' + processUserModel.lastName); expect(userInfoDialog.getProcessEmail()).toEqual(processUserModel.email); + userInfoDialog.checkInitialImage(); userInfoDialog.APSProfileImageNotDisplayed(); userInfoDialog.ACSProfileImageNotDisplayed(); @@ -106,15 +111,17 @@ describe('User Info component', () => { it('[C260113] Enable Content Services and disable Process Services ', () => { loginPage.goToLoginPage(); - adfSettingsPage.setProviderEcm(); + settingsPage.setProviderEcm(); loginPage.login(contentUserModel.id, contentUserModel.password); navigationBarPage.clickUserProfile(); - userInfoDialog.dialogIsDisplayed().contentServicesTabIsNotDisplayed().processServicesTabIsNotDisplayed(); + userInfoDialog.dialogIsDisplayed(); + expect(userInfoDialog.getContentHeaderTitle()).toEqual(contentUserModel.firstName + ' ' + contentUserModel.lastName); expect(userInfoDialog.getContentTitle()).toEqual(contentUserModel.firstName + ' ' + contentUserModel.lastName); expect(userInfoDialog.getContentEmail()).toEqual(contentUserModel.email); expect(userInfoDialog.getContentJobTitle()).toEqual(contentUserModel.jobTitle); + userInfoDialog.checkInitialImage(); userInfoDialog.APSProfileImageNotDisplayed(); userInfoDialog.ACSProfileImageNotDisplayed(); @@ -123,12 +130,12 @@ describe('User Info component', () => { it('[C260115] Enable Process Services and disable Content Services ', () => { loginPage.goToLoginPage(); - adfSettingsPage.setProviderBpm(); + settingsPage.setProviderBpm(); loginPage.login(processUserModel.email, processUserModel.password); navigationBarPage.clickUserProfile(); - userInfoDialog.dialogIsDisplayed().contentServicesTabIsNotDisplayed().processServicesTabIsNotDisplayed(); + userInfoDialog.dialogIsDisplayed(); expect(userInfoDialog.getProcessHeaderTitle()).toEqual(processUserModel.firstName + ' ' + processUserModel.lastName); expect(userInfoDialog.getProcessTitle()).toEqual(processUserModel.firstName + ' ' + processUserModel.lastName); @@ -147,12 +154,14 @@ describe('User Info component', () => { }); loginPage.goToLoginPage(); - adfSettingsPage.setProviderEcm(); + settingsPage.setProviderEcm(); loginPage.login(contentUserModel.id, contentUserModel.password); navigationBarPage.clickUserProfile(); + userInfoDialog.checkACSProfileImage(); userInfoDialog.APSProfileImageNotDisplayed(); userInfoDialog.closeUserProfile(); + done(); }); @@ -162,9 +171,10 @@ describe('User Info component', () => { await users.changeProfilePictureAps(this.alfrescoJsApi, apsAvatarFileModel.getLocation()); loginPage.goToLoginPage(); - adfSettingsPage.setProviderBpm(); + settingsPage.setProviderBpm(); loginPage.login(processUserModel.email, processUserModel.password); navigationBarPage.clickUserProfile(); + userInfoDialog.checkAPSProfileImage(); userInfoDialog.ACSProfileImageNotDisplayed(); userInfoDialog.initialImageNotDisplayed(); @@ -173,10 +183,13 @@ describe('User Info component', () => { it('[C260120] Delete the profile picture from ACS', () => { PeopleAPI.deleteAvatarViaAPI(contentUserModel, '-me-'); + loginPage.goToLoginPage(); - adfSettingsPage.setProviderEcm(); + + settingsPage.setProviderEcm(); loginPage.login(contentUserModel.id, contentUserModel.password); navigationBarPage.clickUserProfile(); + userInfoDialog.checkInitialImage(); userInfoDialog.APSProfileImageNotDisplayed(); userInfoDialog.ACSProfileImageNotDisplayed(); diff --git a/e2e/core/viewer/viewer_component.e2e.ts b/e2e/core/viewer/viewer_component.e2e.ts index d1b90401a0..1046c618cb 100644 --- a/e2e/core/viewer/viewer_component.e2e.ts +++ b/e2e/core/viewer/viewer_component.e2e.ts @@ -17,10 +17,10 @@ import TestConfig = require('../../test.config'); -import LoginPage = require('../../pages/adf/loginPage'); +import { LoginPage } from '../../pages/adf/loginPage'; import { ViewerPage } from '../../pages/adf/viewerPage'; import NavigationBarPage = require('../../pages/adf/navigationBarPage'); -import ContentServicesPage = require('../../pages/adf/contentServicesPage'); +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import resources = require('../../util/resources'); import Util = require('../../util/util'); @@ -32,7 +32,6 @@ import AcsUserModel = require('../../models/ACS/acsUserModel'); import AlfrescoApi = require('alfresco-js-api-node'); import { UploadActions } from '../../actions/ACS/upload.actions'; -import { browser } from 'protractor'; describe('Viewer', () => { @@ -113,7 +112,6 @@ describe('Viewer', () => { }); describe('Archive Folder Uploaded', () => { - let uploadedArchives; let archiveFolderUploaded; @@ -134,12 +132,13 @@ describe('Viewer', () => { }); it('[C260517] Should be possible to open any Archive file', () => { + contentServicesPage.navigateToFolder('archive'); + uploadedArchives.forEach((currentFile) => { if (currentFile.entry.name !== '.DS_Store') { - navigationBarPage.openViewer(currentFile.entry.id); - viewerPage.checkZoomInButtonIsDisplayed(15000); + contentServicesPage.doubleClickRow(currentFile.entry.name); + viewerPage.checkFileIsLoaded(); viewerPage.clickCloseButton(); - contentServicesPage.checkAcsContainer(); } }); }); @@ -168,12 +167,13 @@ describe('Viewer', () => { }); it('[C280008] Should be possible to open any Excel file', () => { + contentServicesPage.navigateToFolder('excel'); + uploadedExcels.forEach((currentFile) => { if (currentFile.entry.name !== '.DS_Store') { - navigationBarPage.openViewer(currentFile.entry.id); - viewerPage.checkZoomInButtonIsDisplayed(15000); + contentServicesPage.doubleClickRow(currentFile.entry.name); + viewerPage.checkFileIsLoaded(); viewerPage.clickCloseButton(); - contentServicesPage.checkAcsContainer(); } }); }); @@ -202,12 +202,13 @@ describe('Viewer', () => { }); it('[C280009] Should be possible to open any PowerPoint file', () => { + contentServicesPage.navigateToFolder('ppt'); + uploadedPpts.forEach((currentFile) => { if (currentFile.entry.name !== '.DS_Store') { - navigationBarPage.openViewer(currentFile.entry.id); - viewerPage.checkZoomInButtonIsDisplayed(15000); + contentServicesPage.doubleClickRow(currentFile.entry.name); + viewerPage.checkFileIsLoaded(); viewerPage.clickCloseButton(); - contentServicesPage.checkAcsContainer(); } }); }); @@ -236,12 +237,13 @@ describe('Viewer', () => { }); it('[C280010] Should be possible to open any Text file', () => { + contentServicesPage.navigateToFolder('text'); + uploadedTexts.forEach((currentFile) => { if (currentFile.entry.name !== '.DS_Store') { - navigationBarPage.openViewer(currentFile.entry.id); - viewerPage.checkZoomInButtonIsDisplayed(15000); + contentServicesPage.doubleClickRow(currentFile.entry.name); + viewerPage.checkFileIsLoaded(); viewerPage.clickCloseButton(); - contentServicesPage.checkAcsContainer(); } }); }); @@ -270,12 +272,13 @@ describe('Viewer', () => { }); it('[C280011] Should be possible to open any Word file', () => { + contentServicesPage.navigateToFolder('word'); + uploadedWords.forEach((currentFile) => { if (currentFile.entry.name !== '.DS_Store') { - navigationBarPage.openViewer(currentFile.entry.id); - viewerPage.checkZoomInButtonIsDisplayed(15000); + contentServicesPage.doubleClickRow(currentFile.entry.name); + viewerPage.checkFileIsLoaded(); viewerPage.clickCloseButton(); - contentServicesPage.checkAcsContainer(); } }); }); @@ -304,12 +307,13 @@ describe('Viewer', () => { }); it('[C280012] Should be possible to open any other Document supported extension', () => { + contentServicesPage.navigateToFolder('other'); + uploadedOthers.forEach((currentFile) => { if (currentFile.entry.name !== '.DS_Store') { - navigationBarPage.openViewer(currentFile.entry.id); - viewerPage.checkZoomInButtonIsDisplayed(15000); + contentServicesPage.doubleClickRow(currentFile.entry.name); + viewerPage.checkFileIsLoaded(); viewerPage.clickCloseButton(); - contentServicesPage.checkAcsContainer(); } }); }); @@ -338,12 +342,13 @@ describe('Viewer', () => { }); it('[C279966] Should be possible to open any Image supported extension', () => { + contentServicesPage.navigateToFolder('images'); + uploadedImages.forEach((currentFile) => { if (currentFile.entry.name !== '.DS_Store') { - navigationBarPage.openViewer(currentFile.entry.id); - viewerPage.checkZoomInButtonIsDisplayed(15000); + contentServicesPage.doubleClickRow(currentFile.entry.name); + viewerPage.checkFileIsLoaded(); viewerPage.clickCloseButton(); - contentServicesPage.checkAcsContainer(); } }); }); diff --git a/e2e/core/viewer/viewer_content_services_component.e2e.ts b/e2e/core/viewer/viewer_content_services_component.e2e.ts index 42d4949d26..cf4baa3dff 100644 --- a/e2e/core/viewer/viewer_content_services_component.e2e.ts +++ b/e2e/core/viewer/viewer_content_services_component.e2e.ts @@ -19,8 +19,8 @@ import { browser } from 'protractor'; import TestConfig = require('../../test.config'); -import LoginPage = require('../../pages/adf/loginPage'); -import ContentServicesPage = require('../../pages/adf/contentServicesPage'); +import { LoginPage } from '../../pages/adf/loginPage'; +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import { ViewerPage } from '../../pages/adf/viewerPage'; import resources = require('../../util/resources'); diff --git a/e2e/core/viewer/viewer_integration_with_router.e2e.ts b/e2e/core/viewer/viewer_integration_with_router.e2e.ts deleted file mode 100644 index 26bbba5d32..0000000000 --- a/e2e/core/viewer/viewer_integration_with_router.e2e.ts +++ /dev/null @@ -1,95 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import TestConfig = require('../../test.config'); - -import LoginPage = require('../../pages/adf/loginPage'); -import { ViewerPage } from '../../pages/adf/viewerPage'; -import NavigationBarPage = require('../../pages/adf/navigationBarPage'); - -import resources = require('../../util/resources'); - -import FileModel = require('../../models/ACS/fileModel'); -import AcsUserModel = require('../../models/ACS/acsUserModel'); - -import AlfrescoApi = require('alfresco-js-api-node'); -import { UploadActions } from '../../actions/ACS/upload.actions'; -import SettingsPage = require('../../pages/adf/settingsPage'); - -describe('Viewer Integration with Router', () => { - - let acsUser; - let viewerPage = new ViewerPage(); - let loginPage = new LoginPage(); - let navigationBarPage = new NavigationBarPage(); - let settingsPage = new SettingsPage(); - let uploadActions = new UploadActions(); - - let pngFile = new FileModel({ - 'name': resources.Files.ADF_DOCUMENTS.PNG.file_name, - 'location': resources.Files.ADF_DOCUMENTS.PNG.file_location - }); - - beforeAll(async (done) => { - - this.alfrescoJsApi = new AlfrescoApi({ - provider: 'ECM', - hostEcm: TestConfig.adf.url - }); - - done(); - }); - - beforeEach(async (done) => { - acsUser = new AcsUserModel(); - - await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); - - await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser); - - await this.alfrescoJsApi.login(acsUser.id, acsUser.password); - - let pngFileUploaded = await uploadActions.uploadFile(this.alfrescoJsApi, pngFile.location, pngFile.name, '-my-'); - Object.assign(pngFile, pngFileUploaded.entry); - - loginPage.goToLoginPage(); - settingsPage.setProviderEcm(); - - done(); - }); - - afterEach(() => { - this.alfrescoJsApi.nodes.deleteNode(pngFile.id); - }); - - it('[C260063] Should be able to open file with URL when user is logged in', () => { - loginPage.login(acsUser.id, acsUser.password); - - navigationBarPage.openViewer(pngFile.id); - - viewerPage.checkImgViewerIsDisplayed(); - }); - - it('[C260061] Should be able to open file with URL when user is logged out', () => { - navigationBarPage.openViewer(pngFile.id); - - loginPage.checkLoginFormIsDisplayed(); - loginPage.login(acsUser.id, acsUser.password); - - viewerPage.checkImgViewerIsDisplayed(); - }); -}); diff --git a/e2e/core/viewer/viewer_properties.e2e.ts b/e2e/core/viewer/viewer_properties.e2e.ts index 5d0d0cc3a1..e1a4e7e6e9 100644 --- a/e2e/core/viewer/viewer_properties.e2e.ts +++ b/e2e/core/viewer/viewer_properties.e2e.ts @@ -19,8 +19,8 @@ import { browser } from 'protractor'; import TestConfig = require('../../test.config'); -import LoginPage = require('../../pages/adf/loginPage'); -import ContentServicesPage = require('../../pages/adf/contentServicesPage'); +import { LoginPage } from '../../pages/adf/loginPage'; +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import { ViewerPage } from '../../pages/adf/viewerPage'; import resources = require('../../util/resources'); diff --git a/e2e/insights/analytics-component.e2e.ts b/e2e/insights/analytics-component.e2e.ts index 4aec6dcf3c..60de209283 100644 --- a/e2e/insights/analytics-component.e2e.ts +++ b/e2e/insights/analytics-component.e2e.ts @@ -15,11 +15,11 @@ * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); +import { LoginPage } from '../pages/adf/loginPage'; import NavigationBarPage = require('../pages/adf/navigationBarPage'); import AnalyticsPage = require('../pages/adf/process_services/analyticsPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); -import AppNavigationBarPage = require('../pages/adf/process_services/appNavigationBarPage'); +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import { AppNavigationBarPage } from '../pages/adf/process_services/appNavigationBarPage'; import TestConfig = require('../test.config'); import Tenant = require('../models/APS/Tenant'); import User = require('../models/APS/User'); diff --git a/e2e/pages/adf/configEditorPage.ts b/e2e/pages/adf/configEditorPage.ts index 98d9fca6d1..453cb58e20 100644 --- a/e2e/pages/adf/configEditorPage.ts +++ b/e2e/pages/adf/configEditorPage.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { element, by, browser } from 'protractor'; +import { element, by } from 'protractor'; import Util = require('../../util/util'); export class ConfigEditorPage { diff --git a/e2e/pages/adf/contentServicesPage.js b/e2e/pages/adf/contentServicesPage.js deleted file mode 100644 index a2f2127df4..0000000000 --- a/e2e/pages/adf/contentServicesPage.js +++ /dev/null @@ -1,614 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var Util = require('../../util/util'); -var ContentList = require('./dialog/contentList'); -var CreateFolderDialog = require('./dialog/createFolderDialog'); -var path = require('path'); -var TestConfig = require('../../test.config'); -var NavigationBarPage = require('./navigationBarPage'); -var remote = require('selenium-webdriver/remote'); - -var ContentServicesPage = function () { - - var contentList = new ContentList(); - var createFolderDialog = new CreateFolderDialog(); - var uploadBorder = element(by.css("div[id='document-list-container']")); - var tableBody = element.all(by.css("adf-document-list div[class='adf-datatable-body']")).first(); - var contentServices = element(by.css("a[data-automation-id='Content Services']")); - var currentFolder = element(by.css("div[class*='adf-breadcrumb-item active'] div")); - var createFolderButton = element(by.cssContainingText("mat-icon", "create_new_folder")); - var activeBreadcrumb = element(by.css("div[class*='active']")); - var folderID = element.all(by.css("div[class*='settings'] p")).first(); - var tooltip = by.css("div[class*='--text full-width'] span"); - var uploadFileButton = element(by.css("input[data-automation-id='upload-single-file']")); - var uploadMultipleFileButton = element(by.css("input[data-automation-id='upload-multiple-files']")); - var uploadFolderButton = element(by.css("input[data-automation-id='uploadFolder']")); - var errorSnackBar = element(by.css("simple-snack-bar[class*='mat-simple-snackbar']")); - var contentServicesURL = TestConfig.adf.url + TestConfig.adf.port + "/files"; - var loadMoreButton = element(by.css("button[data-automation-id='adf-infinite-pagination-button']")); - var emptyPagination = element(by.css("adf-pagination[class*='adf-pagination__empty']")); - var dragAndDrop = element.all(by.css("adf-upload-drag-area div")).first(); - var nameHeader = element(by.css("div[data-automation-id='auto_id_name'] > span")); - var sizeHeader = element(by.css("div[data-automation-id='auto_id_content.sizeInBytes'] > span")); - var createdByHeader = element(by.css("div[data-automation-id='auto_id_createdByUser.displayName'] > span")); - var createdHeader = element(by.css("div[data-automation-id='auto_id_createdAt'] > span")); - var recentFiles = element(by.css(".adf-container-recent")); - var recentFilesExpanded = element(by.css(".adf-container-recent mat-expansion-panel-header.mat-expanded")); - var recentFilesClosed = element(by.css(".adf-container-recent mat-expansion-panel-header")); - var recentFileIcon = element(by.css(".adf-container-recent mat-expansion-panel-header mat-icon")); - var documentListSpinner = element(by.css("mat-progress-spinner")); - var emptyFolder = element(by.css(".adf-empty-folder-this-space-is-empty")); - var emptyFolderImage = element(by.css(".adf-empty-folder-image")); - var emptyRecent = element(by.css(".adf-container-recent .empty-list__title")); - var gridViewButton = element(by.css("button[data-automation-id='document-list-grid-view']")); - var cardViewContainer = element(by.css("div.document-list-container div.adf-data-table-card")); - var copyButton = element(by.css('button[data-automation-id="content-node-selector-actions-choose"]')); - var searchInputElement = element(by.css('input[data-automation-id="content-node-selector-search-input"')); - var shareNodeButton = element(by.cssContainingText("mat-icon", " share ")); - - this.getContentList = function () { - return contentList; - }; - - this.checkRecentFileToBeShowed = function () { - Util.waitUntilElementIsVisible(recentFiles); - }; - - this.expandRecentFiles = function () { - this.checkRecentFileToBeShowed(); - this.checkRecentFileToBeClosed(); - recentFilesClosed.click(); - this.checkRecentFileToBeOpened() - }; - - this.closeRecentFiles = function() { - this.checkRecentFileToBeShowed(); - this.checkRecentFileToBeOpened() - recentFilesExpanded.click(); - this.checkRecentFileToBeClosed(); - }; - - this.checkRecentFileToBeClosed = function () { - Util.waitUntilElementIsVisible(recentFilesClosed); - }; - - this.checkRecentFileToBeOpened = function () { - Util.waitUntilElementIsVisible(recentFilesExpanded); - }; - - - this.getRecentFileIcon = async function () { - await Util.waitUntilElementIsVisible(recentFileIcon); - return recentFileIcon.getText(); - }; - - /** - * Check Document List is displayed - * @method checkAcsContainer - */ - this.checkAcsContainer = function () { - Util.waitUntilElementIsVisible(uploadBorder); - return this; - }; - - this.waitForTableBody = function () { - Util.waitUntilElementIsVisible(tableBody); - }; - - /** - * Go to Document List Page - * @method goToDocumentList - * */ - this.goToDocumentList = function () { - this.clickOnContentServices(); - this.checkAcsContainer(); - }; - - this.clickOnContentServices = function () { - Util.waitUntilElementIsVisible(contentServices); - Util.waitUntilElementIsClickable(contentServices); - contentServices.click(); - }; - - this.navigateToDocumentList = function () { - var navigationBarPage = new NavigationBarPage(); - navigationBarPage.clickContentServicesButton(); - this.checkAcsContainer(); - }; - - this.numberOfResultsDisplayed = function () { - return contentList.getAllDisplayedRows(); - }; - - this.currentFolderName = function () { - var deferred = protractor.promise.defer(); - Util.waitUntilElementIsVisible(currentFolder); - currentFolder.getText().then(function (result) { - deferred.fulfill(result); - }); - return deferred.promise; - }; - - this.getTooltip = function (content) { - return contentList.getRowByRowName(content).element(tooltip).getAttribute('title'); - }; - - this.getBreadcrumbTooltip = function (content) { - return element(by.css("nav[data-automation-id='breadcrumb'] div[title='" + content + "']")).getAttribute('title'); - }; - - this.getAllRowsNameColumn = function () { - return contentList.getAllRowsNameColumn(); - }; - /** - * Sort the list by name column. - * - * @param sortOrder : 'true' to sort the list ascendant and 'false' for descendant - */ - this.sortByName = function (sortOrder) { - contentList.sortByName(sortOrder); - }; - - /** - * Sort the list by author column. - * - * @param sortOrder : 'true' to sort the list ascendant and 'false' for descendant - */ - this.sortByAuthor = function (sortOrder) { - contentList.sortByAuthor(sortOrder); - }; - - /** - * Sort the list by created column. - * - * @param sortOrder : 'true' to sort the list ascendant and 'false' for descendant - */ - this.sortByCreated = function (sortOrder) { - return contentList.sortByCreated(sortOrder); - }; - - /** - * Sort by name and check the list is sorted. - * - * @param sortOrder : 'true' if the list is expected to be sorted ascendant and 'false' for descendant - * @return result : 'true' if the list is sorted as expected and 'false' if it isn't - */ - this.sortAndCheckListIsOrderedByName = function (sortOrder) { - this.sortByName(sortOrder); - var deferred = protractor.promise.defer(); - contentList.checkListIsOrderedByNameColumn(sortOrder).then(function (result) { - deferred.fulfill(result); - }); - return deferred.promise; - }; - - this.checkListIsSortedByNameColumn = async function(sortOrder) { - await contentList.checkListIsOrderedByNameColumn(sortOrder); - }; - - this.checkListIsSortedByCreatedColumn = async function(sortOrder) { - await contentList.checkListIsOrderedByCreatedColumn(sortOrder); - }; - - this.checkListIsSortedByAuthorColumn = async function(sortOrder) { - await contentList.checkListIsOrderedByAuthorColumn(sortOrder); - }; - - this.checkListIsSortedBySizeColumn = async function(sortOrder) { - await contentList.checkListIsOrderedBySizeColumn(sortOrder); - }; - - /** - * Sort by author and check the list is sorted. - * - * @param sortOrder : 'true' if the list is expected to be sorted ascendant and 'false' for descendant - * @return result : 'true' if the list is sorted as expected and 'false' if it isn't - */ - this.sortAndCheckListIsOrderedByAuthor = function (sortOrder) { - this.sortByAuthor(sortOrder); - var deferred = protractor.promise.defer(); - contentList.checkListIsOrderedByAuthorColumn(sortOrder).then(function (result) { - deferred.fulfill(result); - }); - return deferred.promise; - }; - - /** - * Sort by created and check the list is sorted. - * - * @param sortOrder : 'true' if the list is expected to be sorted ascendant and 'false' for descendant - * @return result : 'true' if the list is sorted as expected and 'false' if it isn't - */ - this.sortAndCheckListIsOrderedByCreated = function (sortOrder) { - this.sortByCreated(sortOrder); - var deferred = protractor.promise.defer(); - contentList.checkListIsOrderedByCreatedColumn(sortOrder).then(function (result) { - deferred.fulfill(result); - }); - return deferred.promise; - }; - - this.navigateToFolder = function (folder) { - contentList.navigateToFolder(folder); - return this; - }; - - this.doubleClickRow = function (folder) { - contentList.doubleClickRow(folder); - return this; - }; - - this.doubleClickEntireRow = function (folder) { - contentList.doubleClickEntireRow(folder); - return this; - }; - - this.clickOnCreateNewFolder = function () { - Util.waitUntilElementIsVisible(createFolderButton); - createFolderButton.click(); - return this; - }; - - this.createNewFolder = function (folder) { - this.clickOnCreateNewFolder(); - createFolderDialog.addFolderName(folder); - createFolderDialog.clickOnCreateButton(); - return this; - }; - - this.checkContentIsDisplayed = function (content) { - contentList.checkContentIsDisplayed(content); - return this; - }; - - this.checkContentsAreDisplayed = function (content) { - for (var i = 0; i < content.length; i++) { - this.checkContentIsDisplayed(content[i]); - } - return this; - }; - - this.checkContentIsNotDisplayed = function (content) { - contentList.checkContentIsNotDisplayed(content); - return this; - }; - - this.checkContentsAreNotDisplayed = function (content) { - for (var i = 0; i < content.length; i++) { - this.checkContentIsNotDisplayed(content[i]); - } - return this; - }; - - this.checkEmptyFolderMessageIsDisplayed = function () { - contentList.checkEmptyFolderMessageIsDisplayed(); - return this; - }; - - this.checkElementIsDisplayed = function (elementName) { - let dataElement = element(by.css(`div[data-automation-id="${elementName}"]`)); - Util.waitUntilElementIsVisible(dataElement); - }; - - this.navigateToFolderViaBreadcrumbs = function (folder) { - contentList.tableIsLoaded(); - var breadcrumb = element(by.css("a[data-automation-id='breadcrumb_" + folder + "']")); - Util.waitUntilElementIsVisible(breadcrumb); - breadcrumb.click(); - return this; - }; - - this.getActiveBreadcrumb = function () { - Util.waitUntilElementIsVisible(activeBreadcrumb); - return activeBreadcrumb.getAttribute("title"); - }; - - this.getCurrentFolderID = function () { - Util.waitUntilElementIsVisible(folderID); - return folderID.getText(); - }; - - this.checkIconColumn = function (file, extension) { - contentList.checkIconColumn(file, extension); - return this; - }; - - this.uploadFile = function (fileLocation) { - browser.setFileDetector(new remote.FileDetector()); - this.checkUploadButton(); - Util.waitUntilElementIsVisible(uploadFileButton); - uploadFileButton.sendKeys(path.resolve(path.join(TestConfig.main.rootPath, fileLocation))); - this.checkUploadButton(); - return this; - }; - - this.uploadMultipleFile = function (files) { - browser.setFileDetector(new remote.FileDetector()); - Util.waitUntilElementIsVisible(uploadMultipleFileButton); - var allFiles = path.resolve(path.join(TestConfig.main.rootPath, files[0])); - for (var i = 1; i < files.length; i++) { - allFiles = allFiles + "\n" + path.resolve(path.join(TestConfig.main.rootPath, files[i])); - } - uploadMultipleFileButton.sendKeys(allFiles); - Util.waitUntilElementIsVisible(uploadMultipleFileButton); - return this; - }; - - this.uploadFolder = function (folder) { - browser.setFileDetector(new remote.FileDetector()); - Util.waitUntilElementIsVisible(uploadFolderButton); - uploadFolderButton.sendKeys(path.resolve(path.join(TestConfig.main.rootPath, folder))); - Util.waitUntilElementIsVisible(uploadFolderButton); - return this; - }; - - this.getSingleFileButtonTooltip = function () { - Util.waitUntilElementIsVisible(uploadFileButton); - return uploadFileButton.getAttribute("title"); - }; - - this.getMultipleFileButtonTooltip = function () { - Util.waitUntilElementIsVisible(uploadMultipleFileButton); - return uploadMultipleFileButton.getAttribute("title"); - }; - - this.getFolderButtonTooltip = function () { - Util.waitUntilElementIsVisible(uploadFolderButton); - return uploadFolderButton.getAttribute("title"); - }; - - this.checkUploadButton = function () { - Util.waitUntilElementIsVisible(uploadFileButton); - Util.waitUntilElementIsClickable(uploadFileButton); - return this; - }; - - this.uploadButtonIsEnabled = function () { - return uploadFileButton.isEnabled(); - }; - - this.deleteContent = function (content) { - contentList.deleteContent(content); - return this; - }; - - this.deleteContents = function (content) { - for (var i = 0; i < content.length; i++) { - this.deleteContent(content[i]); - this.checkContentIsNotDisplayed(content[i]); - browser.driver.sleep(1000); - } - return this; - }; - - this.getErrorMessage = function () { - Util.waitUntilElementIsVisible(errorSnackBar); - var deferred = protractor.promise.defer(); - errorSnackBar.getText().then(function (text) { - deferred.fulfill(text); - }); - return deferred.promise; - }; - - this.checkItemInDocList = function (fileName) { - Util.waitUntilElementIsVisible(element(by.css("div[data-automation-id='text_" + fileName + "']"))); - }; - - this.enableInfiniteScrolling = function () { - var infiniteScrollButton = element(by.cssContainingText('.mat-slide-toggle-content', 'Enable Infinite Scrolling')); - Util.waitUntilElementIsVisible(infiniteScrollButton); - infiniteScrollButton.click(); - return this; - }; - - this.enableCustomPermissionMessage = function () { - var customPermissionMessage = element(by.cssContainingText('.mat-slide-toggle-content', 'Enable custom permission message')); - Util.waitUntilElementIsVisible(customPermissionMessage); - customPermissionMessage.click(); - return this; - }; - - this.enableMediumTimeFormat = function () { - var mediumTimeFormat = element(by.css('#enableMediumTimeFormat')); - Util.waitUntilElementIsVisible(mediumTimeFormat); - mediumTimeFormat.click(); - return this; - }; - - this.enableThumbnails = function () { - var thumbnailSlide = element(by.css('#adf-thumbnails-upload-switch')); - Util.waitUntilElementIsVisible(thumbnailSlide); - thumbnailSlide.click(); - return this; - }; - - this.clickLoadMoreButton = function () { - Util.waitUntilElementIsVisible(loadMoreButton); - Util.waitUntilElementIsClickable(loadMoreButton); - loadMoreButton.click(); - return this; - }; - - this.checkPaginationIsNotDisplayed = function () { - Util.waitUntilElementIsVisible(emptyPagination); - }; - - this.getDocumentListRowNumber = function() { - let documentList = element(by.css('adf-upload-drag-area adf-document-list')); - Util.waitUntilElementIsVisible(documentList); - let actualRows = $$('adf-upload-drag-area adf-document-list .adf-datatable-row').count(); - return actualRows; - }; - - this.checkColumnNameHeader = function() { - Util.waitUntilElementIsVisible(nameHeader); - }; - - this.checkColumnSizeHeader = function() { - Util.waitUntilElementIsVisible(sizeHeader); - }; - - this.checkColumnCreatedByHeader = function() { - Util.waitUntilElementIsVisible(createdByHeader); - }; - - this.checkColumnCreatedHeader = function() { - Util.waitUntilElementIsVisible(createdHeader); - }; - - this.checkDandDIsDisplayed = function () { - Util.waitUntilElementIsVisible(dragAndDrop); - }; - - this.checkLockIsDislpayedForElement = function(name) { - let lockButton = element(by.css(`div.adf-data-table-cell[filename="${name}"] button`)); - Util.waitUntilElementIsVisible(lockButton); - }; - - this.getColumnValueForRow = function (file, columnName) { - let row = contentList.getRowByRowName(file); - Util.waitUntilElementIsVisible(row); - let rowColumn = row.element(by.css('div[title="'+columnName+'"] span')); - Util.waitUntilElementIsVisible(rowColumn); - return rowColumn.getText(); - }; - - this.getStyleValueForRowText = async function(rowName, styleName) { - let row = element(by.css(`div.adf-data-table-cell[filename="${rowName}"] span.adf-datatable-cell-value[title="${rowName}"]`)); - Util.waitUntilElementIsVisible(row); - return row.getCssValue(styleName); - }; - - this.checkSpinnerIsShowed = function () { - Util.waitUntilElementIsPresent(documentListSpinner); - }; - - this.checkEmptyFolderTextToBe = function (text) { - Util.waitUntilElementIsVisible(emptyFolder); - expect(emptyFolder.getText()).toContain(text); - }; - - this.checkEmptyFolderImageUrlToContain = function (url) { - Util.waitUntilElementIsVisible(emptyFolderImage); - expect(emptyFolderImage.getAttribute('src')).toContain(url); - }; - - this.checkEmptyRecentFileIsDisplayed = function () { - Util.waitUntilElementIsVisible(emptyRecent); - }; - - this.checkIconForRowIsDisplayed = function(fileName) { - let iconRow = element(by.css(`.document-list-container div.adf-data-table-cell[filename="${fileName}"] img`)); - Util.waitUntilElementIsVisible(iconRow); - return iconRow; - }; - - this.getRowIconImageUrl = async function(fileName) { - let iconRow = this.checkIconForRowIsDisplayed(fileName); - return iconRow.getAttribute('src'); - }; - - this.checkGridViewButtonIsVisible = function () { - Util.waitUntilElementIsVisible(gridViewButton); - }; - - this.clickGridViewButton = function() { - this.checkGridViewButtonIsVisible(); - gridViewButton.click(); - }; - - this.checkCardViewContainerIsDisplayed = function () { - Util.waitUntilElementIsVisible(cardViewContainer); - }; - - this.getCardElementShowedInPage = function() { - this.checkCardViewContainerIsDisplayed(); - let actualCards = $$('div.document-list-container div.adf-data-table-card div.cell-value img').count(); - return actualCards; - }; - - this.getDocumentCardIconForElement = function(elementName){ - let elementIcon = element(by.css(`.document-list-container div.adf-data-table-cell[filename="${elementName}"] img`)); - return elementIcon.getAttribute('src'); - }; - - this.checkDocumentCardPropertyIsShowed = function(elementName, propertyName) { - let elementProperty = element(by.css(`.document-list-container div.adf-data-table-cell[filename="${elementName}"][title="${propertyName}"]`)); - Util.waitUntilElementIsVisible(elementProperty); - }; - - this.getAttributeValueForElement = function(elementName, propertyName) { - let elementSize = element(by.css(`.document-list-container div.adf-data-table-cell[filename="${elementName}"][title="${propertyName}"] span`)); - return elementSize.getText(); - }; - - this.checkMenuIsShowedForElementIndex = function(elementIndex) { - let elementMenu = element(by.css(`button[data-automation-id="action_menu_${elementIndex}"]`)); - Util.waitUntilElementIsVisible(elementMenu); - }; - - this.navigateToCardFolder = function(folderName) { - let folderCard = element(by.css(`.document-list-container div.image-table-cell.adf-data-table-cell[filename="${folderName}"]`)); - folderCard.click(); - let folderSelected = element(by.css(`.adf-datatable-row.is-selected div[filename="${folderName}"].adf-data-table-cell--image`)); - Util.waitUntilElementIsVisible(folderSelected); - browser.actions().sendKeys(protractor.Key.ENTER).perform(); - }; - - this.getGridViewSortingDropdown = function() { - let sortingDropdown = element(by.css('mat-select[data-automation-id="grid-view-sorting"]')); - Util.waitUntilElementIsVisible(sortingDropdown); - return sortingDropdown; - }; - - this.selectGridSortingFromDropdown = function(sortingChosen){ - let dropdownSorting = this.getGridViewSortingDropdown(); - dropdownSorting.click(); - let optionToClick = element(by.css(`mat-option[data-automation-id="grid-view-sorting-${sortingChosen}"]`)); - Util.waitUntilElementIsPresent(optionToClick); - optionToClick.click(); - }; - - this.checkRowIsDisplayed = function(rowName){ - let row = contentList.getRowByRowName(rowName); - Util.waitUntilElementIsVisible(row); - }; - - this.typeIntoNodeSelectorSearchField = function(text) { - Util.waitUntilElementIsVisible(searchInputElement); - searchInputElement.sendKeys(text); - }; - - this.clickContentNodeSelectorResult = function(name){ - let resultElement = element.all(by.css(`div[data-automation-id="content-node-selector-content-list"] div[filename="${name}"`)).first(); - Util.waitUntilElementIsVisible(resultElement); - resultElement.click(); - }; - - this.clickCopyButton = function(){ - Util.waitUntilElementIsClickable(copyButton); - copyButton.click(); - }; - - this.clickShareButton = function(){ - Util.waitUntilElementIsClickable(shareNodeButton); - shareNodeButton.click(); - }; -}; - -module.exports = ContentServicesPage; diff --git a/e2e/pages/adf/contentServicesPage.ts b/e2e/pages/adf/contentServicesPage.ts new file mode 100644 index 0000000000..faa2073a40 --- /dev/null +++ b/e2e/pages/adf/contentServicesPage.ts @@ -0,0 +1,566 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Util = require('../../util/util'); +import ContentList = require('./dialog/contentList'); +import CreateFolderDialog = require('./dialog/createFolderDialog'); +import TestConfig = require('../../test.config'); +import NavigationBarPage = require('./navigationBarPage'); +import path = require('path'); + +export class ContentServicesPage { + + contentList = new ContentList(); + createFolderDialog = new CreateFolderDialog(); + uploadBorder = element(by.id('document-list-container')); + tableBody = element.all(by.css('adf-document-list div[class="adf-datatable-body"]')).first(); + contentServices = element(by.css('a[data-automation-id="Content Services"]')); + currentFolder = element(by.css('div[class*="adf-breadcrumb-item active"] div')); + createFolderButton = element(by.cssContainingText('mat-icon', 'create_new_folder')); + activeBreadcrumb = element(by.css('div[class*="active"]')); + folderID = element.all(by.css('div[class*="settings"] p')).first(); + tooltip = by.css('div[class*="--text full-width"] span'); + uploadFileButton = 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"]')); + loadMoreButton = element(by.css('button[data-automation-id="adf-infinite-pagination-button"]')); + emptyPagination = element(by.css('adf-pagination[class*="adf-pagination__empty"]')); + dragAndDrop = element.all(by.css('adf-upload-drag-area div')).first(); + nameHeader = element(by.css('div[data-automation-id="auto_id_name"] > span')); + sizeHeader = element(by.css('div[data-automation-id="auto_id_content.sizeInBytes"] > span')); + createdByHeader = element(by.css('div[data-automation-id="auto_id_createdByUser.displayName"] > span')); + createdHeader = element(by.css('div[data-automation-id="auto_id_createdAt"] > span')); + recentFiles = element(by.css('.adf-container-recent')); + recentFilesExpanded = element(by.css('.adf-container-recent mat-expansion-panel-header.mat-expanded')); + recentFilesClosed = element(by.css('.adf-container-recent mat-expansion-panel-header')); + recentFileIcon = element(by.css('.adf-container-recent mat-expansion-panel-header mat-icon')); + documentListSpinner = element(by.css('mat-progress-spinner')); + emptyFolder = element(by.css('.adf-empty-folder-this-space-is-empty')); + emptyFolderImage = element(by.css('.adf-empty-folder-image')); + emptyRecent = element(by.css('.adf-container-recent .empty-list__title')); + gridViewButton = element(by.css('button[data-automation-id="document-list-grid-view"]')); + cardViewContainer = element(by.css('div.document-list-container div.adf-data-table-card')); + copyButton = element(by.css('button[data-automation-id="content-node-selector-actions-choose"]')); + searchInputElement = element(by.css('input[data-automation-id="content-node-selector-search-input"')); + shareNodeButton = element(by.cssContainingText('mat-icon', ' share ')); + + getContentList() { + return this.contentList; + } + + checkRecentFileToBeShowed() { + Util.waitUntilElementIsVisible(this.recentFiles); + } + + expandRecentFiles() { + this.checkRecentFileToBeShowed(); + this.checkRecentFileToBeClosed(); + this.recentFilesClosed.click(); + this.checkRecentFileToBeOpened(); + } + + closeRecentFiles() { + this.checkRecentFileToBeShowed(); + this.checkRecentFileToBeOpened(); + this.recentFilesExpanded.click(); + this.checkRecentFileToBeClosed(); + } + + checkRecentFileToBeClosed() { + Util.waitUntilElementIsVisible(this.recentFilesClosed); + } + + checkRecentFileToBeOpened() { + Util.waitUntilElementIsVisible(this.recentFilesExpanded); + } + + async getRecentFileIcon() { + await Util.waitUntilElementIsVisible(this.recentFileIcon); + return this.recentFileIcon.getText(); + } + + checkAcsContainer() { + Util.waitUntilElementIsVisible(this.uploadBorder); + return this; + } + + waitForTableBody() { + Util.waitUntilElementIsVisible(this.tableBody); + } + + goToDocumentList() { + this.clickOnContentServices(); + this.checkAcsContainer(); + } + + clickOnContentServices() { + Util.waitUntilElementIsVisible(this.contentServices); + Util.waitUntilElementIsClickable(this.contentServices); + this.contentServices.click(); + } + + navigateToDocumentList() { + let navigationBarPage = new NavigationBarPage(); + navigationBarPage.clickContentServicesButton(); + this.checkAcsContainer(); + } + + numberOfResultsDisplayed() { + return this.contentList.getAllDisplayedRows(); + } + + currentFolderName() { + let deferred = protractor.promise.defer(); + Util.waitUntilElementIsVisible(this.currentFolder); + this.currentFolder.getText().then(function (result) { + deferred.fulfill(result); + }); + return deferred.promise; + } + + getTooltip(content) { + return this.contentList.getRowByRowName(content).element(this.tooltip).getAttribute('title'); + } + + getBreadcrumbTooltip(content) { + return element(by.css('nav[data-automation-id="breadcrumb"] div[title="' + content + '"]')).getAttribute('title'); + } + + getAllRowsNameColumn() { + return this.contentList.getAllRowsNameColumn(); + } + + sortByName(sortOrder) { + this.contentList.sortByName(sortOrder); + } + + sortByAuthor(sortOrder) { + this.contentList.sortByAuthor(sortOrder); + } + + sortByCreated(sortOrder) { + return this.contentList.sortByCreated(sortOrder); + } + + sortAndCheckListIsOrderedByName(sortOrder) { + this.sortByName(sortOrder); + let deferred = protractor.promise.defer(); + this.contentList.checkListIsOrderedByNameColumn(sortOrder).then((result) => { + deferred.fulfill(result); + }); + return deferred.promise; + } + + async checkListIsSortedByNameColumn(sortOrder) { + await this.contentList.checkListIsOrderedByNameColumn(sortOrder); + } + + async checkListIsSortedByCreatedColumn(sortOrder) { + await this.contentList.checkListIsOrderedByCreatedColumn(sortOrder); + } + + async checkListIsSortedByAuthorColumn(sortOrder) { + await this.contentList.checkListIsOrderedByAuthorColumn(sortOrder); + } + + async checkListIsSortedBySizeColumn(sortOrder) { + await this.contentList.checkListIsOrderedBySizeColumn(sortOrder); + } + + sortAndCheckListIsOrderedByAuthor(sortOrder) { + this.sortByAuthor(sortOrder); + let deferred = protractor.promise.defer(); + this.contentList.checkListIsOrderedByAuthorColumn(sortOrder).then((result) => { + deferred.fulfill(result); + }); + return deferred.promise; + } + + sortAndCheckListIsOrderedByCreated(sortOrder) { + this.sortByCreated(sortOrder); + let deferred = protractor.promise.defer(); + this.contentList.checkListIsOrderedByCreatedColumn(sortOrder).then((result) => { + deferred.fulfill(result); + }); + return deferred.promise; + } + + navigateToFolder(folder) { + this.contentList.navigateToFolder(folder); + return this; + } + + doubleClickRow(folder) { + this.contentList.doubleClickRow(folder); + return this; + } + + doubleClickEntireRow(folder) { + this.contentList.doubleClickEntireRow(folder); + return this; + } + + clickOnCreateNewFolder() { + Util.waitUntilElementIsVisible(this.createFolderButton); + this.createFolderButton.click(); + return this; + } + + createNewFolder(folder) { + this.clickOnCreateNewFolder(); + this.createFolderDialog.addFolderName(folder); + this.createFolderDialog.clickOnCreateButton(); + return this; + } + + checkContentIsDisplayed(content) { + this.contentList.checkContentIsDisplayed(content); + return this; + } + + checkContentsAreDisplayed(content) { + for (let i = 0; i < content.length; i++) { + this.checkContentIsDisplayed(content[i]); + } + return this; + } + + checkContentIsNotDisplayed(content) { + this.contentList.checkContentIsNotDisplayed(content); + return this; + } + + checkContentsAreNotDisplayed(content) { + for (let i = 0; i < content.length; i++) { + this.checkContentIsNotDisplayed(content[i]); + } + return this; + } + + checkEmptyFolderMessageIsDisplayed() { + this.contentList.checkEmptyFolderMessageIsDisplayed(); + return this; + } + + checkElementIsDisplayed(elementName) { + let dataElement = element(by.css(`div[data-automation-id="${elementName}"]`)); + Util.waitUntilElementIsVisible(dataElement); + } + + navigateToFolderViaBreadcrumbs(folder) { + this.contentList.tableIsLoaded(); + let breadcrumb = element(by.css('a[data-automation-id="breadcrumb_' + folder + '"]')); + Util.waitUntilElementIsVisible(breadcrumb); + breadcrumb.click(); + return this; + } + + getActiveBreadcrumb() { + Util.waitUntilElementIsVisible(this.activeBreadcrumb); + return this.activeBreadcrumb.getAttribute('title'); + } + + getCurrentFolderID() { + Util.waitUntilElementIsVisible(this.folderID); + return this.folderID.getText(); + } + + checkIconColumn(file, extension) { + this.contentList.checkIconColumn(file, extension); + return this; + } + + uploadFile(fileLocation) { + this.checkUploadButton(); + Util.waitUntilElementIsVisible(this.uploadFileButton); + this.uploadFileButton.sendKeys(path.resolve(path.join(TestConfig.main.rootPath, fileLocation))); + this.checkUploadButton(); + return this; + } + + uploadMultipleFile(files) { + Util.waitUntilElementIsVisible(this.uploadMultipleFileButton); + let allFiles = path.resolve(path.join(TestConfig.main.rootPath, files[0])); + for (let i = 1; i < files.length; i++) { + allFiles = allFiles + '\n' + path.resolve(path.join(TestConfig.main.rootPath, files[i])); + } + this.uploadMultipleFileButton.sendKeys(allFiles); + Util.waitUntilElementIsVisible(this.uploadMultipleFileButton); + return this; + } + + uploadFolder(folder) { + Util.waitUntilElementIsVisible(this.uploadFolderButton); + this.uploadFolderButton.sendKeys(path.resolve(path.join(TestConfig.main.rootPath, folder))); + Util.waitUntilElementIsVisible(this.uploadFolderButton); + return this; + } + + getSingleFileButtonTooltip() { + Util.waitUntilElementIsVisible(this.uploadFileButton); + return this.uploadFileButton.getAttribute('title'); + } + + getMultipleFileButtonTooltip() { + Util.waitUntilElementIsVisible(this.uploadMultipleFileButton); + return this.uploadMultipleFileButton.getAttribute('title'); + } + + getFolderButtonTooltip() { + Util.waitUntilElementIsVisible(this.uploadFolderButton); + return this.uploadFolderButton.getAttribute('title'); + } + + checkUploadButton() { + Util.waitUntilElementIsVisible(this.uploadFileButton); + Util.waitUntilElementIsClickable(this.uploadFileButton); + return this; + } + + uploadButtonIsEnabled() { + return this.uploadFileButton.isEnabled(); + } + + deleteContent(content) { + this.contentList.deleteContent(content); + return this; + } + + deleteContents(content) { + for (let i = 0; i < content.length; i++) { + this.deleteContent(content[i]); + this.checkContentIsNotDisplayed(content[i]); + browser.driver.sleep(1000); + } + return this; + } + + getErrorMessage() { + Util.waitUntilElementIsVisible(this.errorSnackBar); + let deferred = protractor.promise.defer(); + this.errorSnackBar.getText().then(function (text) { + deferred.fulfill(text); + }); + return deferred.promise; + } + + checkItemInDocList(fileName) { + Util.waitUntilElementIsVisible(element(by.css('div[data-automation-id="text_' + fileName + '"]'))); + } + + enableInfiniteScrolling() { + let infiniteScrollButton = element(by.cssContainingText('.mat-slide-toggle-content', 'Enable Infinite Scrolling')); + Util.waitUntilElementIsVisible(infiniteScrollButton); + infiniteScrollButton.click(); + return this; + } + + enableCustomPermissionMessage() { + let customPermissionMessage = element(by.cssContainingText('.mat-slide-toggle-content', 'Enable custom permission message')); + Util.waitUntilElementIsVisible(customPermissionMessage); + customPermissionMessage.click(); + return this; + } + + enableMediumTimeFormat() { + let mediumTimeFormat = element(by.css('#enableMediumTimeFormat')); + Util.waitUntilElementIsVisible(mediumTimeFormat); + mediumTimeFormat.click(); + return this; + } + + enableThumbnails() { + let thumbnailSlide = element(by.css('#adf-thumbnails-upload-switch')); + Util.waitUntilElementIsVisible(thumbnailSlide); + thumbnailSlide.click(); + return this; + } + + clickLoadMoreButton() { + Util.waitUntilElementIsVisible(this.loadMoreButton); + Util.waitUntilElementIsClickable(this.loadMoreButton); + this.loadMoreButton.click(); + return this; + } + + checkPaginationIsNotDisplayed() { + Util.waitUntilElementIsVisible(this.emptyPagination); + } + + getDocumentListRowNumber() { + let documentList = element(by.css('adf-upload-drag-area adf-document-list')); + Util.waitUntilElementIsVisible(documentList); + let actualRows = $$('adf-upload-drag-area adf-document-list .adf-datatable-row').count(); + return actualRows; + } + + checkColumnNameHeader() { + Util.waitUntilElementIsVisible(this.nameHeader); + } + + checkColumnSizeHeader() { + Util.waitUntilElementIsVisible(this.sizeHeader); + } + + checkColumnCreatedByHeader() { + Util.waitUntilElementIsVisible(this.createdByHeader); + } + + checkColumnCreatedHeader() { + Util.waitUntilElementIsVisible(this.createdHeader); + } + + checkDandDIsDisplayed() { + Util.waitUntilElementIsVisible(this.dragAndDrop); + } + + checkLockIsDislpayedForElement(name) { + let lockButton = element(by.css(`div.adf-data-table-cell[filename="${name}"] button`)); + Util.waitUntilElementIsVisible(lockButton); + } + + getColumnValueForRow(file, columnName) { + let row = this.contentList.getRowByRowName(file); + Util.waitUntilElementIsVisible(row); + let rowColumn = row.element(by.css('div[title="' + columnName + '"] span')); + Util.waitUntilElementIsVisible(rowColumn); + return rowColumn.getText(); + } + + async getStyleValueForRowText(rowName, styleName) { + let row = element(by.css(`div.adf-data-table-cell[filename="${rowName}"] span.adf-datatable-cell-value[title="${rowName}"]`)); + Util.waitUntilElementIsVisible(row); + return row.getCssValue(styleName); + } + + checkSpinnerIsShowed() { + Util.waitUntilElementIsPresent(this.documentListSpinner); + } + + checkEmptyFolderTextToBe(text) { + Util.waitUntilElementIsVisible(this.emptyFolder); + expect(this.emptyFolder.getText()).toContain(text); + } + + checkEmptyFolderImageUrlToContain(url) { + Util.waitUntilElementIsVisible(this.emptyFolderImage); + expect(this.emptyFolderImage.getAttribute('src')).toContain(url); + } + + checkEmptyRecentFileIsDisplayed() { + Util.waitUntilElementIsVisible(this.emptyRecent); + } + + checkIconForRowIsDisplayed(fileName) { + let iconRow = element(by.css(`.document-list-container div.adf-data-table-cell[filename="${fileName}"] img`)); + Util.waitUntilElementIsVisible(iconRow); + return iconRow; + } + + async getRowIconImageUrl(fileName) { + let iconRow = this.checkIconForRowIsDisplayed(fileName); + return iconRow.getAttribute('src'); + } + + checkGridViewButtonIsVisible() { + Util.waitUntilElementIsVisible(this.gridViewButton); + } + + clickGridViewButton() { + this.checkGridViewButtonIsVisible(); + this.gridViewButton.click(); + } + + checkCardViewContainerIsDisplayed() { + Util.waitUntilElementIsVisible(this.cardViewContainer); + } + + getCardElementShowedInPage() { + this.checkCardViewContainerIsDisplayed(); + let actualCards = $$('div.document-list-container div.adf-data-table-card div.cell-value img').count(); + return actualCards; + } + + getDocumentCardIconForElement(elementName) { + let elementIcon = element(by.css(`.document-list-container div.adf-data-table-cell[filename="${elementName}"] img`)); + return elementIcon.getAttribute('src'); + } + + checkDocumentCardPropertyIsShowed(elementName, propertyName) { + let elementProperty = element(by.css(`.document-list-container div.adf-data-table-cell[filename="${elementName}"][title="${propertyName}"]`)); + Util.waitUntilElementIsVisible(elementProperty); + } + + getAttributeValueForElement(elementName, propertyName) { + let elementSize = element(by.css(`.document-list-container div.adf-data-table-cell[filename="${elementName}"][title="${propertyName}"] span`)); + return elementSize.getText(); + } + + checkMenuIsShowedForElementIndex(elementIndex) { + let elementMenu = element(by.css(`button[data-automation-id="action_menu_${elementIndex}"]`)); + Util.waitUntilElementIsVisible(elementMenu); + } + + navigateToCardFolder(folderName) { + let folderCard = element(by.css(`.document-list-container div.image-table-cell.adf-data-table-cell[filename="${folderName}"]`)); + folderCard.click(); + let folderSelected = element(by.css(`.adf-datatable-row.is-selected div[filename="${folderName}"].adf-data-table-cell--image`)); + Util.waitUntilElementIsVisible(folderSelected); + browser.actions().sendKeys(protractor.Key.ENTER).perform(); + } + + getGridViewSortingDropdown() { + let sortingDropdown = element(by.css('mat-select[data-automation-id="grid-view-sorting"]')); + Util.waitUntilElementIsVisible(sortingDropdown); + return sortingDropdown; + } + + selectGridSortingFromDropdown(sortingChosen) { + let dropdownSorting = this.getGridViewSortingDropdown(); + dropdownSorting.click(); + let optionToClick = element(by.css(`mat-option[data-automation-id="grid-view-sorting-${sortingChosen}"]`)); + Util.waitUntilElementIsPresent(optionToClick); + optionToClick.click(); + } + + checkRowIsDisplayed(rowName) { + let row = this.contentList.getRowByRowName(rowName); + Util.waitUntilElementIsVisible(row); + } + + typeIntoNodeSelectorSearchField(text) { + Util.waitUntilElementIsVisible(this.searchInputElement); + this.searchInputElement.sendKeys(text); + } + + clickContentNodeSelectorResult(name) { + let resultElement = element.all(by.css(`div[data-automation-id="content-node-selector-content-list"] div[filename="${name}"`)).first(); + Util.waitUntilElementIsVisible(resultElement); + resultElement.click(); + } + + clickCopyButton() { + Util.waitUntilElementIsClickable(this.copyButton); + this.copyButton.click(); + } + + clickShareButton() { + Util.waitUntilElementIsClickable(this.shareNodeButton); + this.shareNodeButton.click(); + } +} diff --git a/e2e/pages/adf/dialog/contentList.js b/e2e/pages/adf/dialog/contentList.js index 3ced83ceb6..98eb6fab0d 100644 --- a/e2e/pages/adf/dialog/contentList.js +++ b/e2e/pages/adf/dialog/contentList.js @@ -18,6 +18,7 @@ var Util = require('../../../util/util'); var ContentList = function () { + var deleteContent = element(by.css("button[data-automation-id*='DELETE']")); var metadataAction = element(by.css("button[data-automation-id*='METADATA']")); var versionManagerAction = element(by.css("button[data-automation-id*='VERSIONS']")); @@ -334,7 +335,6 @@ var ContentList = function () { this.checkIconColumn = function (file, extension) { var row = this.getRowByRowName(file); - Util.waitUntilElementIsVisible(row); Util.waitUntilElementIsVisible(row.element(by.css("div[class*='--image'] img[alt*='" + extension + "']"))); }; diff --git a/e2e/pages/adf/dialog/searchDialog.js b/e2e/pages/adf/dialog/searchDialog.js index 2a63f83f3c..abc94d8d10 100644 --- a/e2e/pages/adf/dialog/searchDialog.js +++ b/e2e/pages/adf/dialog/searchDialog.js @@ -27,7 +27,6 @@ var SearchDialog = function () { var completeName = by.css("h4[class*='adf-search-fixed-text']"); var highlightName = by.css("div[id*='results-content'] span[class='highlight']"); var searchDialog = element(by.css("mat-list[id*='autocomplete-search-result-list']")); - var allRows = element.all(by.css("h4[class*='adf-search-fixed-text']")); this.pressDownArrowAndEnter = function () { element(by.css("adf-search-control div input")).sendKeys(protractor.Key.ARROW_DOWN); diff --git a/e2e/pages/adf/dialog/userInfoDialog.js b/e2e/pages/adf/dialog/userInfoDialog.js deleted file mode 100644 index 271ce27989..0000000000 --- a/e2e/pages/adf/dialog/userInfoDialog.js +++ /dev/null @@ -1,154 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var Util = require('../../../util/util'); - -var UserInfoDialog = function () { - - var dialog = element(by.css("mat-card[class*='adf-userinfo-card']")); - var contentServicesTab = element(by.css("div[id*='mat-tab-label-0-0']")); - var processServicesTab = element(by.css("div[id*='mat-tab-label-0-1']")); - var userImage = element(by.css("div[id='user-initial-image']")); - var userInfoEcmHeaderTitle = element(by.css("div[id='ecm-username']")); - var userInfoEcmTitle = element(by.css("mat-card-content span[id='ecm-full-name']")); - var ecmEmail = element(by.css("span[id='ecm-email']")); - var ecmJobTitle = element(by.css("span[id='ecm-job-title']")); - var userInfoProcessHeaderTitle = element(by.css("div[id='bpm-username']")); - var userInfoProcessTitle = element(by.css("mat-card-content span[id='bpm-full-name']")); - var processEmail = element(by.css("span[id='bpm-email']")); - var processTenant = element(by.css("span[class='detail-profile']")); - var apsImage = element(by.css("img[id='bpm-user-detail-image']")); - var acsImage = element(by.css("img[id='ecm-user-detail-image']")); - var initialImage = element.all(by.css("div[id='user-initials-image']")).first(); - - this.dialogIsDisplayed = function () { - Util.waitUntilElementIsVisible(dialog); - return this; - }; - - this.dialogIsNotDisplayed = function () { - Util.waitUntilElementIsNotOnPage(dialog); - return this; - }; - - this.contentServicesTabIsDisplayed = function () { - Util.waitUntilElementIsVisible(contentServicesTab); - return this; - }; - - this.contentServicesTabIsNotDisplayed = function () { - Util.waitUntilElementIsNotOnPage(contentServicesTab); - return this; - }; - - this.clickOnContentServicesTab = function () { - this.contentServicesTabIsDisplayed(); - contentServicesTab.click(); - return this; - }; - - this.processServicesTabIsDisplayed = function () { - Util.waitUntilElementIsVisible(processServicesTab); - return this; - }; - - this.processServicesTabIsNotDisplayed = function () { - Util.waitUntilElementIsNotOnPage(processServicesTab); - return this; - }; - - this.clickOnProcessServicesTab = function () { - this.processServicesTabIsDisplayed(); - processServicesTab.click(); - return this; - }; - - this.userImageIsDisplayed = function () { - Util.waitUntilElementIsVisible(userImage); - return this; - }; - - this.getContentHeaderTitle = function () { - Util.waitUntilElementIsVisible(userInfoEcmHeaderTitle); - return userInfoEcmHeaderTitle.getText(); - }; - - this.getContentTitle = function () { - Util.waitUntilElementIsVisible(userInfoEcmTitle); - return userInfoEcmTitle.getText(); - }; - - this.getContentEmail = function () { - Util.waitUntilElementIsVisible(ecmEmail); - return ecmEmail.getText(); - }; - - this.getContentJobTitle = function () { - Util.waitUntilElementIsVisible(ecmJobTitle); - return ecmJobTitle.getText(); - }; - - this.getProcessHeaderTitle = function () { - Util.waitUntilElementIsVisible(userInfoProcessHeaderTitle); - return userInfoProcessHeaderTitle.getText(); - }; - - this.getProcessTitle = function () { - Util.waitUntilElementIsVisible(userInfoProcessTitle); - return userInfoProcessTitle.getText(); - }; - - this.getProcessEmail = function () { - Util.waitUntilElementIsVisible(processEmail); - return processEmail.getText(); - }; - - this.getProcessTenant = function () { - Util.waitUntilElementIsVisible(processTenant); - return processTenant.getText(); - }; - - this.closeUserProfile = function () { - Util.waitUntilElementIsVisible(dialog); - browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - }; - - this.checkACSProfileImage = function () { - Util.waitUntilElementIsVisible(acsImage); - }; - - this.checkAPSProfileImage = function () { - Util.waitUntilElementIsVisible(apsImage); - }; - - this.checkInitialImage = function () { - Util.waitUntilElementIsVisible(initialImage); - }; - - this.initialImageNotDisplayed = function () { - Util.waitUntilElementIsNotOnPage(initialImage); - }; - - this.ACSProfileImageNotDisplayed = function () { - Util.waitUntilElementIsNotOnPage(acsImage); - }; - - this.APSProfileImageNotDisplayed = function () { - Util.waitUntilElementIsNotOnPage(apsImage); - }; -}; -module.exports = UserInfoDialog; diff --git a/e2e/pages/adf/dialog/userInfoDialog.ts b/e2e/pages/adf/dialog/userInfoDialog.ts new file mode 100644 index 0000000000..558e010e2e --- /dev/null +++ b/e2e/pages/adf/dialog/userInfoDialog.ts @@ -0,0 +1,132 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Util = require('../../../util/util'); +import { TabsPage } from '../material/tabsPage'; + +export class UserInfoDialog { + + dialog = element(by.css('mat-card[class*="adf-userinfo-card"]')); + 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(); + + dialogIsDisplayed() { + Util.waitUntilElementIsVisible(this.dialog); + return this; + } + + dialogIsNotDisplayed() { + Util.waitUntilElementIsNotOnPage(this.dialog); + return this; + } + + clickOnContentServicesTab() { + let tabsPage = new TabsPage; + tabsPage.clickTabByTitle('Content Services'); + return this; + } + + clickOnProcessServicesTab() { + let tabsPage = new TabsPage; + tabsPage.clickTabByTitle('Process Services'); + return this; + } + + userImageIsDisplayed() { + Util.waitUntilElementIsVisible(this.userImage); + return this; + } + + getContentHeaderTitle() { + Util.waitUntilElementIsVisible(this.userInfoEcmHeaderTitle); + return this.userInfoEcmHeaderTitle.getText(); + } + + getContentTitle() { + Util.waitUntilElementIsVisible(this.userInfoEcmTitle); + return this.userInfoEcmTitle.getText(); + } + + getContentEmail() { + Util.waitUntilElementIsVisible(this.ecmEmail); + return this.ecmEmail.getText(); + } + + getContentJobTitle() { + Util.waitUntilElementIsVisible(this.ecmJobTitle); + return this.ecmJobTitle.getText(); + } + + getProcessHeaderTitle() { + Util.waitUntilElementIsVisible(this.userInfoProcessHeaderTitle); + return this.userInfoProcessHeaderTitle.getText(); + } + + getProcessTitle() { + Util.waitUntilElementIsVisible(this.userInfoProcessTitle); + return this.userInfoProcessTitle.getText(); + } + + getProcessEmail() { + Util.waitUntilElementIsVisible(this.processEmail); + return this.processEmail.getText(); + } + + getProcessTenant() { + Util.waitUntilElementIsVisible(this.processTenant); + return this.processTenant.getText(); + } + + closeUserProfile() { + Util.waitUntilElementIsVisible(this.dialog); + browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + } + + checkACSProfileImage() { + Util.waitUntilElementIsVisible(this.acsImage); + } + + checkAPSProfileImage() { + Util.waitUntilElementIsVisible(this.apsImage); + } + + checkInitialImage() { + Util.waitUntilElementIsVisible(this.initialImage); + } + + initialImageNotDisplayed() { + Util.waitUntilElementIsNotOnPage(this.initialImage); + } + + ACSProfileImageNotDisplayed() { + Util.waitUntilElementIsNotOnPage(this.acsImage); + } + + APSProfileImageNotDisplayed() { + Util.waitUntilElementIsNotOnPage(this.apsImage); + } +} diff --git a/e2e/pages/adf/loginPage.js b/e2e/pages/adf/loginPage.js deleted file mode 100644 index be4d41ebc4..0000000000 --- a/e2e/pages/adf/loginPage.js +++ /dev/null @@ -1,559 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var Util = require('../../util/util'); -var TestConfig = require('../../test.config'); -var AdfSettingsPage = require('./settingsPage'); - -var LoginPage = function () { - - var loginURL = TestConfig.adf.url + TestConfig.adf.port + "/login"; - var txtUsername = element(by.css("input[id='username']")); - var txtPassword = element(by.css("input[id='password']")); - var logoImg = element(by.css("img[id='adf-login-img-logo']")); - var successRouteTxt = element(by.css("input[data-automation-id='adf-success-route']")); - var logoTxt = element(by.css("input[data-automation-id='adf-url-logo']")); - var usernameTooltip = element(by.css("span[data-automation-id='username-error']")); - var passwordTooltip = element(by.css("span[data-automation-id='password-required']")); - var loginTooltip = element(by.css("span[class='login-error-message']")); - var usernameInactive = element(by.css("input[id='username'][aria-invalid='false']")); - var passwordInactive = element(by.css("input[id='password'][aria-invalid='false']")); - var adfLogo = element(by.css("img[class='adf-img-logo ng-star-inserted']")); - var usernameHighlighted = element(by.css("input[id='username'][aria-invalid='true']")); - var passwordHighlighted = element(by.css("input[id='password'][aria-invalid='true']")); - var signInButton = element(by.id('login-button')); - var showPassword = element(by.css("mat-icon[data-automation-id='show_password']")); - var hidePassword = element(by.css("mat-icon[data-automation-id='hide_password']")); - var rememberMe = element(by.css("mat-checkbox[id='adf-login-remember']")); - var needHelp = element(by.css("div[id='adf-login-action-left']")); - var register = element(by.css("div[id='adf-login-action-right']")); - var footerSwitch = element(by.id("switch4")); - var rememberMeSwitch = element(by.id("adf-toogle-show-rememberme")); - var successRouteSwitch = element(by.id("adf-toogle-show-successRoute")); - var logoSwitch = element(by.id("adf-toogle-logo")); - var userPicture = element(by.id("userinfo_container")); - var header = element(by.id("adf-header")); - var cardBackground = element(by.css("mat-card[class*='adf-login-card']")); - var adfSettingsPage = new AdfSettingsPage(); - var loginForm = element(by.css("form[id='adf-login-form'")); - - this.checkLoginFormIsDisplayed = function () { - Util.waitUntilElementIsVisible(loginForm); - }; - - /** - * Provides the longer wait required - * @property waitForElements - * @type protractor.Element - * */ - this.waitForElements = function () { - var deferred = protractor.promise.defer(); - - Util.waitUntilElementIsVisible(txtUsername).then(() => { - Util.waitUntilElementIsVisible(txtPassword).then(() => { - deferred.fulfill(); - }, () => { - deferred.rejected(); - }) - }); - - return deferred.promise; - - }; - - /** - * Fills the username input - * @method enterUsername - * @param {String} username - */ - this.enterUsername = function (username) { - Util.waitUntilElementIsVisible(txtUsername); - txtUsername.sendKeys(''); - return txtUsername.clear().sendKeys(username); - }; - - /** - * Fills the password input - * @method enterPassword - * @param {String} password - */ - this.enterPassword = function (password) { - Util.waitUntilElementIsVisible(txtPassword); - return txtPassword.clear().sendKeys(password); - }; - - /** - * clears username input - * @method clearUsername - * @param {String} username - */ - this.clearUsername = function () { - Util.waitUntilElementIsVisible(txtUsername); - return txtUsername.click().clear(); - }; - - /** - * clears password input - * @method clearPassword - * @param {String} password - */ - this.clearPassword = function () { - Util.waitUntilElementIsVisible(txtPassword); - txtPassword.getAttribute('value').then(function (value) { - for (var i = value.length; i >= 0; i--) { - txtPassword.sendKeys(protractor.Key.BACK_SPACE); - } - }); - }; - - /** - * checks username tooltips - * @method checkUsernameTooltip - * @param {String} message - */ - this.checkUsernameTooltip = function () { - Util.waitUntilElementIsVisible(usernameTooltip); - }; - - /** - * checks password tooltips - * @method checkPasswordTooltip - * @param {String} message - */ - this.checkPasswordTooltip = function () { - Util.waitUntilElementIsVisible(passwordTooltip); - }; - - /** - * checks login error tooltips - * @method checkLoginError - * @param {String} message - */ - this.checkLoginError = function (message) { - Util.waitUntilElementIsVisible(loginTooltip); - expect(loginTooltip.getText()).toEqual(message); - }; - - /** - * checks login error tooltips - * @method checkLoginError - * @param {String} message - */ - this.checkLoginImgURL = function (url) { - Util.waitUntilElementIsVisible(logoImg); - expect(logoImg.getAttribute('src')).toEqual(url); - }; - - /** - * checks username field is inactive - * @method checkUsernameInactive - */ - this.checkUsernameInactive = function () { - Util.waitUntilElementIsVisible(usernameInactive); - }; - - /** - * checks password field is inactive - * @method checkPasswordInactive - */ - this.checkPasswordInactive = function () { - Util.waitUntilElementIsVisible(passwordInactive); - }; - - /** - * checks username field is highlighted - * @method checkUsernameHighlighted - */ - this.checkUsernameHighlighted = function () { - adfLogo.click(); - Util.waitUntilElementIsVisible(usernameHighlighted); - }; - - /** - * checks password field is highlighted - * @method checkPasswordHighlighted - */ - this.checkPasswordHighlighted = function () { - adfLogo.click(); - Util.waitUntilElementIsVisible(passwordHighlighted); - }; - - /** - * check Username tooltip is not visible - * @method checkUsernameTooltipIsNotVisible - */ - this.checkUsernameTooltipIsNotVisible = function () { - Util.waitUntilElementIsNotVisible(usernameTooltip); - }; - - /** - * checks password tooltip is not visible - * @method checkPasswordTooltipIsNotVisible - */ - this.checkPasswordTooltipIsNotVisible = function () { - Util.waitUntilElementIsNotVisible(passwordTooltip); - }; - - /** - * checks sign in button is enabled - * @method checkSignInButtonIsEnabled - */ - this.checkSignInButtonIsEnabled = function () { - Util.waitUntilElementIsVisible(signInButton); - expect(signInButton.isEnabled()).toBe(true); - }; - - /** - * Logs into adf using default host config - * @method defaultLogin - */ - this.defaultLogin = function () { - browser.driver.get(TestConfig.adf.url + TestConfig.adf.login); - this.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); - }; - - /** - * Logs into adf using userModel - * @method loginUsingUserModel - */ - this.loginUsingUserModel = function (userModel) { - browser.driver.get(TestConfig.adf.url + TestConfig.adf.login); - this.waitForElements(); - this.login(userModel.getId(), userModel.getPassword()); - }; - - /** - * Logs into ADF using userModel - only Process Services enabled - * @method loginUsingUserModel - */ - this.loginToProcessServicesUsingUserModel = function (userModel) { - adfSettingsPage.setProviderBpm(); - this.waitForElements(); - this.login(userModel.email, userModel.password); - }; - - - this.loginToProcessServicesUsingDefaultUser = function () { - adfSettingsPage.setProviderBpm(); - this.waitForElements(); - this.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); - }; - - this.loginToContentServicesUsingUserModel = function (userModel) { - adfSettingsPage.setProviderEcm(); - this.waitForElements(); - - this.login(userModel.getId(), userModel.getPassword()); - }; - - this.loginToContentServices = function (username, password) { - adfSettingsPage.setProviderEcm(); - this.waitForElements(); - - this.login(username, password); - }; - - /**
 - * Go to adf login page
 - * @method goToLoginPage
 - */ - this.goToLoginPage = function () { - browser.driver.get(TestConfig.adf.url + TestConfig.adf.port + '/login'); - this.waitForElements(); - }; - - /** - * checks sign in button is disabled - * @method checkSignInButtonIsDisabled - */ - this.checkSignInButtonIsDisabled = function () { - Util.waitUntilElementIsVisible(signInButton); - expect(signInButton.isEnabled()).toBe(false); - }; - - /** - * clicks the sign in button - * @method clickSignInButton - */ - this.clickSignInButton = function () { - Util.waitUntilElementIsVisible(signInButton); - signInButton.click(); - }; - - /** - * clicks the remember me checkbox - */ - this.clickRememberMe = function () { - Util.waitUntilElementIsVisible(rememberMe); - rememberMe.click(); - }; - - /** - * clicks icon to show password - * @method showPassword - */ - this.showPassword = function () { - Util.waitUntilElementIsVisible(showPassword); - showPassword.click(); - }; - - this.getShowPasswordIconColor = function () { - var deferred = protractor.promise.defer(); - - Util.waitUntilElementIsVisible(showPassword); - showPassword.getCssValue('color').then(function (value) { - deferred.fulfill(value); - }); - - return deferred.promise; - }; - - this.getSignInButtonColor = function () { - var deferred = protractor.promise.defer(); - - Util.waitUntilElementIsVisible(signInButton); - signInButton.getCssValue("color").then(function (value) { - deferred.fulfill(value); - }); - - return deferred.promise; - }; - - this.getBackgroundColor = function () { - var deferred = protractor.promise.defer(); - - Util.waitUntilElementIsVisible(cardBackground); - cardBackground.getCssValue("color").then(function (value) { - deferred.fulfill(value); - }); - - return deferred.promise; - }; - - /** - * clicks icon to hide password - * @method hidePassword - */ - this.hidePassword = function () { - Util.waitUntilElementIsVisible(hidePassword); - hidePassword.click(); - }; - - /** - * checks if password is shown - * @method checkPasswordIsShown - * @param password - */ - this.checkPasswordIsShown = function (password) { - txtPassword.getAttribute('value').then(function (text) { - expect(text).toEqual(password); - }); - }; - - /** - * checks if password is hidden - * @method checkPasswordIsHidden - */ - this.checkPasswordIsHidden = function () { - Util.waitUntilElementIsVisible(txtPassword); - }; - - /** - * checks 'Remember me' is displayed - * @method checkRememberIsDisplayed - */ - this.checkRememberIsDisplayed = function () { - Util.waitUntilElementIsVisible(rememberMe); - }; - - /** - * checks 'Remember me' is not displayed - * @method checkRememberIsNotDisplayed - */ - this.checkRememberIsNotDisplayed = function () { - Util.waitUntilElementIsNotVisible(rememberMe); - }; - - /** - * checks 'Need help' is Displayed - * @method checkNeedHelpIsDisplayed - */ - this.checkNeedHelpIsDisplayed = function () { - Util.waitUntilElementIsVisible(needHelp); - }; - - /** - * checks 'Need Help' is not displayed - * @method checkNeedHelpIsNotDisplayed - */ - this.checkNeedHelpIsNotDisplayed = function () { - Util.waitUntilElementIsNotVisible(needHelp); - }; - - /** - * checks 'Register' is displayed - * @method checkRegisterDisplayed - */ - this.checkRegisterDisplayed = function () { - Util.waitUntilElementIsVisible(register); - }; - - /** - * checks 'Register' is not displayed - * @method checkRegisterIsNotDisplayed - */ - this.checkRegisterIsNotDisplayed = function () { - Util.waitUntilElementIsNotVisible(register); - }; - - /** - * enables footer switch - * @method enableFooter - */ - this.enableFooter = function () { - Util.waitUntilElementIsVisible(footerSwitch); - footerSwitch.getAttribute('class').then(function (check) { - if (check === 'mat-slide-toggle mat-primary') { - footerSwitch.click(); - expect(footerSwitch.getAttribute('class')).toEqual('mat-slide-toggle mat-primary mat-checked'); - } - }) - }; - - /** - * disables footer switch - * @method disableFooter - */ - this.disableFooter = function () { - Util.waitUntilElementIsVisible(footerSwitch); - footerSwitch.getAttribute('class').then(function (check) { - if (check === 'mat-slide-toggle mat-primary mat-checked') { - footerSwitch.click(); - expect(footerSwitch.getAttribute('class')).toEqual('mat-slide-toggle mat-primary'); - } - }) - }; - - /** - * disables RememberMe - */ - this.disableRememberMe = function () { - Util.waitUntilElementIsVisible(rememberMeSwitch); - rememberMeSwitch.getAttribute('class').then(function (check) { - if (check === 'mat-slide-toggle mat-primary mat-checked') { - rememberMeSwitch.click(); - expect(rememberMeSwitch.getAttribute('class')).toEqual('mat-slide-toggle mat-primary'); - } - }) - }; - - /** - * enables footer switch - * @method enableFooter - */ - this.enableRememberMe = function () { - Util.waitUntilElementIsVisible(rememberMeSwitch); - rememberMeSwitch.getAttribute('class').then(function (check) { - if (check === 'mat-slide-toggle mat-primary') { - rememberMeSwitch.click(); - expect(rememberMeSwitch.getAttribute('class')).toEqual('mat-slide-toggle mat-primary mat-checked'); - } - }) - }; - - /** - * disables successRouteSwitch - */ - this.disableSuccessRouteSwitch = function () { - Util.waitUntilElementIsVisible(successRouteSwitch); - successRouteSwitch.getAttribute('class').then(function (check) { - if (check === 'mat-slide-toggle mat-primary mat-checked') { - successRouteSwitch.click(); - expect(successRouteSwitch.getAttribute('class')).toEqual('mat-slide-toggle mat-primary'); - } - }) - }; - - /** - * enables successRouteSwitch - * @method enableFooter - */ - this.enableSuccessRouteSwitch = function () { - Util.waitUntilElementIsVisible(rememberMeSwitch); - successRouteSwitch.getAttribute('class').then(function (check) { - if (check === 'mat-slide-toggle mat-primary') { - successRouteSwitch.click(); - expect(successRouteSwitch.getAttribute('class')).toEqual('mat-slide-toggle mat-primary mat-checked'); - } - }) - }; - - /** - * disables successRouteSwitch - */ - this.disableLogowitch = function () { - Util.waitUntilElementIsVisible(logoSwitch); - logoSwitch.getAttribute('class').then(function (check) { - if (check === 'mat-slide-toggle mat-primary mat-checked') { - logoSwitch.click(); - expect(logoSwitch.getAttribute('class')).toEqual('mat-slide-toggle mat-primary'); - } - }) - }; - - /** - * enables successRouteSwitch - * @method enableFooter - */ - this.enableLogoSwitch = function () { - Util.waitUntilElementIsVisible(rememberMeSwitch); - logoSwitch.getAttribute('class').then(function (check) { - if (check === 'mat-slide-toggle mat-primary') { - logoSwitch.click(); - expect(logoSwitch.getAttribute('class')).toEqual('mat-slide-toggle mat-primary mat-checked'); - } - }) - }; - - this.enterSuccessRoute = function (route) { - Util.waitUntilElementIsVisible(successRouteTxt); - successRouteTxt.sendKeys(''); - return successRouteTxt.clear().sendKeys(route); - }; - - this.enterLogo = function (logo) { - Util.waitUntilElementIsVisible(logoTxt); - logoTxt.sendKeys(''); - return logoTxt.clear().sendKeys(logo); - }; - - /** - * logs in with a valid user - * @method login - * @param {String, String} username, password - */ - this.login = function (username, password) { - this.waitForElements(); - this.enterUsername(username); - this.enterPassword(password); - this.clickSignInButton(); - return Util.waitUntilElementIsVisible(header); - }; - -}; - -module.exports = LoginPage; diff --git a/e2e/pages/adf/loginPage.ts b/e2e/pages/adf/loginPage.ts new file mode 100644 index 0000000000..723d81b833 --- /dev/null +++ b/e2e/pages/adf/loginPage.ts @@ -0,0 +1,333 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { FormControllersPage } from './material/formControllersPage'; + +import Util = require('../../util/util'); +import TestConfig = require('../../test.config'); +import { SettingsPage } from './settingsPage'; + +export class LoginPage { + + formControllersPage = new FormControllersPage(); + 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="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('mat-icon[data-automation-id="show_password"]')); + hidePasswordElement = element(by.css('mat-icon[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-toogle-show-rememberme')); + successRouteSwitch = element(by.id('adf-toogle-show-successRoute')); + logoSwitch = element(by.id('adf-toogle-logo')); + header = element(by.id('adf-header')); + cardBackground = element(by.css('mat-card[class*="adf-login-card"]')); + settingsPage = new SettingsPage(); + loginForm = element(by.css('form[id="adf-login-form"')); + + checkLoginFormIsDisplayed() { + Util.waitUntilElementIsVisible(this.loginForm); + } + + waitForElements() { + let deferred = protractor.promise.defer(); + + Util.waitUntilElementIsVisible(this.txtUsername).then(() => { + Util.waitUntilElementIsVisible(this.txtPassword).then(() => { + deferred.fulfill(); + }, () => { + deferred.rejected(); + }); + }); + + return deferred.promise; + + } + + enterUsername(username) { + Util.waitUntilElementIsVisible(this.txtUsername); + this.txtUsername.sendKeys(''); + return this.txtUsername.clear().sendKeys(username); + } + + enterPassword(password) { + Util.waitUntilElementIsVisible(this.txtPassword); + return this.txtPassword.clear().sendKeys(password); + } + + clearUsername() { + Util.waitUntilElementIsVisible(this.txtUsername); + return this.txtUsername.click().clear(); + } + + clearPassword() { + Util.waitUntilElementIsVisible(this.txtPassword); + this.txtPassword.getAttribute('value').then((value) => { + for (let i = value.length; i >= 0; i--) { + this.txtPassword.sendKeys(protractor.Key.BACK_SPACE); + } + }); + } + + checkUsernameTooltip() { + Util.waitUntilElementIsVisible(this.usernameTooltip); + } + + checkPasswordTooltip() { + Util.waitUntilElementIsVisible(this.passwordTooltip); + } + + checkLoginError(message) { + Util.waitUntilElementIsVisible(this.loginTooltip); + expect(this.loginTooltip.getText()).toEqual(message); + } + + checkLoginImgURL(url) { + Util.waitUntilElementIsVisible(this.logoImg); + expect(this.logoImg.getAttribute('src')).toEqual(url); + } + + checkUsernameInactive() { + Util.waitUntilElementIsVisible(this.usernameInactive); + } + + checkPasswordInactive() { + Util.waitUntilElementIsVisible(this.passwordInactive); + } + + checkUsernameHighlighted() { + this.adfLogo.click(); + Util.waitUntilElementIsVisible(this.usernameHighlighted); + } + + checkPasswordHighlighted() { + this.adfLogo.click(); + Util.waitUntilElementIsVisible(this.passwordHighlighted); + } + + checkUsernameTooltipIsNotVisible() { + Util.waitUntilElementIsNotVisible(this.usernameTooltip); + } + + checkPasswordTooltipIsNotVisible() { + Util.waitUntilElementIsNotVisible(this.passwordTooltip); + } + + checkSignInButtonIsEnabled() { + Util.waitUntilElementIsVisible(this.signInButton); + expect(this.signInButton.isEnabled()).toBe(true); + } + + defaultLogin() { + browser.driver.get(TestConfig.adf.url + TestConfig.adf.login); + this.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + } + + loginUsingUserModel(userModel) { + browser.driver.get(TestConfig.adf.url + TestConfig.adf.login); + this.waitForElements(); + this.login(userModel.getId(), userModel.getPassword()); + } + + loginToProcessServicesUsingUserModel(userModel) { + this.settingsPage.setProviderBpm(); + this.waitForElements(); + this.login(userModel.email, userModel.password); + } + + loginToProcessServicesUsingDefaultUser() { + this.settingsPage.setProviderBpm(); + this.waitForElements(); + this.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + } + + loginToContentServicesUsingUserModel(userModel) { + this.settingsPage.setProviderEcm(); + this.waitForElements(); + + this.login(userModel.getId(), userModel.getPassword()); + } + + loginToContentServices(username, password) { + this.settingsPage.setProviderEcm(); + this.waitForElements(); + + this.login(username, password); + } + + goToLoginPage() { + browser.driver.get(TestConfig.adf.url + TestConfig.adf.port + '/login'); + this.waitForElements(); + } + + checkSignInButtonIsDisabled() { + Util.waitUntilElementIsVisible(this.signInButton); + expect(this.signInButton.isEnabled()).toBe(false); + } + + clickSignInButton() { + Util.waitUntilElementIsVisible(this.signInButton); + this.signInButton.click(); + } + + clickRememberMe() { + Util.waitUntilElementIsVisible(this.rememberMe); + this.rememberMe.click(); + } + + showPassword() { + Util.waitUntilElementIsVisible(this.showPasswordElement); + this.showPasswordElement.click(); + } + + getShowPasswordIconColor() { + let deferred = protractor.promise.defer(); + + Util.waitUntilElementIsVisible(this.showPasswordElement); + this.showPasswordElement.getCssValue('color').then((value) => { + deferred.fulfill(value); + }); + + return deferred.promise; + } + + getSignInButtonColor() { + let deferred = protractor.promise.defer(); + + Util.waitUntilElementIsVisible(this.signInButton); + this.signInButton.getCssValue('color').then((value) => { + deferred.fulfill(value); + }); + + return deferred.promise; + } + + getBackgroundColor() { + let deferred = protractor.promise.defer(); + + Util.waitUntilElementIsVisible(this.cardBackground); + this.cardBackground.getCssValue('color').then((value) => { + deferred.fulfill(value); + }); + + return deferred.promise; + } + + hidePassword() { + Util.waitUntilElementIsVisible(this.hidePasswordElement); + this.hidePasswordElement.click(); + } + + checkPasswordIsShown(password) { + this.txtPassword.getAttribute('value').then((text) => { + expect(text).toEqual(password); + }); + } + + checkPasswordIsHidden() { + Util.waitUntilElementIsVisible(this.txtPassword); + } + + checkRememberIsDisplayed() { + Util.waitUntilElementIsVisible(this.rememberMe); + } + + checkRememberIsNotDisplayed() { + Util.waitUntilElementIsNotVisible(this.rememberMe); + } + + checkNeedHelpIsDisplayed() { + Util.waitUntilElementIsVisible(this.needHelp); + } + + checkNeedHelpIsNotDisplayed() { + Util.waitUntilElementIsNotVisible(this.needHelp); + } + + checkRegisterDisplayed() { + Util.waitUntilElementIsVisible(this.register); + } + + checkRegisterIsNotDisplayed() { + Util.waitUntilElementIsNotVisible(this.register); + } + + enableFooter() { + this.formControllersPage.enableToggle(this.footerSwitch); + } + + disableFooter() { + this.formControllersPage.disableToggle(this.footerSwitch); + } + + disableRememberMe() { + this.formControllersPage.disableToggle(this.rememberMeSwitch); + } + + enableRememberMe() { + this.formControllersPage.enableToggle(this.rememberMeSwitch); + } + + disableSuccessRouteSwitch() { + this.formControllersPage.disableToggle(this.successRouteSwitch); + } + + enableSuccessRouteSwitch() { + this.formControllersPage.enableToggle(this.successRouteSwitch); + } + + disableLogowitch() { + this.formControllersPage.disableToggle(this.logoSwitch); + } + + enableLogoSwitch() { + this.formControllersPage.enableToggle(this.logoSwitch); + } + + enterSuccessRoute(route) { + Util.waitUntilElementIsVisible(this.successRouteTxt); + this.successRouteTxt.sendKeys(''); + return this.successRouteTxt.clear().sendKeys(route); + } + + enterLogo(logo) { + Util.waitUntilElementIsVisible(this.logoTxt); + this.logoTxt.sendKeys(''); + return this.logoTxt.clear().sendKeys(logo); + } + + login(username, password) { + this.waitForElements(); + this.enterUsername(username); + this.enterPassword(password); + this.clickSignInButton(); + return Util.waitUntilElementIsVisible(this.header); + } +} diff --git a/e2e/pages/adf/material/formControllersPage.ts b/e2e/pages/adf/material/formControllersPage.ts index 82c519aa22..dc7e249de5 100644 --- a/e2e/pages/adf/material/formControllersPage.ts +++ b/e2e/pages/adf/material/formControllersPage.ts @@ -15,10 +15,10 @@ * limitations under the License. */ -import { element, by } from 'protractor'; import Util = require('../../../util/util'); export class FormControllersPage { + enableToggle(toggle) { Util.waitUntilElementIsVisible(toggle); toggle.getAttribute('class').then((check) => { diff --git a/e2e/pages/adf/navigationBarPage.js b/e2e/pages/adf/navigationBarPage.js index 7bfa46ca7c..1b756ea88e 100644 --- a/e2e/pages/adf/navigationBarPage.js +++ b/e2e/pages/adf/navigationBarPage.js @@ -35,37 +35,21 @@ var NavigationBarPage = function () { var headerDataButton = element(by.css("a[data-automation-id='Header Data']")); var menuButton = element(by.css('button[data-automation-id="adf-menu-icon"]')); - /** - * Click Content Services Button - * @method clickContentServicesButton - */ this.clickContentServicesButton = function () { Util.waitUntilElementIsVisible(contentServicesButton); contentServicesButton.click(); }; - /** - * Click on Config Editor Button - * @method clickContentServicesButton - */ this.clickConfigEditorButton = function () { Util.waitUntilElementIsVisible(configEditoButton); configEditoButton.click(); }; - /** - * Click Process Services Button - * @method clickProcessServicesButton - */ this.clickProcessServicesButton = function () { Util.waitUntilElementIsVisible(processServicesButton); processServicesButton.click(); }; - /** - * Click Login Button - * @method clickLoginButton - */ this.clickLoginButton = function () { Util.waitUntilElementIsVisible(loginButton); loginButton.click(); @@ -162,11 +146,6 @@ var NavigationBarPage = function () { appTitle.click(); }; - this.checkLogoTooltip = function (logoTooltip) { - var logoTooltip = element(by.css('a[title="'+ logoTooltip +'"]')); - Util.waitUntilElementIsVisible(logoTooltip); - } - this.openViewer = function (nodeId) { browser.get(TestConfig.adf.url + `/files(overlay:files/${nodeId}/view`); return this; diff --git a/e2e/pages/adf/notificationPage.js b/e2e/pages/adf/notificationPage.js deleted file mode 100644 index 6ad351251d..0000000000 --- a/e2e/pages/adf/notificationPage.js +++ /dev/null @@ -1,135 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var Util = require('../../util/util'); - -var NotificationPage = function () { - - var messageField = element(by.css("input[data-automation-id='notification-message']")); - var horizontalPosition = element(by.css("mat-select[data-automation-id='notification-horizontal-position']")); - var verticalPosition = element(by.css("mat-select[data-automation-id='notification-vertical-position']")); - var durationField = element(by.css("input[data-automation-id='notification-duration']")); - var direction = element(by.css("mat-select[data-automation-id='notification-direction']")); - var actionToggle = element(by.css("mat-slide-toggle[data-automation-id='notification-action-toggle']")); - var notificationSnackBar = element.all(by.css("simple-snack-bar")).first(); - var actionOutput = element(by.css("div[data-automation-id='notification-action-output']")); - var actionButton = element(by.css("simple-snack-bar > div > button")); - var defaultNotificationButton = element(by.css("button[data-automation-id='notification-default-button']")); - var customNotificationButton = element(by.css("button[data-automation-id='notification-custom-config-button']")); - var selectionDropDown = element.all(by.css("div[class*='mat-select-content']")).first(); - var notificationsPage = element(by.css("a[data-automation-id='Notifications']")); - var notificationConfig = element(by.css("p[data-automation-id='notification-custom-object']")); - - this.checkNotifyContains = function (message) { - Util.waitUntilElementIsVisible(element(by.cssContainingText('simple-snack-bar', message))); - return this; - }; - - this.goToNotificationsPage = function () { - Util.waitUntilElementIsVisible(notificationsPage); - notificationsPage.click(); - }; - - this.getConfigObject = function () { - Util.waitUntilElementIsVisible(notificationConfig); - return notificationConfig.getText(); - }; - - this.getSnackBarText = function () { - return notificationSnackBar.getText(); - }; - - this.checkNotificationSnackBarIsDisplayed = function () { - Util.waitUntilElementIsVisible(notificationSnackBar); - return this; - }; - - this.checkNotificationSnackBarIsDisplayedWithMessage = function (message) { - let notificationSnackBarMessage = element(by.cssContainingText("simple-snack-bar", message)); - Util.waitUntilElementIsVisible(notificationSnackBarMessage); - return this; - }; - - this.checkNotificationSnackBarIsNotDisplayed = function () { - Util.waitUntilElementIsNotVisible(notificationSnackBar); - return this; - }; - - this.enterMessageField = function (text) { - Util.waitUntilElementIsVisible(messageField); - messageField.clear().sendKeys(text); - }; - - this.enterDurationField = function (time) { - Util.waitUntilElementIsVisible(durationField); - durationField.clear().sendKeys(time); - }; - - this.selectHorizontalPosition = function (selectedItem) { - var selectItem = element(by.cssContainingText("span[class='mat-option-text']", selectedItem)); - horizontalPosition.click(); - Util.waitUntilElementIsVisible(selectionDropDown); - selectItem.click(); - }; - - this.selectVerticalPosition = function (selectedItem) { - var selectItem = element(by.cssContainingText("span[class='mat-option-text']", selectedItem)); - verticalPosition.click(); - Util.waitUntilElementIsVisible(selectionDropDown); - selectItem.click(); - }; - - this.selectDirection = function (selectedItem) { - var selectItem = element(by.cssContainingText("span[class='mat-option-text']", selectedItem)); - direction.click(); - Util.waitUntilElementIsVisible(selectionDropDown); - selectItem.click(); - }; - - this.clickDefaultNotificationButton = function () { - Util.waitUntilElementIsVisible(defaultNotificationButton); - defaultNotificationButton.click(); - }; - - this.clickCustomNotificationButton = function () { - Util.waitUntilElementIsVisible(customNotificationButton); - customNotificationButton.click(); - }; - - this.checkActionEvent = function () { - Util.waitUntilElementIsVisible(actionOutput); - return this; - }; - - this.clickActionToggle = function () { - Util.waitUntilElementIsVisible(actionToggle); - actionToggle.click(); - }; - - this.clickActionButton = function () { - actionButton.click(); - }; - - this.clearMessage = function () { - Util.waitUntilElementIsVisible(messageField); - messageField.clear(); - messageField.sendKeys('a'); - messageField.sendKeys(protractor.Key.BACK_SPACE); - } -}; - -module.exports = NotificationPage; diff --git a/e2e/pages/adf/notificationPage.ts b/e2e/pages/adf/notificationPage.ts new file mode 100644 index 0000000000..f65d722928 --- /dev/null +++ b/e2e/pages/adf/notificationPage.ts @@ -0,0 +1,123 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Util = require('../../util/util'); + +export class NotificationPage { + + messageField = element(by.css('input[data-automation-id="notification-message"]')); + horizontalPosition = element(by.css('mat-select[data-automation-id="notification-horizontal-position"]')); + verticalPosition = element(by.css('mat-select[data-automation-id="notification-vertical-position"]')); + durationField = element(by.css('input[data-automation-id="notification-duration"]')); + direction = element(by.css('mat-select[data-automation-id="notification-direction"]')); + 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"]')); + actionButton = element(by.css('simple-snack-bar > div > button')); + customNotificationButton = element(by.css('button[data-automation-id="notification-custom-config-button"]')); + selectionDropDown = element.all(by.css('div[class*="mat-select-content"]')).first(); + notificationsPage = element(by.css('a[data-automation-id="Notifications"]')); + notificationConfig = element(by.css('p[data-automation-id="notification-custom-object"]')); + + checkNotifyContains(message) { + Util.waitUntilElementIsVisible(element(by.cssContainingText('simple-snack-bar', message))); + return this; + } + + goToNotificationsPage() { + Util.waitUntilElementIsVisible(this.notificationsPage); + this.notificationsPage.click(); + } + + getConfigObject() { + Util.waitUntilElementIsVisible(this.notificationConfig); + return this.notificationConfig.getText(); + } + + checkNotificationSnackBarIsDisplayed() { + Util.waitUntilElementIsVisible(this.notificationSnackBar); + return this; + } + + checkNotificationSnackBarIsDisplayedWithMessage(message) { + let notificationSnackBarMessage = element(by.cssContainingText('simple-snack-bar', message)); + Util.waitUntilElementIsVisible(notificationSnackBarMessage); + return this; + } + + checkNotificationSnackBarIsNotDisplayed() { + Util.waitUntilElementIsNotVisible(this.notificationSnackBar); + return this; + } + + enterMessageField(text) { + Util.waitUntilElementIsVisible(this.messageField); + this.messageField.clear().sendKeys(text); + } + + enterDurationField(time) { + Util.waitUntilElementIsVisible(this.durationField); + this.durationField.clear().sendKeys(time); + } + + selectHorizontalPosition(selectedItem) { + let selectItem = element(by.cssContainingText('span[class="mat-option-text"]', selectedItem)); + this.horizontalPosition.click(); + Util.waitUntilElementIsVisible(this.selectionDropDown); + selectItem.click(); + } + + selectVerticalPosition(selectedItem) { + let selectItem = element(by.cssContainingText('span[class="mat-option-text"]', selectedItem)); + this.verticalPosition.click(); + Util.waitUntilElementIsVisible(this.selectionDropDown); + selectItem.click(); + } + + selectDirection(selectedItem) { + let selectItem = element(by.cssContainingText('span[class="mat-option-text"]', selectedItem)); + this.direction.click(); + Util.waitUntilElementIsVisible(this.selectionDropDown); + selectItem.click(); + } + + clickNotificationButton() { + Util.waitUntilElementIsVisible(this.customNotificationButton); + this.customNotificationButton.click(); + } + + checkActionEvent() { + Util.waitUntilElementIsVisible(this.actionOutput); + return this; + } + + clickActionToggle() { + Util.waitUntilElementIsVisible(this.actionToggle); + this.actionToggle.click(); + } + + clickActionButton() { + this.actionButton.click(); + } + + clearMessage() { + Util.waitUntilElementIsVisible(this.messageField); + this.messageField.clear(); + this.messageField.sendKeys('a'); + this.messageField.sendKeys(protractor.Key.BACK_SPACE); + } +} diff --git a/e2e/pages/adf/process_services/appNavigationBarPage.js b/e2e/pages/adf/process_services/appNavigationBarPage.js deleted file mode 100644 index d4c5dc1b4a..0000000000 --- a/e2e/pages/adf/process_services/appNavigationBarPage.js +++ /dev/null @@ -1,53 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var Util = require('../../../util/util'); - -var AppNavigationBarPage = function () { - - var tasksButton = element.all(by.cssContainingText("div[class*='mat-tab-label'] .mat-tab-labels div", "Tasks")).first(); - var tagButton = element.all(by.css("[data-automation-id='Tag']")); - var processButton = element.all(by.cssContainingText("div[class*='mat-tab-label'] .mat-tab-labels div", "Process")).first(); - var reportsButton = element.all(by.cssContainingText("div[class*='mat-tab-label'] .mat-tab-labels div", "Reports")).first(); - var settingsButton = element.all(by.cssContainingText("div[class*='mat-tab-label'] .mat-tab-labels div", "Settings")).first(); - var reportsButtonSelected = element.all(by.cssContainingText("div[class*='mat-tab-label'] .mat-tab-labels div[aria-selected='true']", "Reports")).first(); - - this.clickTasksButton = function () { - Util.waitUntilElementIsVisible(tasksButton); - return tasksButton.click(); - }; - - this.clickProcessButton = function () { - return processButton.click(); - }; - - this.clickTagButton = function () { - return tagButton.click(); - }; - - this.clickSettingsButton = function () { - return settingsButton.click(); - }; - - this.clickReportsButton = function () { - Util.waitUntilElementIsVisible(reportsButton); - reportsButton.click(); - return Util.waitUntilElementIsVisible(reportsButtonSelected); - }; -}; - -module.exports = AppNavigationBarPage; diff --git a/e2e/pages/adf/process_services/appNavigationBarPage.ts b/e2e/pages/adf/process_services/appNavigationBarPage.ts new file mode 100644 index 0000000000..5748ad1894 --- /dev/null +++ b/e2e/pages/adf/process_services/appNavigationBarPage.ts @@ -0,0 +1,51 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Util = require('../../../util/util'); + +export class AppNavigationBarPage { + + tasksButton = element.all(by.cssContainingText('div[class*="mat-tab-label"] .mat-tab-labels div', 'Tasks')).first(); + tagButton = element.all(by.css('[data-automation-id="Tag"]')); + 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(); + + clickTasksButton() { + Util.waitUntilElementIsVisible(this.tasksButton); + return this.tasksButton.click(); + } + + clickProcessButton() { + return this.processButton.click(); + } + + clickTagButton() { + return this.tagButton.click(); + } + + clickSettingsButton() { + return this.settingsButton.click(); + } + + clickReportsButton() { + Util.waitUntilElementIsVisible(this.reportsButton); + this.reportsButton.click(); + return Util.waitUntilElementIsVisible(this.reportsButtonSelected); + } +} diff --git a/e2e/pages/adf/process_services/attachmentListPage.ts b/e2e/pages/adf/process_services/attachmentListPage.ts index 8203e69193..24066abed4 100644 --- a/e2e/pages/adf/process_services/attachmentListPage.ts +++ b/e2e/pages/adf/process_services/attachmentListPage.ts @@ -26,7 +26,6 @@ export class AttachmentListPage { attachFileButton = element(by.css("input[type='file']")); buttonMenu = element(by.css("button[data-automation-id='action_menu_0']")); - menuPanel = element(by.css("div[class*='mat-menu-panel'] div[class*='mat-menu-content']")); 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']")); diff --git a/e2e/pages/adf/process_services/processServicesPage.js b/e2e/pages/adf/process_services/processServicesPage.js deleted file mode 100644 index aa4207db5f..0000000000 --- a/e2e/pages/adf/process_services/processServicesPage.js +++ /dev/null @@ -1,108 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var Util = require('../../../util/util'); -var AppNavigationBarPage = require('./appNavigationBarPage'); - -var ProcessServicesPage = function(){ - - var apsAppsContainer = element(by.css("div[class='adf-app-listgrid ng-star-inserted']")); - var processServices = element(by.css("a[data-automation-id='Process Services']")); - var taskApp = element(by.css("mat-card[title='Task App']")); - var iconTypeLocator = by.css("mat-icon[class*='card-logo-icon']"); - var descriptionLocator = by.css("mat-card-subtitle[class*='subtitle']"); - var processInstanceList = element(by.css("adf-process-instance-list")); - - /** - * Check Process Page Container is displayed - * @method checkApsContainer - */ - this.checkApsContainer = function(){ - Util.waitUntilElementIsVisible(apsAppsContainer); - }; - - /** - * Go to Process Services Page - * @method goToProcessServices - * */ - this.goToProcessServices = function() { - Util.waitUntilElementIsVisible(processServices); - processServices.click(); - this.checkApsContainer(); - return this; - }; - - /** - * Go to App - * @method goToApp - * */ - this.goToApp = function(applicationName) { - var app = element(by.css("mat-card[title='" + applicationName +"']")); - Util.waitUntilElementIsVisible(app); - app.click(); - return new AppNavigationBarPage(); - }; - - /** - * Go to Task App - * @method goToTaskApp - * */ - this.goToTaskApp = function() { - Util.waitUntilElementIsVisible(taskApp); - taskApp.click(); - return new AppNavigationBarPage(); - }; - - this.getAppIconType = function (applicationName) { - var app = element(by.css("mat-card[title='" + applicationName +"']")); - Util.waitUntilElementIsVisible(app); - var iconType = app.element(iconTypeLocator); - Util.waitUntilElementIsVisible(iconType); - return iconType.getText(); - }; - - this.getBackgroundColor = function(applicationName) { - var app = element(by.css("mat-card[title='" + applicationName +"']")); - Util.waitUntilElementIsVisible(app); - return app.getCssValue("background-color"); - }; - - this.getDescription = function(applicationName) { - var app = element(by.css("mat-card[title='" + applicationName +"']")); - Util.waitUntilElementIsVisible(app); - var description = app.element(descriptionLocator); - Util.waitUntilElementIsVisible(description); - return description.getText(); - }; - - this.checkAppIsNotDisplayed = function(applicationName) { - var app = element(by.css("mat-card[title='" + applicationName +"']")); - return Util.waitUntilElementIsNotOnPage(app); - }; - - this.checkAppIsDisplayed = function(applicationName) { - var app = element(by.css("mat-card[title='" + applicationName +"']")); - return Util.waitUntilElementIsVisible(app); - }; - - this.checkProcessListIsDisplayed = function() { - Util.waitUntilElementIsVisible(processInstanceList); - } - -}; - -module.exports = ProcessServicesPage; diff --git a/e2e/pages/adf/process_services/processServicesPage.ts b/e2e/pages/adf/process_services/processServicesPage.ts new file mode 100644 index 0000000000..5a2fce843a --- /dev/null +++ b/e2e/pages/adf/process_services/processServicesPage.ts @@ -0,0 +1,90 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Util = require('../../../util/util'); +import { AppNavigationBarPage } from './appNavigationBarPage'; + +export class ProcessServicesPage { + + apsAppsContainer = element(by.css('div[class="adf-app-listgrid ng-star-inserted"]')); + processServices = element(by.css('a[data-automation-id="Process Services"]')); + 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"]'); + processInstanceList = element(by.css('adf-process-instance-list')); + + checkApsContainer() { + Util.waitUntilElementIsVisible(this.apsAppsContainer); + } + + goToProcessServices() { + Util.waitUntilElementIsVisible(this.processServices); + this.processServices.click(); + this.checkApsContainer(); + return this; + } + + goToApp(applicationName) { + let app = element(by.css('mat-card[title="' + applicationName + '"]')); + Util.waitUntilElementIsVisible(app); + app.click(); + return new AppNavigationBarPage(); + } + + goToTaskApp() { + Util.waitUntilElementIsVisible(this.taskApp); + this.taskApp.click(); + return new AppNavigationBarPage(); + } + + getAppIconType(applicationName) { + let app = element(by.css('mat-card[title="' + applicationName + '"]')); + Util.waitUntilElementIsVisible(app); + let iconType = app.element(this.iconTypeLocator); + Util.waitUntilElementIsVisible(iconType); + return iconType.getText(); + } + + getBackgroundColor(applicationName) { + let app = element(by.css('mat-card[title="' + applicationName + '"]')); + Util.waitUntilElementIsVisible(app); + return app.getCssValue('background-color'); + } + + getDescription(applicationName) { + let app = element(by.css('mat-card[title="' + applicationName + '"]')); + Util.waitUntilElementIsVisible(app); + let description = app.element(this.descriptionLocator); + Util.waitUntilElementIsVisible(description); + return description.getText(); + } + + checkAppIsNotDisplayed(applicationName) { + let app = element(by.css('mat-card[title="' + applicationName + '"]')); + return Util.waitUntilElementIsNotOnPage(app); + } + + checkAppIsDisplayed(applicationName) { + let app = element(by.css('mat-card[title="' + applicationName + '"]')); + return Util.waitUntilElementIsVisible(app); + } + + checkProcessListIsDisplayed() { + Util.waitUntilElementIsVisible(this.processInstanceList); + } + +} diff --git a/e2e/pages/adf/process_services/taskDetailsPage.ts b/e2e/pages/adf/process_services/taskDetailsPage.ts index c59718bd11..8b24b4c05e 100644 --- a/e2e/pages/adf/process_services/taskDetailsPage.ts +++ b/e2e/pages/adf/process_services/taskDetailsPage.ts @@ -16,11 +16,11 @@ */ import { AppSettingsToggles } from './dialog/appSettingsToggles'; +import { TabsPage } from '../material/tabsPage'; import Util = require('../../../util/util'); export class TaskDetailsPage { - appSettingsToggles = new AppSettingsToggles(); formNameField = element(by.css('span[data-automation-id*="formName"] span')); assigneeField = element(by.css('span[data-automation-id*="assignee"] span')); statusField = element(by.css('span[data-automation-id*="status"] span')); @@ -33,14 +33,11 @@ export class TaskDetailsPage { 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"]')); - activityTab = element(by.cssContainingText('div[class*="mat-tab-label"]', 'Activity')); - detailsTab = element(by.cssContainingText('div[class*="mat-tab-label""]', 'Details')); 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="people-email ng-star-inserted"]'); editActionInvolvedUser = by.xpath('following-sibling::div[@class="people-edit-label ng-star-inserted"]'); - involvedUserPic = by.xpath('ancestor::div/ancestor::div/preceding-sibling::div//div[@class="adf-people-search-people-pic ng-star-inserted"]'); tadkDetailsInfoDrawer = element(by.tagName('adf-info-drawer')); taskDetailsSection = element(by.css('div[data-automation-id="adf-tasks-details"]')); taskDetailsEmptySection = element(by.css('div[data-automation-id="adf-tasks-details--empty"]')); @@ -187,24 +184,14 @@ export class TaskDetailsPage { } selectActivityTab() { - Util.waitUntilElementIsVisible(this.activityTab); - activityTab.getAttribute('aria-selected').then((check) => { - if (check === 'false') { - this.activityTab.click(); - expect(this.activityTab.getAttribute('aria-selected') === 'true'); - } - }); + let tabsPage = new TabsPage; + tabsPage.clickTabByTitle('Activity'); return this; } selectDetailsTab() { - Util.waitUntilElementIsVisible(this.detailsTab); - detailsTab.getAttribute('aria-selected').then((check) => { - if (check === 'false') { - this.detailsTab.click(); - expect(this.detailsTab.getAttribute('aria-selected') === 'true'); - } - }); + let tabsPage = new TabsPage; + tabsPage.clickTabByTitle('Details'); return this; } @@ -275,13 +262,13 @@ export class TaskDetailsPage { } getInvolvedUserEmail(user) { - let email = this.getRowsUser(user).element(emailInvolvedUser); + let email = this.getRowsUser(user).element(this.emailInvolvedUser); Util.waitUntilElementIsVisible(email); return email.getText(); } getInvolvedUserEditAction(user) { - let edit = this.getRowsUser(user).element(editActionInvolvedUser); + let edit = this.getRowsUser(user).element(this.editActionInvolvedUser); Util.waitUntilElementIsVisible(edit); return edit.getText(); } @@ -292,7 +279,7 @@ export class TaskDetailsPage { } appSettingsToggles() { - return this.appSettingsToggles; + return new AppSettingsToggles(); } taskInfoDrawerIsDisplayed() { @@ -346,12 +333,6 @@ export class TaskDetailsPage { return this.peopleTitle.getText(); } - getInvolvedPeopleInitialImage(user) { - let pic = this.getRowsUser(user).element(this.involvedUserPic); - Util.waitUntilElementIsVisible(pic); - return pic.getText(); - } - checkTaskDetails() { Util.waitUntilElementIsVisible(this.taskDetailsSection); return this.taskDetailsSection.getText(); diff --git a/e2e/pages/adf/process_services/tasksPage.js b/e2e/pages/adf/process_services/tasksPage.js deleted file mode 100644 index 1426fdf260..0000000000 --- a/e2e/pages/adf/process_services/tasksPage.js +++ /dev/null @@ -1,174 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var Util = require('../../../util/util'); -var StartTaskDialog = require('./dialog/startTaskDialog'); -var FormFields = require('./formFields'); -var TaskDetails = require('./taskDetailsPage'); -var FiltersPage = require('./filtersPage'); -var ChecklistDialog = require('./dialog/createChecklistDialog'); -var TasksListPage = require('./tasksListPage'); - -var TasksPage = function () { - - var createButton = element(by.css("button[data-automation-id='create-button'")); - var newTaskButton = element(by.css("button[data-automation-id='btn-start-task']")); - var addChecklistButton = element(by.css("button[class*='adf-add-to-checklist-button']")); - var rowByRowName = by.xpath("ancestor::mat-chip"); - var checklistContainer = by.css("div[class*='checklist-menu']"); - var taskTitle = "h2[class='activiti-task-details__header'] span"; - var rows = by.css("div[class*='adf-datatable-body'] div[class*='adf-datatable-row'] div[class*='adf-data-table-cell']"); - var completeButtonNoForm = element(by.id("adf-no-form-complete-button")); - var checklistDialog = element(by.id("checklist-dialog")); - var checklistNoMessage = element(by.id("checklist-none-message")); - var numberOfChecklists = element(by.css("[data-automation-id='checklist-label'] mat-chip")); - - this.createNewTask = function () { - this.createButtonIsDisplayed(); - this.clickOnCreateButton(); - this.newTaskButtonIsDisplayed(); - newTaskButton.click(); - return new StartTaskDialog(); - }; - - this.clickOnNewTaskButton = function() { - Util.waitUntilElementIsClickable(newTaskButton); - newTaskButton.click(); - return this; - }; - - this.createButtonIsDisplayed = function() { - Util.waitUntilElementIsVisible(createButton); - return this; - }; - - this.newTaskButtonIsDisplayed = function() { - Util.waitUntilElementIsVisible(newTaskButton); - return this; - }; - - this.clickOnCreateButton = function() { - Util.waitUntilElementIsClickable(createButton); - createButton.click(); - return this; - }; - - this.formFields = function () { - return new FormFields(); - }; - - this.taskDetails = function () { - return new TaskDetails(); - }; - - this.filtersPage = function () { - return new FiltersPage(); - }; - - this.tasksListPage = function () { - return new TasksListPage(); - }; - - this.usingCheckListDialog = function () { - return new ChecklistDialog(); - }; - - this.clickOnAddChecklistButton = function () { - Util.waitUntilElementIsClickable(addChecklistButton); - addChecklistButton.click(); - return new ChecklistDialog(); - }; - - this.getRowsName = function (name) { - var row = element(checklistContainer).element(by.cssContainingText("span", name)); - Util.waitUntilElementIsVisible(row); - return row; - }; - - this.getChecklistByName = function (checklist) { - var row = this.getRowsName(checklist).element(rowByRowName); - Util.waitUntilElementIsVisible(row); - return row; - }; - - this.checkChecklistIsDisplayed = function (checklist) { - Util.waitUntilElementIsVisible(this.getChecklistByName(checklist)); - return this; - }; - - this.checkChecklistIsNotDisplayed = function (checklist) { - Util.waitUntilElementIsNotOnPage(element(checklistContainer).element(by.cssContainingText("span", checklist))); - return this; - }; - - this.checkTaskTitle = function(taskName) { - Util.waitUntilElementIsVisible(element(by.css(taskTitle))); - var title = element(by.cssContainingText(taskTitle, taskName)); - Util.waitUntilElementIsVisible(title); - return this; - }; - - this.getAllDisplayedRows = function(){ - return element.all(rows).count(); - }; - - this.completeTaskNoForm = function () { - Util.waitUntilElementIsClickable(completeButtonNoForm); - completeButtonNoForm.click(); - }; - - this.completeTaskNoFormNotDisplayed = function () { - Util.waitUntilElementIsNotOnPage(completeButtonNoForm); - return this; - }; - - this.checkChecklistDialogIsDisplayed = function () { - Util.waitUntilElementIsVisible(checklistDialog); - return this; - }; - - this.checkChecklistDialogIsNotDisplayed = function () { - Util.waitUntilElementIsNotOnPage(checklistDialog); - return this; - }; - - this.checkNoChecklistIsDisplayed = function () { - Util.waitUntilElementIsVisible(checklistNoMessage); - return this; - }; - - this.getNumberOfChecklists = function () { - Util.waitUntilElementIsVisible(numberOfChecklists); - return numberOfChecklists.getText(); - }; - - this.removeChecklists = function (checklist) { - var row = this.getRowsName(checklist).element(rowByRowName); - Util.waitUntilElementIsVisible(row.element(by.css('button'))); - row.element(by.css('button')).click(); - return this; - }; - - this.checkChecklistsRemoveButtonIsNotDisplayed = function (checklist) { - var row = this.getRowsName(checklist).element(rowByRowName); - Util.waitUntilElementIsNotOnPage(row.element(by.css('button'))); - return this; - }; - -}; - -module.exports = TasksPage; diff --git a/e2e/pages/adf/process_services/tasksPage.ts b/e2e/pages/adf/process_services/tasksPage.ts new file mode 100644 index 0000000000..f6a2f8a6ce --- /dev/null +++ b/e2e/pages/adf/process_services/tasksPage.ts @@ -0,0 +1,167 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Util = require('../../../util/util'); +import StartTaskDialog = require('./dialog/startTaskDialog'); +import FormFields = require('./formFields'); +import { TaskDetailsPage } from './taskDetailsPage'; + +import FiltersPage = require('./filtersPage'); +import ChecklistDialog = require('./dialog/createChecklistDialog'); +import TasksListPage = require('./tasksListPage'); + +export class TasksPage { + + 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="activiti-task-details__header"] span'; + rows = by.css('div[class*="adf-datatable-body"] div[class*="adf-datatable-row"] div[class*="adf-data-table-cell"]'); + 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')); + + createNewTask() { + this.createButtonIsDisplayed(); + this.clickOnCreateButton(); + this.newTaskButtonIsDisplayed(); + this.newTaskButton.click(); + return new StartTaskDialog(); + } + + createButtonIsDisplayed() { + Util.waitUntilElementIsVisible(this.createButton); + return this; + } + + newTaskButtonIsDisplayed() { + Util.waitUntilElementIsVisible(this.newTaskButton); + return this; + } + + clickOnCreateButton() { + Util.waitUntilElementIsClickable(this.createButton); + this.createButton.click(); + return this; + } + + formFields() { + return new FormFields(); + } + + taskDetails() { + return new TaskDetailsPage(); + } + + filtersPage() { + return new FiltersPage(); + } + + tasksListPage() { + return new TasksListPage(); + } + + usingCheckListDialog() { + return new ChecklistDialog(); + } + + clickOnAddChecklistButton() { + Util.waitUntilElementIsClickable(this.addChecklistButton); + this.addChecklistButton.click(); + return new ChecklistDialog(); + } + + getRowsName(name) { + let row = element(this.checklistContainer).element(by.cssContainingText('span', name)); + Util.waitUntilElementIsVisible(row); + return row; + } + + getChecklistByName(checklist) { + let row = this.getRowsName(checklist).element(this.rowByRowName); + Util.waitUntilElementIsVisible(row); + return row; + } + + checkChecklistIsDisplayed(checklist) { + Util.waitUntilElementIsVisible(this.getChecklistByName(checklist)); + return this; + } + + checkChecklistIsNotDisplayed(checklist) { + Util.waitUntilElementIsNotOnPage(element(this.checklistContainer).element(by.cssContainingText('span', checklist))); + return this; + } + + checkTaskTitle(taskName) { + Util.waitUntilElementIsVisible(element(by.css(this.taskTitle))); + let title = element(by.cssContainingText(this.taskTitle, taskName)); + Util.waitUntilElementIsVisible(title); + return this; + } + + getAllDisplayedRows() { + return element.all(this.rows).count(); + } + + completeTaskNoForm() { + Util.waitUntilElementIsClickable(this.completeButtonNoForm); + this.completeButtonNoForm.click(); + } + + completeTaskNoFormNotDisplayed() { + Util.waitUntilElementIsNotOnPage(this.completeButtonNoForm); + return this; + } + + checkChecklistDialogIsDisplayed() { + Util.waitUntilElementIsVisible(this.checklistDialog); + return this; + } + + checkChecklistDialogIsNotDisplayed() { + Util.waitUntilElementIsNotOnPage(this.checklistDialog); + return this; + } + + checkNoChecklistIsDisplayed() { + Util.waitUntilElementIsVisible(this.checklistNoMessage); + return this; + } + + getNumberOfChecklists() { + Util.waitUntilElementIsVisible(this.numberOfChecklists); + return this.numberOfChecklists.getText(); + } + + removeChecklists(checklist) { + let row = this.getRowsName(checklist).element(this.rowByRowName); + Util.waitUntilElementIsVisible(row.element(by.css('mat-icon'))); + row.element(by.css('mat-icon')).click(); + return this; + } + + checkChecklistsRemoveButtonIsNotDisplayed(checklist) { + let row = this.getRowsName(checklist).element(this.rowByRowName); + Util.waitUntilElementIsNotOnPage(row.element(by.css('mat-icon'))); + return this; + } + +} diff --git a/e2e/pages/adf/process_services/widgets/AttachFile.js b/e2e/pages/adf/process_services/widgets/AttachFile.js deleted file mode 100644 index de2ad866b7..0000000000 --- a/e2e/pages/adf/process_services/widgets/AttachFile.js +++ /dev/null @@ -1,59 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var FormFields = require('../formFields'); -var TestConfig = require('../../../../test.config'); -var path = require('path'); -var Util = require('../../../../util/util'); -var remote = require('selenium-webdriver/remote'); - -var AttachFile = function () { - - var formFields = new FormFields(); - var uploadLocator = by.css("button[id='attachfile']"); - var localStorageButton = element(by.css("input[id='attachfile']")); - var filesListLocator = by.css("div[id='adf-attach-widget-readonly-list']"); - - this.attachFile = function (fieldId, fileLocation) { - browser.setFileDetector(new remote.FileDetector()); - var widget = formFields.getWidget(fieldId); - var uploadButton = widget.element(uploadLocator); - Util.waitUntilElementIsVisible(uploadButton); - uploadButton.click(); - - Util.waitUntilElementIsVisible(localStorageButton); - localStorageButton.sendKeys(path.resolve(path.join(TestConfig.main.rootPath, fileLocation))); - return this; - }; - - this.checkFileIsAttached = function (fieldId, name) { - var widget = formFields.getWidget(fieldId); - var fileAttached = widget.element(filesListLocator).element(by.cssContainingText("mat-list-item span ", name)); - Util.waitUntilElementIsVisible(fileAttached); - return this; - }; - - this.viewFile = function (name) { - var fileView = element(filesListLocator).element(by.cssContainingText("mat-list-item span ", name)); - Util.waitUntilElementIsVisible(fileView); - fileView.click(); - browser.actions().doubleClick(fileView).perform(); - return this; - }; -}; - -module.exports = AttachFile; diff --git a/e2e/pages/adf/process_services/widgets/DisplayText.js b/e2e/pages/adf/process_services/widgets/DisplayText.js deleted file mode 100644 index 19694f4fa0..0000000000 --- a/e2e/pages/adf/process_services/widgets/DisplayText.js +++ /dev/null @@ -1,33 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var FormFields = require('../formFields'); - -var DisplayText = function () { - - var formFields = new FormFields(); - - var labelLocator = by.css("div[class*='display-text-widget']"); - - this.getFieldLabel = function (fieldId) { - return formFields.getFieldLabel(fieldId, labelLocator); - }; - -}; - -module.exports = DisplayText; - diff --git a/e2e/pages/adf/process_services/widgets/Dropdown.js b/e2e/pages/adf/process_services/widgets/Dropdown.js deleted file mode 100644 index 7c3b9c0d08..0000000000 --- a/e2e/pages/adf/process_services/widgets/Dropdown.js +++ /dev/null @@ -1,32 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var FormFields = require('../formFields'); - -var Dropdown = function () { - - var formFields = new FormFields(); - - var selectedOptionLocator = by.css("mat-select[id='dropdown'] span span"); - - this.getSelectedOptionText = function (fieldId) { - return formFields.getFieldText(fieldId, selectedOptionLocator); - }; - -}; - -module.exports = Dropdown; diff --git a/e2e/pages/adf/process_services/widgets/DynamicTable.js b/e2e/pages/adf/process_services/widgets/DynamicTable.js deleted file mode 100644 index 51f618ba59..0000000000 --- a/e2e/pages/adf/process_services/widgets/DynamicTable.js +++ /dev/null @@ -1,103 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var FormFields = require('../formFields'); -var Util = require('../../../../util/util'); - - -var DynamicTable = function () { - - var formFields = new FormFields(); - - var labelLocator = by.css("dynamic-table-widget div div"); - var columnNameLocator = by.css("table[id*='dynamic-table'] th"); - var addButton = element(by.id("label-add-row")); - var columnDateTime = element(by.id("columnDateTime")); - var columnDate = element(by.id("columnDate")); - var calendarHeader = element(by.css("div[class='mat-datetimepicker-calendar-header-date-time']")); - var calendarContent = element(by.css("div[class='mat-datetimepicker-calendar-content']")); - var saveButton = element(by.cssContainingText('button span', 'Save')); - var errorMessage = element(by.css('div[class="adf-error-text"]')); - var dateWidget = element(by.css('button[aria-label="Open calendar"]')); - var calendarNumber = element.all(by.css('td div')); - var tableRow = element.all(by.css('tbody tr')); - - this.getFieldLabel = function (fieldId) { - return formFields.getFieldLabel(fieldId, labelLocator); - }; - - this.getColumnName = function (fieldId) { - return formFields.getFieldText(fieldId, columnNameLocator); - }; - - this.clickAddButton = function () { - Util.waitUntilElementIsVisible(addButton); - return addButton.click(); - }; - - this.clickColumnDateTime = function () { - Util.waitUntilElementIsVisible(columnDateTime); - columnDateTime.click(); - Util.waitUntilElementIsVisible(calendarHeader); - Util.waitUntilElementIsVisible(calendarContent); - browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - }; - - this.addRandomStringOnDateTime = function (randomText) { - Util.waitUntilElementIsVisible(columnDateTime); - columnDateTime.click(); - browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - columnDateTime.sendKeys(randomText); - columnDateTime.sendKeys(protractor.Key.ENTER); - return columnDateTime.getAttribute('value'); - }; - - this.addRandomStringOnDate = function(randomText) { - Util.waitUntilElementIsVisible(columnDate); - columnDate.click(); - return columnDate.sendKeys(randomText); - }; - - this.clickSaveButton = function () { - Util.waitUntilElementIsVisible(saveButton); - return saveButton.click(); - }; - - this.checkErrorMessage = function () { - Util.waitUntilElementIsVisible(errorMessage); - return errorMessage.getText(); - }; - - this.clickDateWidget = function () { - Util.waitUntilElementIsVisible(dateWidget); - return dateWidget.click(); - }; - - this.getDateCalendarNumber = function (date) { - return calendarNumber.get(date).click(); - }; - - this.getTableRow = function (rowNumber) { - return Util.waitUntilElementIsVisible(tableRow.get(rowNumber)); - }; - - this.waitForCalendarToDisappear = function () { - Util.waitUntilElementIsNotVisible(calendarNumber); - }; -}; - -module.exports = DynamicTable; diff --git a/e2e/pages/adf/process_services/widgets/attachFile.ts b/e2e/pages/adf/process_services/widgets/attachFile.ts new file mode 100644 index 0000000000..fe0eec53ba --- /dev/null +++ b/e2e/pages/adf/process_services/widgets/attachFile.ts @@ -0,0 +1,57 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import FormFields = require('../formFields'); +import TestConfig = require('../../../../test.config'); +import path = require('path'); +import Util = require('../../../../util/util'); +import remote = require('selenium-webdriver/remote'); + +export class AttachFile { + + formFields = new FormFields(); + uploadLocator = by.css('button[id="attachfile"]'); + localStorageButton = element(by.css('input[id="attachfile"]')); + filesListLocator = by.css('div[id="adf-attach-widget-readonly-list"]'); + + attachFile(fieldId, fileLocation) { + browser.setFileDetector(new remote.FileDetector()); + let widget = this.formFields.getWidget(fieldId); + let uploadButton = widget.element(this.uploadLocator); + Util.waitUntilElementIsVisible(uploadButton); + uploadButton.click(); + + Util.waitUntilElementIsVisible(this.localStorageButton); + this.localStorageButton.sendKeys(path.resolve(path.join(TestConfig.main.rootPath, fileLocation))); + return this; + } + + checkFileIsAttached(fieldId, name) { + let widget = this.formFields.getWidget(fieldId); + let fileAttached = widget.element(this.filesListLocator).element(by.cssContainingText('mat-list-item span ', name)); + Util.waitUntilElementIsVisible(fileAttached); + return this; + } + + viewFile(name) { + let fileView = element(this.filesListLocator).element(by.cssContainingText('mat-list-item span ', name)); + Util.waitUntilElementIsVisible(fileView); + fileView.click(); + browser.actions().doubleClick(fileView).perform(); + return this; + } +} diff --git a/e2e/pages/adf/process_services/widgets/MultilineText.js b/e2e/pages/adf/process_services/widgets/displayText.ts similarity index 66% rename from e2e/pages/adf/process_services/widgets/MultilineText.js rename to e2e/pages/adf/process_services/widgets/displayText.ts index 007ae8abdf..51ecf1844a 100644 --- a/e2e/pages/adf/process_services/widgets/MultilineText.js +++ b/e2e/pages/adf/process_services/widgets/displayText.ts @@ -15,19 +15,16 @@ * limitations under the License. */ -var FormFields = require('../formFields'); +import FormFields = require('../formFields'); -var MultilineText = function () { +export class DisplayText { - var formFields = new FormFields(); + formFields = new FormFields(); - var valueLocator = by.css("textarea"); + labelLocator = by.css('div[class*="display-text-widget"]'); - this.getFieldValue = function (fieldId) { - return formFields.getFieldValue(fieldId, valueLocator); - }; - -}; - -module.exports = MultilineText; + getFieldLabel(fieldId) { + return this.formFields.getFieldLabel(fieldId, this.labelLocator); + } +} diff --git a/e2e/pages/adf/process_services/widgets/Header.js b/e2e/pages/adf/process_services/widgets/displayValue.ts similarity index 65% rename from e2e/pages/adf/process_services/widgets/Header.js rename to e2e/pages/adf/process_services/widgets/displayValue.ts index 7dabf4ed3e..a2f0d9ce04 100644 --- a/e2e/pages/adf/process_services/widgets/Header.js +++ b/e2e/pages/adf/process_services/widgets/displayValue.ts @@ -15,18 +15,16 @@ * limitations under the License. */ -var FormFields = require('../formFields'); +import FormFields = require('../formFields'); -var Header = function () { +export class DisplayValue { - var formFields = new FormFields(); + formFields = new FormFields(); - var labelLocator = by.css("span[id='container-header-label']"); + labelLocator = by.css('span[class*="unknown-text"]'); - this.getFieldLabel = function (fieldId) { - return formFields.getFieldLabel(fieldId, labelLocator); - }; + getFieldLabel(fieldId) { + return this.formFields.getFieldLabel(fieldId, this.labelLocator); + } -}; - -module.exports = Header; +} diff --git a/e2e/pages/adf/process_services/widgets/Hyperlink.js b/e2e/pages/adf/process_services/widgets/dropdown.ts similarity index 65% rename from e2e/pages/adf/process_services/widgets/Hyperlink.js rename to e2e/pages/adf/process_services/widgets/dropdown.ts index 880b8d9c37..1fc718c314 100644 --- a/e2e/pages/adf/process_services/widgets/Hyperlink.js +++ b/e2e/pages/adf/process_services/widgets/dropdown.ts @@ -15,18 +15,16 @@ * limitations under the License. */ -var FormFields = require('../formFields'); +import FormFields = require('../formFields'); -var Hyperlink = function () { +export class Dropdown { - var formFields = new FormFields(); + formFields = new FormFields(); - var fieldLocator = by.css("div[class='adf-hyperlink-widget '] a"); + selectedOptionLocator = by.css('mat-select[id="dropdown"] span span'); - this.getFieldText = function (fieldId) { - return formFields.getFieldText(fieldId, fieldLocator); - }; + getSelectedOptionText(fieldId) { + return this.formFields.getFieldText(fieldId, this.selectedOptionLocator); + } -}; - -module.exports = Hyperlink; +} diff --git a/e2e/pages/adf/process_services/widgets/dynamicTable.ts b/e2e/pages/adf/process_services/widgets/dynamicTable.ts new file mode 100644 index 0000000000..2adb9675b0 --- /dev/null +++ b/e2e/pages/adf/process_services/widgets/dynamicTable.ts @@ -0,0 +1,99 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import FormFields = require('../formFields'); +import Util = require('../../../../util/util'); + +export class DynamicTable { + formFields = new FormFields(); + + labelLocator = by.css('dynamic-table-widget div div'); + columnNameLocator = by.css('table[id*="dynamic-table"] th'); + addButton = element(by.id('label-add-row')); + 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(by.css('button[aria-label="Open calendar"]')); + calendarNumber = element.all(by.css('td div')); + tableRow = element.all(by.css('tbody tr')); + + getFieldLabel(fieldId) { + return this.formFields.getFieldLabel(fieldId, this.labelLocator); + } + + getColumnName(fieldId) { + return this.formFields.getFieldText(fieldId, this.columnNameLocator); + } + + clickAddButton() { + Util.waitUntilElementIsVisible(this.addButton); + return this.addButton.click(); + } + + clickColumnDateTime() { + Util.waitUntilElementIsVisible(this.columnDateTime); + this.columnDateTime.click(); + Util.waitUntilElementIsVisible(this.calendarHeader); + Util.waitUntilElementIsVisible(this.calendarContent); + browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + } + + addRandomStringOnDateTime(randomText) { + Util.waitUntilElementIsVisible(this.columnDateTime); + this.columnDateTime.click(); + browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + this.columnDateTime.sendKeys(randomText); + this.columnDateTime.sendKeys(protractor.Key.ENTER); + return this.columnDateTime.getAttribute('value'); + } + + addRandomStringOnDate(randomText) { + Util.waitUntilElementIsVisible(this.columnDate); + this.columnDate.click(); + return this.columnDate.sendKeys(randomText); + } + + clickSaveButton() { + Util.waitUntilElementIsVisible(this.saveButton); + return this.saveButton.click(); + } + + checkErrorMessage() { + Util.waitUntilElementIsVisible(this.errorMessage); + return this.errorMessage.getText(); + } + + clickDateWidget() { + Util.waitUntilElementIsVisible(this.dateWidget); + return this.dateWidget.click(); + } + + getDateCalendarNumber(date) { + return this.calendarNumber.get(date).click(); + } + + getTableRow(rowNumber) { + return Util.waitUntilElementIsVisible(this.tableRow.get(rowNumber)); + } + + waitForCalendarToDisappear() { + Util.waitUntilElementIsNotVisible(this.calendarNumber); + } +} diff --git a/e2e/pages/adf/process_services/widgets/DisplayValue.js b/e2e/pages/adf/process_services/widgets/header.ts similarity index 65% rename from e2e/pages/adf/process_services/widgets/DisplayValue.js rename to e2e/pages/adf/process_services/widgets/header.ts index 09b7711b08..7ce1d1a075 100644 --- a/e2e/pages/adf/process_services/widgets/DisplayValue.js +++ b/e2e/pages/adf/process_services/widgets/header.ts @@ -15,20 +15,16 @@ * limitations under the License. */ -var FormFields = require('../formFields'); +import FormFields = require('../formFields'); -var DisplayValue = function () { +export class Header { - var formFields = new FormFields(); + formFields = new FormFields(); - var labelLocator = by.css("span[class*='unknown-text']"); - - this.getFieldLabel = function (fieldId) { - return formFields.getFieldLabel(fieldId, labelLocator); - }; - -}; - -module.exports = DisplayValue; + labelLocator = by.css('span[id="container-header-label"]'); + getFieldLabel(fieldId) { + return this.formFields.getFieldLabel(fieldId, this.labelLocator); + } +} diff --git a/e2e/pages/adf/process_services/widgets/hyperlink.ts b/e2e/pages/adf/process_services/widgets/hyperlink.ts new file mode 100644 index 0000000000..342910d22d --- /dev/null +++ b/e2e/pages/adf/process_services/widgets/hyperlink.ts @@ -0,0 +1,30 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import FormFields = require('../formFields'); + +export class Hyperlink { + + formFields = new FormFields(); + + fieldLocator = by.css('div[class="adf-hyperlink-widget "] a'); + + getFieldText(fieldId) { + return this.formFields.getFieldText(fieldId, this.fieldLocator); + } + +} diff --git a/e2e/pages/adf/process_services/widgets/multilineText.ts b/e2e/pages/adf/process_services/widgets/multilineText.ts new file mode 100644 index 0000000000..35ce96e2a7 --- /dev/null +++ b/e2e/pages/adf/process_services/widgets/multilineText.ts @@ -0,0 +1,30 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import FormFields = require('../formFields'); + +export class MultilineText { + + formFields = new FormFields(); + + valueLocator = by.css('textarea'); + + getFieldValue(fieldId) { + return this.formFields.getFieldValue(fieldId, this.valueLocator); + } + +} diff --git a/e2e/pages/adf/process_services/widgets/RadioButtons.js b/e2e/pages/adf/process_services/widgets/radioButtons.ts similarity index 60% rename from e2e/pages/adf/process_services/widgets/RadioButtons.js rename to e2e/pages/adf/process_services/widgets/radioButtons.ts index 8043e8a1de..5fe50729ec 100644 --- a/e2e/pages/adf/process_services/widgets/RadioButtons.js +++ b/e2e/pages/adf/process_services/widgets/radioButtons.ts @@ -15,20 +15,19 @@ * limitations under the License. */ -var FormFields = require('../formFields'); -var Util = require('../../../../util/util'); +import FormFields = require('../formFields'); +import Util = require('../../../../util/util'); -var RadioButtons = function () { +export class RadioButtons { - var formFields = new FormFields(); + formFields = new FormFields(); - this.getSpecificOptionLabel = function (fieldId, optionNumber) { - var optionLocator = by.css("label[for*='radiobuttons-option_" + optionNumber + "'] div[class*='content']"); - var option = formFields.getWidget(fieldId).element(optionLocator); + getSpecificOptionLabel(fieldId, optionNumber) { + let optionLocator = by.css('label[for*="radiobuttons-option_' + optionNumber + '"] div[class*="content"]'); + + let option = this.formFields.getWidget(fieldId).element(optionLocator); Util.waitUntilElementIsVisible(option); return option.getText(); - }; + } -}; - -module.exports = RadioButtons; +} diff --git a/e2e/pages/adf/process_services/widgets/Widget.js b/e2e/pages/adf/process_services/widgets/widget.ts similarity index 52% rename from e2e/pages/adf/process_services/widgets/Widget.js rename to e2e/pages/adf/process_services/widgets/widget.ts index e61fd9c737..a94d1d8aca 100644 --- a/e2e/pages/adf/process_services/widgets/Widget.js +++ b/e2e/pages/adf/process_services/widgets/widget.ts @@ -15,55 +15,52 @@ * limitations under the License. */ -var MultilineText = require('./MultilineText'); -var Header = require('./Header'); -var DisplayText = require('./DisplayText'); -var AttachFile = require('./AttachFile'); -var DisplayValue = require('./DisplayValue'); -var RadioButtons = require('./RadioButtons'); -var Hyperlink = require('./Hyperlink'); -var Dropdown = require('./Dropdown'); -var DynamicTable = require('./DynamicTable'); +import { MultilineText } from './multilineText'; +import { Header } from './header'; +import { DisplayText } from './displayText'; +import { AttachFile } from './attachFile'; +import { DisplayValue } from './displayValue'; +import { RadioButtons } from './radioButtons'; +import { Hyperlink } from './hyperlink'; +import { Dropdown } from './dropdown'; +import { DynamicTable } from './dynamicTable'; -var Widget = function () { +export class Widget { - this.multilineTextWidget = function () { + multilineTextWidget() { return new MultilineText(); - }; + } - this.headerWidget = function () { + headerWidget() { return new Header(); - }; + } - this.displayTextWidget = function () { + displayTextWidget() { return new DisplayText(); - }; + } - this.attachFileWidget = function () { + attachFileWidget() { return new AttachFile(); - }; + } - this.displayValueWidget = function () { + displayValueWidget() { return new DisplayValue(); - }; + } - this.radioWidget = function () { + radioWidget() { return new RadioButtons(); - }; + } - this.hyperlink = function () { + hyperlink() { return new Hyperlink(); - }; + } - this.dropdown = function () { + dropdown() { return new Dropdown(); - }; + } - this.dynamicTable = function () { + dynamicTable() { return new DynamicTable(); - }; - -}; - -module.exports = Widget; + } +} diff --git a/e2e/pages/adf/settingsPage.js b/e2e/pages/adf/settingsPage.js deleted file mode 100644 index 098ea4a50b..0000000000 --- a/e2e/pages/adf/settingsPage.js +++ /dev/null @@ -1,135 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var TestConfig = require('../../test.config'); -var Util = require('../../util/util'); - -var SettingsPage = function () { - - var settingsURL = TestConfig.adf.url + TestConfig.adf.port + "/settings"; - var providerDropdown = element(by.css("mat-select[aria-label='Provider'] div[class='mat-select-arrow-wrapper']")); - var ecmAndBpm = { - option: element(by.xpath("//SPAN[@class='mat-option-text'][contains(text(),'ALL')]")), - text: "ALL" - }; - var bpm = { - option: element(by.xpath("//SPAN[@class='mat-option-text'][contains(text(),'BPM') and not (contains(text(),'and'))]")), - text: "BPM" - }; - var ecm = { - option: element(by.xpath("//SPAN[@class='mat-option-text'][contains(text(),'ECM') and not (contains(text(),'and'))]")), - text: "ECM" - }; - var oauth = { - option: element(by.xpath("//SPAN[@class='mat-option-text'][contains(text(),'OAUTH')]")), - text: "OAUTH" - }; - var selectedOption = element.all(by.css("span[class*='ng-star-inserted']")).first(); - var ecmText = element(by.css("input[data-automation-id*='ecmHost']")); - var bpmText = element(by.css("input[data-automation-id*='bpmHost']")); - var authHostText = element(by.css("input[id='oauthHost']")); - var silentLoginToggle = element(by.css("mat-slide-toggle[name='silentLogin'] div[class='mat-slide-toggle-thumb']")); - var silentLoginEnabled = element(by.css("mat-slide-toggle[class*='mat-checked'][name='silentLogin'] div[class='mat-slide-toggle-thumb']")); - var backButton = element(by.cssContainingText("span[class='mat-button-wrapper']", "Back")); - var applyButton = element(by.css("button[data-automation-id*='host-button']")); - - this.goToSettingsPage = function () { - browser.driver.get(settingsURL); - Util.waitUntilElementIsVisible(providerDropdown); - return this; - }; - - /** - * Selects provider - * @method setProvider - * @param {String} option, {String} selected - */ - this.setProvider = function (option, selected) { - Util.waitUntilElementIsVisible(providerDropdown); - providerDropdown.click(); - Util.waitUntilElementIsVisible(option); - option.click(); - return expect(selectedOption.getText()).toEqual(selected); - }; - - /** - * Sets provider as ECM and BPM - * @method setProviderEcmBpm - */ - this.setProviderEcmBpm = function () { - this.goToSettingsPage(); - this.setProvider(ecmAndBpm.option, ecmAndBpm.text); - Util.waitUntilElementIsVisible(bpmText); - Util.waitUntilElementIsVisible(ecmText); - this.clickApply(); - return this; - }; - - /** - * Sets provider as BPM - * @method setProviderBpm - */ - this.setProviderBpm = function () { - this.goToSettingsPage(); - this.setProvider(bpm.option, bpm.text); - Util.waitUntilElementIsVisible(bpmText); - expect(ecmText.isPresent()).toBe(false); - this.clickApply(); - return this; - }; - - /** - * Sets provider as ECM - * @method setProviderEcm - */ - this.setProviderEcm = function () { - this.goToSettingsPage(); - this.setProvider(ecm.option, ecm.text); - Util.waitUntilElementIsVisible(ecmText); - expect(bpmText.isPresent()).toBe(false); - this.clickApply(); - return this; - }; - - /** - * Sets provider as OAUTH - * @method setProviderOauth - */ - this.setProviderOauth = function () { - this.goToSettingsPage(); - this.setProvider(oauth.option, oauth.text); - Util.waitUntilElementIsVisible(bpmText); - Util.waitUntilElementIsVisible(ecmText); - expect(authHostText.isPresent()).toBe(true); - this.clickApply(); - return this; - }; - - /** - * Clicks Apply button - * @method clickApply - */ - this.clickApply = function () { - Util.waitUntilElementIsVisible(applyButton); - applyButton.click(); - }; - - this.checkProviderDropdownIsDisplayed = function () { - Util.waitUntilElementIsVisible(providerDropdown); - }; -}; -module.exports = SettingsPage; diff --git a/e2e/pages/adf/settingsPage.ts b/e2e/pages/adf/settingsPage.ts new file mode 100644 index 0000000000..988acb0ce0 --- /dev/null +++ b/e2e/pages/adf/settingsPage.ts @@ -0,0 +1,106 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import TestConfig = require('../../test.config'); +import Util = require('../../util/util'); + +export class SettingsPage { + + settingsURL = TestConfig.adf.url + TestConfig.adf.port + '/settings'; + providerDropdown = element(by.css('mat-select[aria-label="Provider"] div[class="mat-select-arrow-wrapper"]')); + ecmAndBpm = { + option: element(by.xpath('//SPAN[@class="mat-option-text"][contains(text(),"ALL")]')), + text: 'ALL' + }; + bpm = { + option: element(by.xpath('//SPAN[@class="mat-option-text"][contains(text(),"BPM") and not (contains(text(),"and"))]')), + text: 'BPM' + }; + ecm = { + option: element(by.xpath('//SPAN[@class="mat-option-text"][contains(text(),"ECM") and not (contains(text(),"and"))]')), + text: 'ECM' + }; + oauth = { + option: element(by.xpath('//SPAN[@class="mat-option-text"][contains(text(),"OAUTH")]')), + text: 'OAUTH' + }; + selectedOption = element.all(by.css('span[class*="ng-star-inserted"]')).first(); + ecmText = element(by.css('input[data-automation-id*="ecmHost"]')); + bpmText = element(by.css('input[data-automation-id*="bpmHost"]')); + authHostText = element(by.css('input[id="oauthHost"]')); + applyButton = element(by.css('button[data-automation-id*="host-button"]')); + + goToSettingsPage() { + browser.driver.get(this.settingsURL); + Util.waitUntilElementIsVisible(this.providerDropdown); + return this; + } + + setProvider(option, selected) { + Util.waitUntilElementIsVisible(this.providerDropdown); + this.providerDropdown.click(); + Util.waitUntilElementIsVisible(option); + option.click(); + return expect(this.selectedOption.getText()).toEqual(selected); + } + + setProviderEcmBpm() { + this.goToSettingsPage(); + this.setProvider(this.ecmAndBpm.option, this.ecmAndBpm.text); + Util.waitUntilElementIsVisible(this.bpmText); + Util.waitUntilElementIsVisible(this.ecmText); + this.clickApply(); + return this; + } + + setProviderBpm() { + this.goToSettingsPage(); + this.setProvider(this.bpm.option, this.bpm.text); + Util.waitUntilElementIsVisible(this.bpmText); + expect(this.ecmText.isPresent()).toBe(false); + this.clickApply(); + return this; + } + + setProviderEcm() { + this.goToSettingsPage(); + this.setProvider(this.ecm.option, this.ecm.text); + Util.waitUntilElementIsVisible(this.ecmText); + expect(this.bpmText.isPresent()).toBe(false); + this.clickApply(); + return this; + } + + setProviderOauth() { + this.goToSettingsPage(); + this.setProvider(this.oauth.option, this.oauth.text); + Util.waitUntilElementIsVisible(this.bpmText); + Util.waitUntilElementIsVisible(this.ecmText); + expect(this.authHostText.isPresent()).toBe(true); + this.clickApply(); + return this; + } + + clickApply() { + Util.waitUntilElementIsVisible(this.applyButton); + this.applyButton.click(); + } + + checkProviderDropdownIsDisplayed() { + Util.waitUntilElementIsVisible(this.providerDropdown); + } +} diff --git a/e2e/pages/adf/tagPage.js b/e2e/pages/adf/tagPage.js deleted file mode 100644 index d70c1f97d5..0000000000 --- a/e2e/pages/adf/tagPage.js +++ /dev/null @@ -1,225 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var TestConfig = require('../../test.config'); -var Util = require('../../util/util'); -var ContentList = require('./dialog/contentList'); - -var TagPage = function () { - - var tagURL = TestConfig.adf.url + TestConfig.adf.port + "/tag"; - var addTagButton = element(by.css("button[id='add-tag']")); - var insertNodeId = element(by.css("input[id='nodeId']")); - var newTagInput = element(by.css("input[id='new-tag-text']")); - var tagListRow = element(by.css("adf-tag-node-actions-list mat-list-item")); - var tagListByNodeIdRow = element(by.css("adf-tag-node-list mat-chip")); - var errorMessage = element(by.css("mat-hint[data-automation-id='errorMessage']")); - var tagListRowLocator = by.css("adf-tag-node-actions-list mat-list-item div"); - var tagListByNodeIdRowLocator = by.css("adf-tag-node-list mat-chip span"); - var tagListContentServicesRowLocator = by.css("div[class*='adf-list-tag']"); - var showDeleteButton = element(by.id('adf-remove-button-tag')); - var showMoreButton = element(by.css('button[data-automation-id="show-more-tags"]')); - var showLessButton = element(by.css('button[data-automation-id="show-fewer-tags"]')); - var tagsOnPage = element.all(by.css('div[class*="adf-list-tag"]')); - - this.getNodeId = function () { - Util.waitUntilElementIsVisible(insertNodeId); - return insertNodeId.getAttribute('value'); - }; - - this.insertNodeId = function (nodeId) { - Util.waitUntilElementIsVisible(insertNodeId); - insertNodeId.clear(); - insertNodeId.sendKeys(nodeId); - browser.driver.sleep(200); - insertNodeId.sendKeys(' ') - browser.driver.sleep(200); - insertNodeId.sendKeys(protractor.Key.BACK_SPACE); - }; - - this.addNewTagInput = function (tag) { - Util.waitUntilElementIsVisible(newTagInput); - newTagInput.sendKeys(tag); - return this; - }; - - this.addTag = function (tag) { - this.addNewTagInput(tag); - Util.waitUntilElementIsVisible(addTagButton); - Util.waitUntilElementIsClickable(addTagButton); - addTagButton.click(); - return this; - }; - - this.deleteTagFromTagListByNodeId = function (name) { - var deleteChip = element(by.css('button[id="tag_chips_delete_' + name + '"]')); - Util.waitUntilElementIsVisible(deleteChip); - deleteChip.click(); - return this; - }; - - this.deleteTagFromTagList = function (name) { - var deleteChip = element(by.xpath('//*[@id="tag_chips_delete_' + name + '"]/mat-icon')); - Util.waitUntilElementIsVisible(deleteChip); - deleteChip.click(); - return this; - }; - - this.getNewTagInput = function () { - Util.waitUntilElementIsVisible(newTagInput); - return newTagInput.getAttribute('value'); - }; - - this.getNewTagPlaceholder = function () { - Util.waitUntilElementIsVisible(newTagInput); - return newTagInput.getAttribute("placeholder"); - }; - - this.addTagButtonIsEnabled = function () { - Util.waitUntilElementIsVisible(addTagButton); - return addTagButton.isEnabled(); - }; - - this.checkTagIsDisplayedInTagList = function (tagName) { - var tag = element(by.cssContainingText("div[id*='tag_name']", tagName)); - return Util.waitUntilElementIsVisible(tag); - }; - - this.checkTagIsNotDisplayedInTagList = function (tagName) { - var tag = element(by.cssContainingText("div[id*='tag_name']", tagName)); - return Util.waitUntilElementIsNotOnPage(tag); - }; - - this.checkTagIsNotDisplayedInTagListByNodeId = function (tagName) { - var tag = element(by.cssContainingText("span[id*='tag_name']", tagName)); - return Util.waitUntilElementIsNotOnPage(tag); - }; - - this.checkTagIsDisplayedInTagListByNodeId = function (tagName) { - var tag = element(by.cssContainingText("span[id*='tag_name']", tagName)); - return Util.waitUntilElementIsVisible(tag); - }; - - this.checkTagListIsEmpty = function () { - Util.waitUntilElementIsNotOnPage(tagListRow); - }; - - this.checkTagListByNodeIdIsEmpty = function () { - return Util.waitUntilElementIsNotOnPage(tagListByNodeIdRow); - }; - - this.checkTagIsDisplayedInTagListContentServices = function (tagName) { - var tag = element(by.cssContainingText("div[class='adf-list-tag'][id*='tag_name']", tagName)); - return Util.waitUntilElementIsVisible(tag); - }; - - this.getErrorMessage = function () { - Util.waitUntilElementIsPresent(errorMessage); - return errorMessage.getText(); - }; - - this.checkTagListIsOrderedAscending = function () { - var deferred = protractor.promise.defer(); - new ContentList().checkListIsSorted(false, tagListRowLocator).then(function (result) { - deferred.fulfill(result); - }); - return deferred.promise; - }; - - this.checkTagListByNodeIdIsOrderedAscending = function () { - var deferred = protractor.promise.defer(); - new ContentList().checkListIsSorted(false, tagListByNodeIdRowLocator).then(function (result) { - deferred.fulfill(result); - }); - return deferred.promise; - }; - - this.checkTagListContentServicesIsOrderedAscending = function () { - var deferred = protractor.promise.defer(); - new ContentList().checkListIsSorted(false, tagListContentServicesRowLocator).then(function (result) { - deferred.fulfill(result); - }); - return deferred.promise; - }; - - this.checkDeleteTagFromTagListByNodeIdIsDisplayed = function (name) { - var deleteChip = element(by.css('button[id="tag_chips_delete_' + name + '"]')); - return Util.waitUntilElementIsVisible(deleteChip); - }; - - this.clickShowDeleteButtonSwitch = function () { - Util.waitUntilElementIsVisible(showDeleteButton); - Util.waitUntilElementIsClickable(showDeleteButton); - showDeleteButton.click(); - }; - - this.checkDeleteTagFromTagListByNodeIdIsNotDisplayed = function (name) { - var deleteChip = element(by.css('button[id="tag_chips_delete_' + name + '"]')); - return Util.waitUntilElementIsNotVisible(deleteChip); - }; - - this.checkShowMoreButtonIsDisplayed = function () { - return Util.waitUntilElementIsVisible(showMoreButton); - }; - - this.checkShowMoreButtonIsNotDisplayed = function () { - return Util.waitUntilElementIsNotVisible(showMoreButton); - }; - - this.clickShowMoreButton = function () { - Util.waitUntilElementIsClickable(showMoreButton); - return showMoreButton.click(); - }; - - this.clickShowLessButton = function () { - Util.waitUntilElementIsClickable(showLessButton); - return showLessButton.click(); - }; - - this.checkTagsOnList = function () { - return tagsOnPage.count(); - }; - - this.checkShowLessButtonIsDisplayed = function () { - return Util.waitUntilElementIsVisible(showLessButton); - }; - - this.checkShowLessButtonIsNotDisplayed = function () { - return Util.waitUntilElementIsNotVisible(showLessButton); - }; - - this.clickShowMoreButtonUntilNotDisplayed = function () { - showMoreButton.isDisplayed().then((visible) => { - if(visible){ - showMoreButton.click(); - - this.clickShowMoreButtonUntilNotDisplayed(); - } - }, err => {}) - }; - - this.clickShowLessButtonUntilNotDisplayed = function () { - showLessButton.isDisplayed().then((visible) => { - if(visible){ - showLessButton.click(); - - this.clickShowLessButtonUntilNotDisplayed(); - } - }, err => {}) - }; -}; -module.exports = TagPage; diff --git a/e2e/pages/adf/tagPage.ts b/e2e/pages/adf/tagPage.ts new file mode 100644 index 0000000000..9768ef088e --- /dev/null +++ b/e2e/pages/adf/tagPage.ts @@ -0,0 +1,215 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Util = require('../../util/util'); +import ContentList = require('./dialog/contentList'); + +export class TagPage { + + 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 = 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"]')); + + getNodeId() { + Util.waitUntilElementIsVisible(this.insertNodeIdElement); + return this.insertNodeIdElement.getAttribute('value'); + } + + insertNodeId(nodeId) { + Util.waitUntilElementIsVisible(this.insertNodeIdElement); + this.insertNodeIdElement.clear(); + this.insertNodeIdElement.sendKeys(nodeId); + browser.driver.sleep(200); + this.insertNodeIdElement.sendKeys(' '); + browser.driver.sleep(200); + this.insertNodeIdElement.sendKeys(protractor.Key.BACK_SPACE); + } + + addNewTagInput(tag) { + Util.waitUntilElementIsVisible(this.newTagInput); + this.newTagInput.sendKeys(tag); + return this; + } + + addTag(tag) { + this.addNewTagInput(tag); + Util.waitUntilElementIsVisible(this.addTagButton); + Util.waitUntilElementIsClickable(this.addTagButton); + this.addTagButton.click(); + return this; + } + + deleteTagFromTagListByNodeId(name) { + let deleteChip = element(by.id('tag_chips_delete_' + name )); + Util.waitUntilElementIsVisible(deleteChip); + deleteChip.click(); + return this; + } + + deleteTagFromTagList(name) { + let deleteChip = element(by.id('tag_chips_delete_' + name)); + Util.waitUntilElementIsVisible(deleteChip); + deleteChip.click(); + return this; + } + + getNewTagInput() { + Util.waitUntilElementIsVisible(this.newTagInput); + return this.newTagInput.getAttribute('value'); + } + + getNewTagPlaceholder() { + Util.waitUntilElementIsVisible(this.newTagInput); + return this.newTagInput.getAttribute('placeholder'); + } + + addTagButtonIsEnabled() { + Util.waitUntilElementIsVisible(this.addTagButton); + return this.addTagButton.isEnabled(); + } + + checkTagIsDisplayedInTagList(tagName) { + let tag = element(by.cssContainingText('div[id*="tag_name"]', tagName)); + return Util.waitUntilElementIsVisible(tag); + } + + checkTagIsNotDisplayedInTagList(tagName) { + let tag = element(by.cssContainingText('div[id*="tag_name"]', tagName)); + return Util.waitUntilElementIsNotOnPage(tag); + } + + checkTagIsNotDisplayedInTagListByNodeId(tagName) { + let tag = element(by.cssContainingText('span[id*="tag_name"]', tagName)); + return Util.waitUntilElementIsNotOnPage(tag); + } + + checkTagIsDisplayedInTagListByNodeId(tagName) { + let tag = element(by.cssContainingText('span[id*="tag_name"]', tagName)); + return Util.waitUntilElementIsVisible(tag); + } + + checkTagListIsEmpty() { + Util.waitUntilElementIsNotOnPage(this.tagListRow); + } + + checkTagListByNodeIdIsEmpty() { + return Util.waitUntilElementIsNotOnPage(this.tagListByNodeIdRow); + } + + checkTagIsDisplayedInTagListContentServices(tagName) { + let tag = element(by.cssContainingText('div[class="adf-list-tag"][id*="tag_name"]', tagName)); + return Util.waitUntilElementIsVisible(tag); + } + + getErrorMessage() { + Util.waitUntilElementIsPresent(this.errorMessage); + return this.errorMessage.getText(); + } + + checkTagListIsOrderedAscending() { + let deferred = protractor.promise.defer(); + new ContentList().checkListIsSorted(false, this.tagListRowLocator).then((result) => { + deferred.fulfill(result); + }); + return deferred.promise; + } + + checkTagListByNodeIdIsOrderedAscending() { + let deferred = protractor.promise.defer(); + new ContentList().checkListIsSorted(false, this.tagListByNodeIdRowLocator).then((result) => { + deferred.fulfill(result); + }); + return deferred.promise; + } + + checkTagListContentServicesIsOrderedAscending() { + let deferred = protractor.promise.defer(); + new ContentList().checkListIsSorted(false, this.tagListContentServicesRowLocator).then((result) => { + deferred.fulfill(result); + }); + return deferred.promise; + } + + checkDeleteTagFromTagListByNodeIdIsDisplayed(name) { + let deleteChip = element(by.id('tag_chips_delete_' + name )); + return Util.waitUntilElementIsVisible(deleteChip); + } + + checkDeleteTagFromTagListByNodeIdIsNotDisplayed(name) { + let deleteChip = element(by.id('tag_chips_delete_' + name )); + return Util.waitUntilElementIsNotVisible(deleteChip); + } + + clickShowDeleteButtonSwitch() { + Util.waitUntilElementIsVisible(this.showDeleteButton); + Util.waitUntilElementIsClickable(this.showDeleteButton); + this.showDeleteButton.click(); + } + + checkShowMoreButtonIsDisplayed() { + return Util.waitUntilElementIsVisible(this.showMoreButton); + } + + clickShowMoreButton() { + Util.waitUntilElementIsClickable(this.showMoreButton); + return this.showMoreButton.click(); + } + + checkTagsOnList() { + return this.tagsOnPage.count(); + } + + checkShowLessButtonIsDisplayed() { + return Util.waitUntilElementIsVisible(this.showLessButton); + } + + checkShowLessButtonIsNotDisplayed() { + return Util.waitUntilElementIsNotVisible(this.showLessButton); + } + + clickShowMoreButtonUntilNotDisplayed() { + this.showMoreButton.isDisplayed().then((visible) => { + if (visible) { + this.showMoreButton.click(); + + this.clickShowMoreButtonUntilNotDisplayed(); + } + }, err => { + }); + } + + clickShowLessButtonUntilNotDisplayed() { + this.showLessButton.isDisplayed().then((visible) => { + if (visible) { + this.showLessButton.click(); + + this.clickShowLessButtonUntilNotDisplayed(); + } + }, err => { + }); + } +} diff --git a/e2e/pages/adf/viewerPage.ts b/e2e/pages/adf/viewerPage.ts index 835a127d95..ed96fde2c8 100644 --- a/e2e/pages/adf/viewerPage.ts +++ b/e2e/pages/adf/viewerPage.ts @@ -16,7 +16,6 @@ */ import Util = require('../../util/util'); -import CardViewPage = require('./cardViewPageComponent'); import { TabsPage } from './material/tabsPage'; import { FormControllersPage } from './material/formControllersPage'; @@ -65,7 +64,6 @@ export class ViewerPage { imgViewer = element(by.css('adf-img-viewer')); activeTab = element(by.css('div[class*="mat-tab-label-active"]')); uploadNewVersionButton = element(by.css('input[data-automation-id="upload-single-file"]')); - rightChevron = element(by.css('div[class*="header-pagination-after"]')); toolbarSwitch = element(by.id('adf-switch-toolbar')); toolbar = element(by.id('adf-viewer-toolbar')); datatableHeader = element(by.css('div.adf-datatable-header')); @@ -80,7 +78,7 @@ export class ViewerPage { showLeftSidebarSwitch = element(by.id('adf-switch-showleftsidebar')); moreActionsSwitch = element(by.id('adf-switch-moreactions')); - moreActions = element(by.id('adf-viewer-moreactions')); + pdfPageLoaded = element(by.css('[data-page-number="1"][data-loaded="true"], adf-img-viewer, adf-txt-viewer')); downloadSwitch = element(by.id('adf-switch-download')); downloadButton = element(by.id('adf-viewer-download')); @@ -148,20 +146,8 @@ export class ViewerPage { Util.waitUntilElementIsVisible(this.datatableHeader); } - checkPageCanvasIsDisplayed() { - Util.waitUntilElementIsVisible(this.pageCanvas); - } - - checkToolbarIsDisplayed(timeout) { - Util.waitUntilElementIsVisible(this.toolbar, timeout); - } - - checkViewerIsNotDisplayed() { - Util.waitUntilElementIsNotOnPage(this.viewer); - } - - checkPdfViewerIsDisplayed() { - Util.waitUntilElementIsOnPage(this.pdfViewer); + checkFileIsLoaded() { + Util.waitUntilElementIsOnPage(this.pdfPageLoaded, 15000); } checkImgViewerIsDisplayed() { @@ -479,29 +465,6 @@ export class ViewerPage { return this.activeTab.getText(); } - checkUnsupportedFileContainerIsDisplayed() { - Util.waitUntilElementIsVisible(this.unsupportedFileContainer); - } - - clickRightChevronToGetToTab = (tabName) => { - element.all(by.css('.mat-tab-label')) - .map((element) => element.getAttribute('innerText')) - .then((texts) => { - for (let text of texts) { - if (text === tabName) { - break; - } - clickRightChevron(); - } - }); - } - - clickRightChevron() { - Util.waitUntilElementIsVisible(this.rightChevron); - this.rightChevron.click(); - return this; - } - clickOnVersionsTab() { clickRightChevronToGetToTab('Versions'); tabsPage.clickTabByTitle('Versions'); diff --git a/e2e/process-services/apps-section.e2e.ts b/e2e/process-services/apps-section.e2e.ts index 10da19082b..f2fa5ecd3f 100644 --- a/e2e/process-services/apps-section.e2e.ts +++ b/e2e/process-services/apps-section.e2e.ts @@ -16,8 +16,8 @@ */ import { browser } from 'protractor'; -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; import NavigationBarPage = require('../pages/adf/navigationBarPage'); import CONSTANTS = require('../util/constants'); diff --git a/e2e/process-services/attach-file-widget.e2e.ts b/e2e/process-services/attach-file-widget.e2e.ts index f51ac8d90b..b77c6c1be2 100644 --- a/e2e/process-services/attach-file-widget.e2e.ts +++ b/e2e/process-services/attach-file-widget.e2e.ts @@ -15,10 +15,11 @@ * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); -import TasksPage = require('../pages/adf/process_services/tasksPage'); -import Widget = require('../pages/adf/process_services/widgets/widget'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { Widget } from '../pages/adf/process_services/widgets/widget'; + +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import { TasksPage } from '../pages/adf/process_services/tasksPage'; import CONSTANTS = require('../util/constants'); diff --git a/e2e/process-services/attach_form_component.e2e.ts b/e2e/process-services/attach_form_component.e2e.ts index 85fac33149..47e5f72231 100644 --- a/e2e/process-services/attach_form_component.e2e.ts +++ b/e2e/process-services/attach_form_component.e2e.ts @@ -15,9 +15,9 @@ * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); -import TasksPage = require('../pages/adf/process_services/tasksPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import { TasksPage } from '../pages/adf/process_services/tasksPage'; import { AttachFormPage } from '../pages/adf/process_services/attachFormPage'; import FormFields = require('../pages/adf/process_services/formFields'); diff --git a/e2e/process-services/attachment-list-process.e2e.ts b/e2e/process-services/attachment-list-process.e2e.ts index cedcb16c26..1b41f3aa78 100644 --- a/e2e/process-services/attachment-list-process.e2e.ts +++ b/e2e/process-services/attachment-list-process.e2e.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; import ProcessFiltersPage = require('../pages/adf/process_services/processFiltersPage'); import FileModel = require('../models/ACS/fileModel'); import { AttachmentListPage } from '../pages/adf/process_services/attachmentListPage'; diff --git a/e2e/process-services/checklist_component.e2e.ts b/e2e/process-services/checklist_component.e2e.ts index 371bd3ba83..84ecfec825 100644 --- a/e2e/process-services/checklist_component.e2e.ts +++ b/e2e/process-services/checklist_component.e2e.ts @@ -15,9 +15,9 @@ * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); -import TasksPage = require('../pages/adf/process_services/tasksPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import { TasksPage } from '../pages/adf/process_services/tasksPage'; import CONSTANTS = require('../util/constants'); @@ -135,7 +135,7 @@ describe('Checklist component', () => { taskPage.removeChecklists(removeChecklist[1]); taskPage.checkChecklistIsDisplayed(removeChecklist[0]); taskPage.checkChecklistIsNotDisplayed(removeChecklist[1]); - expect(taskPage.getNumberOfChecklists()).toEqual('1'); + // expect(taskPage.getNumberOfChecklists()).toEqual('1'); }); it('[C261027] Should not be able to remove a completed Checklist when clicking on remove button', () => { diff --git a/e2e/process-services/comment_component_processes.e2e.ts b/e2e/process-services/comment_component_processes.e2e.ts index ea39d289df..831cd615b9 100644 --- a/e2e/process-services/comment_component_processes.e2e.ts +++ b/e2e/process-services/comment_component_processes.e2e.ts @@ -16,9 +16,9 @@ */ import { browser } from 'protractor'; -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); -import ProcessFiltersPage = require('../pages/adf/process_services/processFiltersPage.js'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import ProcessFiltersPage = require('../pages/adf/process_services/processFiltersPage'); import { CommentsPage } from '../pages/adf/commentsPage'; import TestConfig = require('../test.config'); diff --git a/e2e/process-services/comment_component_tasks.e2e.ts b/e2e/process-services/comment_component_tasks.e2e.ts index 23c6d95249..55c88bdf28 100644 --- a/e2e/process-services/comment_component_tasks.e2e.ts +++ b/e2e/process-services/comment_component_tasks.e2e.ts @@ -17,9 +17,9 @@ import { browser } from 'protractor'; -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); -import TasksPage = require('../pages/adf/process_services/tasksPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import { TasksPage } from '../pages/adf/process_services/tasksPage'; import { CommentsPage } from '../pages/adf/commentsPage'; import CONSTANTS = require('../util/constants'); diff --git a/e2e/process-services/custom_process_filters.e2e.ts b/e2e/process-services/custom_process_filters.e2e.ts index f4d191a6ba..43beb84e09 100644 --- a/e2e/process-services/custom_process_filters.e2e.ts +++ b/e2e/process-services/custom_process_filters.e2e.ts @@ -17,12 +17,12 @@ import { browser } from 'protractor'; -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); -import ProcessFiltersPage = require('../pages/adf/process_services/processFiltersPage.js'); -import AppNavigationBarPage = require('../pages/adf/process_services/appNavigationBarPage'); -import AppSettingsToggles = require('../pages/adf/process_services/dialog/appSettingsToggles'); -import FiltersPage = require('../pages/adf/process_services/filtersPage.js'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import ProcessFiltersPage = require('../pages/adf/process_services/processFiltersPage'); +import FiltersPage = require('../pages/adf/process_services/filtersPage'); +import { AppNavigationBarPage } from '../pages/adf/process_services/appNavigationBarPage'; +import { AppSettingsToggles } from '../pages/adf/process_services/dialog/appSettingsToggles'; import TestConfig = require('../test.config'); @@ -50,7 +50,7 @@ describe('New Process Filters', () => { deleted: 'To delete' }; - beforeAll(async(done) => { + beforeAll(async (done) => { let users = new UsersActions(); this.alfrescoJsApi = new AlfrescoApi({ @@ -69,7 +69,7 @@ describe('New Process Filters', () => { done(); }); - afterAll(async(done) => { + afterAll(async (done) => { await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); await this.alfrescoJsApi.activiti.adminTenantsApi.deleteTenant(tenantId); done(); @@ -94,7 +94,7 @@ describe('New Process Filters', () => { 'appId': null, 'name': processFilter.new_filter, 'icon': 'glyphicon-random', - 'filter': {'sort': 'created-desc', 'name': '', 'state': 'running'} + 'filter': { 'sort': 'created-desc', 'name': '', 'state': 'running' } }); filterId = customProcessFilter.id; @@ -118,7 +118,7 @@ describe('New Process Filters', () => { 'appId': null, 'name': processFilter.new_icon, 'icon': 'glyphicon-cloud', - 'filter': {'sort': 'created-desc', 'name': '', 'state': 'running'} + 'filter': { 'sort': 'created-desc', 'name': '', 'state': 'running' } }); filterId = customProcessFilter.id; @@ -145,7 +145,7 @@ describe('New Process Filters', () => { 'appId': null, 'name': processFilter.edited, 'icon': 'glyphicon-random', - 'filter': {'sort': 'created-desc', 'name': '', 'state': 'running'} + 'filter': { 'sort': 'created-desc', 'name': '', 'state': 'running' } }); }); @@ -165,7 +165,7 @@ describe('New Process Filters', () => { 'appId': null, 'name': processFilter.edit_icon, 'icon': 'glyphicon-random', - 'filter': {'sort': 'created-desc', 'name': '', 'state': 'running'} + 'filter': { 'sort': 'created-desc', 'name': '', 'state': 'running' } }); filterId = customProcessFilter.id; @@ -183,7 +183,7 @@ describe('New Process Filters', () => { 'appId': null, 'name': processFilter.edit_icon, 'icon': 'glyphicon-cloud', - 'filter': {'sort': 'created-desc', 'name': '', 'state': 'running'} + 'filter': { 'sort': 'created-desc', 'name': '', 'state': 'running' } }); }); @@ -220,7 +220,7 @@ describe('New Process Filters', () => { 'appId': null, 'name': processFilter.deleted, 'icon': 'glyphicon-random', - 'filter': {'sort': 'created-desc', 'name': '', 'state': 'running'} + 'filter': { 'sort': 'created-desc', 'name': '', 'state': 'running' } }); filterId = customProcessFilter.id; diff --git a/e2e/process-services/custom_process_filters_sorting.e2e.ts b/e2e/process-services/custom_process_filters_sorting.e2e.ts index 7ea85eaf91..d5b11a2086 100644 --- a/e2e/process-services/custom_process_filters_sorting.e2e.ts +++ b/e2e/process-services/custom_process_filters_sorting.e2e.ts @@ -17,10 +17,10 @@ import { browser } from 'protractor'; -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); -import ProcessFiltersPage = require('../pages/adf/process_services/processFiltersPage.js'); -import FiltersPage = require('../pages/adf/process_services/filtersPage.js'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import ProcessFiltersPage = require('../pages/adf/process_services/processFiltersPage'); +import FiltersPage = require('../pages/adf/process_services/filtersPage'); import TestConfig = require('../test.config'); import resources = require('../util/resources'); diff --git a/e2e/process-services/dynamic_table_date_picker.e2e.ts b/e2e/process-services/dynamic_table_date_picker.e2e.ts index 63405c879b..dff3aebd55 100644 --- a/e2e/process-services/dynamic_table_date_picker.e2e.ts +++ b/e2e/process-services/dynamic_table_date_picker.e2e.ts @@ -15,11 +15,11 @@ * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); -import ProcessFiltersPage = require('../pages/adf/process_services/processFiltersPage.js'); -import AppNavigationBarPage = require('../pages/adf/process_services/appNavigationBarPage'); -import DynamicTable = require('../pages/adf/process_services/widgets/DynamicTable'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import ProcessFiltersPage = require('../pages/adf/process_services/processFiltersPage'); +import { AppNavigationBarPage } from '../pages/adf/process_services/appNavigationBarPage'; +import { DynamicTable } from '../pages/adf/process_services/widgets/dynamicTable'; import TestConfig = require('../test.config'); import resources = require('../util/resources'); diff --git a/e2e/process-services/empty_process_list_component.e2e.ts b/e2e/process-services/empty_process_list_component.e2e.ts index 3928cd8ae5..f06dfc39e9 100644 --- a/e2e/process-services/empty_process_list_component.e2e.ts +++ b/e2e/process-services/empty_process_list_component.e2e.ts @@ -17,9 +17,9 @@ import TestConfig = require('../test.config'); import resources = require('../util/resources'); -import LoginPage = require('../pages/adf/loginPage'); +import { LoginPage } from '../pages/adf/loginPage'; import NavigationBarPage = require('../pages/adf/navigationBarPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; import ProcessFiltersPage = require('../pages/adf/process_services/processFiltersPage'); import ProcessDetailsPage = require('../pages/adf/process_services/processDetailsPage'); import ProcessListPage = require('../pages/adf/process_services/processListPage'); diff --git a/e2e/process-services/form_widgets_component.e2e.ts b/e2e/process-services/form_widgets_component.e2e.ts index 1db7efc864..feafa74975 100644 --- a/e2e/process-services/form_widgets_component.e2e.ts +++ b/e2e/process-services/form_widgets_component.e2e.ts @@ -15,10 +15,10 @@ * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); -import TasksPage = require('../pages/adf/process_services/tasksPage'); -import Widget = require('../pages/adf/process_services/widgets/widget'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import { TasksPage } from '../pages/adf/process_services/tasksPage'; +import { Widget } from '../pages/adf/process_services/widgets/widget'; import CONSTANTS = require('../util/constants'); @@ -28,12 +28,12 @@ import Task = require('../models/APS/Task'); import TestConfig = require('../test.config'); import resources = require('../util/resources'); -let formInstance = new FormDefinitionModel(); - import AlfrescoApi = require('alfresco-js-api-node'); import { AppsActions } from '../actions/APS/apps.actions'; import { UsersActions } from '../actions/users.actions'; +let formInstance = new FormDefinitionModel(); + describe('Form widgets', () => { let loginPage = new LoginPage(); diff --git a/e2e/process-services/pagination_processlist_addingProcesses.e2e.ts b/e2e/process-services/pagination_processlist_addingProcesses.e2e.ts index cdbdce2745..90abbda5e6 100644 --- a/e2e/process-services/pagination_processlist_addingProcesses.e2e.ts +++ b/e2e/process-services/pagination_processlist_addingProcesses.e2e.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; import PaginationPage = require('../pages/adf/paginationPage'); import ProcessFiltersPage = require('../pages/adf/process_services/processFiltersPage'); import ProcessDetailsPage = require('../pages/adf/process_services/processDetailsPage'); diff --git a/e2e/process-services/pagination_tasklist_addingTasks.e2e.ts b/e2e/process-services/pagination_tasklist_addingTasks.e2e.ts index 741231e505..c2ea68cc6b 100644 --- a/e2e/process-services/pagination_tasklist_addingTasks.e2e.ts +++ b/e2e/process-services/pagination_tasklist_addingTasks.e2e.ts @@ -15,9 +15,9 @@ * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); -import TasksPage = require('../pages/adf/process_services/tasksPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import { TasksPage } from '../pages/adf/process_services/tasksPage'; import PaginationPage = require('../pages/adf/paginationPage'); import CONSTANTS = require('../util/constants'); diff --git a/e2e/process-services/people_component.e2e.ts b/e2e/process-services/people_component.e2e.ts index 3fc139c4a9..4dbd624e34 100644 --- a/e2e/process-services/people_component.e2e.ts +++ b/e2e/process-services/people_component.e2e.ts @@ -15,9 +15,9 @@ * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); -import TasksPage = require('../pages/adf/process_services/tasksPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import { TasksPage } from '../pages/adf/process_services/tasksPage'; import CONSTANTS = require('../util/constants'); diff --git a/e2e/process-services/process_attachmentList_actionMenu.e2e.ts b/e2e/process-services/process_attachmentList_actionMenu.e2e.ts index 695c3f7356..2b968ecbef 100644 --- a/e2e/process-services/process_attachmentList_actionMenu.e2e.ts +++ b/e2e/process-services/process_attachmentList_actionMenu.e2e.ts @@ -15,16 +15,16 @@ * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); -import ProcessFiltersPage = require('../pages/adf/process_services/processFiltersPage.js'); -import ProcessDetailsPage = require('../pages/adf/process_services/processDetailsPage.js'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import ProcessFiltersPage = require('../pages/adf/process_services/processFiltersPage'); +import ProcessDetailsPage = require('../pages/adf/process_services/processDetailsPage'); import { AttachmentListPage } from '../pages/adf/process_services/attachmentListPage'; import { ViewerPage } from '../pages/adf/viewerPage'; import TestConfig = require('../test.config'); import resources = require('../util/resources'); -import Util = require('../util/util.js'); +import Util = require('../util/util'); import path = require('path'); diff --git a/e2e/process-services/process_filters_component.e2e.ts b/e2e/process-services/process_filters_component.e2e.ts index 2ce219762a..b7857df11b 100644 --- a/e2e/process-services/process_filters_component.e2e.ts +++ b/e2e/process-services/process_filters_component.e2e.ts @@ -17,12 +17,12 @@ import TestConfig = require('../test.config'); import resources = require('../util/resources'); -import LoginPage = require('../pages/adf/loginPage'); +import { LoginPage } from '../pages/adf/loginPage'; import NavigationBarPage = require('../pages/adf/navigationBarPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; import StartProcessPage = require('../pages/adf/process_services/startProcessPage'); import ProcessFiltersPage = require('../pages/adf/process_services/processFiltersPage'); -import AppNavigationBarPage = require('../pages/adf/process_services/appNavigationBarPage'); +import { AppNavigationBarPage } from '../pages/adf/process_services/appNavigationBarPage'; import ProcessDetailsPage = require('../pages/adf/process_services/processDetailsPage'); import AlfrescoApi = require('alfresco-js-api-node'); diff --git a/e2e/process-services/processlist_pagination.e2e.ts b/e2e/process-services/processlist_pagination.e2e.ts index f2ca5bc2e2..f6da6c1dd8 100644 --- a/e2e/process-services/processlist_pagination.e2e.ts +++ b/e2e/process-services/processlist_pagination.e2e.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; import PaginationPage = require('../pages/adf/paginationPage'); import ProcessFiltersPage = require('../pages/adf/process_services/processFiltersPage'); import ProcessDetailsPage = require('../pages/adf/process_services/processDetailsPage'); diff --git a/e2e/process-services/sort_tasklist_pagination.e2e.ts b/e2e/process-services/sort_tasklist_pagination.e2e.ts index 67a44e9efc..34146b3918 100644 --- a/e2e/process-services/sort_tasklist_pagination.e2e.ts +++ b/e2e/process-services/sort_tasklist_pagination.e2e.ts @@ -15,9 +15,9 @@ * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); -import TasksPage = require('../pages/adf/process_services/tasksPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import { TasksPage } from '../pages/adf/process_services/tasksPage'; import PaginationPage = require('../pages/adf/paginationPage'); import CONSTANTS = require('../util/constants'); diff --git a/e2e/process-services/standalone_task.e2e.ts b/e2e/process-services/standalone_task.e2e.ts index 3069b272e3..6eb7865fc2 100644 --- a/e2e/process-services/standalone_task.e2e.ts +++ b/e2e/process-services/standalone_task.e2e.ts @@ -17,9 +17,9 @@ import { browser } from 'protractor'; -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); -import TasksPage = require('../pages/adf/process_services/tasksPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import { TasksPage } from '../pages/adf/process_services/tasksPage'; import CONSTANTS = require('../util/constants'); diff --git a/e2e/process-services/start_process_component.e2e.ts b/e2e/process-services/start_process_component.e2e.ts index ecf7ff123c..bed2ce1bce 100644 --- a/e2e/process-services/start_process_component.e2e.ts +++ b/e2e/process-services/start_process_component.e2e.ts @@ -19,12 +19,12 @@ import Util = require('../util/util'); import TestConfig = require('../test.config'); import resources = require('../util/resources'); import CONSTANTS = require('../util/constants'); -import LoginPage = require('../pages/adf/loginPage'); +import { LoginPage } from '../pages/adf/loginPage'; import NavigationBarPage = require('../pages/adf/navigationBarPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; import StartProcessPage = require('../pages/adf/process_services/startProcessPage'); import ProcessFiltersPage = require('../pages/adf/process_services/processFiltersPage'); -import AppNavigationBarPage = require('../pages/adf/process_services/appNavigationBarPage'); +import { AppNavigationBarPage } from '../pages/adf/process_services/appNavigationBarPage'; import ProcessDetailsPage = require('../pages/adf/process_services/processDetailsPage'); import { AttachmentListPage } from '../pages/adf/process_services/attachmentListPage'; import { AppsActions } from '../actions/APS/apps.actions'; diff --git a/e2e/process-services/start_task_custom_app.e2e.ts b/e2e/process-services/start_task_custom_app.e2e.ts index 4324775501..d08b335de3 100644 --- a/e2e/process-services/start_task_custom_app.e2e.ts +++ b/e2e/process-services/start_task_custom_app.e2e.ts @@ -17,11 +17,11 @@ import { by } from 'protractor'; -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); -import TasksPage = require('../pages/adf/process_services/tasksPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import { TasksPage } from '../pages/adf/process_services/tasksPage'; import { AttachmentListPage } from '../pages/adf/process_services/attachmentListPage'; -import AppNavigationBarPage = require('../pages/adf/process_services/appNavigationBarPage'); +import { AppNavigationBarPage } from '../pages/adf/process_services/appNavigationBarPage'; import Task = require('../models/APS/Task'); import Tenant = require('../models/APS/Tenant'); @@ -91,24 +91,54 @@ describe('Start Task - Custom App', () => { }); it('[C263942] Modifying task', () => { - processServicesPage.goToProcessServices().goToApp(appModel.name).clickTasksButton(); - taskPage.filtersPage().goToFilter(CONSTANTS.TASKFILTERS.MY_TASKS); - taskPage.createNewTask().addName(tasks[0]) + processServicesPage + .goToProcessServices() + .goToApp(appModel.name) + .clickTasksButton(); + + taskPage + .filtersPage() + .goToFilter(CONSTANTS.TASKFILTERS.MY_TASKS); + + taskPage + .createNewTask() + .addName(tasks[0]) .addForm(app.formName).clickStartButton() .then(() => { - taskPage.tasksListPage().checkTaskIsDisplayedInTasksList(tasks[0]); - taskPage.taskDetails().clickInvolvePeopleButton() + taskPage + .tasksListPage() + .checkTaskIsDisplayedInTasksList(tasks[0]); + + taskPage + .taskDetails() + .clickInvolvePeopleButton() .typeUser(assigneeUserModel.firstName + ' ' + assigneeUserModel.lastName) .selectUserToInvolve(assigneeUserModel.firstName + ' ' + assigneeUserModel.lastName) .checkUserIsSelected(assigneeUserModel.firstName + ' ' + assigneeUserModel.lastName); - taskPage.taskDetails().clickAddInvolvedUserButton(); - expect(taskPage.taskDetails().getInvolvedUserEmail(assigneeUserModel.firstName + ' ' + assigneeUserModel.lastName)) - .toEqual(assigneeUserModel.email); - taskPage.taskDetails().selectActivityTab().addComment(firstComment) + + taskPage + .taskDetails() + .clickAddInvolvedUserButton(); + + expect(taskPage.taskDetails().getInvolvedUserEmail(assigneeUserModel.firstName + ' ' + assigneeUserModel.lastName)).toEqual(assigneeUserModel.email); + + taskPage + .taskDetails() + .selectActivityTab() + .addComment(firstComment) .checkCommentIsDisplayed(firstComment); - taskPage.clickOnAddChecklistButton().addName(firstChecklist).clickCreateChecklistButton(); - taskPage.checkChecklistIsDisplayed(firstChecklist); - taskPage.taskDetails().selectDetailsTab(); + + taskPage + .clickOnAddChecklistButton() + .addName(firstChecklist) + .clickCreateChecklistButton(); + + taskPage + .checkChecklistIsDisplayed(firstChecklist); + + taskPage + .taskDetails() + .selectDetailsTab(); }); }); diff --git a/e2e/process-services/start_task_task_app.e2e.ts b/e2e/process-services/start_task_task_app.e2e.ts index 749e60b5a3..ac62f8ab3c 100644 --- a/e2e/process-services/start_task_task_app.e2e.ts +++ b/e2e/process-services/start_task_task_app.e2e.ts @@ -17,11 +17,11 @@ import { by } from 'protractor'; -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); -import TasksPage = require('../pages/adf/process_services/tasksPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import { TasksPage } from '../pages/adf/process_services/tasksPage'; import { AttachmentListPage } from '../pages/adf/process_services/attachmentListPage'; -import AppNavigationBarPage = require('../pages/adf/process_services/appNavigationBarPage'); +import { AppNavigationBarPage } from '../pages/adf/process_services/appNavigationBarPage'; import CONSTANTS = require('../util/constants'); diff --git a/e2e/process-services/task-audit.e2e.ts b/e2e/process-services/task-audit.e2e.ts index 17841e9619..58d453e060 100644 --- a/e2e/process-services/task-audit.e2e.ts +++ b/e2e/process-services/task-audit.e2e.ts @@ -15,9 +15,9 @@ * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); -import TasksPage = require('../pages/adf/process_services/tasksPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import { TasksPage } from '../pages/adf/process_services/tasksPage'; import CONSTANTS = require('../util/constants'); diff --git a/e2e/process-services/task_attachmentList_actionMenu.e2e.ts b/e2e/process-services/task_attachmentList_actionMenu.e2e.ts index 10030143dc..820f491ec4 100644 --- a/e2e/process-services/task_attachmentList_actionMenu.e2e.ts +++ b/e2e/process-services/task_attachmentList_actionMenu.e2e.ts @@ -17,9 +17,9 @@ import { browser } from 'protractor'; -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); -import TasksPage = require('../pages/adf/process_services/tasksPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import { TasksPage } from '../pages/adf/process_services/tasksPage'; import { AttachmentListPage } from '../pages/adf/process_services/attachmentListPage'; import { ViewerPage } from '../pages/adf/viewerPage'; @@ -27,7 +27,7 @@ import CONSTANTS = require('../util/constants'); import TestConfig = require('../test.config'); import resources = require('../util/resources'); -import Util = require('../util/util.js'); +import Util = require('../util/util'); import path = require('path'); import fs = require('fs'); diff --git a/e2e/process-services/task_details_form.e2e.ts b/e2e/process-services/task_details_form.e2e.ts index a05711d1ca..1f007a69c9 100644 --- a/e2e/process-services/task_details_form.e2e.ts +++ b/e2e/process-services/task_details_form.e2e.ts @@ -18,8 +18,8 @@ import TestConfig = require('../test.config'); import Util = require('../util/util'); -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; import TasksListPage = require('../pages/adf/process_services/tasksListPage'); import { TaskDetailsPage } from '../pages/adf/process_services/taskDetailsPage'; diff --git a/e2e/process-services/task_filters_component.e2e.ts b/e2e/process-services/task_filters_component.e2e.ts index 49fc6ad2e2..f0cbd95cf2 100644 --- a/e2e/process-services/task_filters_component.e2e.ts +++ b/e2e/process-services/task_filters_component.e2e.ts @@ -18,14 +18,14 @@ import TestConfig = require('../test.config'); import resources = require('../util/resources'); -import LoginPage = require('../pages/adf/loginPage'); +import { LoginPage } from '../pages/adf/loginPage'; import NavigationBarPage = require('../pages/adf/navigationBarPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); -import TasksPage = require('../pages/adf/process_services/tasksPage'); +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import { TasksPage } from '../pages/adf/process_services/tasksPage'; import TasksListPage = require('../pages/adf/process_services/tasksListPage'); import TaskFiltersPage = require('../pages/adf/process_services/taskFiltersPage'); import { TaskDetailsPage } from '../pages/adf/process_services/taskDetailsPage'; -import AppNavigationBarPage = require('../pages/adf/process_services/appNavigationBarPage'); +import { AppNavigationBarPage } from '../pages/adf/process_services/appNavigationBarPage'; import { AppSettingsToggles } from '../pages/adf/process_services/dialog/appSettingsToggles'; import AlfrescoApi = require('alfresco-js-api-node'); diff --git a/e2e/process-services/task_filters_sorting.e2e.ts b/e2e/process-services/task_filters_sorting.e2e.ts index 852de1c7ce..c78d675258 100644 --- a/e2e/process-services/task_filters_sorting.e2e.ts +++ b/e2e/process-services/task_filters_sorting.e2e.ts @@ -17,10 +17,10 @@ import TestConfig = require('../test.config'); import resources = require('../util/resources'); -import LoginPage = require('../pages/adf/loginPage'); +import { LoginPage } from '../pages/adf/loginPage'; import NavigationBarPage = require('../pages/adf/navigationBarPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); -import TasksPage = require('../pages/adf/process_services/tasksPage'); +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import { TasksPage } from '../pages/adf/process_services/tasksPage'; import TasksListPage = require('../pages/adf/process_services/tasksListPage'); import TaskFiltersPage = require('../pages/adf/process_services/taskFiltersPage'); import { TaskDetailsPage } from '../pages/adf/process_services/taskDetailsPage'; diff --git a/e2e/process-services/task_list_pagination.e2e.ts b/e2e/process-services/task_list_pagination.e2e.ts index df36849c5b..eaf06e5962 100644 --- a/e2e/process-services/task_list_pagination.e2e.ts +++ b/e2e/process-services/task_list_pagination.e2e.ts @@ -15,9 +15,9 @@ * limitations under the License. */ -import LoginPage = require('../pages/adf/loginPage'); -import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); -import TasksPage = require('../pages/adf/process_services/tasksPage'); +import { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import { TasksPage } from '../pages/adf/process_services/tasksPage'; import PaginationPage = require('../pages/adf/paginationPage'); import CONSTANTS = require('../util/constants'); diff --git a/e2e/util/util.js b/e2e/util/util.js index 1a68346796..6b8becf441 100644 --- a/e2e/util/util.js +++ b/e2e/util/util.js @@ -22,7 +22,6 @@ var path = require('path'); var until = protractor.ExpectedConditions; var TestConfig = require('../test.config'); var moment = require('moment'); -var remote = require('selenium-webdriver/remote'); var DEFAULT_TIMEOUT = parseInt(TestConfig.main.timeout); /** @@ -35,8 +34,6 @@ var DEFAULT_TIMEOUT = parseInt(TestConfig.main.timeout); * creates an absolute path string if multiple file uploads are required */ exports.uploadParentFolder = function (filePath) { - browser.setFileDetector(new remote.FileDetector()); - var parentFolder = path.resolve(path.join(__dirname, 'test')); return path.resolve(path.join(parentFolder, filePath)); }; diff --git a/lib/content-services/tag/tag-node-list.component.html b/lib/content-services/tag/tag-node-list.component.html index 016c479377..4e9e9019c6 100644 --- a/lib/content-services/tag/tag-node-list.component.html +++ b/lib/content-services/tag/tag-node-list.component.html @@ -1,8 +1,9 @@ - + {{currentEntry.entry.tag}} - + cancel + diff --git a/lib/process-services/task-list/components/checklist.component.html b/lib/process-services/task-list/components/checklist.component.html index 413dec984d..4d253fe45f 100644 --- a/lib/process-services/task-list/components/checklist.component.html +++ b/lib/process-services/task-list/components/checklist.component.html @@ -5,18 +5,19 @@ -
- + {{check.name}} - + cancel + @@ -30,7 +31,8 @@

New Check

- + diff --git a/protractor.conf.js b/protractor.conf.js index eabb9c4852..a5dddc0f33 100644 --- a/protractor.conf.js +++ b/protractor.conf.js @@ -21,7 +21,6 @@ var BROWSER_RUN = process.env.BROWSER_RUN; var FOLDER = process.env.FOLDER || ''; var SELENIUM_SERVER = process.env.SELENIUM_SERVER || ''; var DIRECT_CONNECCT = SELENIUM_SERVER ? false : true; -var NAME_TEST = process.env.NAME_TEST ? true : false var specsToRun = './**/' + FOLDER + '**/*.e2e.ts'; @@ -204,7 +203,8 @@ exports.config = { null, { 'name': file.name, - 'nodeType': 'cm:content' + 'nodeType': 'cm:content', + 'autoRename' : true } ); } @@ -236,7 +236,7 @@ exports.config = { 'overwrite': true }); } catch (error) { - console.log('Folder report already present' + error); + // console.log('Folder report already present' + error); reportFolder = await alfrescoJsApi.nodes.getNode('-my-', { @@ -257,7 +257,8 @@ exports.config = { null, { 'name': reportFile.name, - 'nodeType': 'cm:content' + 'nodeType': 'cm:content', + 'autoRename' : true } ); diff --git a/scripts/download-build-in-cs.js b/scripts/download-build-in-cs.js index f722781e4b..a59719cd37 100755 --- a/scripts/download-build-in-cs.js +++ b/scripts/download-build-in-cs.js @@ -44,8 +44,12 @@ unzipRetry = (tentativeNumber, outputFolder, url) => { let oldFolder = path.join(__dirname, `../demo-shell/demo.zip`) let newFolder = path.join(__dirname, `../demo-shell/${outputFolder}`) + if (!fs.existsSync(path.join(__dirname, `../demo-shell/dist`))) { + fs.mkdirSync(path.join(__dirname, `../demo-shell/dist`)); + } + fs.rename(oldFolder, newFolder, (err) => { - console.log('renamed complete'); + console.log('renamed complete '); }); if (program.baseHref) { @@ -92,7 +96,7 @@ async function main() { console.log('Download zip'); - let outputFolder = program.baseHref ? program.baseHref : 'dist'; + let outputFolder = program.baseHref ? path.join('dist', program.baseHref) : 'dist'; unzipRetry(0, outputFolder, url); }