/*! * @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 { element, by, browser, $, $$ } from 'protractor'; import { BrowserVisibility, BrowserActions, DropdownPage, SnackbarPage } from '@alfresco/adf-testing'; export class NotificationDemoPage { snackbarPage = new SnackbarPage(); messageField = $('input[data-automation-id="notification-message"]'); durationField = $('input[data-automation-id="notification-duration"]'); actionToggle = $('mat-slide-toggle[data-automation-id="notification-action-toggle"]'); notificationSnackBar = $$('simple-snack-bar').first(); actionOutput = $('div[data-automation-id="notification-action-output"]'); notificationsPage = $('.app-sidenav-link[data-automation-id="Notifications"]'); notificationConfig = $('p[data-automation-id="notification-custom-object"]'); horizontalPositionDropdown = new DropdownPage($('mat-select[data-automation-id="notification-horizontal-position"]')); verticalPositionDropdown = new DropdownPage($('mat-select[data-automation-id="notification-vertical-position"]')); directionDropdown = new DropdownPage($('mat-select[data-automation-id="notification-direction"]')); async checkNotifyContains(message): Promise { await BrowserVisibility.waitUntilElementIsVisible(element.all(by.cssContainingText('simple-snack-bar', message)).first()); } async goToNotificationsPage(): Promise { await BrowserActions.click(this.notificationsPage); } getConfigObject(): Promise { return BrowserActions.getText(this.notificationConfig); } async isNotificationSnackBarDisplayed(): Promise { return this.snackbarPage.isNotificationSnackBarDisplayed(); } async getSnackBarMessage(): Promise { return this.snackbarPage.getSnackBarMessage(); } async waitForSnackBarToClose(): Promise { await this.snackbarPage.waitForSnackBarToClose(15000); } async enterMessageField(text: string): Promise { await BrowserActions.clearSendKeys(this.messageField, text); } async enterDurationField(time: number): Promise { await BrowserActions.clearSendKeys(this.durationField, time.toString()); } async selectHorizontalPosition(selectItem: string): Promise { await this.horizontalPositionDropdown.selectDropdownOption(selectItem); } async selectVerticalPosition(selectItem: string): Promise { await this.verticalPositionDropdown.selectDropdownOption(selectItem); } async selectDirection(selectItem: string): Promise { await this.directionDropdown.selectDropdownOption(selectItem); } async clickNotificationButton(): Promise { const button = $('button[data-automation-id="notification-custom-config-button"]'); await BrowserActions.click(button); } async checkActionEvent(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.actionOutput); } async clickActionToggle(): Promise { await BrowserActions.click(this.actionToggle); } async clickActionButton(): Promise { await browser.executeScript(`document.querySelector("simple-snack-bar > div > button").click();`); } async clearMessage(): Promise { await BrowserActions.click(this.messageField); await BrowserActions.clearWithBackSpace(this.messageField); } }