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:
Vito Albano
2024-10-23 15:23:38 +01:00
committed by GitHub
parent 0a89d9be97
commit 41391a0bb9
91 changed files with 13720 additions and 13462 deletions

View File

@@ -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": {}
}
]

View File

@@ -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;
}
}

View File

@@ -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 {

View File

@@ -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`);
}

View File

@@ -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'
},

View File

@@ -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');
}
}
}

View File

@@ -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);

View File

@@ -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);

View File

@@ -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;

View File

@@ -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);
}
}

View File

@@ -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 {