add slower type method for user picker (#5632)

* add slower type method for user picker

* add slower type method for user picker

* slower

* other fixes

* remove slow digit

* fix some more test

* slow down

* fix some more test

* exclude test

* exclude C315268
This commit is contained in:
Eugenio Romano
2020-04-23 23:23:32 +01:00
committed by GitHub
parent 86d6ecb49e
commit b9842ba12b
16 changed files with 101 additions and 69 deletions

View File

@@ -15,7 +15,7 @@
* limitations under the License.
*/
import { LoginPage, NotificationHistoryPage } from '@alfresco/adf-testing';
import { LoginPage, NotificationHistoryPage, StringUtil } from '@alfresco/adf-testing';
import { ContentServicesPage } from '../../pages/adf/content-services.page';
import { FolderDialogPage } from '../../pages/adf/dialog/folder-dialog.page';
import { MetadataViewPage } from '../../pages/adf/metadata-view.page';
@@ -106,7 +106,7 @@ describe('Create folder directive', () => {
});
it('[C260158] Should be possible add a folder description when create a new folder', async () => {
const folderName = 'folderDescription';
const folderName = StringUtil.generateRandomString();
const description = 'this is the description';
await contentServicesPage.clickOnCreateNewFolder();

View File

@@ -333,6 +333,7 @@ describe('Document List Component', () => {
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.createFolder(folderName, '-my-');
@@ -341,7 +342,7 @@ describe('Document List Component', () => {
});
afterAll(async () => {
for (let i = 0; i <= folderCreated.length; i++) {
for (let i = 0; i < folderCreated.length; i++) {
await uploadActions.deleteFileOrFolder(folderCreated[i].entry.id);
}
});

View File

@@ -26,7 +26,6 @@ describe('Document List Component', () => {
const loginPage = new LoginPage();
const contentServicesPage = new ContentServicesPage();
const navBar = new NavigationBarPage();
const errorPage = new ErrorPage();
const navigationBarPage = new NavigationBarPage();
@@ -54,15 +53,11 @@ describe('Document List Component', () => {
privateSite = await this.alfrescoJsApi.core.sitesApi.createSite(privateSiteBody);
await loginPage.loginToContentServicesUsingUserModel(acsUser);
});
afterAll(async () => {
await navigationBarPage.clickLogoutButton();
await this.alfrescoJsApi.core.sitesApi.deleteSite(privateSite.entry.id);
await navBar.openLanguageMenu();
await navBar.chooseLanguage('English');
});
it('[C217334] Should display a message when accessing file without permissions', async () => {
@@ -77,13 +72,5 @@ describe('Document List Component', () => {
await BrowserActions.getUrl(browser.params.testConfig.adf.url + '/files/' + privateSite.entry.guid);
await expect(await errorPage.getErrorCode()).toBe('403');
});
it('[C279925] Should display translated message when accessing a file without permissions if language is changed', async () => {
await navBar.openLanguageMenu();
await navBar.chooseLanguage('Italiano');
await browser.sleep(2000);
await BrowserActions.getUrl(browser.params.testConfig.adf.url + '/files/' + privateSite.entry.guid);
await expect(await errorPage.getErrorDescription()).toBe('Accesso alla risorsa sul server non consentito.');
});
});
});

View File

@@ -15,7 +15,14 @@
* limitations under the License.
*/
import { LoginPage, LocalStorageUtil, BrowserActions, UploadActions, ViewerPage } from '@alfresco/adf-testing';
import {
LoginPage,
LocalStorageUtil,
BrowserActions,
UploadActions,
ViewerPage,
StringUtil
} from '@alfresco/adf-testing';
import { ContentServicesPage } from '../../pages/adf/content-services.page';
import { MetadataViewPage } from '../../pages/adf/metadata-view.page';
import { AcsUserModel } from '../../models/ACS/acs-user.model';
@@ -48,7 +55,7 @@ describe('Metadata component', () => {
const acsUser = new AcsUserModel();
const folderName = 'Metadata Folder';
const folderName = StringUtil.generateRandomString();
const pngFileModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_name,

View File

@@ -58,10 +58,10 @@ export class ContentServicesPage {
errorSnackBar: ElementFinder = element(by.css('simple-snack-bar[class*="mat-simple-snackbar"]'));
emptyPagination: ElementFinder = element(by.css('adf-pagination[class*="adf-pagination__empty"]'));
dragAndDrop: ElementFinder = element.all(by.css('adf-upload-drag-area div')).first();
nameHeader: ElementFinder = element(by.css('div[data-automation-id="auto_id_name"] > span'));
sizeHeader: ElementFinder = element(by.css('div[data-automation-id="auto_id_content.sizeInBytes"] > span'));
createdByHeader: ElementFinder = element(by.css('div[data-automation-id="auto_id_createdByUser.displayName"] > span'));
createdHeader: ElementFinder = element(by.css('div[data-automation-id="auto_id_createdAt"] > span'));
nameHeader: ElementFinder = element.all(by.css('div[data-automation-id="auto_id_name"] > span')).first();
sizeHeader: ElementFinder = element.all(by.css('div[data-automation-id="auto_id_content.sizeInBytes"] > span')).first();
createdByHeader: ElementFinder = element.all(by.css('div[data-automation-id="auto_id_createdByUser.displayName"] > span')).first();
createdHeader: ElementFinder = element.all(by.css('div[data-automation-id="auto_id_createdAt"] > span')).first();
recentFiles: ElementFinder = element(by.css('.app-container-recent'));
recentFilesExpanded: ElementFinder = element(by.css('.app-container-recent mat-expansion-panel-header.mat-expanded'));
recentFilesClosed: ElementFinder = element(by.css('.app-container-recent mat-expansion-panel-header'));
@@ -87,7 +87,7 @@ export class ContentServicesPage {
markedFavorite: ElementFinder = element(by.cssContainingText('button[data-automation-id="favorite"] mat-icon', 'star'));
notMarkedFavorite: ElementFinder = element(by.cssContainingText('button[data-automation-id="favorite"] mat-icon', 'star_border'));
multiSelectToggle: ElementFinder = element(by.cssContainingText('span.mat-slide-toggle-content', ' Multiselect (with checkboxes) '));
selectAllCheckbox: ElementFinder = element(by.css('.adf-checkbox-sr-only'));
selectAllCheckbox: ElementFinder = element.all(by.css('.adf-checkbox-sr-only')).first();
selectionModeDropdown: ElementFinder = element(by.css('.mat-select[aria-label="Selection Mode"]'));
selectedNodesList: ElementArrayFinder = element.all(by.css('.app-content-service-settings li'));

View File

@@ -170,7 +170,6 @@ describe('Process filters cloud', () => {
await processCloudDemoPage.editProcessFilterCloudComponent().setAppNameDropDown('subprocessapp');
await processCloudDemoPage.editProcessFilterCloudComponent().setProperty('initiator', testUser.username);
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
await expect(await processListPage.getDisplayedProcessListTitle()).toEqual('No Processes Found');
});
@@ -213,7 +212,6 @@ describe('Process filters cloud', () => {
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedByName(runningProcessInstance.entry.name);
await browser.driver.sleep(1000);
await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().getNumberOfRows()).toBe(1);
await processCloudDemoPage.editProcessFilterCloudComponent().setProperty('processInstanceId', anotherProcessInstance.entry.id);
@@ -345,7 +343,6 @@ describe('Process filters cloud', () => {
await processCloudDemoPage.editProcessFilterCloudComponent().openFilter();
await processCloudDemoPage.editProcessFilterCloudComponent().setProperty('lastModifiedFrom', afterDate);
await processCloudDemoPage.editProcessFilterCloudComponent().setProperty('lastModifiedTo', afterDate);
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
await expect(await processListPage.getDisplayedProcessListTitle()).toEqual('No Processes Found');
});
});

View File

@@ -108,7 +108,9 @@ describe('Process Header cloud component', () => {
await tasksCloudDemoPage.taskListCloudComponent().checkTaskListIsLoaded();
await processCloudDemoPage.processFilterCloudComponent.clickOnProcessFilters();
await processCloudDemoPage.processFilterCloudComponent.clickRunningProcessesFilter();
await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toBe('Running Processes');
await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ processName: runningProcess.entry.name });
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedByName(runningProcess.entry.name);

View File

@@ -74,42 +74,55 @@ describe('Task Header cloud component', () => {
let identityService: IdentityService;
let groupIdentityService: GroupIdentityService;
const createCompletedTask = async function () {
const completedTaskId = await tasksService.createStandaloneTask(completedTaskName,
simpleApp, { priority: priority, description: description, dueDate: basicCreatedTask.entry.createdDate });
await tasksService.claimTask(completedTaskId.entry.id, simpleApp);
await tasksService.completeTask(completedTaskId.entry.id, simpleApp);
return tasksService.getTask(completedTaskId.entry.id, simpleApp);
};
const createSubTask = async function (createdTaskId) {
const subTaskId = await tasksService.createStandaloneSubtask(createdTaskId.entry.id, simpleApp, StringUtil.generateRandomString());
await tasksService.claimTask(subTaskId.entry.id, simpleApp);
return tasksService.getTask(subTaskId.entry.id, simpleApp);
};
const createTask = async function () {
const createdTaskId = await tasksService.createStandaloneTask(basicCreatedTaskName, simpleApp);
await tasksService.claimTask(createdTaskId.entry.id, simpleApp);
basicCreatedTask = await tasksService.getTask(createdTaskId.entry.id, simpleApp);
basicCreatedDate = moment(basicCreatedTask.entry.createdDate).format(formatDate);
return createdTaskId;
};
beforeAll(async () => {
await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password);
identityService = new IdentityService(apiService);
groupIdentityService = new GroupIdentityService(apiService);
testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.ROLES.ACTIVITI_USER]);
testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.ROLES.ACTIVITI_USER]);
groupInfo = await groupIdentityService.getGroupInfoByGroupName('hr');
await identityService.addUserToGroup(testUser.idIdentityService, groupInfo.id);
await apiService.login(testUser.email, testUser.password);
tasksService = new TasksService(apiService);
const createdTaskId = await tasksService.createStandaloneTask(basicCreatedTaskName, simpleApp);
unclaimedTask = await tasksService.createStandaloneTask(unclaimedTaskName, simpleApp);
await tasksService.claimTask(createdTaskId.entry.id, simpleApp);
const createdTaskId = await createTask();
basicCreatedTask = await tasksService.getTask(createdTaskId.entry.id, simpleApp);
completedTask = await createCompletedTask();
basicCreatedDate = moment(basicCreatedTask.entry.createdDate).format(formatDate);
const completedTaskId = await tasksService.createStandaloneTask(completedTaskName,
simpleApp, { priority: priority, description: description, dueDate: basicCreatedTask.entry.createdDate });
await tasksService.claimTask(completedTaskId.entry.id, simpleApp);
await tasksService.completeTask(completedTaskId.entry.id, simpleApp);
completedTask = await tasksService.getTask(completedTaskId.entry.id, simpleApp);
completedCreatedDate = moment(completedTask.entry.createdDate).format(formatDate);
dueDate = moment(completedTask.entry.createdDate).format(dateTimeFormat);
dueDate = moment(completedTask.entry.dueDate).format(dateTimeFormat);
completedEndDate = moment(completedTask.entry.endDate).format(formatDate);
defaultDate = moment(completedTask.entry.createdDate).format(defaultFormat);
const subTaskId = await tasksService.createStandaloneSubtask(createdTaskId.entry.id, simpleApp, StringUtil.generateRandomString());
await tasksService.claimTask(subTaskId.entry.id, simpleApp);
subTask = await tasksService.getTask(subTaskId.entry.id, simpleApp);
subTask = await createSubTask(createdTaskId);
subTaskCreatedDate = moment(subTask.entry.createdDate).format(formatDate);
await browser.sleep(3000);
await loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password);
});
@@ -128,6 +141,7 @@ describe('Task Header cloud component', () => {
await tasksCloudDemoPage.taskFilterCloudComponent.clickMyTasksFilter();
await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(basicCreatedTaskName);
await tasksCloudDemoPage.taskListCloudComponent().selectRow(basicCreatedTaskName);
await expect(await taskHeaderCloudPage.getId()).toEqual(basicCreatedTask.entry.id);
await expect(await taskHeaderCloudPage.getDescription())
.toEqual(isValueInvalid(basicCreatedTask.entry.description) ? CONSTANTS.TASK_DETAILS.NO_DESCRIPTION : basicCreatedTask.entry.description);
@@ -147,6 +161,7 @@ describe('Task Header cloud component', () => {
await tasksCloudDemoPage.taskFilterCloudComponent.clickCompletedTasksFilter();
await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(completedTaskName);
await tasksCloudDemoPage.taskListCloudComponent().selectRow(completedTaskName);
await expect(await taskHeaderCloudPage.getId()).toEqual(completedTask.entry.id);
await expect(await taskHeaderCloudPage.getDescription())
.toEqual(isValueInvalid(completedTask.entry.description) ? CONSTANTS.TASK_DETAILS.NO_DESCRIPTION : completedTask.entry.description);
@@ -166,6 +181,7 @@ describe('Task Header cloud component', () => {
await tasksCloudDemoPage.taskFilterCloudComponent.clickMyTasksFilter();
await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(subTask.entry.name);
await tasksCloudDemoPage.taskListCloudComponent().selectRow(subTask.entry.name);
await expect(await taskHeaderCloudPage.getId()).toEqual(subTask.entry.id);
await expect(await taskHeaderCloudPage.getDescription())
.toEqual(isValueInvalid(subTask.entry.description) ? CONSTANTS.TASK_DETAILS.NO_DESCRIPTION : subTask.entry.description);
@@ -209,11 +225,14 @@ describe('Task Header cloud component', () => {
await tasksCloudDemoPage.editTaskFilterCloud.openFilter();
await tasksCloudDemoPage.editTaskFilterCloud.setStatusFilterDropDown('ALL');
await tasksCloudDemoPage.editTaskFilterCloud.clearAssignee();
await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(unclaimedTask.entry.name);
await tasksCloudDemoPage.taskListCloudComponent().selectRow(unclaimedTask.entry.name);
await taskHeaderCloudPage.checkTaskPropertyListIsDisplayed();
const currentAssignee = await taskHeaderCloudPage.assigneeCardTextItem.getFieldValue();
await expect(currentAssignee).toBe('No assignee');
await taskHeaderCloudPage.priorityCardTextItem.checkElementIsReadonly();
await taskHeaderCloudPage.statusCardTextItem.checkElementIsReadonly();
});

View File

@@ -1,4 +1,6 @@
{
"C260249" : "REPO-4772 ACS 6.2"
"C260249" : "REPO-4772 ACS 6.2",
"C309674" : "https://issues.alfresco.com/jira/browse/ADF-5122",
"C315268" : "https://issues.alfresco.com/jira/browse/ADF-5123"
}

View File

@@ -19,6 +19,8 @@ import * as path from 'path';
import * as fs from 'fs';
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
import { NodeEntry } from '@alfresco/js-api/src/api/content-rest-api/model/nodeEntry';
import { ApiUtil } from '../../core/structure/api.util';
import { Logger } from '../../core/utils/logger';
export class UploadActions {
alfrescoJsApi: AlfrescoApi = null;
@@ -64,7 +66,15 @@ export class UploadActions {
}
async deleteFileOrFolder(nodeId) {
const apiCall = async () => {
try {
return this.alfrescoJsApi.node.deleteNode(nodeId, { permanent: true });
} catch (error) {
Logger.error('Error delete file or folder');
}
};
return ApiUtil.waitForApi(apiCall, () => true);
}
async uploadFolder(sourcePath, folder) {

View File

@@ -275,6 +275,7 @@ export class DataTableComponentPage {
}
async waitTillContentLoaded(): Promise<void> {
await browser.driver.sleep(500);
await BrowserVisibility.waitUntilElementIsVisible(this.contents.first());
}

View File

@@ -61,7 +61,7 @@ export class DateTimeWidgetPage {
}
async selectTime(time): Promise<void> {
const selectedTime = element(by.cssContainingText('div[class*="mat-datetimepicker-clock-cell"]', time));
const selectedTime = element.all(by.cssContainingText('div[class*="mat-datetimepicker-clock-cell"]', time)).first();
await BrowserActions.click(selectedTime);
}

View File

@@ -68,9 +68,14 @@ export class PeopleCloudComponentPage {
return this.assigneeChipList.all(by.css('mat-chip')).first().getText();
}
async checkUserIsDisplayed(name: string): Promise<void> {
async checkUserIsDisplayed(name: string): Promise<boolean> {
try {
const assigneeRow = element(by.cssContainingText('mat-option span.adf-people-label-name', name));
await BrowserVisibility.waitUntilElementIsVisible(assigneeRow);
return true;
} catch {
return false;
}
}
async checkUserIsNotDisplayed(name: string): Promise<void> {

View File

@@ -17,7 +17,7 @@
import { BrowserVisibility } from '../../core/utils/browser-visibility';
import { DataTableComponentPage } from '../../core/pages/data-table-component.page';
import { element, by, ElementFinder, Locator } from 'protractor';
import { element, by, ElementFinder, Locator, browser } from 'protractor';
import { BrowserActions } from '../../core/utils/browser-actions';
export class ProcessListCloudComponentPage {
@@ -105,6 +105,7 @@ export class ProcessListCloudComponentPage {
async clickOptionsButton(content: string): Promise<void> {
await BrowserActions.closeMenuAndDialogs();
const row: ElementFinder = this.dataTable.getRow('Id', content);
await browser.sleep(1000);
await BrowserActions.click(row.element(this.optionButton));
await BrowserVisibility.waitUntilElementIsVisible(this.actionMenu);
}

View File

@@ -84,6 +84,6 @@ export class TaskHeaderCloudPage {
}
async checkTaskPropertyListIsDisplayed(): Promise<void> {
await BrowserVisibility.waitUntilElementIsVisible(this.taskPropertyList);
await BrowserVisibility.waitUntilElementIsVisible(this.taskPropertyList, 90000);
}
}