[no-issue] general fix e2e and unit test (#3903)

* add missing import
remove creation folder in redirect test in main folder
fix update script
update node js-api to last alpha before to install
improve share dialog test

* update gnu

* fix notification and search e2e

* change name compatible with file name

* improve failing test to avoid cdk overlay problems

* [ADF-3561] fix Outcome not translatable

* increase sleep in user permission
checklist missing uppercase
comment possible different value in test due time

* improve document list actions

* improve document list action test

* tag refresh bbefore next test
comment possible value due the time
This commit is contained in:
Eugenio Romano
2018-10-20 18:16:44 +01:00
committed by GitHub
parent 4c9629c2d6
commit 368f949fc4
42 changed files with 225 additions and 232 deletions
@@ -113,7 +113,7 @@ describe('Comment Component', () => {
expect(commentsPage.getTotalNumberOfComments()).toEqual('Comments (1)');
expect(commentsPage.getMessage(0)).toEqual(comments.test);
expect(commentsPage.getUserName(0)).toEqual(userFullName);
expect(commentsPage.getTime(0)).toContain('ago');
expect(commentsPage.getTime(0)).toMatch(/(ago|few)/);
});
@@ -129,7 +129,7 @@ describe('Comment Component', () => {
expect(commentsPage.getTotalNumberOfComments()).toEqual('Comments (1)');
expect(commentsPage.getMessage(0)).toEqual(comments.first);
expect(commentsPage.getUserName(0)).toEqual(userFullName);
expect(commentsPage.getTime(0)).toContain('ago');
expect(commentsPage.getTime(0)).toMatch(/(ago|few)/);
});
it('[C280021] Should be able to add a multiline comment on a file', () => {
@@ -144,7 +144,7 @@ describe('Comment Component', () => {
expect(commentsPage.getTotalNumberOfComments()).toEqual('Comments (1)');
expect(commentsPage.getMessage(0)).toEqual(comments.multiline);
expect(commentsPage.getUserName(0)).toEqual(userFullName);
expect(commentsPage.getTime(0)).toContain('ago');
expect(commentsPage.getTime(0)).toMatch(/(ago|few)/);
commentsPage.addComment(comments.second);
commentsPage.checkUserIconIsDisplayed(0);
@@ -152,7 +152,7 @@ describe('Comment Component', () => {
expect(commentsPage.getTotalNumberOfComments()).toEqual('Comments (2)');
expect(commentsPage.getMessage(0)).toEqual(comments.second);
expect(commentsPage.getUserName(0)).toEqual(userFullName);
expect(commentsPage.getTime(0)).toContain('ago');
expect(commentsPage.getTime(0)).toMatch(/(ago|few)/);
});
it('[C280022] Should not be able to add an HTML or other code input into the comment input filed', () => {
@@ -167,6 +167,6 @@ describe('Comment Component', () => {
expect(commentsPage.getTotalNumberOfComments()).toEqual('Comments (1)');
expect(commentsPage.getMessage(0)).toEqual('First name: Last name:');
expect(commentsPage.getUserName(0)).toEqual(userFullName);
expect(commentsPage.getTime(0)).toContain('ago');
expect(commentsPage.getTime(0)).toMatch(/(ago|few)/);
});
});
@@ -27,7 +27,6 @@ import AcsUserModel = require('../../models/ACS/acsUserModel');
import TestConfig = require('../../test.config');
import AlfrescoApi = require('alfresco-js-api-node');
import CONSTANTS = require('../../util/constants');
import { browser, protractor } from 'protractor';
@@ -41,8 +40,6 @@ describe('Create folder directive', function () {
let contentListPage = new ContentListPage();
let acsUser = new AcsUserModel();
let consumerUser = new AcsUserModel();
let site;
beforeAll(async (done) => {
this.alfrescoJsApi = new AlfrescoApi({
@@ -53,19 +53,6 @@ describe('Document List Component - Actions', () => {
});
});
afterEach(async (done) => {
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
if (uploadedFolder) {
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, uploadedFolder.entry.id);
uploadedFolder = null;
}
if (testFileNode) {
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, testFileNode.entry.id);
testFileNode = null;
}
done();
});
describe('File Actions', () => {
let pdfUploadedNode;
@@ -87,18 +74,27 @@ describe('Document List Component - Actions', () => {
done();
});
afterEach(async (done) => {
try {
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, pdfUploadedNode.entry.id);
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, testFileNode.entry.id);
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, uploadedFolder.entry.id);
} catch (error) {
}
done();
});
it('[C213257] Should be able to copy a file', () => {
browser.driver.sleep(12000);
browser.driver.sleep(15000);
contentListPage.rightClickOnRowNamed(pdfUploadedNode.entry.name);
contentListPage.pressContextMenuActionNamed('Copy');
contentServicesPage.typeIntoNodeSelectorSearchField(folderName);
contentServicesPage.clickContentNodeSelectorResult(folderName);
contentServicesPage.clickCopyButton();
contentServicesPage.checkAcsContainer();
contentServicesPage.checkContentIsDisplayed(pdfFileModel.name);
browser.get(TestConfig.adf.url + '/files/' + uploadedFolder.entry.id);
contentServicesPage.checkAcsContainer();
contentServicesPage.doubleClickRow(uploadedFolder.entry.name);
contentServicesPage.checkContentIsDisplayed(pdfFileModel.name);
});
@@ -166,6 +162,16 @@ describe('Document List Component - Actions', () => {
done();
});
afterEach(async (done) => {
try {
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, uploadedFolder.entry.id);
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, secondUploadedFolder.entry.id);
} catch (error) {
}
done();
});
it('[C260123] Should be able to delete a folder using context menu', () => {
contentListPage.deleteContent(folderName);
contentListPage.checkContentIsNotDisplayed(folderName);
@@ -183,16 +189,14 @@ describe('Document List Component - Actions', () => {
});
it('[C260138] Should be able to copy a folder', () => {
browser.driver.sleep(12000);
browser.driver.sleep(15000);
contentListPage.copyContent(folderName);
contentServicesPage.typeIntoNodeSelectorSearchField(secondfolderName);
contentServicesPage.clickContentNodeSelectorResult(secondfolderName);
contentServicesPage.clickCopyButton();
contentServicesPage.checkAcsContainer();
contentServicesPage.checkContentIsDisplayed(folderName);
browser.get(TestConfig.adf.url + '/files/' + secondUploadedFolder.entry.id);
contentServicesPage.checkAcsContainer();
contentServicesPage.doubleClickRow(secondUploadedFolder.entry.name);
contentServicesPage.checkContentIsDisplayed(folderName);
});
@@ -46,17 +46,14 @@ describe('Notifications Component', () => {
notificationPage.goToNotificationsPage();
notificationPage.enterDurationField(6000);
notificationPage.enterDurationField(3000);
done();
});
afterEach(async (done) => {
notificationPage.enterDurationField(1);
notificationPage.clickNotificationButton();
browser.sleep(100);
notificationPage.enterDurationField(6000);
done();
afterEach( () => {
browser.executeScript(`document.querySelector('button[data-automation-id="notification-custom-dismiss-button"]').click();`);
notificationPage.enterDurationField(3000);
});
it('[C279977] Should show notification when the message is not empty and button is clicked', () => {
@@ -89,7 +89,7 @@ describe('Search Filters', () => {
});
it('[C277146] Should Show more/less buttons be hidden when inactive', () => {
browser.get(TestConfig.adf.url + '/search;q=files*');
browser.get(TestConfig.adf.url + '/search;q=*');
searchFiltersPage.checkShowLessButtonIsNotDisplayed();
searchFiltersPage.checkSizeShowMoreButtonIsDisplayed();
@@ -55,7 +55,7 @@ describe('Search component - Search Page', () => {
let searchResultPage = new SearchResultsPage();
let acsUser = new AcsUserModel();
let emptyFolderModel = new FolderModel({ 'name': Util.generateRandomString() });
let emptyFolderModel = new FolderModel({ 'name': 'search' + Util.generateRandomString() });
let firstFileModel;
let newFolderModel = new FolderModel({ 'name': 'newFolder' });
let fileNames = [], adminFileNames = [], nrOfFiles = 15, adminNrOfFiles = 5;
@@ -100,25 +100,18 @@ describe('Search component - Search Page', () => {
loginPage.loginToContentServicesUsingUserModel(acsUser);
contentServicesPage.goToDocumentList();
done();
});
it('[C260264] Should display message when no results are found', () => {
let notExistentFileName = Util.generateRandomString();
contentServicesPage.goToDocumentList();
searchDialog.checkSearchBarIsNotVisible().checkSearchIconIsVisible().clickOnSearchIcon()
.enterTextAndPressEnter(notExistentFileName);
searchResultPage.checkNoResultMessageIsDisplayed();
});
it('[C260265] Should display file previewer when opening a file from search results', () => {
contentServicesPage.goToDocumentList();
searchDialog
.checkSearchBarIsNotVisible()
.checkSearchIconIsVisible()
.clickOnSearchIcon()
.enterTextAndPressEnter(firstFileModel.name);
@@ -131,11 +124,7 @@ describe('Search component - Search Page', () => {
});
it('[C272810] Should display only files corresponding to search', () => {
contentServicesPage.goToDocumentList();
searchDialog
.checkSearchBarIsNotVisible()
.checkSearchIconIsVisible()
.clickOnSearchIcon()
.enterTextAndPressEnter(search.active.firstFile);
@@ -144,10 +133,7 @@ describe('Search component - Search Page', () => {
});
it('[C260267] Should display content when opening a folder from search results', () => {
contentServicesPage.goToDocumentList();
searchDialog.checkSearchBarIsNotVisible()
.checkSearchIconIsVisible()
searchDialog
.clickOnSearchIcon()
.enterTextAndPressEnter(emptyFolderModel.name);
@@ -160,11 +146,7 @@ describe('Search component - Search Page', () => {
});
it('[C260261] Should be able to delete a file from search results', () => {
contentServicesPage.goToDocumentList();
searchDialog
.checkSearchBarIsNotVisible()
.checkSearchIconIsVisible()
.clickOnSearchIcon()
.enterTextAndPressEnter(search.active.firstFile);
@@ -175,15 +157,13 @@ describe('Search component - Search Page', () => {
searchResultPage.checkNoResultMessageIsDisplayed();
searchResultPage.checkContentIsNotDisplayed(search.active.firstFile);
contentServicesPage.goToDocumentList();
searchDialog.checkSearchBarIsNotVisible().checkSearchIconIsVisible().clickOnSearchIcon()
.enterTextAndPressEnter(search.active.firstFile);
searchResultPage.checkNoResultMessageIsDisplayed();
});
it('[C272809] Should be able to delete a folder from search results', () => {
searchDialog.checkSearchBarIsNotVisible()
.checkSearchIconIsVisible()
searchDialog
.clickOnSearchIcon()
.enterTextAndPressEnter(emptyFolderModel.name);
@@ -198,100 +178,87 @@ describe('Search component - Search Page', () => {
searchResultPage.checkNoResultMessageIsDisplayed();
});
it('[C272803] Should be able to sort results by name (Ascending)', () => {
contentServicesPage.goToDocumentList();
describe('Sorting', () => {
searchDialog
.checkSearchBarIsNotVisible()
.checkSearchIconIsVisible()
.clickOnSearchIcon()
.enterTextAndPressEnter(search.active.base);
searchResultPage.checkContentIsDisplayed(search.active.secondFile);
searchResultPage.sortAndCheckListIsOrderedByName(true).then((result) => {
expect(result).toEqual(true);
afterEach(async (done) => {
await browser.refresh();
done();
});
it('[C272803] Should be able to sort results by name (Ascending)', () => {
searchDialog
.clickOnSearchIcon()
.enterTextAndPressEnter(search.active.base);
searchResultPage.checkContentIsDisplayed(search.active.secondFile);
searchResultPage.sortAndCheckListIsOrderedByName(true).then((result) => {
expect(result).toEqual(true);
});
});
it('[C272804] Should be able to sort results by name (Descending)', () => {
searchDialog
.clickOnSearchIcon()
.enterTextAndPressEnter(search.active.base);
searchResultPage.checkContentIsDisplayed(search.active.secondFile);
searchResultPage.sortAndCheckListIsOrderedByName(false).then((result) => {
expect(result).toEqual(true);
});
});
it('[C272805] Should be able to sort results by author (Ascending)', () => {
searchDialog
.clickOnSearchIcon()
.enterTextAndPressEnter(search.active.base);
searchResultPage.checkContentIsDisplayed(search.active.secondFile);
searchResultPage.sortAndCheckListIsOrderedByAuthor(true).then((result) => {
expect(result).toEqual(true);
});
});
it('[C272806] Should be able to sort results by author (Descending)', () => {
searchDialog
.clickOnSearchIcon()
.enterTextAndPressEnter(search.active.base);
searchResultPage.checkContentIsDisplayed(search.active.secondFile);
searchResultPage.sortAndCheckListIsOrderedByAuthor(false).then((result) => {
expect(result).toEqual(true);
});
});
it('[C272807] Should be able to sort results by date (Ascending)', () => {
searchDialog
.clickOnSearchIcon()
.enterTextAndPressEnter(search.active.base);
searchResultPage.checkContentIsDisplayed(search.active.secondFile);
searchResultPage.sortAndCheckListIsOrderedByCreated(true).then((result) => {
expect(result).toEqual(true);
});
});
it('[C260260] Should be able to sort results by date (Descending)', () => {
searchDialog
.clickOnSearchIcon()
.enterTextAndPressEnter(search.active.base);
searchResultPage.checkContentIsDisplayed(search.active.secondFile);
searchResultPage.sortAndCheckListIsOrderedByCreated(false).then((result) => {
expect(result).toEqual(true);
});
});
});
it('[C272804] Should be able to sort results by name (Descending)', () => {
contentServicesPage.goToDocumentList();
it('[C260262] Should not be able to delete a file from search results without rights', () => {
searchDialog
.checkSearchBarIsNotVisible()
.checkSearchIconIsVisible()
.clickOnSearchIcon()
.enterTextAndPressEnter(search.active.base);
searchResultPage.checkContentIsDisplayed(search.active.secondFile);
searchResultPage.sortAndCheckListIsOrderedByName(false).then((result) => {
expect(result).toEqual(true);
});
});
it('[C272805] Should be able to sort results by author (Ascending)', () => {
contentServicesPage.goToDocumentList();
searchDialog
.checkSearchBarIsNotVisible()
.checkSearchIconIsVisible()
.clickOnSearchIcon()
.enterTextAndPressEnter(search.active.base);
searchResultPage.checkContentIsDisplayed(search.active.secondFile);
searchResultPage.sortAndCheckListIsOrderedByAuthor(true).then((result) => {
expect(result).toEqual(true);
});
});
it('[C272806] Should be able to sort results by author (Descending)', () => {
contentServicesPage.goToDocumentList();
searchDialog
.checkSearchBarIsNotVisible()
.checkSearchIconIsVisible()
.clickOnSearchIcon()
.enterTextAndPressEnter(search.active.base);
searchResultPage.checkContentIsDisplayed(search.active.secondFile);
searchResultPage.sortAndCheckListIsOrderedByAuthor(false).then((result) => {
expect(result).toEqual(true);
});
});
it('[C272807] Should be able to sort results by date (Ascending)', () => {
contentServicesPage.goToDocumentList();
searchDialog
.checkSearchBarIsNotVisible()
.checkSearchIconIsVisible()
.clickOnSearchIcon()
.enterTextAndPressEnter(search.active.base);
searchResultPage.checkContentIsDisplayed(search.active.secondFile);
searchResultPage.sortAndCheckListIsOrderedByCreated(true).then((result) => {
expect(result).toEqual(true);
});
});
it('[C260260] Should be able to sort results by date (Descending)', () => {
contentServicesPage.goToDocumentList();
searchDialog
.checkSearchBarIsNotVisible()
.checkSearchIconIsVisible()
.clickOnSearchIcon()
.enterTextAndPressEnter(search.active.base);
searchResultPage.checkContentIsDisplayed(search.active.secondFile);
searchResultPage.sortAndCheckListIsOrderedByCreated(false).then((result) => {
expect(result).toEqual(true);
});
});
it('[C260262] Shouldn\'t be able to delete a file from search results without rights', () => {
contentServicesPage.goToDocumentList();
searchDialog.checkSearchBarIsNotVisible().checkSearchIconIsVisible().clickOnSearchIcon()
.enterTextAndPressEnter(search.no_permission.noPermFile);
searchResultPage.checkContentIsDisplayed(search.no_permission.noPermFile);
searchResultPage.checkDeleteIsDisabled(search.no_permission.noPermFile);
searchResultPage.checkContentIsDisplayed(search.no_permission.noPermFile);
@@ -301,19 +268,16 @@ describe('Search component - Search Page', () => {
searchResultPage.checkContentIsDisplayed(search.no_permission.noPermFile);
});
it('[C272808] Shouldn\'t be able to delete a folder from search results without rights', () => {
contentServicesPage.goToDocumentList();
searchDialog.checkSearchBarIsNotVisible();
searchDialog.checkSearchIconIsVisible();
searchDialog.clickOnSearchIcon();
searchDialog.enterTextAndPressEnter(search.no_permission.noPermFolder);
it('[C272808] Should not be able to delete a folder from search results without rights', () => {
searchDialog
.clickOnSearchIcon()
.enterTextAndPressEnter(search.no_permission.noPermFolder);
searchResultPage.checkContentIsDisplayed(search.no_permission.noPermFolder);
searchResultPage.checkDeleteIsDisabled(search.no_permission.noPermFolder);
searchResultPage.checkContentIsDisplayed(search.no_permission.noPermFolder);
searchDialog.checkSearchBarIsNotVisible()
.checkSearchIconIsVisible()
searchDialog
.clickOnSearchIcon()
.enterTextAndPressEnter(search.no_permission.noPermFolder);
@@ -321,10 +285,11 @@ describe('Search component - Search Page', () => {
searchResultPage.checkContentIsDisplayed(search.no_permission.noPermFolder);
});
it('[C286675] Should display results when searching for \*', () => {
contentServicesPage.goToDocumentList();
searchDialog.checkSearchBarIsNotVisible().checkSearchIconIsVisible().clickOnSearchIcon()
it('[C286675] Should display results when searching for all elements', () => {
searchDialog
.clickOnSearchIcon()
.enterTextAndPressEnter('*');
searchResultPage.checkNoResultMessageIsNotDisplayed();
});
});
+1 -1
View File
@@ -95,7 +95,7 @@ describe('Tag component', () => {
afterAll(async (done) => {
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, pdfUploadedFile.entry.id);
browser.refresh();
done();
});
@@ -132,7 +132,7 @@ describe('Upload - User permission', () => {
navigationBarPage.openContentServicesFolder(this.consumerSite.entry.guid);
browser.sleep(1000);
browser.sleep(3000);
dragAndDrop.dropFile(dragAndDropArea, emptyFile.location);
dragAndDrop.dropFolder(dragAndDropArea, folder.location);
@@ -146,7 +146,7 @@ describe('Upload - User permission', () => {
contentServicesPage.checkContentIsNotDisplayed(folder.name);
});
it('[C279915] Should not be allowed to upload a file in folder with consumer permissions', () => {
fit('[C279915] Should not be allowed to upload a file in folder with consumer permissions', () => {
contentServicesPage.uploadFile(emptyFile.location).checkContentIsDisplayed(emptyFile.name);
uploadDialog.fileIsUploaded(emptyFile.name);
@@ -155,7 +155,7 @@ describe('Upload - User permission', () => {
navigationBarPage.openContentServicesFolder(this.consumerSite.entry.guid);
browser.sleep(1000);
browser.sleep(3000);
contentServicesPage.uploadFile(emptyFile.location);
@@ -175,7 +175,7 @@ describe('Upload - User permission', () => {
navigationBarPage.openContentServicesFolder(this.consumerSite.entry.guid);
browser.sleep(1000);
browser.sleep(3000);
uploadToggles.enableFolderUpload();
+9 -6
View File
@@ -39,6 +39,7 @@ describe('Login component - Redirect', () => {
let navigationBarPage = new NavigationBarPage();
let contentServicesPage = new ContentServicesPage();
let loginPage = new LoginPage();
let user = new AcsUserModel();
let adminUserModel = new AcsUserModel({
'id': TestConfig.adf.adminUser,
'password': TestConfig.adf.adminPassword
@@ -53,12 +54,14 @@ describe('Login component - Redirect', () => {
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
await this.alfrescoJsApi.core.peopleApi.addPerson(user);
done();
});
it('[C213838] Should after login in CS be redirect to Login page when try to access to PS', () => {
settingsPage.setProviderEcm();
loginPage.login(adminUserModel.id, adminUserModel.password);
loginPage.login(user.id, user.password);
navigationBarPage.clickContentServicesButton();
contentServicesPage.checkAcsContainer();
@@ -96,14 +99,14 @@ describe('Login component - Redirect', () => {
contentServicesPage.checkAcsContainer();
});
it('[C260088] Sould be re-redirect to the request URL after login when try to access to a protect URL ', () => {
it('[C260088] Should be re-redirect to the request URL after login when try to access to a protect URL ', () => {
let uploadActions = new UploadActions();
let uploadedFolder;
let folderName = Util.generateRandomString();
settingsPage.setProviderEcmBpm();
loginPage.login(adminUserModel.id, adminUserModel.password);
settingsPage.setProviderEcm();
loginPage.login(user.id, user.password);
browser.controlFlow().execute(async () => {
uploadedFolder = await uploadActions.uploadFolder(this.alfrescoJsApi, folderName, '-my-');
@@ -123,8 +126,8 @@ describe('Login component - Redirect', () => {
navigationBarPage.openContentServicesFolder(uploadedFolder.entry.id);
loginPage.waitForElements();
loginPage.enterUsername(adminUserModel.id);
loginPage.enterPassword(adminUserModel.password);
loginPage.enterUsername(user.id);
loginPage.enterPassword(user.password);
loginPage.clickSignInButton();
browser.driver.sleep(1000);
+2 -5
View File
@@ -23,6 +23,8 @@ import { NavigationBarPage } from './navigationBarPage';
import path = require('path');
import { element, by, protractor, browser } from 'protractor';
export class ContentServicesPage {
contentList = new ContentList();
@@ -258,11 +260,6 @@ export class ContentServicesPage {
return this;
}
checkElementIsDisplayed(elementName) {
let dataElement = element(by.css(`div[data-automation-id="${elementName}"]`));
Util.waitUntilElementIsVisible(dataElement);
}
navigateToFolderViaBreadcrumbs(folder) {
this.contentList.tableIsLoaded();
let breadcrumb = element(by.css('a[data-automation-id="breadcrumb_' + folder + '"]'));
-9
View File
@@ -229,15 +229,6 @@ var DataTablePage = function () {
Util.waitUntilElementIsVisible(nodeId, 10000);
};
this.navigateToContent = function (content) {
var row = this.getRowByRowName(content);
Util.waitUntilElementIsPresent(row);
row.click();
this.checkRowIsSelected(content);
browser.actions().sendKeys(protractor.Key.ENTER).perform();
return this;
};
this.getRowsName = function (content) {
var row = element(by.css("div[data-automation-id*='" + content + "']"));
Util.waitUntilElementIsPresent(row);
+1 -5
View File
@@ -20,6 +20,7 @@ import { FormControllersPage } from './material/formControllersPage';
import Util = require('../../util/util');
import TestConfig = require('../../test.config');
import { SettingsPage } from './settingsPage';
import { element, by, protractor, browser } from 'protractor';
export class LoginPage {
@@ -50,11 +51,6 @@ export class LoginPage {
header = element(by.id('adf-header'));
cardBackground = element(by.css('mat-card[class*="adf-login-card"]'));
settingsPage = new SettingsPage();
loginForm = element(by.css('form[id="adf-login-form"'));
checkLoginFormIsDisplayed() {
Util.waitUntilElementIsVisible(this.loginForm);
}
waitForElements() {
let deferred = protractor.promise.defer();
+1
View File
@@ -17,6 +17,7 @@
import Util = require('../../util/util');
import TestConfig = require('../../test.config');
import { element, by } from 'protractor';
export class NavigationBarPage {
+2 -2
View File
@@ -16,6 +16,7 @@
*/
import Util = require('../../util/util');
import { element, by, protractor, browser } from 'protractor';
export class NotificationPage {
@@ -27,7 +28,6 @@ export class NotificationPage {
actionToggle = element(by.css('mat-slide-toggle[data-automation-id="notification-action-toggle"]'));
notificationSnackBar = element.all(by.css('simple-snack-bar')).first();
actionOutput = element(by.css('div[data-automation-id="notification-action-output"]'));
actionButton = element(by.css('simple-snack-bar > div > button'));
customNotificationButton = element(by.css('button[data-automation-id="notification-custom-config-button"]'));
selectionDropDown = element.all(by.css('div[class*="mat-select-content"]')).first();
notificationsPage = element(by.css('a[data-automation-id="Notifications"]'));
@@ -111,7 +111,7 @@ export class NotificationPage {
}
clickActionButton() {
this.actionButton.click();
browser.executeScript(`document.querySelector("simple-snack-bar > div > button").click();`);
}
clearMessage() {
@@ -16,6 +16,7 @@
*/
import Util = require('../../../util/util');
import { element, by } from 'protractor';
export class AppNavigationBarPage {
@@ -16,6 +16,7 @@
*/
import { FormControllersPage } from '../../material/formControllersPage';
import { element, by } from 'protractor';
export class AppSettingsToggles {
@@ -16,24 +16,17 @@
*/
import Util = require('../../../util/util');
import { NavigationBarPage } from '../navigationBarPage';
import { element, by } from 'protractor';
export class ProcessListPage {
processListIcon = element(by.css('mat-icon[class="adf-empty-content__icon mat-icon material-icons"]'));
processListTitle = element(by.css('p[class="adf-empty-content__title"]'));
processListSubtitle = element(by.css('p[class="adf-empty-content__subtitle"]'));
processDetailsMessage = element(by.css('adf-process-instance-details div[class="ng-star-inserted"]'));
openProcessDropdownElement = element(by.id('adf-select-process-dropdown'));
selectProcessDropdownElement = element.all(by.css('span[class="mat-option-text"]'));
startProcessButton = element(by.css('button[data-automation-id="btn-start"]'));
goToProcessList() {
let navigationBarPage = new NavigationBarPage();
navigationBarPage.clickProcessServicesButton();
Util.waitUntilElementIsVisible(pageLoaded);
}
checkProcessListTitleIsDisplayed() {
Util.waitUntilElementIsVisible(this.processListTitle);
return this.processListTitle.getText();
@@ -59,13 +52,4 @@ export class ProcessListPage {
return this.startProcessButton.click();
}
checkProcessListIcon() {
Util.waitUntilElementIsVisible(this.processListIcon);
return this.processListIcon.getText();
}
checkProcessListSubtitle() {
Util.waitUntilElementIsVisible(this.processListSubtitle);
return this.processListSubtitle.getText();
}
}
@@ -18,6 +18,8 @@
import Util = require('../../../util/util');
import { AppNavigationBarPage } from './appNavigationBarPage';
import { element, by } from 'protractor';
export class ProcessServicesPage {
apsAppsContainer = element(by.css('div[class="adf-app-listgrid ng-star-inserted"]'));
@@ -24,6 +24,8 @@ import FiltersPage = require('./filtersPage');
import ChecklistDialog = require('./dialog/createChecklistDialog');
import TasksListPage = require('./tasksListPage');
import { element, by } from 'protractor';
export class TasksPage {
createButton = element(by.css('button[data-automation-id="create-button"'));
@@ -20,6 +20,7 @@ import TestConfig = require('../../../../test.config');
import path = require('path');
import Util = require('../../../../util/util');
import remote = require('selenium-webdriver/remote');
import { element, by, browser } from 'protractor';
export class AttachFile {
@@ -16,6 +16,7 @@
*/
import FormFields = require('../formFields');
import { by } from 'protractor';
export class DisplayText {
@@ -16,6 +16,7 @@
*/
import FormFields = require('../formFields');
import { by } from 'protractor';
export class DisplayValue {
@@ -16,6 +16,7 @@
*/
import FormFields = require('../formFields');
import { by } from 'protractor';
export class Header {
@@ -16,6 +16,7 @@
*/
import FormFields = require('../formFields');
import { by } from 'protractor';
export class Hyperlink {
@@ -16,6 +16,7 @@
*/
import FormFields = require('../formFields');
import { by } from 'protractor';
export class MultilineText {
@@ -17,6 +17,7 @@
import FormFields = require('../formFields');
import Util = require('../../../../util/util');
import { by } from 'protractor';
export class RadioButtons {
+8 -7
View File
@@ -16,17 +16,18 @@
*/
import Util = require('../../util/util');
import { element, by } from 'protractor';
export class SearchFiltersPage {
searchFilters = element(by.css('adf-search-filter'));
fileTypeFilter = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-SEARCH.FACET_FIELDS.TYPE"'));
searchFileTypeFilter = element(by.css('input[data-automation-id="facet-result-filter-SEARCH.FACET_FIELDS.TYPE"'));
creatorFilter = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-SEARCH.FACET_FIELDS.CREATOR"'));
searchCreatorFilter = element(by.css('input[data-automation-id="facet-result-filter-SEARCH.FACET_FIELDS.CREATOR"'));
fileSizeFilter = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-SEARCH.FACET_FIELDS.SIZE"'));
showMoreButtonForSize = this.fileSizeFilter.element(by.css('button[title="Show more"]'));
showLessButtonForSize = this.fileSizeFilter.element(by.css('button[title="Show less"]'));
fileTypeFilter = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-SEARCH.FACET_FIELDS.TYPE"]'));
searchFileTypeFilter = element(by.css('input[data-automation-id="facet-result-filter-SEARCH.FACET_FIELDS.TYPE"]'));
creatorFilter = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-SEARCH.FACET_FIELDS.CREATOR"]'));
searchCreatorFilter = element(by.css('input[data-automation-id="facet-result-filter-SEARCH.FACET_FIELDS.CREATOR"]'));
fileSizeFilter = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-SEARCH.FACET_FIELDS.SIZE"]'));
showMoreButtonForSize = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-SEARCH.FACET_FIELDS.SIZE"] button[title="Show more"]'));
showLessButtonForSize = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-SEARCH.FACET_FIELDS.SIZE"] button[title="Show less"]'));
numberOfCheckboxesforSize = element.all(by.css('mat-checkbox[data-automation-id*="checkbox-SEARCH.FACET_FIELDS.SIZE"]'));
checkSearchFiltersIsDisplayed() {
+9 -8
View File
@@ -18,6 +18,7 @@
import Util = require('../../util/util');
import ContentList = require('./dialog/contentList');
import DatatablePage = require('./dataTablePage');
import { element, by, protractor, browser } from 'protractor';
export class SearchResultsPage {
@@ -61,7 +62,7 @@ export class SearchResultsPage {
}
navigateToFolder(content) {
this.dataTable.navigateToContent(content);
this.contentList.doubleClickRow(content);
return this;
}
@@ -86,13 +87,13 @@ export class SearchResultsPage {
this.sortBy(sortOrder, 'Name');
}
sortBy(sortOrder) {
sortBy(sortOrder, sortType) {
Util.waitUntilElementIsClickable(this.sortingArrow);
this.sortingArrow.click();
let selectedSortingOption = element(by.xpath('//span [contains(text(), \"Name\")]'));
selectedSortingOption.click();
let selectedSortingOption = element(by.xpath(``));
Util.waitUntilElementIsClickable(selectedSortingOption);
browser.executeScript(`document.evaluate('//span [contains(text(), "${sortType}")]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.click();`);
this.sortByOrder(sortOrder);
}
@@ -102,11 +103,11 @@ export class SearchResultsPage {
return element(this.sortArrowLocator).getText().then((result) => {
if (sortOrder === true) {
if (result !== 'arrow_upward') {
element(this.sortArrowLocator).click();
browser.executeScript(`document.querySelector('adf-sorting-picker button mat-icon').click();`);
}
} else {
if (result === 'arrow_upward') {
element(this.sortArrowLocator).click();
browser.executeScript(`document.querySelector('adf-sorting-picker button mat-icon').click();`);
}
}
+1
View File
@@ -17,6 +17,7 @@
import TestConfig = require('../../test.config');
import Util = require('../../util/util');
import { element, by, browser } from 'protractor';
export class SettingsPage {
+2
View File
@@ -18,6 +18,8 @@
import Util = require('../../util/util');
import ContentList = require('./dialog/contentList');
import { element, by, protractor, browser } from 'protractor';
export class TagPage {
addTagButton = element(by.css('button[id="add-tag"]'));
+2
View File
@@ -17,6 +17,8 @@
import Util = require('../../util/util');
import { element, by } from 'protractor';
export class TrashcanPage {
rows = by.css('adf-document-list div[class*="adf-datatable-body"] div[class*="adf-datatable-row"]');