import { browser , by , element , ElementFinder } from 'protractor' ; import { BrowserActions , Logger } from '@alfresco/adf-testing' ; import { Component } from '../component' ; import { Toolbar } from '../toolbar/toolbar' ; import { waitForPresence } from '../../utilities/utils' ; export class Viewer extends Component { root = browser . $ ( 'adf-viewer' ) ; viewerLayout = this . byCss ( '.adf-viewer-layout-content' ) ; viewerContainer = this . byCss ( '.adf-viewer-content-container' ) ; closeButton = this . byCss ( '.adf-viewer-close-button' ) ; fileTitle = this . byCss ( '.adf-viewer__file-title' ) ; viewerExtensionContent = this . byCss ( 'adf-preview-extension' ) ; pdfViewerContentPages = this . allByCss ( '.adf-pdf-viewer__content .page' ) ; txtViewerContent = this . byCss ( '.adf-txt-viewer-content' ) ; toolbar = new Toolbar ( 'adf-viewer' ) ; constructor ( ancestor ? ) { super ( 'adf-viewer' , ancestor ) ; } async waitForViewerToOpen ( ) { try { await waitForPresence ( this . viewerContainer ) ; await waitForPresence ( this . viewerLayout ) ; } catch ( error ) { Logger . error ( '\n-----> catch waitForViewerToOpen <-----\n' , error ) ; } } async waitForFileTitleToBeDisplayed ( fileTitle ) { try { const fileName = this . byCssText ( '.adf-viewer__display-name' , `${ fileTitle }` ) ; await waitForPresence ( fileName ) ; } catch ( error ) { Logger . error ( '\n-----> catch waitForFileTitle <-----\n' , error ) ; } } async waitForTxtViewerToLoad ( ) { try { await this . waitForViewerToOpen ( ) ; await waitForPresence ( this . txtViewerContent ) ; } catch ( error ) { Logger . error ( '\n-----> catch waitForTxtViewerToLoad <-----\n' , error ) ; } } async isViewerOpened ( ) { return browser . isElementPresent ( this . viewerLayout ) ; } async isViewerToolbarDisplayed ( ) { return browser . isElementPresent ( this . toolbar . component ) ; } async isCloseButtonDisplayed ( ) { return browser . isElementPresent ( this . closeButton ) ; } async isFileTitleDisplayed ( ) { return browser . isElementPresent ( this . fileTitle ) ; } async getCloseButtonTooltip ( ) { return this . toolbar . getButtonTooltip ( this . closeButton ) ; } async getFileTitle ( ) { return this . fileTitle . getText ( ) ; } async isCustomContentPresent ( ) { return browser . isElementPresent ( this . viewerExtensionContent ) ; } async getComponentIdOfView ( ) { if ( await this . isCustomContentPresent ( ) ) { return this . viewerExtensionContent . getAttribute ( 'data-automation-id' ) ; } return '' ; } async isPdfViewerContentDisplayed ( ) { const count = await this . pdfViewerContentPages . count ( ) ; return count > 0 ; } async clickCloseButton ( ) { const closeButton = element ( by . css ( 'button[data-automation-id="adf-toolbar-back"]' ) ) ; await BrowserActions . click ( closeButton ) ; } }