[ACA-3269]Move notificationPage to adf testing package (#5687)

* Move notificationPage to adf testing package

* Fix lint

* Fix test

* Fix test

* Wait for snackbar to be closed in the tests

* Fix notification tests
This commit is contained in:
Cristina Jalba
2020-05-13 01:09:55 +03:00
committed by GitHub
parent f5fe125c9e
commit 24786b54e3
4 changed files with 86 additions and 30 deletions

View File

@@ -18,14 +18,14 @@
import { LoginPage } from '@alfresco/adf-testing';
import { AcsUserModel } from '../models/ACS/acs-user.model';
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
import { NotificationPage } from '../pages/adf/notification.page';
import { NotificationDemoPage } from '../pages/adf/demo-shell/notification.page';
import { browser } from 'protractor';
import { NavigationBarPage } from '../pages/adf/navigation-bar.page';
describe('Notifications Component', () => {
const loginPage = new LoginPage();
const notificationPage = new NotificationPage();
const notificationPage = new NotificationDemoPage();
const navigationBarPage = new NavigationBarPage();
const acsUser = new AcsUserModel();
@@ -55,53 +55,55 @@ describe('Notifications Component', () => {
});
afterEach(async () => {
await notificationPage.waitForSnackBarToClose();
await browser.executeScript(`document.querySelector('button[data-automation-id="notification-custom-dismiss-button"]').click();`);
await notificationPage.enterDurationField(3000);
});
it('[C279977] Should show notification when the message is not empty and button is clicked', async () => {
await notificationPage.enterMessageField('Notification test');
await notificationPage.clickNotificationButton();
await notificationPage.checkNotificationSnackBarIsDisplayedWithMessage('Notification test');
});
it('[C279979] Should not show notification when the message is empty and button is clicked', async () => {
await notificationPage.clearMessage();
await notificationPage.clickNotificationButton();
await notificationPage.checkNotificationSnackBarIsNotDisplayed();
await expect(await notificationPage.isNotificationSnackBarDisplayed()).toEqual(false);
});
it('[C279977] Should show notification when the message is not empty and button is clicked', async () => {
await notificationPage.enterMessageField('test');
await notificationPage.clickNotificationButton();
await expect(await notificationPage.getSnackBarMessage()).toEqual('test');
});
it('[C279978] Should show notification with action when the message is not empty and button is clicked', async () => {
await notificationPage.enterMessageField('Notification test');
await notificationPage.enterMessageField('test');
await notificationPage.clickActionToggle();
await notificationPage.clickNotificationButton();
await notificationPage.checkNotificationSnackBarIsDisplayedWithMessage('Notification test');
await expect(await notificationPage.getSnackBarMessage()).toEqual('test');
await notificationPage.clickActionButton();
await notificationPage.checkActionEvent();
await notificationPage.clickActionToggle();
});
it('[C279981] Should show notification with action when the message is not empty and custom configuration button is clicked', async () => {
await notificationPage.enterMessageField('Notification test');
await notificationPage.enterMessageField('test');
await notificationPage.clickNotificationButton();
await notificationPage.checkNotificationSnackBarIsDisplayed();
await expect(await notificationPage.isNotificationSnackBarDisplayed()).toEqual(true);
});
it('[C279987] Should show custom notification during a limited time when a duration is added', async () => {
await notificationPage.enterMessageField('Notification test');
await notificationPage.enterMessageField('test');
await notificationPage.enterDurationField(1000);
await notificationPage.clickNotificationButton();
await notificationPage.checkNotificationSnackBarIsDisplayed();
await expect(await notificationPage.isNotificationSnackBarDisplayed()).toEqual(true);
await browser.sleep(2000);
await notificationPage.checkNotificationSnackBarIsNotDisplayed();
await expect(await notificationPage.isNotificationSnackBarDisplayed()).toEqual(false);
});
it('[C280000] Should show notification with action when the message is not empty and custom button is clicked', async () => {
await notificationPage.enterMessageField('Notification test');
await notificationPage.enterMessageField('test');
await notificationPage.clickActionToggle();
await notificationPage.clickNotificationButton();
await notificationPage.checkNotificationSnackBarIsDisplayedWithMessage('Notification test');
await notificationPage.checkNotificationSnackBarIsNotDisplayed();
await expect(await notificationPage.isNotificationSnackBarDisplayed()).toEqual(true);
await expect(await notificationPage.getSnackBarMessage()).toEqual('test');
await notificationPage.waitForSnackBarToClose();
await notificationPage.clickNotificationButton();
await notificationPage.clickActionButton();
await notificationPage.checkActionEvent();
@@ -109,7 +111,7 @@ describe('Notifications Component', () => {
});
it('[C280001] Should meet configuration when a custom notification is set', async () => {
await notificationPage.enterMessageField('Notification test');
await notificationPage.enterMessageField('test');
await notificationPage.enterDurationField(1000);
await notificationPage.selectHorizontalPosition('Right');
await notificationPage.selectVerticalPosition('Top');

View File

@@ -16,9 +16,11 @@
*/
import { element, by, browser, ElementFinder } from 'protractor';
import { BrowserVisibility, BrowserActions, DropdownPage } from '@alfresco/adf-testing';
import { BrowserVisibility, BrowserActions, DropdownPage, SnackbarPage } from '@alfresco/adf-testing';
export class NotificationPage {
export class NotificationDemoPage {
snackbarPage = new SnackbarPage();
messageField: ElementFinder = element(by.css('input[data-automation-id="notification-message"]'));
durationField: ElementFinder = element(by.css('input[data-automation-id="notification-duration"]'));
@@ -44,17 +46,16 @@ export class NotificationPage {
return BrowserActions.getText(this.notificationConfig);
}
async checkNotificationSnackBarIsDisplayed(): Promise<void> {
await BrowserVisibility.waitUntilElementIsVisible(this.notificationSnackBar);
async isNotificationSnackBarDisplayed(): Promise<boolean> {
return this.snackbarPage.isNotificationSnackBarDisplayed();
}
async checkNotificationSnackBarIsDisplayedWithMessage(message): Promise<void> {
const notificationSnackBarMessage: ElementFinder = element(by.cssContainingText('simple-snack-bar', message));
await BrowserVisibility.waitUntilElementIsVisible(notificationSnackBarMessage);
async getSnackBarMessage(): Promise<string> {
return this.snackbarPage.getSnackBarMessage();
}
async checkNotificationSnackBarIsNotDisplayed(): Promise<void> {
await BrowserVisibility.waitUntilElementIsNotVisible(this.notificationSnackBar);
async waitForSnackBarToClose(): Promise<void> {
await this.snackbarPage.waitForSnackBarToClose();
}
async enterMessageField(text): Promise<void> {
@@ -95,6 +96,7 @@ export class NotificationPage {
}
async clearMessage(): Promise<void> {
await BrowserActions.clearSendKeys(this.messageField, '');
await BrowserActions.click(this.messageField);
await BrowserActions.clearWithBackSpace(this.messageField);
}
}

View File

@@ -30,3 +30,4 @@ export * from './card-view/public-api';
export * from './viewer.page';
export * from './config-editor-page';
export * from './about.page';
export * from './snackbar.page';

View File

@@ -0,0 +1,51 @@
/*!
* @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, ElementFinder } from 'protractor';
import { BrowserVisibility } from '../utils/browser-visibility';
import { Logger } from '../utils/logger';
export class SnackbarPage {
notificationSnackBar: ElementFinder = element(by.css('simple-snack-bar span'));
snackBarContainerCss = by.css('.mat-snack-bar-container');
async waitForSnackBarToAppear() {
return BrowserVisibility.waitUntilElementIsVisible(element(this.snackBarContainerCss), 20000,
'snackbar did not appear'
);
}
async waitForSnackBarToClose() {
return BrowserVisibility.waitUntilElementIsNotVisible(element(this.snackBarContainerCss), 20000);
}
async getSnackBarMessage(): Promise<string> {
await this.waitForSnackBarToAppear();
return this.notificationSnackBar.getText();
}
async isNotificationSnackBarDisplayed(): Promise<boolean> {
try {
await BrowserVisibility.waitUntilElementIsVisible(this.notificationSnackBar);
return true;
} catch {
Logger.error(`Snackbar is not displayed `);
return false;
}
}
}