mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
Ng16 migration (#10114)
* NG-16 - migration step 1 * NG16 - fixed the builds * [MIGRATION] - Switching off no empty functions rule * [MIGRATION] - Somehow the fix for the cli types got lost * [MIGRATION] - Something happened on the way to heaven * [MIGRATION] - Ok this is weird * [MIGRATION] - Ok this is really weird * [MIGRATION] - change selector for expanded expansion panel content * [MIGRATION] - storybook chips related e2e fails fix, unit alignments * [MIGRATION] - Ok this is really weird * [MIGRATION] - Updating outdated packages * [MIGRATION] - updated deps for process cloud * [MIGRATION] - Rebased to latest * [MIGRATION] - Fixed lint * [MIGRATION] - Fixed package version * Rebased with lastest changes * [MIGRATION] - check to update the script * [MIGRATION] - rebased after the move of AlfrescoApiService * [MIGRATION] - fixed schematics build * [MIGRATION] - the lesson is : do not change what is already working * Rebased to latestp * Fixes after CR (#10202) * Fixed white background issue in sidenav after ng16 upgrade (#10207) * [MIGRATION] fix header background color not being read from input prop * Fixed build * Rebased * Fix package version after release * Thanks apollo deps * custom theme missing sidenav color * fix filter subscript overlapping dropdown items * [ACS-8749] View More tags button no longer shows when all tags are removed from a node (#10285) * [ACS-8741] Sidenav text for Process and Task filters is now grey (#10284) * AAE-26037 Moved permissions role selector styles to a dedicated file (#10297) * Removed fallback and starting using simple token * Removed fallback and starting using simple token * Fixed related unit test * Fixed related unit test * Writing should use the same calss as reading * Fixed unit tests for insights * Fixed unit tests for insights * Added fallback for JWT token * Added fallback for JWT token * Auto import fix * Added fallback for injection * Added fallback for injection * Trying to fix JWT token issue * Fixed unit tests * Fixed unit tests * Fixed style for collaborators * fixed permission row height * AAE-26163 Fix infinite loop when authentication error event occured (#10272) * AAE-26163 Logout user after 3 login attempts failed, avoiding infinite loop when an authentication error occured, like when a user machine clock is significantly out of sync * AAE-26163 Wait to discovery document to be loaded and user not authenticated to perform a ssoLogin, logout user if login fails after 3 attempts * AAE-26163 Fix missed id_token_hint invoking logout when a login error occured due to a clock significantly out of sync * AAE-26163 Add fake observable to unit test * AAE-26163 Show oauth event logs if showDebugInformation is enabled, remove auth items if access token is not valid * AAE-26163 Improve tryLogin error message * AAE-26163 Check if token has expired to fix case when user access the application after the token is expired and with a clock significantly out of sync * AAE-26163 Test logout when clock is out of sync * AAE-26163 Create a service to check if local machine time is out of sync * AAE-26163 Update oauthErrorEvent$ and combinedOAuthErrorsStream$ to return errors * AAE-26163 Output error within combined oauth error event subscription * AAE-26163 Fix lint problems * AAE-26163 Logout user when token refresh error happens for the second time, if the token is not refreshed properly after first refresh error * AAE-26163 Logout user once an oauth error event occur due to clock out of sync * AAE-26163 Fix retry login error message if the OAuthErrorEvent doesn t return reason * AAE-26163 Fix the issue where the logout API call is canceled by the authorize call when login fails due to clock synchronization problems, causing an infinite loop. * remove console.log * AAE-26163 Fix retry login error message if the OAuthErrorEvent reason is an empty object * Updating dependencies * Fixed subject complete to avoid calling a reset event when complete --------- Co-authored-by: Wojciech Duda <69160975+wojd0@users.noreply.github.com> Co-authored-by: dominikiwanekhyland <141320833+dominikiwanekhyland@users.noreply.github.com> Co-authored-by: swapnil-verma-gl <92505353+swapnil-verma-gl@users.noreply.github.com> Co-authored-by: Ehsan Rezaei <ehsan.rezaei@hyland.com> Co-authored-by: Amedeo Lepore <amedeo.lepore@hyland.com>
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
"overrides": [
|
||||
{
|
||||
"files": ["*.ts"],
|
||||
"extends": ["plugin:@nrwl/nx/angular"],
|
||||
"extends": ["plugin:@nx/angular"],
|
||||
"parserOptions": {
|
||||
"project": ["lib/testing/tsconfig.lib.json"],
|
||||
"createDefaultProgram": true
|
||||
@@ -67,7 +67,7 @@
|
||||
"project": ["lib/testing/tsconfig.lib.json"],
|
||||
"createDefaultProgram": true
|
||||
},
|
||||
"extends": ["plugin:@nrwl/nx/angular-template"],
|
||||
"extends": ["plugin:@nx/angular-template"],
|
||||
"rules": {}
|
||||
}
|
||||
]
|
||||
|
@@ -22,7 +22,6 @@ import { Logger } from '../../utils/logger';
|
||||
import { browser } from 'protractor';
|
||||
|
||||
export class GroupIdentityService {
|
||||
|
||||
api: ApiService;
|
||||
|
||||
constructor(api: ApiService) {
|
||||
@@ -75,9 +74,11 @@ export class GroupIdentityService {
|
||||
|
||||
Logger.log(`Data ${JSON.stringify(data)}`);
|
||||
|
||||
return data[0]; Logger.error('Group not found');
|
||||
|
||||
return data[0];
|
||||
Logger.error('Group not found');
|
||||
} catch (error) {
|
||||
Logger.error('Group not found');
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -135,5 +136,4 @@ export class GroupIdentityService {
|
||||
const data = await this.api.performIdentityOperation(path, method, queryParams, postBody);
|
||||
return data[0].id;
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -388,7 +388,9 @@ export class DataTableComponentPage {
|
||||
this.rootElement.element(by.tagName(materialLocators.Progress.spinner.root)),
|
||||
MAX_LOADING_TIME
|
||||
);
|
||||
} catch (error) {}
|
||||
} catch (error) {
|
||||
Logger.error('Loading spinner is not present');
|
||||
}
|
||||
|
||||
if (await this.isEmpty()) {
|
||||
Logger.log('empty page');
|
||||
@@ -414,7 +416,9 @@ export class DataTableComponentPage {
|
||||
try {
|
||||
Logger.log('wait datatable loading spinner is present');
|
||||
await BrowserVisibility.waitUntilElementIsVisible(element(by.tagName(materialLocators.Progress.bar.root)));
|
||||
} catch (error) {}
|
||||
} catch (error) {
|
||||
Logger.error('Infinite pagination spinner is not present');
|
||||
}
|
||||
if (await this.isEmpty()) {
|
||||
Logger.log('empty page');
|
||||
} else {
|
||||
|
@@ -43,6 +43,7 @@ export class LoginPage {
|
||||
try {
|
||||
currentUrl = await browser.getCurrentUrl();
|
||||
} catch (e) {
|
||||
/* do nothing */
|
||||
}
|
||||
|
||||
if (!currentUrl || currentUrl.indexOf(this.loginUrl) === -1) {
|
||||
@@ -87,7 +88,7 @@ export class LoginPage {
|
||||
if (oauth2 && oauth2.silentLogin === false) {
|
||||
Logger.log(`Login SSO`);
|
||||
await this.clickOnSSOButton();
|
||||
}else{
|
||||
} else {
|
||||
Logger.log(`Login SSO silent login`);
|
||||
}
|
||||
|
||||
|
@@ -212,7 +212,8 @@ export const materialLocators = {
|
||||
class: '.mat-expansion-panel-header',
|
||||
root: 'mat-expansion-panel-header'
|
||||
},
|
||||
title: '.mat-expansion-panel-header-title'
|
||||
title: '.mat-expansion-panel-header-title',
|
||||
expanded: '.mat-expanded'
|
||||
},
|
||||
indicator: '.mat-expansion-indicator'
|
||||
},
|
||||
|
@@ -75,7 +75,9 @@ export class ViewerPage {
|
||||
Logger.log('wait spinner is present');
|
||||
await BrowserVisibility.waitUntilElementIsVisible(element(by.tagName(materialLocators.Progress.spinner.root)));
|
||||
await BrowserVisibility.waitUntilElementIsNotVisible(element(by.tagName(materialLocators.Progress.spinner.root)), MAX_LOADING_TIME);
|
||||
} catch (error) {}
|
||||
} catch (error) {
|
||||
Logger.error('Spinner is not present');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -22,7 +22,6 @@ import { ApiService } from '../../../shared/api/api.service';
|
||||
import { ApiUtil } from '../../../shared/api/api.util';
|
||||
|
||||
export class Application {
|
||||
|
||||
requestApiHelper: E2eRequestApiHelper;
|
||||
endPoint = `/deployment-service/v1/applications/`;
|
||||
|
||||
@@ -57,6 +56,7 @@ export class Application {
|
||||
return this.requestApiHelper.delete(`${this.endPoint}${applicationName}`);
|
||||
} catch (error) {
|
||||
Logger.error(`[Application] Undeploy application ${applicationName} failed with error: ${error.message}`);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
return ApiUtil.waitForApi(apiCall, isApplicationUndeployed, 10, 3000);
|
||||
|
@@ -23,7 +23,6 @@ import { ApiUtil } from '../../../shared/api/api.util';
|
||||
import { ApiService } from '../../../shared/api/api.service';
|
||||
|
||||
export class Descriptor {
|
||||
|
||||
requestApiHelper: E2eRequestApiHelper;
|
||||
endPoint = `deployment-service/v1/descriptors/`;
|
||||
|
||||
@@ -61,6 +60,7 @@ export class Descriptor {
|
||||
return this.requestApiHelper.delete(`${this.endPoint}${name}`);
|
||||
} catch (error) {
|
||||
Logger.error(`[Descriptor] Delete descriptor ${name} failed with error: ${error.message}`);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
return ApiUtil.waitForApi(apiCall, isDescriptorDeleted, 10, 15000);
|
||||
|
@@ -36,7 +36,6 @@ export interface FilterProps {
|
||||
}
|
||||
|
||||
export class EditProcessFilterCloudComponentPage {
|
||||
|
||||
rootElement = $$('adf-cloud-edit-process-filter').first();
|
||||
customiseFilter = $('#adf-edit-process-filter-sub-title-id');
|
||||
saveButton = $('button[data-automation-id="adf-filter-action-save"]');
|
||||
@@ -48,17 +47,29 @@ export class EditProcessFilterCloudComponentPage {
|
||||
statusDropdown = new DropdownPage($(`${materialLocators.Select.root}[data-automation-id='adf-cloud-edit-process-property-status']`));
|
||||
sortDropdown = new DropdownPage($(`${materialLocators.Select.root}[data-automation-id='adf-cloud-edit-process-property-sort']`));
|
||||
orderDropdown = new DropdownPage($(`${materialLocators.Select.root}[data-automation-id='adf-cloud-edit-process-property-order']`));
|
||||
processDefinitionNameDropdown = new DropdownPage($(`${materialLocators.Select.root}[data-automation-id='adf-cloud-edit-process-property-processDefinitionName']`));
|
||||
suspendedDateRangeDropdown = new DropdownPage($(`${materialLocators.Select.root}[data-automation-id='adf-cloud-edit-process-property-suspendedDateRange']`));
|
||||
startedDateRangeDropdown = new DropdownPage($(`${materialLocators.Select.root}[data-automation-id='adf-cloud-edit-process-property-startedDateRange']`));
|
||||
completedDateRangeDropdown = new DropdownPage($(`${materialLocators.Select.root}[data-automation-id='adf-cloud-edit-process-property-completedDateRange']`));
|
||||
suspendedDateRangeWithin = new DatePickerPage($(`${materialLocators.Datepicker.toggle.root}[data-automation-id='adf-cloud-edit-process-property-date-range-suspendedDateRange']`));
|
||||
processDefinitionNameDropdown = new DropdownPage(
|
||||
$(`${materialLocators.Select.root}[data-automation-id='adf-cloud-edit-process-property-processDefinitionName']`)
|
||||
);
|
||||
suspendedDateRangeDropdown = new DropdownPage(
|
||||
$(`${materialLocators.Select.root}[data-automation-id='adf-cloud-edit-process-property-suspendedDateRange']`)
|
||||
);
|
||||
startedDateRangeDropdown = new DropdownPage(
|
||||
$(`${materialLocators.Select.root}[data-automation-id='adf-cloud-edit-process-property-startedDateRange']`)
|
||||
);
|
||||
completedDateRangeDropdown = new DropdownPage(
|
||||
$(`${materialLocators.Select.root}[data-automation-id='adf-cloud-edit-process-property-completedDateRange']`)
|
||||
);
|
||||
suspendedDateRangeWithin = new DatePickerPage(
|
||||
$(`${materialLocators.Datepicker.toggle.root}[data-automation-id='adf-cloud-edit-process-property-date-range-suspendedDateRange']`)
|
||||
);
|
||||
|
||||
peopleCloudComponent = new PeopleCloudComponentPage();
|
||||
editProcessFilterDialogPage = new EditProcessFilterDialogPage();
|
||||
|
||||
private expansionPanelExtended = this.rootElement.$(`${materialLocators.Expansion.panel.header.root}${materialLocators.Expanded.class}`);
|
||||
private content = TestElement.byCss(`adf-cloud-edit-process-filter ${materialLocators.Expansion.panel.root} [style*="visible"]`);
|
||||
private content = TestElement.byCss(
|
||||
`adf-cloud-edit-process-filter ${materialLocators.Expansion.panel.root}${materialLocators.Expansion.panel.expanded} ${materialLocators.Expansion.panel.content.class}`
|
||||
);
|
||||
|
||||
editProcessFilterDialog(): EditProcessFilterDialogPage {
|
||||
return this.editProcessFilterDialogPage;
|
||||
|
@@ -28,7 +28,6 @@ import { materialLocators } from '../../public-api';
|
||||
export type StatusType = 'All' | 'Created' | 'Assigned' | 'Cancelled' | 'Suspended' | 'Completed';
|
||||
|
||||
export class EditTaskFilterCloudComponentPage {
|
||||
|
||||
rootElement = $$('adf-cloud-edit-task-filter').first();
|
||||
customiseFilter = $('#adf-edit-task-filter-sub-title-id');
|
||||
assignee = $('input[data-automation-id="adf-cloud-edit-task-property-assignee"]');
|
||||
@@ -51,21 +50,33 @@ export class EditTaskFilterCloudComponentPage {
|
||||
sortDropdown = new DropdownPage($(`${materialLocators.Select.root}[data-automation-id='adf-cloud-edit-task-property-sort']`));
|
||||
priorityDropdown = new DropdownPage(this.priority);
|
||||
orderDropdown = new DropdownPage($(`${materialLocators.Select.root}[data-automation-id='adf-cloud-edit-task-property-order']`));
|
||||
completedDateDropdown = new DropdownPage($(`${materialLocators.Select.root}[data-automation-id="adf-cloud-edit-process-property-completedDateRange"]`));
|
||||
completedDateDropdown = new DropdownPage(
|
||||
$(`${materialLocators.Select.root}[data-automation-id="adf-cloud-edit-process-property-completedDateRange"]`)
|
||||
);
|
||||
assignmentDropdown = new DropdownPage($(`.adf-task-assignment-filter`));
|
||||
processDefinitionNameDropdown = new DropdownPage($(`${materialLocators.Select.root}[data-automation-id="adf-cloud-edit-task-property-processDefinitionName"]`));
|
||||
createdDateRangeDropdown = new DropdownPage($(`${materialLocators.Select.root}[data-automation-id='adf-cloud-edit-process-property-createdDateRange']`));
|
||||
createdDateRangeWithin = new DatePickerPage($(`${materialLocators.Datepicker.toggle.root}[data-automation-id='adf-cloud-edit-process-property-date-range-createdDateRange']`));
|
||||
processDefinitionNameDropdown = new DropdownPage(
|
||||
$(`${materialLocators.Select.root}[data-automation-id="adf-cloud-edit-task-property-processDefinitionName"]`)
|
||||
);
|
||||
createdDateRangeDropdown = new DropdownPage(
|
||||
$(`${materialLocators.Select.root}[data-automation-id='adf-cloud-edit-process-property-createdDateRange']`)
|
||||
);
|
||||
createdDateRangeWithin = new DatePickerPage(
|
||||
$(`${materialLocators.Datepicker.toggle.root}[data-automation-id='adf-cloud-edit-process-property-date-range-createdDateRange']`)
|
||||
);
|
||||
dueDateRangeDropdown = new DropdownPage($(`${materialLocators.Select.root}[data-automation-id='adf-cloud-edit-process-property-dueDateRange']`));
|
||||
dueDateRangeWithin = new DatePickerPage($(`${materialLocators.Datepicker.toggle.root}[data-automation-id='adf-cloud-edit-picker-date-range-dueDateRange']`));
|
||||
dueDateRangeWithin = new DatePickerPage(
|
||||
$(`${materialLocators.Datepicker.toggle.root}[data-automation-id='adf-cloud-edit-picker-date-range-dueDateRange']`)
|
||||
);
|
||||
|
||||
peopleCloudComponent = new PeopleCloudComponentPage();
|
||||
groupCloudComponent = new GroupCloudComponentPage();
|
||||
|
||||
dataTable = new DataTableComponentPage( $('adf-cloud-task-list'));
|
||||
dataTable = new DataTableComponentPage($('adf-cloud-task-list'));
|
||||
|
||||
private expansionPanelExtended = this.rootElement.$(`${materialLocators.Expansion.panel.header.root}${materialLocators.Expanded.class}`);
|
||||
private content = this.rootElement.$(`div${materialLocators.Expansion.panel.content.class}[style*="visible"]`);
|
||||
private content = this.rootElement.$(
|
||||
`${materialLocators.Expansion.panel.root}${materialLocators.Expansion.panel.expanded} ${materialLocators.Expansion.panel.content.class}`
|
||||
);
|
||||
|
||||
async isFilterDisplayed(): Promise<boolean> {
|
||||
return BrowserVisibility.waitUntilElementIsVisible(this.filter);
|
||||
@@ -307,5 +318,4 @@ export class EditTaskFilterCloudComponentPage {
|
||||
async getProcessInstanceId(): Promise<string> {
|
||||
return BrowserActions.getInputValue(this.processInstanceId);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -33,7 +33,7 @@ export class LogLevelsEnum extends Number {
|
||||
static SILENT: number = 0;
|
||||
}
|
||||
|
||||
export const logLevels: { level: LogLevelsEnum; name: LOG_LEVEL }[] = [
|
||||
export const logLevels: { level: number; name: LOG_LEVEL }[] = [
|
||||
{ level: LogLevelsEnum.TRACE, name: 'TRACE' },
|
||||
{ level: LogLevelsEnum.DEBUG, name: 'DEBUG' },
|
||||
{ level: LogLevelsEnum.INFO, name: 'INFO' },
|
||||
@@ -51,11 +51,10 @@ export interface LoggerLike {
|
||||
|
||||
/* eslint-disable no-console */
|
||||
export class GenericLogger implements LoggerLike {
|
||||
|
||||
private level: LogLevelsEnum;
|
||||
private level: number;
|
||||
|
||||
constructor(logLevel: string) {
|
||||
this.level = logLevels.find(({name}) => name === logLevel)?.level || LogLevelsEnum.ERROR;
|
||||
this.level = logLevels.find(({ name }) => name === logLevel)?.level || LogLevelsEnum.ERROR;
|
||||
}
|
||||
|
||||
info(...messages: string[]): void {
|
||||
|
Reference in New Issue
Block a user