diff --git a/e2e/core/viewer/viewer-content-services-component.e2e.ts b/e2e/core/viewer/viewer-content-services-component.e2e.ts index 77eb08bc98..1045eff70a 100644 --- a/e2e/core/viewer/viewer-content-services-component.e2e.ts +++ b/e2e/core/viewer/viewer-content-services-component.e2e.ts @@ -15,8 +15,6 @@ * limitations under the License. */ -import { browser } from 'protractor'; - import { LoginPage } from '@alfresco/adf-testing'; import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import { ViewerPage } from '../../pages/adf/viewerPage'; @@ -28,8 +26,11 @@ import { AcsUserModel } from '../../models/ACS/acsUserModel'; import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { UploadActions } from '../../actions/ACS/upload.actions'; +import { browser } from 'protractor'; describe('Content Services Viewer', () => { + const originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL; + jasmine.DEFAULT_TIMEOUT_INTERVAL = 50000; const acsUser = new AcsUserModel(); const viewerPage = new ViewerPage(); @@ -126,6 +127,7 @@ describe('Content Services Viewer', () => { await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, mp4File.getId()); await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, pptFile.getId()); await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, unsupportedFile.getId()); + jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout; done(); }); @@ -134,7 +136,6 @@ describe('Content Services Viewer', () => { contentServicesPage.checkAcsContainer(); viewerPage.viewFile(pdfFile.name); - browser.driver.sleep(3000); // wait open file viewerPage.checkZoomInButtonIsDisplayed(); viewerPage.checkFileContent('1', pdfFile.firstPageText); @@ -155,7 +156,7 @@ describe('Content Services Viewer', () => { viewerPage.clickCloseButton(); }); - it('[C260040] Should be able to change pages and zoom when .pdf file is open', () => { + it('[C260040] Should be able to change pages and zoom when .pdf file is open', async () => { viewerPage.viewFile(pdfFile.name); viewerPage.checkZoomInButtonIsDisplayed(); @@ -171,15 +172,20 @@ describe('Content Services Viewer', () => { viewerPage.clearPageNumber(); viewerPage.checkPageSelectorInputIsDisplayed(''); - viewerPage.clickZoomOutButton(); + const initialWidth = await viewerPage.getCanvasWidth(); + const initialHeight = await viewerPage.getCanvasHeight(); - zoom = viewerPage.getZoom(); - viewerPage.clickZoomOutButton(); - viewerPage.checkZoomedOut(zoom); - - zoom = viewerPage.getZoom(); viewerPage.clickZoomInButton(); - viewerPage.checkZoomedIn(zoom); + expect(+(await viewerPage.getCanvasWidth())).toBeGreaterThan(+initialWidth); + expect(+(await viewerPage.getCanvasHeight())).toBeGreaterThan(+initialHeight); + + viewerPage.clickActualSize(); + expect(+(await viewerPage.getCanvasWidth())).toEqual(+initialWidth); + expect(+(await viewerPage.getCanvasHeight())).toEqual(+initialHeight); + + viewerPage.clickZoomOutButton(); + expect(+(await viewerPage.getCanvasWidth())).toBeLessThan(+initialWidth); + expect(+(await viewerPage.getCanvasHeight())).toBeLessThan(+initialHeight); viewerPage.clickCloseButton(); }); @@ -303,8 +309,6 @@ describe('Content Services Viewer', () => { it('[C260054] Should display Preview could not be loaded and viewer toolbar when opening an unsupported file', () => { viewerPage.viewFile(unsupportedFile.name); - browser.driver.sleep(3000); // wait open file - viewerPage.checkCloseButtonIsDisplayed(); viewerPage.checkFileNameIsDisplayed(unsupportedFile.name); viewerPage.checkFileThumbnailIsDisplayed(); @@ -335,8 +339,6 @@ describe('Content Services Viewer', () => { it('[C261123] Should be able to preview all pages and navigate to a page when using thumbnails', () => { viewerPage.viewFile(pdfFile.name); - browser.driver.sleep(3000); // wait open file - viewerPage.checkZoomInButtonIsDisplayed(); viewerPage.checkFileContent('1', pdfFile.firstPageText); viewerPage.checkThumbnailsBtnIsDisplayed(); @@ -393,8 +395,6 @@ describe('Content Services Viewer', () => { it('[C268901] Should need a password when opening a protected file', () => { viewerPage.viewFile(protectedFile.name); - browser.driver.sleep(3000); // wait open file - viewerPage.checkZoomInButtonIsDisplayed(); viewerPage.checkPasswordDialogIsDisplayed(); viewerPage.checkPasswordSubmitDisabledIsDisplayed(); diff --git a/e2e/pages/adf/filePreviewPage.ts b/e2e/pages/adf/filePreviewPage.ts deleted file mode 100644 index a644b9f72e..0000000000 --- a/e2e/pages/adf/filePreviewPage.ts +++ /dev/null @@ -1,171 +0,0 @@ -/*! - * @license - * Copyright 2019 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 { browser, by, element, protractor } from 'protractor'; -import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; - -export class FilePreviewPage { - - pdfTitleFromSearch = element(by.css(`span[id='adf-viewer-display-name']`)); - textLayer = element.all(by.css(`div[class='textLayer']`)).first(); - closeButton = element(by.css('button[data-automation-id="adf-toolbar-back"]')); - - waitForElements() { - BrowserVisibility.waitUntilElementIsVisible(element(by.css(`i[id='viewer-close-button']`))); - } - - viewFile(fileName) { - BrowserVisibility.waitUntilElementIsVisible(element(by.cssContainingText(`div[data-automation-id="${fileName}"]`, fileName))); - browser.actions().doubleClick(element(by.cssContainingText(`div[data-automation-id="${fileName}"]`, fileName))).perform(); - this.waitForElements(); - } - - getPDFTitleFromSearch() { - const deferred = protractor.promise.defer(); - BrowserVisibility.waitUntilElementIsVisible(this.pdfTitleFromSearch); - BrowserVisibility.waitUntilElementIsVisible(this.textLayer); - this.pdfTitleFromSearch.getText().then((result) => { - deferred.fulfill(result); - }); - return deferred.promise; - } - - closePreviewWithButton() { - BrowserActions.clickExecuteScript('button[data-automation-id="adf-toolbar-back"]'); - } - - clickZoomIn() { - const zoomInButton = element(by.css(`div[id='viewer-zoom-in-button']`)); - BrowserActions.click(zoomInButton); - } - - clickZoomOut() { - const zoomOutButton = element(by.css(`div[id='viewer-zoom-out-button']`)); - BrowserActions.click(zoomOutButton); - } - - clickActualSize() { - const actualSizeButton = element(by.css(`div[id='viewer-scale-page-button']`)); - BrowserActions.click(actualSizeButton); - } - - checkCanvasWidth() { - return element.all(by.css(`div[class='canvasWrapper'] > canvas`)).first().getAttribute(`width`).then((width) => { - return width; - }); - } - - checkCanvasHeight() { - return element.all(by.css(`div[class='canvasWrapper'] > canvas`)).first().getAttribute(`height`).then((height) => { - return height; - }); - } - - zoomIn() { - const canvasLayer = element.all(by.css(`div[class='canvasWrapper'] > canvas`)).first(); - const textLayer = element(by.css(`div[id*='pageContainer'] div[class='textLayer'] > div`)); - - BrowserVisibility.waitUntilElementIsVisible(canvasLayer); - BrowserVisibility.waitUntilElementIsVisible(textLayer); - - let actualWidth, - zoomedInWidth, - actualHeight, - zoomedInHeight; - - this.checkCanvasWidth().then((width) => { - actualWidth = width; - if (actualWidth && zoomedInWidth) { - expect(zoomedInWidth).toBeGreaterThan(actualWidth); - } - }); - - this.checkCanvasHeight().then((height) => { - actualHeight = height; - if (actualHeight && zoomedInHeight) { - expect(zoomedInHeight).toBeGreaterThan(actualHeight); - } - }); - - this.clickZoomIn(); - - this.checkCanvasWidth().then((width) => { - zoomedInWidth = width; - if (actualWidth && zoomedInWidth) { - expect(zoomedInWidth).toBeGreaterThan(actualWidth); - } - }); - - this.checkCanvasHeight().then((height) => { - zoomedInHeight = height; - if (actualHeight && zoomedInHeight) { - expect(zoomedInHeight).toBeGreaterThan(actualHeight); - } - }); - } - - actualSize() { - const canvasLayer = element.all(by.css(`div[class='canvasWrapper'] > canvas`)).first(); - const textLayer = element(by.css(`div[id*='pageContainer'] div[class='textLayer'] > div`)); - - BrowserVisibility.waitUntilElementIsVisible(canvasLayer); - BrowserVisibility.waitUntilElementIsVisible(textLayer); - - let actualWidth, - actualHeight, - zoomedWidth, - zoomedHeight, - newWidth, - newHeight; - - this.checkCanvasWidth().then((width) => { - actualWidth = width; - }); - - this.checkCanvasHeight().then((height) => { - actualHeight = height; - }); - - this.clickZoomIn(); - - this.checkCanvasWidth().then((width) => { - zoomedWidth = width; - }); - - this.checkCanvasHeight().then((height) => { - zoomedHeight = height; - }); - - this.clickActualSize(); - - this.checkCanvasWidth().then((width) => { - newWidth = width; - if (actualWidth && zoomedWidth && newWidth) { - expect(newWidth).toBeLessThan(zoomedWidth); - expect(newWidth).toEqual(actualWidth); - } - }); - - this.checkCanvasHeight().then((height) => { - newHeight = height; - if (actualHeight && zoomedHeight && newHeight) { - expect(newHeight).toBeLessThan(zoomedHeight); - expect(newHeight).toEqual(actualHeight); - } - }); - } -} diff --git a/e2e/pages/adf/viewerPage.ts b/e2e/pages/adf/viewerPage.ts index 63ba5e5aa6..56138bcc5a 100644 --- a/e2e/pages/adf/viewerPage.ts +++ b/e2e/pages/adf/viewerPage.ts @@ -63,6 +63,7 @@ export class ViewerPage { toolbar = element(by.id('adf-viewer-toolbar')); lastButton = element.all(by.css('#adf-viewer-toolbar mat-toolbar > button[data-automation-id*="adf-toolbar-"]')).last(); goBackSwitch = element(by.id('adf-switch-goback')); + canvasLayer = element.all(by.css('div[class="canvasWrapper"] > canvas')).first(); openWithSwitch = element(by.id('adf-switch-openwith')); openWith = element(by.id('adf-viewer-openwith')); @@ -120,6 +121,19 @@ export class ViewerPage { return BrowserActions.getText(this.percentage); } + getCanvasWidth() { + return this.canvasLayer.getAttribute(`width`); + } + + getCanvasHeight() { + return this.canvasLayer.getAttribute(`height`); + } + + getDisplayedFileName() { + BrowserVisibility.waitUntilElementIsVisible(this.fileName); + return this.fileName.getText(); + } + exitFullScreen() { const jsCode = 'document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen&&document.webkitExitFullscreen();'; browser.executeScript(jsCode); @@ -263,7 +277,7 @@ export class ViewerPage { } async checkFileContent(pageNumber, text) { - const allPages = element.all(by.css('div[class="canvasWrapper"] > canvas')).first(); + const allPages = this.canvasLayer; const pageLoaded = element.all(by.css('div[data-page-number="' + pageNumber + '"][data-loaded="true"]')).first(); const textLayerLoaded = element.all(by.css('div[data-page-number="' + pageNumber + '"] div[class="textLayer"]')).first(); const specificText = element.all(by.cssContainingText('div[data-page-number="' + pageNumber + '"] div[class="textLayer"]', text)).first(); @@ -402,6 +416,10 @@ export class ViewerPage { BrowserActions.click(this.zoomOutButton); } + clickActualSize() { + BrowserActions.click(this.scalePageButton); + } + clickFullScreenButton() { BrowserActions.click(this.fullScreenButton); } diff --git a/e2e/search/search-component.e2e.ts b/e2e/search/search-component.e2e.ts index 5617e25a3a..1c9c228b9b 100644 --- a/e2e/search/search-component.e2e.ts +++ b/e2e/search/search-component.e2e.ts @@ -20,7 +20,7 @@ import { browser } from 'protractor'; import { LoginPage } from '@alfresco/adf-testing'; import { SearchDialog } from '../pages/adf/dialog/searchDialog'; import { ContentServicesPage } from '../pages/adf/contentServicesPage'; -import { FilePreviewPage } from '../pages/adf/filePreviewPage'; +import { ViewerPage } from '../pages/adf/viewerPage'; import { SearchResultsPage } from '../pages/adf/searchResultsPage'; import { AcsUserModel } from '../models/ACS/acsUserModel'; @@ -51,7 +51,7 @@ describe('Search component - Search Bar', () => { const searchDialog = new SearchDialog(); const searchResultPage = new SearchResultsPage(); - const filePreviewPage = new FilePreviewPage(); + const viewerPage = new ViewerPage(); const acsUser = new AcsUserModel(); const uploadActions = new UploadActions(); @@ -209,7 +209,7 @@ describe('Search component - Search Bar', () => { expect(searchDialog.getSpecificRowsCompleteName(firstFileModel.name)).toEqual(firstFileModel.name); }); - it('[C260257] Should display content when clicking on folder from search suggestions', () => { + it('[C260257] Should display content when clicking on folder from search suggestions', async () => { searchDialog .clickOnSearchIcon() .checkSearchBarIsVisible() @@ -228,9 +228,9 @@ describe('Search component - Search Bar', () => { .resultTableContainsRow(firstFileModel.name); searchDialog.clickOnSpecificRow(firstFileModel.name); - expect(filePreviewPage.getPDFTitleFromSearch()).toEqual(firstFileModel.name); + expect(await viewerPage.getDisplayedFileName()).toEqual(firstFileModel.name); - filePreviewPage.closePreviewWithButton(); + viewerPage.clickCloseButton(); }); it('[C272801] Should display message when searching for non-existent folder', () => {