From 79b1697fa46109207068f68368ac428715f43a10 Mon Sep 17 00:00:00 2001 From: Marouan Bentaleb <38426175+marouanbentaleb@users.noreply.github.com> Date: Thu, 25 Oct 2018 23:15:50 +0100 Subject: [PATCH] [ADF-3681] Fixing skipped tests (#3913) * [ADF-3681] Fixing skipped tests * Requested changes --- e2e/actions/drop.actions.ts | 1 - .../document_list_pagination.e2e.ts | 30 +++---- .../upload/uploader_component.e2e.ts | 34 +++---- e2e/core/theming_component.e2e.ts | 70 --------------- e2e/pages/adf/contentServicesPage.ts | 90 +++++++++---------- .../process_services/processDetailsPage.js | 17 ++++ .../start_process_component.e2e.ts | 34 ++++--- 7 files changed, 107 insertions(+), 169 deletions(-) delete mode 100644 e2e/core/theming_component.e2e.ts diff --git a/e2e/actions/drop.actions.ts b/e2e/actions/drop.actions.ts index 6034e7997f..ef063f6d97 100644 --- a/e2e/actions/drop.actions.ts +++ b/e2e/actions/drop.actions.ts @@ -15,7 +15,6 @@ * limitations under the License. */ -/* tslint:disable */ import { browser } from 'protractor'; import fs = require('fs'); 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 6e90db4074..e8101b5e9a 100644 --- a/e2e/content-services/document-list/document_list_pagination.e2e.ts +++ b/e2e/content-services/document-list/document_list_pagination.e2e.ts @@ -55,7 +55,7 @@ describe('Document List - Pagination', function () { let acsUser = new AcsUserModel(); let newFolderModel = new FolderModel({ 'name': 'newFolder' }); - let fileNames = [], nrOfFiles = 20, currentPage = 1, secondSetOfFiles, secondSetNumber = 20; + let fileNames = [], nrOfFiles = 20, currentPage = 1, secondSetOfFiles = [], secondSetNumber = 25; let folderTwoModel = new FolderModel({ 'name': 'folderTwo' }); let folderThreeModel = new FolderModel({ 'name': 'folderThree' }); @@ -81,7 +81,7 @@ describe('Document List - Pagination', function () { await uploadActions.createEmptyFiles(this.alfrescoJsApi, fileNames, newFolderUploadedModel.entry.id); - await uploadActions.createEmptyFiles(this.alfrescoJsApi, fileNames, folderThreeUploadedModel.entry.id); + await uploadActions.createEmptyFiles(this.alfrescoJsApi, secondSetOfFiles, folderThreeUploadedModel.entry.id); loginPage.loginToContentServicesUsingUserModel(acsUser); @@ -256,7 +256,7 @@ describe('Document List - Pagination', function () { expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.fifteen); }); - xit('[C91320] Pagination should preserve sorting', function () { + it('[C91320] Pagination should preserve sorting', function () { contentServicesPage.goToDocumentList(); contentServicesPage.navigateToFolder(newFolderModel.name); contentServicesPage.checkAcsContainer(); @@ -265,34 +265,34 @@ describe('Document List - Pagination', function () { paginationPage.selectItemsPerPage(itemsPerPage.twenty); contentServicesPage.checkAcsContainer(); contentServicesPage.waitForTableBody(); - contentServicesPage.getAllRowsNameColumn().then(function (list) { - expect(JSON.stringify(list) === JSON.stringify(fileNames)).toEqual(true); + contentServicesPage.getElementsDisplayed().then(function (list) { + contentServicesPage.checkElementsSortedByNameAsc(list); }); + contentServicesPage.sortByName(false); - contentServicesPage.getAllRowsNameColumn().then(function (list) { - fileNames.reverse(); - expect(JSON.stringify(list) === JSON.stringify(fileNames)).toEqual(true); + contentServicesPage.getElementsDisplayed().then(function (list) { + contentServicesPage.checkElementsSortedByNameDesc(list); }); paginationPage.selectItemsPerPage(itemsPerPage.five); contentServicesPage.checkAcsContainer(); contentServicesPage.waitForTableBody(); - contentServicesPage.getAllRowsNameColumn().then(function (list) { - expect(JSON.stringify(list) === JSON.stringify(fileNames.slice(15, 20))).toEqual(true); + contentServicesPage.getElementsDisplayed().then(function (list) { + contentServicesPage.checkElementsSortedByNameDesc(list); }); paginationPage.clickOnNextPage(); contentServicesPage.checkAcsContainer(); contentServicesPage.waitForTableBody(); - contentServicesPage.getAllRowsNameColumn().then(function (list) { - expect(JSON.stringify(list) === JSON.stringify(fileNames.slice(10, 15))).toEqual(true); + contentServicesPage.getElementsDisplayed().then(function (list) { + contentServicesPage.checkElementsSortedByNameDesc(list); }); paginationPage.selectItemsPerPage(itemsPerPage.ten); contentServicesPage.checkAcsContainer(); contentServicesPage.waitForTableBody(); - contentServicesPage.getAllRowsNameColumn().then(function (list) { - expect(JSON.stringify(list) === JSON.stringify(fileNames.slice(10, 20))).toEqual(true); + contentServicesPage.getElementsDisplayed().then(function (list) { + contentServicesPage.checkElementsSortedByNameDesc(list); }); }); @@ -312,7 +312,7 @@ describe('Document List - Pagination', function () { contentServicesPage.checkPaginationIsNotDisplayed(); }); - xit('[C260071] Items per page when having 25 files', function () { + it('[C260071] Should be able to change pagination when having 25 files', function () { currentPage = 1; contentServicesPage.goToDocumentList(); contentServicesPage.navigateToFolder(folderThreeModel.name); diff --git a/e2e/content-services/upload/uploader_component.e2e.ts b/e2e/content-services/upload/uploader_component.e2e.ts index a7e3f29cdc..a16755193d 100644 --- a/e2e/content-services/upload/uploader_component.e2e.ts +++ b/e2e/content-services/upload/uploader_component.e2e.ts @@ -110,6 +110,10 @@ describe('Upload component', () => { done(); }); + beforeEach(() => { + contentServicesPage.goToDocumentList(); + }); + afterEach(async (done) => { let nodesPromise = await contentServicesPage.getContentList().getAllNodeIdInList(); @@ -202,7 +206,17 @@ describe('Upload component', () => { contentServicesPage.checkContentIsNotDisplayed(pdfFileModel.name); }); - xit('[C272792] Should be possible to cancel upload of a big file using dialog icon', () => { + it('[C272792] Should be possible to cancel upload of a big file using row cancel icon', () => { + browser.executeScript(' setTimeout(() => {document.querySelector(\'mat-icon[class*="adf-file-uploading-row__action"]\').click();}, 3000)'); + + contentServicesPage.uploadFile(largeFile.location); + + expect(uploadDialog.getTitleText()).toEqual('Upload canceled'); + uploadDialog.clickOnCloseButton().dialogIsNotDisplayed(); + contentServicesPage.checkContentIsNotDisplayed(largeFile.name); + }); + + it('[C287790] Should be possible to cancel upload of a big file through the cancel uploads button', () => { browser.executeScript(' setTimeout(() => {document.querySelector("#adf-upload-dialog-cancel-all").click();' + 'document.querySelector("#adf-upload-dialog-cancel").click(); }, 3000)'); @@ -213,24 +227,12 @@ describe('Upload component', () => { contentServicesPage.checkContentIsNotDisplayed(largeFile.name); }); - xit('[C260169] Should be possible to cancel upload of a big file through the cancel uploads button', () => { - contentServicesPage.uploadFile(largeFile.location); - expect(uploadDialog.getTitleText()).toEqual('Uploading 0 / 1'); - expect(uploadDialog.getConfirmationDialogTitleText()).toEqual('Cancel Upload'); - expect(uploadDialog.getConfirmationDialogDescriptionText()).toEqual('Stop uploading and remove files already uploaded.'); - uploadDialog.clickOnConfirmationDialogYesButton().fileIsCancelled(largeFile.name); - expect(uploadDialog.getTitleText()).toEqual('Upload canceled'); - uploadDialog.clickOnCloseButton().dialogIsNotDisplayed(); - contentServicesPage.checkContentIsNotDisplayed(largeFile.name); - }); + it('[C272793] Should be able to cancel multiple files upload', () => { + browser.executeScript(' setTimeout(() => {document.querySelector("#adf-upload-dialog-cancel-all").click();' + + 'document.querySelector("#adf-upload-dialog-cancel").click(); }, 3000)'); - xit('[C272793] Should be able to cancel multiple files upload', () => { uploadToggles.enableMultipleFileUpload(); contentServicesPage.uploadMultipleFile([pngFileModel.location, largeFile.location]); - uploadDialog.cancelUploads(); - expect(uploadDialog.getConfirmationDialogTitleText()).toEqual('Cancel Upload'); - expect(uploadDialog.getConfirmationDialogDescriptionText()).toEqual('Stop uploading and remove files already uploaded.'); - uploadDialog.clickOnConfirmationDialogYesButton().fileIsCancelled(pngFileModel.name).fileIsCancelled(largeFile.name); expect(uploadDialog.getTitleText()).toEqual('Upload canceled'); uploadDialog.clickOnCloseButton().dialogIsNotDisplayed(); contentServicesPage.checkContentIsNotDisplayed(pngFileModel.name).checkContentIsNotDisplayed(largeFile.name); diff --git a/e2e/core/theming_component.e2e.ts b/e2e/core/theming_component.e2e.ts deleted file mode 100644 index 616ae77274..0000000000 --- a/e2e/core/theming_component.e2e.ts +++ /dev/null @@ -1,70 +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 { LoginPage } from '../pages/adf/loginPage'; -import { NavigationBarPage } from '../pages/adf/navigationBarPage'; - -import TestConfig = require('../test.config'); - -import AcsUserModel = require('../models/ACS/acsUserModel'); -import CONSTANTS = require('../util/constants'); - -import AlfrescoApi = require('alfresco-js-api-node'); - -describe('Theming component', () => { - - let navigationBarPage = new NavigationBarPage(); - let loginPage = new LoginPage(); - let acsUser = new AcsUserModel(); - - beforeAll(async (done) => { - this.alfrescoJsApi = new AlfrescoApi({ - provider: 'ECM', - hostEcm: TestConfig.adf.url - }); - - await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); - - await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser); - - loginPage.goToLoginPage(); - loginPage.waitForElements(); - - done(); - }); - - xit('Should display "Show password" icon in high contrast when a dark theme is selected', () => { - expect(loginPage.getShowPasswordIconColor()).toEqual(CONSTANTS.THEMING.DEFAULT_PASSWORD_ICON_COLOR); - expect(loginPage.getSignInButtonColor()).toEqual(CONSTANTS.THEMING.DEFAULT_LOGIN_BUTTON_COLOR); - expect(loginPage.getBackgroundColor()).toEqual(CONSTANTS.THEMING.DEFAULT_BACKGROUND_COLOR); - - loginPage.loginToContentServicesUsingUserModel(acsUser); - - navigationBarPage.clickThemeButton(); - navigationBarPage.clickOnSpecificThemeButton(CONSTANTS.THEMING.PINK_BLUE_DARK); - navigationBarPage.clickLoginButton(); - loginPage.waitForElements(); - - loginPage.enterUsername(acsUser.email); - loginPage.enterPassword(acsUser.password); - - expect(loginPage.getShowPasswordIconColor()).toEqual(CONSTANTS.THEMING.PINK_BLUE_DARK_PASSWORD_ICON_COLOR); - expect(loginPage.getSignInButtonColor()).toEqual(CONSTANTS.THEMING.PINK_BLUE_DARK_LOGIN_BUTTON_COLOR); - expect(loginPage.getBackgroundColor()).toEqual(CONSTANTS.THEMING.PINK_BLUE_DARK_BACKGROUND_COLOR); - }); - -}); diff --git a/e2e/pages/adf/contentServicesPage.ts b/e2e/pages/adf/contentServicesPage.ts index 841c1614cc..1cb05b9d15 100644 --- a/e2e/pages/adf/contentServicesPage.ts +++ b/e2e/pages/adf/contentServicesPage.ts @@ -20,11 +20,10 @@ import ContentList = require('./dialog/contentList'); import CreateFolderDialog = require('./dialog/createFolderDialog'); import TestConfig = require('../../test.config'); import { NavigationBarPage } from './navigationBarPage'; +import { by, element, protractor, $$, browser } from 'protractor'; import path = require('path'); -import { element, by, protractor, browser } from 'protractor'; - export class ContentServicesPage { contentList = new ContentList(); @@ -35,7 +34,6 @@ export class ContentServicesPage { 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"]')); @@ -62,6 +60,45 @@ export class ContentServicesPage { searchInputElement = element(by.css('input[data-automation-id="content-node-selector-search-input"')); shareNodeButton = element(by.cssContainingText('mat-icon', ' share ')); + getElementsDisplayed() { + let deferred = protractor.promise.defer(); + let fileNameLocator = by.css("div[id*='document-list-container'] div[class*='adf-datatable-row'] div[title='Display name'] span[class='adf-datatable-cell-value']"); + Util.waitUntilElementIsVisible(element.all(fileNameLocator).first()); + let initialList = []; + + element.all(fileNameLocator).each(function (item) { + item.getText().then(function (text) { + if (text !== '') { + initialList.push(text); + } + }); + }).then(function () { + deferred.fulfill(initialList); + }); + + return deferred.promise; + } + + checkElementsSortedByNameAsc(elements) { + browser.controlFlow().execute(async () => { + let numberOfElements = await this.numberOfResultsDisplayed(); + for (let i = 0; i < (numberOfElements - 1) ; i++ ) { + expect(JSON.stringify(elements[i]) <= JSON.stringify(elements[i + 1])).toEqual(true); + } + }); + return this; + } + + checkElementsSortedByNameDesc(elements) { + browser.controlFlow().execute(async () => { + let numberOfElements = await this.numberOfResultsDisplayed(); + for (let i = 0; i < (numberOfElements - 1) ; i++ ) { + expect(JSON.stringify(elements[i]) >= JSON.stringify(elements[i + 1])).toEqual(true); + } + }); + return this; + } + getContentList() { return this.contentList; } @@ -213,11 +250,6 @@ export class ContentServicesPage { return this; } - doubleClickEntireRow(folder) { - this.contentList.doubleClickEntireRow(folder); - return this; - } - clickOnCreateNewFolder() { Util.waitUntilElementIsVisible(this.createFolderButton); this.createFolderButton.click(); @@ -248,41 +280,11 @@ export class ContentServicesPage { return this; } - checkContentsAreNotDisplayed(content) { - for (let i = 0; i < content.length; i++) { - this.checkContentIsNotDisplayed(content[i]); - } - return this; - } - - checkEmptyFolderMessageIsDisplayed() { - this.contentList.checkEmptyFolderMessageIsDisplayed(); - return this; - } - - 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); @@ -339,15 +341,6 @@ export class ContentServicesPage { 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(); @@ -403,8 +396,7 @@ export class ContentServicesPage { 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; + return $$('adf-upload-drag-area adf-document-list .adf-datatable-row').count(); } checkColumnNameHeader() { diff --git a/e2e/pages/adf/process_services/processDetailsPage.js b/e2e/pages/adf/process_services/processDetailsPage.js index 6a8d58ffee..5212b9a543 100644 --- a/e2e/pages/adf/process_services/processDetailsPage.js +++ b/e2e/pages/adf/process_services/processDetailsPage.js @@ -46,6 +46,23 @@ var ProcessDetailsPage = function () { var completedTask = element(by.css('div[data-automation-id="completed-tasks"]')); var taskTitle = element(by.css("h2[class='activiti-task-details__header']")); + this.checkDetailsAreDisplayed = function () { + Util.waitUntilElementIsVisible(processStatusField); + Util.waitUntilElementIsVisible(processEndDateField); + Util.waitUntilElementIsVisible(processCategoryField); + Util.waitUntilElementIsVisible(processBusinessKeyField); + Util.waitUntilElementIsVisible(processCreatedByField); + Util.waitUntilElementIsVisible(processCreatedField); + Util.waitUntilElementIsVisible(processIdField); + Util.waitUntilElementIsVisible(processDescription); + Util.waitUntilElementIsVisible(showDiagramButton); + Util.waitUntilElementIsVisible(activeTask); + Util.waitUntilElementIsVisible(cancelProcessButton); + Util.waitUntilElementIsVisible(commentInput); + Util.waitUntilElementIsVisible(auditLogButton); + return this; + }; + this.checkProcessTitleIsDisplayed = function () { Util.waitUntilElementIsVisible(processTitle); return processTitle.getText(); diff --git a/e2e/process-services/start_process_component.e2e.ts b/e2e/process-services/start_process_component.e2e.ts index 9b1fc4272a..ab13cd543d 100644 --- a/e2e/process-services/start_process_component.e2e.ts +++ b/e2e/process-services/start_process_component.e2e.ts @@ -171,31 +171,29 @@ describe('Start Process Component', () => { startProcessPage.checkStartProcessButtonIsEnabled(); }); - xit('[C260449] Should be possible to start a process with start event', () => { + it('[C260449] Should be possible to start a process with start event', () => { processServicesPage.goToApp(app.title); appNavigationBarPage.clickProcessButton(); processFiltersPage.clickCreateProcessButton(); processFiltersPage.clickNewProcessDropdown(); startProcessPage.enterProcessName('Test'); startProcessPage.selectFromProcessDropdown(processModelWithSe); - startProcessPage.clickFormStartProcessButton() - .then(() => { - processDetailsPage.getId() - .then(function (result) { - return this.alfrescoJsApi.activiti.processApi.getProcessInstance(result); - }) - .then(function (response) { - expect(processDetailsPage.getPROCESS_STATUS()).toEqual(CONSTANTS.PROCESS_STATUS.RUNNING); - expect(processDetailsPage.getEndDate()).toEqual(CONSTANTS.PROCESS_END_DATE); - expect(processDetailsPage.getProcessCategory()).toEqual(CONSTANTS.PROCESS_CATEGORY); - expect(processDetailsPage.getBusinessKey()).toEqual(CONSTANTS.PROCESS_BUSINESS_KEY); - expect(processDetailsPage.getCreatedBy()).toEqual(response.getStartedBy().getEntireName()); - expect(processDetailsPage.getCreated()).toEqual(dateFormat(CONSTANTS.PROCESS_DATE_FORMAT)); - expect(processDetailsPage.getId()).toEqual(response.getId()); - expect(processDetailsPage.getPROCESS_DESCRIPTION()).toEqual(CONSTANTS.PROCESS_DESCRIPTION); - expect(processDetailsPage.checkProcessTitleIsDisplayed()).toEqual(response.getName()); - }); + startProcessPage.clickFormStartProcessButton(); + processDetailsPage.checkDetailsAreDisplayed(); + browser.controlFlow().execute(async () => { + let processId = await processDetailsPage.getId(); + await this.alfrescoJsApi.activiti.processApi.getProcessInstance(processId).then(function (response) { + expect(processDetailsPage.getProcessStatus()).toEqual(CONSTANTS.PROCESS_STATUS.RUNNING); + expect(processDetailsPage.getEndDate()).toEqual(CONSTANTS.PROCESS_END_DATE); + expect(processDetailsPage.getProcessCategory()).toEqual(CONSTANTS.PROCESS_CATEGORY); + expect(processDetailsPage.getBusinessKey()).toEqual(CONSTANTS.PROCESS_BUSINESS_KEY); + expect(processDetailsPage.getCreatedBy()).toEqual(`${response.startedBy.firstName} ${response.startedBy.lastName}`); + expect(processDetailsPage.getCreated()).toEqual(dateFormat(CONSTANTS.PROCESS_DATE_FORMAT)); + expect(processDetailsPage.getId()).toEqual(response.id); + expect(processDetailsPage.getProcessDescription()).toEqual(CONSTANTS.PROCESS_DESCRIPTION); + expect(processDetailsPage.checkProcessTitleIsDisplayed()).toEqual(response.name); }); + }); }); it('[C286503] Should NOT display any process definition when typing a non-existent one', () => {