[ADF-4232] Fix filePreviewPage methods to reach expectations (#4668)

* [ADF-4232] Fix filePreviewPage methods to reach expectations

* [ADF-4232] Implement new methods

* Fix word spelling

* [ADF-4232] Fix e2e test and rebase

* Rebase branch

* [ADF-4232] add test for reset zoom check

- remove un-reached expects from filePreviewPage

* [ADF-4232] better naming - review changes

* [ADF-4232] no sleep(s), more timeout

* [ADF-4232] some code clean up

* [ADF-4232] some code clean up

* [ADF-4232] refactoring - renaming

* [ADF-4232] refactoring

* [ADF-4232] refactoring move expects to test - code review changes

* [ADF-4232] remove unused methods

- these already exist on viewerPage.ts

* [ADF-4232] remove duplicated code

- use viewerPage instead of filePreviewPage

* [ADF-4232] reset to original timeout in afterAll
This commit is contained in:
davidcanonieto
2019-06-03 14:24:53 +01:00
committed by Eugenio Romano
parent 7611268bd9
commit b19646d201
4 changed files with 41 additions and 194 deletions
-171
View File
@@ -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);
}
});
}
}
+19 -1
View File
@@ -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);
}