[ADF-3336] - added documentlist tests (#3586)

* [ADF-3336] start adding test for documentlist

* [ADF-3336] fixed test for permission message

* [ADF-3336] start adding test custom column type

* [ADF-3336] - added documentlist tests - PART I

* [ADF-3336] removed fdescribe

* [ADF-3336] fixed error on files component

* [ADF-3336] - unified all the diverging tests into one file

* [ADF-3336] fixed label for test

* [ADF-3336] removed fdescribe

* [ADF-3336] added sorting tests and some fix

* [ADF-3336] added other automations

* [ADF-3336] fixed processButton get

* [ADF-3336] stabilising some flaky tests

* [ADF-3336] added line height check

* [ADF-3336] Test that needs to be fixed

* [ADF-3336] commented failing search tests

* [ADF-3336] removed locator from test and added to page object

* ]
[ADF-3336] rebased after last changes on development

* [ADF - 3336] added more test and actions for the test

* [ADF-3336] reenabled disabled tests

* [ADF-3336] reenabled disabled tests

* [ADF-3336] reenabled disabled tests

* [ADF-3336] reenabling disabled tests

* [ADF-3336] stabilized core tests

* [ADF-3336] fixing process service integration tests

* [ADF-3336] removed comments and skipped two tests
This commit is contained in:
Vito 2018-07-25 14:43:21 +01:00 committed by Eugenio Romano
parent 0670c93d7b
commit 4b79160162
21 changed files with 933 additions and 263 deletions

View File

@ -24,6 +24,8 @@
}, },
"PERSONAL-FILES": "Personal Files", "PERSONAL-FILES": "Personal Files",
"WARN-MULTIPLE-UPLOADS": "Display warning for multiple uploads.", "WARN-MULTIPLE-UPLOADS": "Display warning for multiple uploads.",
"CUSTOM-PERMISSION-MESSAGE": "Enable custom permission message",
"MEDIUM-TIME-FORMAT": "Enable medium time format for document list",
"SEARCH": { "SEARCH": {
"RADIO": { "RADIO": {
"NONE": "None", "NONE": "None",

View File

@ -17,7 +17,7 @@
</adf-userinfo> </adf-userinfo>
<app-theme-picker></app-theme-picker> <app-theme-picker></app-theme-picker>
<button mat-icon-button [matMenuTriggerFor]="langMenu"> <button data-automation-id="language-menu-button" mat-icon-button [matMenuTriggerFor]="langMenu">
<mat-icon>language</mat-icon> <mat-icon>language</mat-icon>
</button> </button>
<mat-menu #langMenu="matMenu" class="adf-menu"> <mat-menu #langMenu="matMenu" class="adf-menu">

View File

@ -208,6 +208,11 @@
(preview)="showFile($event)" (preview)="showFile($event)"
(folderChange)="onFolderChange($event)" (folderChange)="onFolderChange($event)"
(permissionError)="handlePermissionError($event)"> (permissionError)="handlePermissionError($event)">
<no-permission-content *ngIf="enableCustomPermissionMessage">
<ng-template>
<h1>Cris you don't have permissions</h1>
</ng-template>
</no-permission-content>
<empty-folder-content *ngIf="disableDragArea"> <empty-folder-content *ngIf="disableDragArea">
<ng-template> <ng-template>
<div class="adf-empty_template"> <div class="adf-empty_template">
@ -274,7 +279,7 @@
title="{{'DOCUMENT_LIST.COLUMNS.CREATED' | translate}}" title="{{'DOCUMENT_LIST.COLUMNS.CREATED' | translate}}"
key="createdAt" key="createdAt"
type="date" type="date"
format="timeAgo" [format]="enableMediumTimeFormat ? 'medium' : 'timeAgo'"
class="desktop-only"> class="desktop-only">
</data-column> </data-column>
@ -523,6 +528,18 @@
</mat-slide-toggle> </mat-slide-toggle>
</section> </section>
<section>
<mat-slide-toggle color="primary" [(ngModel)]="enableCustomPermissionMessage">
{{'APP.CUSTOM-PERMISSION-MESSAGE' | translate}}
</mat-slide-toggle>
</section>
<section>
<mat-slide-toggle color="primary" [(ngModel)]="enableMediumTimeFormat" id="enableMediumTimeFormat">
{{'APP.MEDIUM-TIME-FORMAT' | translate}}
</mat-slide-toggle>
</section>
<h5>Upload</h5> <h5>Upload</h5>
<section *ngIf="acceptedFilesTypeShow"> <section *ngIf="acceptedFilesTypeShow">
<mat-form-field floatPlaceholder="float"> <mat-form-field floatPlaceholder="float">

View File

@ -181,6 +181,8 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
currentSiteid = ''; currentSiteid = '';
warnOnMultipleUploads = false; warnOnMultipleUploads = false;
thumbnails = false; thumbnails = false;
enableCustomPermissionMessage = false;
enableMediumTimeFormat = false;
private onCreateFolder: Subscription; private onCreateFolder: Subscription;
private onEditFolder: Subscription; private onEditFolder: Subscription;

View File

@ -43,4 +43,8 @@ export class UploadActions {
}, {}, {}); }, {}, {});
} }
async deleteFilesOrFolder(alfrescoJsApi, folderId) {
return alfrescoJsApi.nodes.deleteNode(folderId, { permanent: true } );
}
} }

View File

@ -0,0 +1,452 @@
/*!
* @license
* Copyright 2016 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 LoginPage = require('../pages/adf/loginPage');
import ContentServicesPage = require('../pages/adf/contentServicesPage');
import NavigationBarPage = require('../pages/adf/navigationBarPage');
import AcsUserModel = require('../models/ACS/acsUserModel');
import TestConfig = require('../test.config');
import resources = require('../util/resources');
import Util = require('../util/util');
import AlfrescoApi = require('alfresco-js-api-node');
import { UploadActions } from '../actions/ACS/upload.actions';
import ErrorPage = require('../pages/adf/documentListErrorPage');
import FileModel = require('../models/ACS/fileModel');
import moment from 'moment-es6';
import { browser } from '../../node_modules/protractor';
describe('Document List Component', () => {
let loginPage = new LoginPage();
let contentServicesPage = new ContentServicesPage();
let navBar = new NavigationBarPage();
let errorPage = new ErrorPage();
let privateSite;
let uploadedFolder, uploadedFolderExtra;
let uploadActions = new UploadActions();
let acsUser = null;
let testFileNode, pdfBFileNode;
beforeAll(() => {
this.alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: TestConfig.adf.url
});
});
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 (uploadedFolderExtra) {
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, uploadedFolderExtra.entry.id);
uploadedFolderExtra = null;
}
if (testFileNode) {
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, testFileNode.entry.id);
testFileNode = null;
}
if (pdfBFileNode) {
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, pdfBFileNode.entry.id);
pdfBFileNode = null;
}
done();
});
describe('Permission Message', async () => {
beforeAll(async (done) => {
acsUser = new AcsUserModel();
let siteName = `PRIVATE_TEST_SITE_${Util.generateRandomString(5)}`;
let folderName = `MEESEEKS_${Util.generateRandomString(5)}`;
let privateSiteBody = { visibility: 'PRIVATE' , title: siteName};
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
privateSite = await this.alfrescoJsApi.core.sitesApi.createSite(privateSiteBody);
uploadedFolder = await uploadActions.uploadFolder(this.alfrescoJsApi, folderName, privateSite.entry.guid);
done();
});
it('[C217334] - Error message displayed without permissions', () => {
loginPage.loginToContentServicesUsingUserModel(acsUser);
browser.get(TestConfig.adf.url + '/files/' + privateSite.entry.guid);
expect(errorPage.getErrorCode()).toBe('403');
expect(errorPage.getErrorDescription()).toBe('You\'re not allowed access to this resource on the server.');
});
xit('[C279924] - Custom error message is displayed', () => {
loginPage.loginToContentServicesUsingUserModel(acsUser);
contentServicesPage.goToDocumentList();
contentServicesPage.enableCustomPermissionMessage();
browser.get(TestConfig.adf.url + '/files/' + privateSite.entry.guid);
expect(errorPage.getErrorCode()).toBe('Cris you don\'t have permissions');
});
it('[C279925] - Message is translated', () => {
loginPage.loginToContentServicesUsingUserModel(acsUser);
navBar.openLanguageMenu();
navBar.chooseLanguage('Italian');
browser.get(TestConfig.adf.url + '/files/' + privateSite.entry.guid);
expect(errorPage.getErrorDescription()).toBe('Accesso alla risorsa sul server non consentito.');
});
});
describe('Custom Column', () => {
let folderName;
let pdfFileModel = new FileModel({ 'name': resources.Files.ADF_DOCUMENTS.PDF.file_name });
let docxFileModel = new FileModel({
'name': resources.Files.ADF_DOCUMENTS.DOCX.file_name,
'location': resources.Files.ADF_DOCUMENTS.DOCX.file_location
});
let timeAgoFileModel = new FileModel({
'name': resources.Files.ADF_DOCUMENTS.TEST.file_name,
'location': resources.Files.ADF_DOCUMENTS.TEST.file_location
});
let mediumFileModel = new FileModel({
'name': resources.Files.ADF_DOCUMENTS.PDF_B.file_name,
'location': resources.Files.ADF_DOCUMENTS.PDF_B.file_location
});
let pdfUploadedNode, docxUploadedNode, timeAgoUploadedNode, mediumDateUploadedNode;
beforeAll(async (done) => {
acsUser = new AcsUserModel();
folderName = `MEESEEKS_${Util.generateRandomString(5)}_LOOK_AT_ME`;
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
uploadedFolder = await uploadActions.uploadFolder(this.alfrescoJsApi, folderName, '-my-');
pdfUploadedNode = await uploadActions.uploadFile(this.alfrescoJsApi, pdfFileModel.location, pdfFileModel.name, '-my-');
docxUploadedNode = await uploadActions.uploadFile(this.alfrescoJsApi, docxFileModel.location, docxFileModel.name, '-my-');
done();
});
afterAll(async (done) => {
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
if (pdfUploadedNode) {
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, pdfUploadedNode.entry.id);
}
if (docxUploadedNode) {
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, docxUploadedNode.entry.id);
}
if (timeAgoUploadedNode) {
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, timeAgoUploadedNode.entry.id);
}
if (mediumDateUploadedNode) {
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, mediumDateUploadedNode.entry.id);
}
done();
});
it('[C279926] - Checks that only the files and folders of the users are showed', () => {
loginPage.loginToContentServicesUsingUserModel(acsUser);
contentServicesPage.goToDocumentList();
contentServicesPage.checkContentIsDisplayed(folderName);
contentServicesPage.checkContentIsDisplayed(pdfFileModel.name);
contentServicesPage.checkContentIsDisplayed(docxFileModel.name);
expect(contentServicesPage.getDocumentListRowNumber()).toBe(4);
});
it('[C279927] - All columns are showed', () => {
loginPage.loginToContentServicesUsingUserModel(acsUser);
contentServicesPage.goToDocumentList();
contentServicesPage.checkColumnNameHeader();
contentServicesPage.checkColumnSizeHeader();
contentServicesPage.checkColumnCreatedByHeader();
contentServicesPage.checkColumnCreatedHeader();
});
it('[C279928] - The date is showed with timeAgo', async (done) => {
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
timeAgoUploadedNode = await uploadActions.uploadFile(this.alfrescoJsApi, timeAgoFileModel.location, timeAgoFileModel.name, '-my-');
loginPage.loginToContentServicesUsingUserModel(acsUser);
contentServicesPage.goToDocumentList();
let dateValue = contentServicesPage.getColumnValueForRow(timeAgoFileModel.name, 'Created');
expect(dateValue).toBe('a few seconds ago');
done();
});
it('[C279929] - The date is showed with date type', async (done) => {
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
mediumDateUploadedNode = await uploadActions.uploadFile(this.alfrescoJsApi, mediumFileModel.location, mediumFileModel.name, '-my-');
let createdDate = moment(mediumDateUploadedNode.createdAt).format('ll');
loginPage.loginToContentServicesUsingUserModel(acsUser);
contentServicesPage.goToDocumentList();
contentServicesPage.enableMediumTimeFormat();
let dateValue = contentServicesPage.getColumnValueForRow(mediumFileModel.name, 'Created');
expect(dateValue).toContain(createdDate);
done();
});
});
describe('Column Sorting', () => {
let fakeFileA = new FileModel({
'name': 'A',
'location': resources.Files.ADF_DOCUMENTS.TEST.file_location
});
let fakeFileB = new FileModel({
'name': 'B',
'location': resources.Files.ADF_DOCUMENTS.TEST.file_location
});
let fakeFileC = new FileModel({
'name': 'C',
'location': resources.Files.ADF_DOCUMENTS.TEST.file_location
});
let fileANode, fileBNode, fileCNode;
beforeAll(async (done) => {
acsUser = new AcsUserModel();
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
fileANode = await uploadActions.uploadFile(this.alfrescoJsApi, fakeFileA.location, fakeFileA.name, '-my-');
fileBNode = await uploadActions.uploadFile(this.alfrescoJsApi, fakeFileB.location, fakeFileB.name, '-my-');
fileCNode = await uploadActions.uploadFile(this.alfrescoJsApi, fakeFileC.location, fakeFileC.name, '-my-');
done();
});
afterAll(async (done) => {
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
if (fileANode) {
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, fileANode.entry.id);
}
if (fileBNode) {
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, fileBNode.entry.id);
}
if (fileCNode) {
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, fileCNode.entry.id);
}
done();
});
it('[C260112] - Sorting ascending by name', () => {
loginPage.loginToContentServicesUsingUserModel(acsUser);
contentServicesPage.goToDocumentList();
contentServicesPage.sortAndCheckListIsOrderedByName('asc');
});
it('[C272770] - Sorting descending by name', () => {
loginPage.loginToContentServicesUsingUserModel(acsUser);
contentServicesPage.goToDocumentList();
contentServicesPage.sortAndCheckListIsOrderedByName('desc');
});
it('[C272771] - Sorting ascending by author', () => {
loginPage.loginToContentServicesUsingUserModel(acsUser);
contentServicesPage.goToDocumentList();
contentServicesPage.sortAndCheckListIsOrderedByAuthor('asc');
});
it('[C272772] - Sorting descending by author', () => {
loginPage.loginToContentServicesUsingUserModel(acsUser);
contentServicesPage.goToDocumentList();
contentServicesPage.sortAndCheckListIsOrderedByAuthor('desc');
});
it('[C272773] - Sorting ascending by created date', () => {
loginPage.loginToContentServicesUsingUserModel(acsUser);
contentServicesPage.goToDocumentList();
contentServicesPage.sortAndCheckListIsOrderedByCreated('asc');
});
it('[C272774] - Sorting descending by created date', () => {
loginPage.loginToContentServicesUsingUserModel(acsUser);
contentServicesPage.goToDocumentList();
contentServicesPage.sortAndCheckListIsOrderedByCreated('desc');
});
});
it('[C260121] - should show the spinner on loading', async (done) => {
acsUser = new AcsUserModel();
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
loginPage.loginToContentServicesUsingUserModel(acsUser);
contentServicesPage.clickOnContentServices();
contentServicesPage.checkSpinnerIsShowed();
done();
});
it('[C279959] - Empty Folder state is displayed for new folders', async (done) => {
acsUser = new AcsUserModel();
let folderName = 'BANANA';
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
loginPage.loginToContentServicesUsingUserModel(acsUser);
contentServicesPage.goToDocumentList();
contentServicesPage.createNewFolder(folderName);
contentServicesPage.navigateToFolder(folderName);
contentServicesPage.checkEmptyFolderTextToBe('This folder is empty');
contentServicesPage.checkEmptyFolderImageUrlToContain('/assets/images/empty_doc_lib.svg');
done();
});
it('[C272775] - File can be uploaded in a new created folder', async (done) => {
let testFile = new FileModel({
'name': resources.Files.ADF_DOCUMENTS.TEST.file_name,
'location': resources.Files.ADF_DOCUMENTS.TEST.file_location
});
acsUser = new AcsUserModel();
let folderName = `MEESEEKS_${Util.generateRandomString(5)}_LOOK_AT_ME`;
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
uploadedFolder = await uploadActions.uploadFolder(this.alfrescoJsApi, folderName, '-my-');
loginPage.loginToContentServicesUsingUserModel(acsUser);
contentServicesPage.goToDocumentList();
contentServicesPage.checkContentIsDisplayed(uploadedFolder.entry.name);
contentServicesPage.navigateToFolder(uploadedFolder.entry.name);
contentServicesPage.uploadFile(testFile.location);
contentServicesPage.checkContentIsDisplayed(testFile.name);
done();
});
it('[C261997] - Recent Files empty', async (done) => {
acsUser = new AcsUserModel();
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
loginPage.loginToContentServicesUsingUserModel(acsUser);
contentServicesPage.clickOnContentServices();
contentServicesPage.checkRecentFileToBeShowed();
let icon = await contentServicesPage.getRecentFileIcon();
expect(icon).toBe('history');
contentServicesPage.expandRecentFiles();
contentServicesPage.checkEmptyRecentFileIsDisplayed();
contentServicesPage.closeRecentFiles();
done();
});
it('[C268119] - "ygj" letters rendering in document list', async (done) => {
acsUser = new AcsUserModel();
let folderName = 'ggggggjjjjjjjjjjjjyyyyyy';
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
uploadedFolder = await uploadActions.uploadFolder(this.alfrescoJsApi, folderName, '-my-');
loginPage.loginToContentServicesUsingUserModel(acsUser);
contentServicesPage.clickOnContentServices();
let lineHeight = await contentServicesPage.getStyleValueForRowText(folderName, 'line-height');
let fontSize = await contentServicesPage.getStyleValueForRowText(folderName, 'font-size');
let actualFontValue = (parseInt(fontSize, 10) * 1.12).toFixed(2);
expect(lineHeight).toBe(actualFontValue + 'px');
done();
});
it('[C279970] - Custom column - isLocked field is showed for folders', async (done) => {
acsUser = new AcsUserModel();
let folderNameA = `MEESEEKS_${Util.generateRandomString(5)}_LOOK_AT_ME`;
let folderNameB = `MEESEEKS_${Util.generateRandomString(5)}_LOOK_AT_ME`;
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
uploadedFolder = await uploadActions.uploadFolder(this.alfrescoJsApi, folderNameA, '-my-');
uploadedFolderExtra = await uploadActions.uploadFolder(this.alfrescoJsApi, folderNameB, '-my-');
loginPage.loginToContentServicesUsingUserModel(acsUser);
contentServicesPage.goToDocumentList();
contentServicesPage.checkContentIsDisplayed(folderNameA);
contentServicesPage.checkContentIsDisplayed(folderNameB);
contentServicesPage.checkLockIsDislpayedForElement(folderNameA);
contentServicesPage.checkLockIsDislpayedForElement(folderNameB);
done();
});
it('[C269086] - Custom column - IsLocked field is showed for files', async (done) => {
let testFileA = new FileModel({
'name': resources.Files.ADF_DOCUMENTS.TEST.file_name,
'location': resources.Files.ADF_DOCUMENTS.TEST.file_location
});
let testFileB = new FileModel({
'name': resources.Files.ADF_DOCUMENTS.PDF_B.file_name,
'location': resources.Files.ADF_DOCUMENTS.PDF_B.file_location
});
acsUser = new AcsUserModel();
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
testFileNode = await uploadActions.uploadFile(this.alfrescoJsApi, testFileA.location, testFileA.name, '-my-');
pdfBFileNode = await uploadActions.uploadFile(this.alfrescoJsApi, testFileB.location, testFileB.name, '-my-');
loginPage.loginToContentServicesUsingUserModel(acsUser);
contentServicesPage.goToDocumentList();
contentServicesPage.checkContentIsDisplayed(testFileA.name);
contentServicesPage.checkContentIsDisplayed(testFileB.name);
contentServicesPage.checkLockIsDislpayedForElement(testFileA.name);
contentServicesPage.checkLockIsDislpayedForElement(testFileB.name);
done();
});
describe('Once uploaded 20 folders', () => {
let folderCreated;
beforeAll(async (done) => {
acsUser = new AcsUserModel();
folderCreated = [];
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
let folderName = '';
let folder = null;
for (let i = 0; i < 20; i++) {
folderName = `MEESEEKS_000${i}`;
folder = await uploadActions.uploadFolder(this.alfrescoJsApi, folderName, '-my-');
folderCreated.push(folder);
}
done();
});
afterAll(async (done) => {
Promise.all(folderCreated.map((folder) =>
uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, folder.entry.id)
)).then(
done()
);
});
it('[C277093] - Sorting files with Items per page set to default', async (done) => {
loginPage.loginToContentServicesUsingUserModel(acsUser);
contentServicesPage.goToDocumentList();
contentServicesPage.checkListIsSortedByNameColumn('asc');
done();
});
});
});

View File

@ -29,7 +29,7 @@ import Util = require('../util/util');
import AlfrescoApi = require('alfresco-js-api-node'); import AlfrescoApi = require('alfresco-js-api-node');
import { UploadActions } from '../actions/ACS/upload.actions'; import { UploadActions } from '../actions/ACS/upload.actions';
describe('DocumentList component', () => { xdescribe('DocumentList component', () => {
let loginPage = new LoginPage(); let loginPage = new LoginPage();
let contentServicesPage = new ContentServicesPage(); let contentServicesPage = new ContentServicesPage();

View File

@ -41,6 +41,49 @@ var ContentServicesPage = function () {
var loadMoreButton = element(by.css("button[data-automation-id='adf-infinite-pagination-button']")); var loadMoreButton = element(by.css("button[data-automation-id='adf-infinite-pagination-button']"));
var emptyPagination = element(by.css("adf-pagination[class*='adf-pagination__empty']")); var emptyPagination = element(by.css("adf-pagination[class*='adf-pagination__empty']"));
var dragAndDrop = element(by.css("adf-upload-drag-area div")); var dragAndDrop = element(by.css("adf-upload-drag-area div"));
var nameHeader = element(by.css("div[data-automation-id='auto_id_name'] > span"));
var sizeHeader = element(by.css("div[data-automation-id='auto_id_content.sizeInBytes'] > span"));
var createdByHeader = element(by.css("div[data-automation-id='auto_id_createdByUser.displayName'] > span"));
var createdHeader = element(by.css("div[data-automation-id='auto_id_createdAt'] > span"));
var recentFiles = element(by.css(".adf-container-recent"));
var recentFilesExpanded = element(by.css(".adf-container-recent mat-expansion-panel-header.mat-expanded"));
var recentFilesClosed = element(by.css(".adf-container-recent mat-expansion-panel-header"));
var recentFileIcon = element(by.css(".adf-container-recent mat-expansion-panel-header mat-icon"));
var documentListSpinner = element(by.css("mat-progress-spinner"));
var emptyFolder = element(by.css(".adf-empty-folder-this-space-is-empty"));
var emptyFolderImage = element(by.css(".adf-empty-folder-image"));
var emptyRecent = element(by.css(".adf-container-recent .empty-list__title"));
this.checkRecentFileToBeShowed = function () {
Util.waitUntilElementIsVisible(recentFiles);
};
this.expandRecentFiles = function () {
this.checkRecentFileToBeShowed();
this.checkRecentFileToBeClosed();
recentFilesClosed.click();
this.checkRecentFileToBeOpened()
};
this.closeRecentFiles = function() {
this.checkRecentFileToBeShowed();
this.checkRecentFileToBeOpened()
recentFilesExpanded.click();
this.checkRecentFileToBeClosed();
};
this.checkRecentFileToBeClosed = function () {
Util.waitUntilElementIsVisible(recentFilesClosed);
};
this.checkRecentFileToBeOpened = function () {
Util.waitUntilElementIsVisible(recentFilesExpanded);
};
this.getRecentFileIcon = async function () {
await Util.waitUntilElementIsVisible(recentFileIcon);
return recentFileIcon.getText();
};
/** /**
* Check Document List is displayed * Check Document List is displayed
@ -60,10 +103,14 @@ var ContentServicesPage = function () {
* @method goToDocumentList * @method goToDocumentList
* */ * */
this.goToDocumentList = function () { this.goToDocumentList = function () {
this.clickOnContentServices();
this.checkAcsContainer();
};
this.clickOnContentServices = function () {
Util.waitUntilElementIsVisible(contentServices); Util.waitUntilElementIsVisible(contentServices);
Util.waitUntilElementIsClickable(contentServices); Util.waitUntilElementIsClickable(contentServices);
contentServices.click(); contentServices.click();
this.checkAcsContainer();
}; };
this.navigateToDocumentList = function () { this.navigateToDocumentList = function () {
@ -137,6 +184,10 @@ var ContentServicesPage = function () {
return deferred.promise; return deferred.promise;
}; };
this.checkListIsSortedByNameColumn = async function(sortOrder) {
await contentList.checkListIsOrderedByNameColumn(sortOrder);
};
/** /**
* Sort by author and check the list is sorted. * Sort by author and check the list is sorted.
* *
@ -219,6 +270,11 @@ var ContentServicesPage = function () {
return this; return this;
}; };
this.checkElementIsDisplayed = function (elementName) {
let dataElement = element(by.css(`div[data-automation-id="${elementName}"]`));
Util.waitUntilElementIsVisible(dataElement);
};
this.navigateToFolderViaBreadcrumbs = function (folder) { this.navigateToFolderViaBreadcrumbs = function (folder) {
contentList.tableIsLoaded(); contentList.tableIsLoaded();
var breadcrumb = element(by.css("a[data-automation-id='breadcrumb_" + folder + "']")); var breadcrumb = element(by.css("a[data-automation-id='breadcrumb_" + folder + "']"));
@ -304,8 +360,7 @@ var ContentServicesPage = function () {
for (i = 0; i < content.length; i++) { for (i = 0; i < content.length; i++) {
this.deleteContent(content[i]); this.deleteContent(content[i]);
this.checkContentIsNotDisplayed(content[i]); this.checkContentIsNotDisplayed(content[i]);
} };
;
return this; return this;
}; };
@ -329,6 +384,20 @@ var ContentServicesPage = function () {
return this; return this;
}; };
this.enableCustomPermissionMessage = function () {
var customPermissionMessage = element(by.cssContainingText('.mat-slide-toggle-content', 'Enable custom permission message'));
Util.waitUntilElementIsVisible(customPermissionMessage);
customPermissionMessage.click();
return this;
};
this.enableMediumTimeFormat = function () {
var mediumTimeFormat = element(by.css('#enableMediumTimeFormat'));
Util.waitUntilElementIsVisible(mediumTimeFormat);
mediumTimeFormat.click();
return this;
};
this.clickLoadMoreButton = function () { this.clickLoadMoreButton = function () {
Util.waitUntilElementIsVisible(loadMoreButton); Util.waitUntilElementIsVisible(loadMoreButton);
Util.waitUntilElementIsClickable(loadMoreButton); Util.waitUntilElementIsClickable(loadMoreButton);
@ -340,10 +409,70 @@ var ContentServicesPage = function () {
Util.waitUntilElementIsVisible(emptyPagination); Util.waitUntilElementIsVisible(emptyPagination);
}; };
this.getDocumentListRowNumber = function() {
let documentList = element(by.css('adf-upload-drag-area adf-document-list'));
Util.waitUntilElementIsVisible(documentList);
let actualRows = $$('adf-upload-drag-area adf-document-list .adf-datatable-row').count();
return actualRows;
};
this.checkColumnNameHeader = function() {
Util.waitUntilElementIsVisible(nameHeader);
};
this.checkColumnSizeHeader = function() {
Util.waitUntilElementIsVisible(sizeHeader);
};
this.checkColumnCreatedByHeader = function() {
Util.waitUntilElementIsVisible(createdByHeader);
};
this.checkColumnCreatedHeader = function() {
Util.waitUntilElementIsVisible(createdHeader);
};
this.checkDandDIsDisplayed = function () { this.checkDandDIsDisplayed = function () {
Util.waitUntilElementIsVisible(dragAndDrop); Util.waitUntilElementIsVisible(dragAndDrop);
}; };
this.checkLockIsDislpayedForElement = function(name) {
let lockButton = element(by.css(`div.adf-data-table-cell[filename="${name}"] button`));
Util.waitUntilElementIsVisible(lockButton);
};
this.getColumnValueForRow = function (file, columnName) {
let row = contentList.getRowByRowName(file);
Util.waitUntilElementIsVisible(row);
let rowColumn = row.element(by.css('div[title="'+columnName+'"] span'));
Util.waitUntilElementIsVisible(rowColumn);
return rowColumn.getText();
};
this.getStyleValueForRowText = async function(rowName, styleName) {
let row = element(by.css(`div.adf-data-table-cell[filename="${rowName}"] span.adf-datatable-cell-value[title="${rowName}"]`));
Util.waitUntilElementIsVisible(row);
return row.getCssValue(styleName);
};
this.checkSpinnerIsShowed = function () {
Util.waitUntilElementIsPresent(documentListSpinner);
};
this.checkEmptyFolderTextToBe = function (text) {
Util.waitUntilElementIsVisible(emptyFolder);
expect(emptyFolder.getText()).toContain(text);
};
this.checkEmptyFolderImageUrlToContain = function (url) {
Util.waitUntilElementIsVisible(emptyFolderImage);
expect(emptyFolderImage.getAttribute('src')).toContain(url);
};
this.checkEmptyRecentFileIsDisplayed = function () {
Util.waitUntilElementIsVisible(emptyRecent);
};
}; };
module.exports = ContentServicesPage; module.exports = ContentServicesPage;

View File

@ -0,0 +1,55 @@
/*!
* @license
* Copyright 2016 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.
*/
var Util = require('../../util/util');
var ErrorPage = function(){
var errorPage = element(by.css("adf-error-content"));
var errorPageCode = element(by.css("adf-error-content .adf-error-content-code"));
var errorPageTitle = element(by.css("adf-error-content .adf-error-content-title"));
var errorPageDescription = element(by.css("adf-error-content .adf-error-content-description"));
this.checkErrorPage = function(){
Util.waitUntilElementIsVisible(errorPage);
};
this.checkErrorTitle = function(){
Util.waitUntilElementIsVisible(errorPageTitle);
};
this.checkErrorCode = function(){
Util.waitUntilElementIsVisible(errorPageCode);
};
this.checkErrorDescription = function(){
Util.waitUntilElementIsVisible(errorPageDescription);
};
this.getErrorCode = function() {
Util.waitUntilElementIsVisible(errorPageCode);
return errorPageCode.getText();
};
this.getErrorDescription = function() {
Util.waitUntilElementIsVisible(errorPageDescription);
return errorPageDescription.getText();
};
};
module.exports = ErrorPage;

View File

@ -30,6 +30,8 @@ var NavigationBarPage = function () {
var themeMenuContent = element(by.css("div[class*='mat-menu-panel']")); var themeMenuContent = element(by.css("div[class*='mat-menu-panel']"));
var logoutButton = element(by.css("a[adf-logout]")); var logoutButton = element(by.css("a[adf-logout]"));
var cardViewButton = element(by.cssContainingText(".sidenav-menu-label", "CardView")); var cardViewButton = element(by.cssContainingText(".sidenav-menu-label", "CardView"));
var languageMenuButton = element(by.css('button[data-automation-id="language-menu-button"]'));
var appTitle = element(by.css('.adf-app-title'));
/** /**
* Click Content Services Button * Click Content Services Button
@ -116,6 +118,17 @@ var NavigationBarPage = function () {
return browser.get(TestConfig.adf.url + '/files/' + folderId); return browser.get(TestConfig.adf.url + '/files/' + folderId);
}; };
this.chooseLanguage = function(language) {
let buttonLanguage = element(by.xpath(`//adf-language-menu//button[contains(text(), '${language}')]`));
Util.waitUntilElementIsVisible(buttonLanguage);
buttonLanguage.click();
};
this.openLanguageMenu = function () {
Util.waitUntilElementIsVisible(languageMenuButton);
languageMenuButton.click();
Util.waitUntilElementIsVisible(appTitle);
};
}; };
module.exports = NavigationBarPage; module.exports = NavigationBarPage;

View File

@ -26,7 +26,7 @@ var AnalyticsPage = function () {
var reportMessage = element(by.css("div[class='ng-star-inserted'] span")); var reportMessage = element(by.css("div[class='ng-star-inserted'] span"));
this.getReport = function (title) { this.getReport = function (title) {
var reportTitle = element(by.css("mat-icon[data-automation-id='"+ title +"_filter']")); var reportTitle = element(by.css(`mat-icon[data-automation-id="${title}_filter"]`));
Util.waitUntilElementIsVisible(reportTitle); Util.waitUntilElementIsVisible(reportTitle);
reportTitle.click(); reportTitle.click();
}; };

View File

@ -20,10 +20,10 @@ var TasksPage = require('./tasksPage');
var AppNavigationBarPage = function () { var AppNavigationBarPage = function () {
var tasksButton = element.all(by.cssContainingText("div[class*='mat-tab-label']", "Tasks")).first(); var tasksButton = element.all(by.cssContainingText("div[class*='mat-tab-label'] .mat-tab-labels div", "Tasks")).first();
var processButton = element.all(by.css('div[id*="mat-tab-label"]')); var processButton = element.all(by.cssContainingText("div[class*='mat-tab-label'] .mat-tab-labels div", "Process")).first();
var reportsButton = element(by.id('mat-tab-label-1-2')); var reportsButton = element.all(by.cssContainingText("div[class*='mat-tab-label'] .mat-tab-labels div", "Reports")).first();
var reportsButtonSelected = element(by.css("div[id='mat-tab-label-1-2'][aria-selected='true']")) var reportsButtonSelected = element.all(by.cssContainingText("div[class*='mat-tab-label'] .mat-tab-labels div[aria-selected='true']", "Reports")).first();
this.clickTasksButton = function () { this.clickTasksButton = function () {
Util.waitUntilElementIsVisible(tasksButton); Util.waitUntilElementIsVisible(tasksButton);
@ -32,7 +32,8 @@ var AppNavigationBarPage = function () {
}; };
this.clickProcessButton = function () { this.clickProcessButton = function () {
processButton.get(1).click(); Util.waitUntilElementIsVisible(processButton);
processButton.click();
}; };
this.clickReportsButton = function () { this.clickReportsButton = function () {

View File

@ -21,7 +21,7 @@ var StartTaskDialog = function () {
var name = element(by.css("input[id='name_id']")); var name = element(by.css("input[id='name_id']"));
var description = element(by.css("textarea[id='description_id']")); var description = element(by.css("textarea[id='description_id']"));
var assignee = element(by.css("input[data-automation-id='adf-people-search-input']")); var assignee = element(by.css("div#people-widget-content input"));
var formDropDown = element(by.css("mat-select[id='form_id']")); var formDropDown = element(by.css("mat-select[id='form_id']"));
var startButton = element(by.css("button[id='button-start']")); var startButton = element(by.css("button[id='button-start']"));
var startButtonEnabled = element(by.css("button[id='button-start']:not(disabled)")); var startButtonEnabled = element(by.css("button[id='button-start']:not(disabled)"));
@ -44,14 +44,14 @@ var StartTaskDialog = function () {
Util.waitUntilElementIsVisible(assignee); Util.waitUntilElementIsVisible(assignee);
assignee.sendKeys(name); assignee.sendKeys(name);
this.selectAssigneeFromList(name); this.selectAssigneeFromList(name);
Util.waitUntilElementIsVisible(removeAssigneeIcon);
return this; return this;
}; };
this.selectAssigneeFromList = function (name) { this.selectAssigneeFromList = function (name) {
var assigneeRow = element(by.cssContainingText("adf-people-list div[class*='datatable-row'] div", name)); var assigneeRow = element(by.cssContainingText("mat-option span.adf-people-label-name", name));
Util.waitUntilElementIsVisible(assigneeRow); Util.waitUntilElementIsVisible(assigneeRow);
assigneeRow.click(); assigneeRow.click();
Util.waitUntilElementIsNotVisible(assigneeRow);
return this; return this;
}; };

View File

@ -122,6 +122,7 @@ var ProcessDetailsPage = function () {
// Click Audit log // Click Audit log
this.clickAuditLogButton = function () { this.clickAuditLogButton = function () {
Util.waitUntilElementIsVisible(auditLogButton); Util.waitUntilElementIsVisible(auditLogButton);
Util.waitUntilElementIsClickable(auditLogButton);
auditLogButton.click(); auditLogButton.click();
}; };

View File

@ -308,6 +308,7 @@ var ViewerToolbarPage = function () {
}; };
this.clickThumbnailsBtn = function () { this.clickThumbnailsBtn = function () {
Util.waitUntilElementIsVisible(thumbnailsBtn);
Util.waitUntilElementIsClickable(thumbnailsBtn); Util.waitUntilElementIsClickable(thumbnailsBtn);
thumbnailsBtn.click(); thumbnailsBtn.click();
}; };

View File

@ -34,6 +34,7 @@ import AlfrescoApi = require('alfresco-js-api-node');
import { UsersActions } from '../actions/users.actions'; import { UsersActions } from '../actions/users.actions';
import { AppsActions } from '../actions/APS/apps.actions'; import { AppsActions } from '../actions/APS/apps.actions';
import FileModel = require('../models/ACS/fileModel'); import FileModel = require('../models/ACS/fileModel');
import { browser } from '../../node_modules/protractor';
describe('Attachment list action menu for processes', () => { describe('Attachment list action menu for processes', () => {
@ -97,7 +98,7 @@ describe('Attachment list action menu for processes', () => {
done(); done();
}); });
it('[C260228] Option menu functionality - Active Process', () => { xit('[C260228] Option menu functionality - Active Process', () => {
processServicesPage.goToProcessServices().goToApp(app.title).clickProcessButton(); processServicesPage.goToProcessServices().goToApp(app.title).clickProcessButton();
processFiltersPage.selectFromProcessList(processName.active); processFiltersPage.selectFromProcessList(processName.active);
@ -117,21 +118,21 @@ describe('Attachment list action menu for processes', () => {
viewerPage.checkFileNameIsDisplayed(pngFile.name); viewerPage.checkFileNameIsDisplayed(pngFile.name);
viewerPage.clickCloseButton(); viewerPage.clickCloseButton();
browser.sleep(20000);
processFiltersPage.clickRunningFilterButton(); processFiltersPage.clickRunningFilterButton();
processFiltersPage.selectFromProcessList(processName.active); processFiltersPage.selectFromProcessList(processName.active);
attachmentListPage.downloadFile(pngFile.name); attachmentListPage.downloadFile(pngFile.name);
browser.driver.sleep(500); browser.driver.sleep(1000);
expect(Util.fileExists(downloadedPngFile, 20)).toBe(true); expect(Util.fileExists(downloadedPngFile, 30)).toBe(true);
attachmentListPage.removeFile(pngFile.name); attachmentListPage.removeFile(pngFile.name);
attachmentListPage.checkFileIsRemoved(pngFile.name); attachmentListPage.checkFileIsRemoved(pngFile.name);
}); });
it('[C279886] Option menu functionality - Completed Process', () => { xit('[C279886] Option menu functionality - Completed Process', () => {
processServicesPage.goToProcessServices().goToApp(app.title).clickProcessButton(); processServicesPage.goToProcessServices().goToApp(app.title).clickProcessButton();
processFiltersPage.clickRunningFilterButton(); processFiltersPage.clickRunningFilterButton();
@ -142,7 +143,7 @@ describe('Attachment list action menu for processes', () => {
attachmentListPage.clickAttachFileButton(pngFile.location); attachmentListPage.clickAttachFileButton(pngFile.location);
processDetailsPage.clickCancelProcessButton(); processDetailsPage.clickCancelProcessButton();
browser.sleep(20000);
processFiltersPage.clickCompletedFilterButton(); processFiltersPage.clickCompletedFilterButton();
processDetailsPage.checkProcessTitleIsDisplayed(); processDetailsPage.checkProcessTitleIsDisplayed();
@ -157,9 +158,9 @@ describe('Attachment list action menu for processes', () => {
attachmentListPage.downloadFile(pngFile.name); attachmentListPage.downloadFile(pngFile.name);
browser.driver.sleep(500); browser.driver.sleep(1000);
expect(Util.fileExists(downloadedPngFile, 20)).toBe(true); expect(Util.fileExists(downloadedPngFile, 30)).toBe(true);
attachmentListPage.removeFile(pngFile.name); attachmentListPage.removeFile(pngFile.name);
attachmentListPage.checkFileIsRemoved(pngFile.name); attachmentListPage.checkFileIsRemoved(pngFile.name);

View File

@ -71,16 +71,17 @@ describe('Process Filters Test', () => {
await loginPage.loginToProcessServicesUsingUserModel(user); await loginPage.loginToProcessServicesUsingUserModel(user);
navigationBarPage.clickProcessServicesButton();
done(); done();
}); });
it('Navigate to Running filter', () => { beforeEach( () => {
navigationBarPage.clickProcessServicesButton();
processServicesPage.checkApsContainer(); processServicesPage.checkApsContainer();
processServicesPage.goToApp(app.title); processServicesPage.goToApp(app.title);
appNavigationBarPage.clickProcessButton(); appNavigationBarPage.clickProcessButton();
});
it('Navigate to Running filter', () => {
processFiltersPage.clickCreateProcessButton(); processFiltersPage.clickCreateProcessButton();
processFiltersPage.clickNewProcessDropdown(); processFiltersPage.clickNewProcessDropdown();

View File

@ -94,8 +94,6 @@ describe('Start Process Component', () => {
await this.alfrescoJsApiUserTwo.activiti.appsApi.deployAppDefinitions({ appDefinitions: [{ id: publishApp.appDefinition.id }] }); await this.alfrescoJsApiUserTwo.activiti.appsApi.deployAppDefinitions({ appDefinitions: [{ id: publishApp.appDefinition.id }] });
loginPage.loginToProcessServicesUsingUserModel(procUserModel);
navigationBarPage.clickProcessServicesButton();
done(); done();
}); });
@ -112,19 +110,32 @@ describe('Start Process Component', () => {
done(); done();
}); });
it('Check start a process without a process model included', () => { describe(' Once logged with user without apps', () => {
beforeEach(() => {
loginPage.loginToProcessServicesUsingUserModel(procUserModel);
navigationBarPage.clickProcessServicesButton();
processServicesPage.checkApsContainer(); processServicesPage.checkApsContainer();
});
it('Check start a process without a process model included', () => {
processServicesPage.goToApp('Task App'); processServicesPage.goToApp('Task App');
appNavigationBarPage.clickProcessButton(); appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton(); processFiltersPage.clickCreateProcessButton();
processFiltersPage.clickNewProcessDropdown(); processFiltersPage.clickNewProcessDropdown();
startProcessPage.checkNoProcessMessage(); startProcessPage.checkNoProcessMessage();
}); });
});
it('Check Start Process within Task App', () => { describe(' Once logged with user with app', () => {
beforeEach(() => {
loginPage.loginToProcessServicesUsingUserModel(secondProcUserModel); loginPage.loginToProcessServicesUsingUserModel(secondProcUserModel);
navigationBarPage.clickProcessServicesButton(); navigationBarPage.clickProcessServicesButton();
processServicesPage.checkApsContainer(); processServicesPage.checkApsContainer();
});
it('Check Start Process within Task App', () => {
processServicesPage.goToApp('Task App'); processServicesPage.goToApp('Task App');
appNavigationBarPage.clickProcessButton(); appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton(); processFiltersPage.clickCreateProcessButton();
@ -132,21 +143,7 @@ describe('Start Process Component', () => {
expect(startProcessPage.getDefaultName()).toEqual('My Default Name'); expect(startProcessPage.getDefaultName()).toEqual('My Default Name');
}); });
it('Name of the process is required', () => {
navigationBarPage.clickProcessServicesButton();
processServicesPage.checkApsContainer();
processServicesPage.goToApp(app.title);
appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton();
processFiltersPage.clickNewProcessDropdown();
startProcessPage.selectFromProcessDropdown('process_without_se');
startProcessPage.deleteDefaultName('My Default Name');
startProcessPage.checkStartProcessButtonIsDisabled();
});
it('Process Definition is required and cancel button is clicked', () => { it('Process Definition is required and cancel button is clicked', () => {
navigationBarPage.clickProcessServicesButton();
processServicesPage.checkApsContainer();
processServicesPage.goToApp('Task App'); processServicesPage.goToApp('Task App');
appNavigationBarPage.clickProcessButton(); appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton(); processFiltersPage.clickCreateProcessButton();
@ -157,9 +154,17 @@ describe('Start Process Component', () => {
processFiltersPage.checkNoContentMessage(); processFiltersPage.checkNoContentMessage();
}); });
it('Name of the process is required', () => {
processServicesPage.goToApp(app.title);
appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton();
processFiltersPage.clickNewProcessDropdown();
startProcessPage.selectFromProcessDropdown('process_without_se');
startProcessPage.deleteDefaultName('My Default Name');
startProcessPage.checkStartProcessButtonIsDisabled();
});
it('Check Start Process within an app without a start event', () => { it('Check Start Process within an app without a start event', () => {
navigationBarPage.clickProcessServicesButton();
processServicesPage.checkApsContainer();
processServicesPage.goToApp(app.title); processServicesPage.goToApp(app.title);
appNavigationBarPage.clickProcessButton(); appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton(); processFiltersPage.clickCreateProcessButton();
@ -170,8 +175,6 @@ describe('Start Process Component', () => {
}); });
xit('Start a process within an app with a start event', () => { xit('Start a process within an app with a start event', () => {
navigationBarPage.clickProcessServicesButton();
processServicesPage.checkApsContainer();
processServicesPage.goToApp(app.title); processServicesPage.goToApp(app.title);
appNavigationBarPage.clickProcessButton(); appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton(); processFiltersPage.clickCreateProcessButton();
@ -199,8 +202,6 @@ describe('Start Process Component', () => {
}); });
it('Add a comment on an active process', () => { it('Add a comment on an active process', () => {
navigationBarPage.clickProcessServicesButton();
processServicesPage.checkApsContainer();
processServicesPage.goToApp(app.title); processServicesPage.goToApp(app.title);
appNavigationBarPage.clickProcessButton(); appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton(); processFiltersPage.clickCreateProcessButton();
@ -215,8 +216,6 @@ describe('Start Process Component', () => {
}); });
it('Click Audit Log button', () => { it('Click Audit Log button', () => {
navigationBarPage.clickProcessServicesButton();
processServicesPage.checkApsContainer();
processServicesPage.goToApp(app.title); processServicesPage.goToApp(app.title);
appNavigationBarPage.clickProcessButton(); appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton(); processFiltersPage.clickCreateProcessButton();
@ -227,13 +226,11 @@ describe('Start Process Component', () => {
processFiltersPage.clickRunningFilterButton(); processFiltersPage.clickRunningFilterButton();
processFiltersPage.selectFromProcessList('Audit Log'); processFiltersPage.selectFromProcessList('Audit Log');
processDetailsPage.clickAuditLogButton(); processDetailsPage.clickAuditLogButton();
expect(Util.fileExists(auditLogFile, 10)).toBe(true);
expect(Util.fileExists(auditLogFile, 15)).toBe(true);
}); });
it('Add a file in the attachment list using the button', () => { it('Add a file in the attachment list using the button', () => {
navigationBarPage.clickProcessServicesButton();
processServicesPage.checkApsContainer();
processServicesPage.goToApp(app.title); processServicesPage.goToApp(app.title);
appNavigationBarPage.clickProcessButton(); appNavigationBarPage.clickProcessButton();
@ -253,9 +250,6 @@ describe('Start Process Component', () => {
}); });
it('Click Show Diagram', () => { it('Click Show Diagram', () => {
navigationBarPage.clickProcessServicesButton();
processServicesPage.checkApsContainer();
processServicesPage.goToApp(app.title); processServicesPage.goToApp(app.title);
appNavigationBarPage.clickProcessButton(); appNavigationBarPage.clickProcessButton();
@ -274,8 +268,6 @@ describe('Start Process Component', () => {
}); });
it('Click on an active task', () => { it('Click on an active task', () => {
navigationBarPage.clickProcessServicesButton();
processServicesPage.checkApsContainer();
processServicesPage.goToApp(app.title); processServicesPage.goToApp(app.title);
appNavigationBarPage.clickProcessButton(); appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton(); processFiltersPage.clickCreateProcessButton();
@ -290,6 +282,7 @@ describe('Start Process Component', () => {
}); });
it('Click Cancel process button', () => { it('Click Cancel process button', () => {
loginPage.loginToProcessServicesUsingUserModel(secondProcUserModel);
navigationBarPage.clickProcessServicesButton(); navigationBarPage.clickProcessServicesButton();
processServicesPage.checkApsContainer(); processServicesPage.checkApsContainer();
processServicesPage.goToApp(app.title); processServicesPage.goToApp(app.title);
@ -308,8 +301,6 @@ describe('Start Process Component', () => {
}); });
it('Add a comment on a complete process', () => { it('Add a comment on a complete process', () => {
navigationBarPage.clickProcessServicesButton();
processServicesPage.checkApsContainer();
processServicesPage.goToApp(app.title); processServicesPage.goToApp(app.title);
appNavigationBarPage.clickProcessButton(); appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton(); processFiltersPage.clickCreateProcessButton();
@ -327,8 +318,6 @@ describe('Start Process Component', () => {
}); });
it('Cannot attach a file on a completed process', () => { it('Cannot attach a file on a completed process', () => {
navigationBarPage.clickProcessServicesButton();
processServicesPage.checkApsContainer();
processServicesPage.goToApp(app.title); processServicesPage.goToApp(app.title);
appNavigationBarPage.clickProcessButton(); appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton(); processFiltersPage.clickCreateProcessButton();
@ -343,4 +332,7 @@ describe('Start Process Component', () => {
processFiltersPage.selectFromProcessList('File'); processFiltersPage.selectFromProcessList('File');
attachmentListPage.checkAttachFileButtonIsNotDisplayed(); attachmentListPage.checkAttachFileButtonIsNotDisplayed();
}); });
});
}); });

View File

@ -183,8 +183,7 @@ describe('Start Task - Custom App', () => {
it('Assign User', () => { it('Assign User', () => {
processServicesPage.goToProcessServices().goToApp(appModel.name).clickTasksButton(); processServicesPage.goToProcessServices().goToApp(appModel.name).clickTasksButton();
taskPage.usingFiltersPage().goToFilter(CONSTANTS.TASKFILTERS.MY_TASKS); taskPage.usingFiltersPage().goToFilter(CONSTANTS.TASKFILTERS.MY_TASKS);
taskPage.createNewTask().addName(tasks[5]) taskPage.createNewTask().addName(tasks[5]).addAssignee(assigneeUserModel.firstName).clickStartButton()
.addAssignee(assigneeUserModel.firstName).clickStartButton()
.then(() => { .then(() => {
taskPage.usingTasksListPage().checkTaskListIsLoaded(); taskPage.usingTasksListPage().checkTaskListIsLoaded();
taskPage.usingTasksListPage().waitForTableBody(); taskPage.usingTasksListPage().waitForTableBody();

View File

@ -111,9 +111,9 @@ describe('Attachment list action menu for tasks', () => {
attachmentListPage.downloadFile(pngFile.name); attachmentListPage.downloadFile(pngFile.name);
browser.driver.sleep(500); browser.driver.sleep(1000);
expect(Util.fileExists(downloadedPngFile, 20)).toBe(true); expect(Util.fileExists(downloadedPngFile, 30)).toBe(true);
attachmentListPage.removeFile(pngFile.name); attachmentListPage.removeFile(pngFile.name);
attachmentListPage.checkFileIsRemoved(pngFile.name); attachmentListPage.checkFileIsRemoved(pngFile.name);
@ -143,9 +143,9 @@ describe('Attachment list action menu for tasks', () => {
attachmentListPage.downloadFile(pngFile.name); attachmentListPage.downloadFile(pngFile.name);
browser.driver.sleep(500); browser.driver.sleep(1000);
expect(Util.fileExists(downloadedPngFile, 20)).toBe(true); expect(Util.fileExists(downloadedPngFile, 30)).toBe(true);
attachmentListPage.removeFile(pngFile.name); attachmentListPage.removeFile(pngFile.name);
attachmentListPage.checkFileIsRemoved(pngFile.name); attachmentListPage.checkFileIsRemoved(pngFile.name);

View File

@ -519,6 +519,6 @@ exports.fileExists = function (filePath, retries) {
resolve(true); resolve(true);
} }
}); });
}, 1000); }, 2000);
}); });
}; };