mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2026-09-09 18:03:21 +00:00
[AAE-19177] - Migration to NG15 - this one for real 👯 (#9088)
* Fixed linting * Fixed storybook with migration to WP5 * Fixed core unit test and excluded instable ones * Rebased with the latest develop * Fixed most of unit tests failing * Fixed prod build * Fixed linting and js-api tests * Fixed unit tests * Fixed last unit tests * Fixed js-api build * Attempt to fix the e2e run' * Fixing e2e part 2 * Fixing styles not migrated by material * Fixed unit test failing * E2E - fixing * Fixing unit after rebase * Fixing e2e - part III * Rebase went little bit wrong -II * Rebase went little bit wrong -III * Fixing e2e - changing toggles * Fixed code flow switch setting * wrong xdescribe * fixig e2es * fixig e2es - task and version * readded missing dep * Fixed slider search e2es * rebased and fixed the wrong directive for matList' * fixed unit test problem and some other e2e * Fixed search e2es * Rebased to latest * Fixed the last e2es? * reverted broken rebase * Fixed unit tests after rebase * Fixed unit tests after rebase * Honestly i'm going on just for the challenge now' * Readded method removed * Fixed pointless e2e * Fixed unit test * [AAE-18267] change unit test setup for auth service (#9216) * [AAE-18267] change unit test setup for auth service * [AAE-18267] remove exclude * [AAE-18267] removed CoreTestingModule from imports * unit test fixes for migration (#9217) * reenabled excluded test in TagNodeList * fixed tests for UploadApi in js-api * Fixed a dependency problem * remaining unit test fixes for the Angular 15 update (#9218) * removing excludes from working tests * test fixes for CategoriesManagementComponent * [ci:force] reenabling tests / fixes * fixes in process-services-cloud * change html element type * fix selector in StartProcessComponent * Revert "Fixed a dependency problem" This reverts commit319e1830fe. * Rebased to latest * Fixed PR after huge rebase -_- * Fixed lint files and exclude some needing migration * Fixed package.json * Fixed dependency to allow greater versions * Rebased to the latest * [affected:*][ci:force] Fixing rebase * [affected:*][ci:force] Fixing rebase * [affected:*][ci:force] Fixing rebase * [affected:*][ci:force] Wrong setting page * [affected:*][ci:force] Upgrading material selector class * [affected:*][ci:force] Fixed lint * [affected:*][ci:force] Fixed lint * [affected:*][ci:force] Fixed e2e with new notation * [affected:*][ci:force] Fixed e2e with new notation * [affected:*][ci:force] Fixed e2e with new notation * [affected:*][ci:force] [AAE-21070] Fix e2e Content: Components - C587084 - fix class selectors * [affected:*][ci:force] Fixed lint after error on important * Improvement/AAE-19176-reapply-selector-changes (#9424) * AAE-19510 remove selector variable * AAE-19510 poc for card view using variable selectors * AAE-19176 rename mat selectors file * AAE-19176 add missing style imports * AAE-19176 remove remaining mat selectors * AAE-19176 replaced todo material selectors with variables * AAE-19176 changes made in meantime * AAE-19176 conflict fixes * [AAE-21083] Fix e2e Content: Metadata - C245652 - fix tab active selector * Fix selector after merging https://github.com/Alfresco/alfresco-ng2-components/pull/9424, .mat-content-actions was replaced by .adf-start-process-content-actions * Fix lint issue * [AAE-21083] Fix e2e Content: Metadata - C280560 - fix slide toggle click, in v15 toggle is handled with a button instead of input * [affected:*][ci:force] Fixed check on expansion panel filter * [affected:*][ci:force] Fixed check on expansion panel filter * [affected:*][ci:force] Fixed other e2es * [affected:*][ci:force] Fixing e2e - the long painful journey * [affected:*][ci:force] Fixing e2e - the long painful journey - part II * [AAE-21084] Fix e2e Content: Upload and Versioning - C279992 - fix enable togle selector * [AAE-21085] Fix e2e Search - revert to previous version, text should be written without pressing eneter to show the autocomplete list items * [AAE-21085] Fix e2e Search - add content selector that wrap text * [affected:*][ci:force] Fixing e2e - the lord of E2E * [AAE-21089] Fix e2e Search - fix checkbox selector * [affected:*][ci:force] Fixing e2e - the lord of E2E * [affected:*][ci:force] Fixing e2e - the return of the fail * [affected:*][ci:force] Fixing e2e - the return of the fail * [affected:*][ci:force] Fixing e2e - the eternal fail * [affected:*][ci:force] Remove fit * [affected:*][ci:force] Fixing e2e - fixing the last ones * [affected:*][ci:force] attempt to fix mat-selectors importing * [affected:*][ci:force] Fixing the styles - check * [affected:*][ci:force] Added pretheme for core as it is mandatory when publishing and rebuilding * [affected:*][ci:force] - REBASED * [ACS-7359] - Angular 15 - Edit aspects modal [ACA] (#9488) * [affected:*][ci:force] - REBASED * [affected:*][ci:force] - REBASED * [affected:*][ci:force] - Rebased and added an extra fix for after * [affected:*][ci:force] - Funny imports * [ACS-7373] ng15 permissions page fixes * [ACS-7373] mat-icon-buttons * [ACS-7452] - Small screen notification banner [ACS-7418] About page (#9507) * [ACS-7413] Dialog height and spacing issues (#9515) * [ACS-7446] - Upload progress box issues * [ACS-7414] - Manage versions dialog * [ACS-7375] - Share link dialog issues * Fixed errors on unit and lint * Re Enabling unit test removed * Fixing unit test after last rebase + lint * Fixing unit test after last rebase + lint * Fixing unit test after last rebase + lint * [ACS-7419] Fix broken styling of notifications * [ACS-7419] Fix broken styling of notifications, apply pr remarks * [ACS-7419] Fix broken styling of notifications, apply pr remarks * [ACS-7419] Fix broken styling of notifications, apply pr remarks * Extra parentesys lint * [ACS-7528] - Notification and user icons are a bit different (#9540) * [ACS-7532] - Click on chip in search gives redundant icon (#9544) * [ACS-7530] - Notifications popup looks a bit differently (#9543) * [ACS-7414] - manage versions dialog (#9545) * [ACS-7535][ACS-7537][ACS-7536][ACA] Move/Copy dialogs, Share dialog, Aspects dialog (#9553) * AAE-21697 Fix people form widget style (#9555) * [affected:*][ci:force] - Rebased * [affected:*][ci:force] - Fixed problem after rebase * [ACS-7519] - Login page (#9565) * [ACS-7331] - View details sidebar (#9455) * [ACS-7542] - Upload new version dialog (#9572) * [ACS-7542] - Upload new version dialog * [ACS-7542] - Upload new version dialog * [ACS-7575] create library dialog fixes (#9574) * [ACS-7534] create/edit folder dialog fixes (#9575) * Rebased ADF Migration PR * Rebased ADF Migration PR * Sync lock * [ACS-7681] Bell icon not aligned [ACS-7571] Comments [ACS-7563] Add permission dialog (#9594) * [ACS-7554] Fix tags in column display (#9597) * Fixed unit test * AAE-21256 Fix form widget styles (#9599) * [ACS-7555] column filters (#9576) * Changed ng version before material migration * migration for material' * Upgrading NX and start fixing styles * Make all the part build * Fixed core unit test and excluded instable ones * Fixed most of unit tests failing * Fixed unit tests * Fixed last unit tests * fixed unit test problem and some other e2e * Fixed unit tests after rebase * [AAE-18267] change unit test setup for auth service (#9216) * [AAE-18267] change unit test setup for auth service * [AAE-18267] remove exclude * [AAE-18267] removed CoreTestingModule from imports * remaining unit test fixes for the Angular 15 update (#9218) * removing excludes from working tests * test fixes for CategoriesManagementComponent * [ci:force] reenabling tests / fixes * fixes in process-services-cloud * change html element type * fix selector in StartProcessComponent * Fixing unit test after last rebase + lint * ACS-7555 Fixed styles for node type filters * ACS-7555 Removed redundant padding * ACS-7555 Outlined input for text filter * ACS-7555 Resolved conflicts --------- Co-authored-by: Vito Albano <vito.albano@hyland.com> Co-authored-by: Wojciech Duda <69160975+wojd0@users.noreply.github.com> * AAE-21393 Fix amount form widget style (#9601) * AAE-21392 Fix dropdown form widget style (#9605) * [ACS-7582] Upload dialog button display fix (#9603) * [ACS-7531] - Search page (#9606) * rebased to last develop * Fixed SonarCloud complaints * Fixed SonarCloud complaints * Fixing some sonarcloud comments * [ACS-7572] link rules dialog fixes (#9607) * AAE-21703 Fix group widget style (#9612) * AAE-21703 Fix group form widget style * AAE-21703 Improve tests * [ACS-7533] - Advanced search chips dropdowns (#9618) * [ACS-7560] undo deletion notification (#9632) * ACS-7560 Fixed margin around snackbar and size of x icon * ACS-7560 Fixed styles for info snackbar * Rebased to the latest develop * Rebased to the latest * Skipped failing unit tests * Updated today date selector * rebased * Fixed process unit test fail * fix folder-edit license headers * fix FolderEditDirective unit tests * AAE-21937 Fix context menu list component (#9658) * Fixed broken unit test after rebase * ACS-7561 - permissions page (#9675) * Trying to fix the long failing e2ea * Missed import * Fixed changed unit test * Fixed property e2e * Updated calendar selector * [ACS-7768] unify inputs and selects across the app (#9687) * Changed ng version before material migration * migration for material' * Fixed most of unit tests failing * [affected:*][ci:force] Fixing rebase * [affected:*][ci:force] attempt to fix mat-selectors importing * [affected:*][ci:force] Fixing the styles - check * AAE-21392 Fix dropdown form widget style (#9605) * ACS-7768 Applied new styles for inputs * ACS-7768 Align icon * ACS-7768 Input colors based on input state * ACS-7768 Corrected spaces * ACS-7768 Styles for selectboxes * ACS-7768 Fixed label jumping on hovering * ACS-7768 Style inputs for add permission panel, user role column and comments, styles for inputs without label * ACS-7768 Style inputs in search filters * ACS-7768 Set appearance for inputs globally to outline * ACS-7768 Style inputs for share dialog and login page * ACS-7768 Style inputs in properties panel * ACS-7768 Fixed white background when disabled field * ACS-7768 Moved setting outline appearance for inputs to ACA, fix issue for inputs in permission container * Revert "[affected:*][ci:force] Fixing the styles - check" This reverts commit80d971f7ab. * Revert "[affected:*][ci:force] attempt to fix mat-selectors importing" This reverts commit821d9e1864. * Revert "[affected:*][ci:force] Fixing rebase" This reverts commit378c6c2000. * Revert "Fixed most of unit tests failing" This reverts commit44948e0a28. * ACS-7768 Reverted unwanted changes --------- Co-authored-by: Vito Albano <vito.albano@hyland.com> Co-authored-by: Diogo Bastos <50139916+DiogoABastos@users.noreply.github.com> * [ACS-7768] unify inputs and selects across the app - revert (#9699) * Revert "[ACS-7768] unify inputs and selects across the app (#9687)" This reverts commit7cfb5ea64a. * ACS-7768 Little correction * [ACS-7998] - Add permissions input (#9704) * [ACS-8004] Fix inputs for move folder (#9707) * [ACS-7999] Fix inputs for edit and create folder (#9713) * ACS-7999 Fix inputs for edit and create folder * ACS-7999 Fix jumping dialog when focus field * [ACS-7982] ACC - fix categories tree (#9715) * Fixed after rebase * Fixed package-lock * Fixed after rebase * Fixed unit test for process * AAE-22783 Fix form elements label style (#9725) * [ACS-8021] Inputs for comments (#9722) * [ACS-8008] - Inputs for properties panel "General info" (#9744) * [ACS-8052] Inputs for general info for libraries (#9745) * [ACS-7983] Fixed security controls dialog (#9747) * [ACS-8026] Fixed task form rendering (#9742) * [ACS-8026] Fixed Task form rendering * [ACS-8026] Fixed task form rendering * [ACS-8042] Fixed styles for inputs in library creation (#9751) * Added missing import for uppercase pipe (#9748) * Recreated package-lock * Fixed package and e2e with tabs that now are capital letters? * Fixed package json * Removed wrong version on core package * Ehi Js-Api should be 7.8 NOT 7.9 * These dependencies will kill me * [ACS-7981] UI fixes for create categories dialog (#9754) * [ACS-7981] Fixed UI for create categories dialog * [ACS-7981] Adding mat selectors for create categories dialog * [ACS-7981] Create category dialog no longer allows ability to add existing categories * [ACS-7974] Adding material selectors for assign security marks dialog (#9755) * [ACS-7974] Fixed UI for assign security controls to user dialog * [ACS-7974] Removing unneeded mat selector * [ACS-8069] Updated error-content.component.html to be aligned with the new mat typography classes in angular material v15 (#9762) * Added missing mat selector for mat-list-item-disabled (#9763) * Fixed process unit test after huge rebase * [ACS-8066] Style inputs for link rule dialog (#9773) * Insight material module has been removed * [ACS-7973] [ACC] header layout (#9782) * [ACS-8096] Print button in the viewer does not open the print window (#9776) (#9778) * [ACS-8066] Fixed unit tests (#9783) * [ACS-8092] [ACA] testing angular 15 notifications bell is much smaller and is further from the profile page 2 (#9786) * AAE 22837 Move confirm to core (#9750) * confirm dialog is used in many places and should be part of the core * fix * Update confirm.dialog.spec.ts * Update public-api.ts * Fixed imports for confirm dialog unit tests * Fixed linting for packages * Removed -mdc as it's wrong for mat calendar * [ACS-8098] [ACA] Testing Angular 15 - Move Popup placeholder missing (#9796) * [ACS-7944] [ADW] Start process page (#9802) * [ACS-8157] Used mat chip set instead of mat chip listbox for dynamic chip list to hide tick icon for chips (#9803) * Fixed issue on focus mat calendar * [ACS-7980] fix style (#9798) * [ACS-7979] Fixed UI for create tags dialog (#9793) * [ACS-7979] Fixed UI for create tags dialog. Minor UI fixes of create categories dialog as well * [ACS-7979] Fixed unit tests * [ACS-7979] Replaced dependency of CoreModule from tag.module.ts with TranslateModule and DynamicChipListModule * [ACS-8158] Fixed spacing of tags in ACA (#9808) * [ACS-8158] Fixed spacing of tags in ACA * [ACS-8158] Fixed unit tests * AAE-22965 fix datepicker focused element selector (#9814) * [ACS-8212] Fixed alignment issue of filters button in sidenav (#9828) * [ACS-8191] Added missing mat selectors for ACA. Updated mat selector name (#9809) * [ACS-8191] Updated mat selector names * [ACS-8191] Added missing mat selectors for ACA. Updated mat-selector names * [ACS-8196] fix style for pagination (#9810) * Removing implicitFlow in favor of codeFlow * [ACS-8230] Fixed UI for snackbars with long text content and action buttons (#9830) * [ACS-8231] [ADW] Processes button styling on hover- edit summary (#9833) [ADW] Processes button styling on hover * Revert "Removing implicitFlow in favor of codeFlow" This reverts commit58951a77b8. * Fixed unit test after rebase * Fixing unit test * Disabled failing unit from content * AAE-23287 migrate to storybook 8 (#9867) * Fixed core unit test and excluded instable ones * AAE-23287 migrate to storybook 8 --------- Co-authored-by: Vito Albano <vito.albano@hyland.com> * Fixed unit and lint * Fixing unit test and lint issues after merging with storybook latest * Storybook still not working though * Fixed missing locator for content e2e * fix storybook exceeding timeout * Fixed wrong package version * AAE-23478 replace nav-list with action-list (#9875) * [ACS-8272] [ADW] Testing Angular 15 - Misplaced buttons Cancel and Start process (#9869) * [ACS-8273] [ADW] Testing Angular 15 - Process' tab names are uppercased (#9870) * [ACS-8274] angular 15 description field in info drawer is truncated and scrollable (#9878) * [ACS-8275] - [ACA] Testing Angular 15 - Tags are not displayed correctly (#9872) * Fixing e2e tab label * AAE-22858 Fix date button style (#9892) * AAE-23556 Fix search text input component styles (#9895) * Fixing unit test an builds * Fixing style * [ACS-8260] add user dialog misplaced search icon and space issue (#9897) * [ACS-8275] [ACA] Angular 15 tags are not displayed correctly (#9896) * [ACS-8322] Testing Angular 15 - Info Drawer - General info - Missing … (#9901) * [ACS-8322] Testing Angular 15 - Info Drawer - General info - Missing arrow in Content type selector * [ACS-8322] Testing Angular 15 - Info Drawer - General info - Missing arrow in Content type selector * [AAE-23622] fixed buttons and chips (#9913) * Aae 23572 recreate js api lib into a proper nx workspace lib bis (#9917) * back to mocha, working in future node versions * update package-lock * change bundle to build * update node to 18.20.3 [ci:force] * fix e2es [ci:force] * bring bundle back to fix e2e [ci:force] * patch in legacy builds * Updated package-lock * Updated executor to new @nx * Revert "Updated executor to new @nx" This reverts commita520ba3595. * Improved ts config reverted changes on @nrwl --------- Co-authored-by: Wojciech Duda <69160975+wojd0@users.noreply.github.com> * Fixing target name for publishing js-api as it's not happening anymore * fixed js-api publish command * JS-api wasn't building correctly on publish * Fixed naming for tests tab * Fixed tabs name missed * AAE-23704 Fixed outcome buttons text alignment (#9933) * Thanks tooltip change * Removing FIT :O * Fixing build broken * [ACS-8275] Testing Angular 15 - Tags are not displayed correctly (#9940) * [ACS-8253] viewer file name change position on navigation (#9900) * AAE-23783 Fixed feature flags dialog styles (#9945) * Added styles include path to feature flags lib * Fixed js-api version --------- Co-authored-by: Wojciech Duda <69160975+wojd0@users.noreply.github.com> Co-authored-by: Amedeo Lepore <amedeo.lepore85@gmail.com> Co-authored-by: Amedeo Lepore <amedeo.lepore@hyland.com> Co-authored-by: jacekpluta <73617938+jacekpluta@users.noreply.github.com> Co-authored-by: Mykyta Maliarchuk <maliarchuk99@gmail.com> Co-authored-by: tomson <tomasz.nastaly@hyland.com> Co-authored-by: DominikIwanek <dominik.iwanek@hyland.com> Co-authored-by: Jacek Pluta <jacek.pluta@hyland.com> Co-authored-by: dominikiwanekhyland <141320833+dominikiwanekhyland@users.noreply.github.com> Co-authored-by: Diogo Bastos <50139916+DiogoABastos@users.noreply.github.com> Co-authored-by: Mykyta Maliarchuk <84377976+nikita-web-ua@users.noreply.github.com> Co-authored-by: AleksanderSklorz <115619721+AleksanderSklorz@users.noreply.github.com> Co-authored-by: Ehsan Rezaei <ehsan.rezaei@hyland.com> Co-authored-by: swapnil-verma-gl <92505353+swapnil-verma-gl@users.noreply.github.com> Co-authored-by: Eugenio Romano <eromano@users.noreply.github.com> Co-authored-by: tamaragruszka <156320606+tamaragruszka@users.noreply.github.com> Co-authored-by: tomasz hanaj <12088991+tomaszhanaj@users.noreply.github.com>
This commit is contained in:
co-authored by
Vito Albano
Wojciech Duda
Diogo Bastos
Amedeo Lepore
Amedeo Lepore
jacekpluta
Mykyta Maliarchuk
tomson
DominikIwanek
Jacek Pluta
dominikiwanekhyland
Mykyta Maliarchuk
AleksanderSklorz
Ehsan Rezaei
swapnil-verma-gl
Eugenio Romano
tamaragruszka
tomasz hanaj
parent
eda03ed525
commit
68ab2c67fd
+2
-2
@@ -50,11 +50,11 @@ export class SearchCategoriesPage {
|
||||
}
|
||||
|
||||
async clickFilter(filter: ElementFinder): Promise<void> {
|
||||
await BrowserActions.click(filter.$('mat-expansion-panel-header'));
|
||||
await BrowserActions.click(filter.$(' .mat-expansion-panel-header'));
|
||||
}
|
||||
|
||||
async clickFilterHeader(filter: ElementFinder): Promise<void> {
|
||||
const fileSizeFilterHeader = filter.$('mat-expansion-panel-header');
|
||||
const fileSizeFilterHeader = filter.$(' .mat-expansion-panel-header');
|
||||
await BrowserActions.click(fileSizeFilterHeader);
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -33,20 +33,20 @@ export class SearchCheckListPage {
|
||||
|
||||
async clickCheckListOption(option: string): Promise<void> {
|
||||
await BrowserVisibility.waitUntilElementIsVisible(this.filter);
|
||||
const result = this.filter.$$(`mat-checkbox[data-automation-id*='${option}'] .mat-checkbox-inner-container`).first();
|
||||
const result = this.filter.$(`mat-checkbox[data-automation-id*='${option}'] input`);
|
||||
await BrowserActions.click(result);
|
||||
}
|
||||
|
||||
async checkChipIsDisplayed(option: string): Promise<void> {
|
||||
await BrowserVisibility.waitUntilElementIsVisible(element(by.cssContainingText('mat-chip', option)).$('mat-icon'));
|
||||
await BrowserVisibility.waitUntilElementIsVisible(element(by.cssContainingText('mat-chip-row', option)).$('mat-icon'));
|
||||
}
|
||||
|
||||
async checkChipIsNotDisplayed(option: string): Promise<void> {
|
||||
await BrowserVisibility.waitUntilElementIsNotVisible(element(by.cssContainingText('mat-chip', option)).$('mat-icon'));
|
||||
await BrowserVisibility.waitUntilElementIsNotVisible(element(by.cssContainingText('mat-chip-row', option)).$('mat-icon'));
|
||||
}
|
||||
|
||||
async removeFilterOption(option: string): Promise<void> {
|
||||
const cancelChipButton = element(by.cssContainingText('mat-chip', option)).$('mat-icon');
|
||||
const cancelChipButton = element(by.cssContainingText('mat-chip-row', option)).$('mat-icon');
|
||||
await BrowserActions.click(cancelChipButton);
|
||||
}
|
||||
|
||||
|
||||
@@ -31,21 +31,22 @@ export class SearchSliderPage {
|
||||
}
|
||||
|
||||
async getMaxValue() {
|
||||
return BrowserActions.getAttribute(this.filter.$(this.slider), 'aria-valuemax');
|
||||
return BrowserActions.getAttribute(this.filter.$(this.slider).$('input'), 'max');
|
||||
}
|
||||
|
||||
async getMinValue() {
|
||||
return BrowserActions.getAttribute(this.filter.$(this.slider), 'aria-valuemin');
|
||||
return BrowserActions.getAttribute(this.filter.$(this.slider).$('input'), 'min');
|
||||
}
|
||||
|
||||
async getValue() {
|
||||
return BrowserActions.getAttribute(this.filter.$(this.slider), 'aria-valuenow');
|
||||
return BrowserActions.getAttribute(this.filter.$(this.slider).$('input'), 'aria-valuetext');
|
||||
}
|
||||
|
||||
async setValue(value: number): Promise<void> {
|
||||
const elem = this.filter.$(this.slider).$('.mat-slider-wrapper');
|
||||
const elem = this.filter.$(this.slider).$('.mdc-slider__thumb-knob');
|
||||
await BrowserVisibility.waitUntilElementIsVisible(elem);
|
||||
await browser.actions().mouseMove(elem, { x: 0, y: 0 }).perform();
|
||||
await browser.actions().mouseDown().mouseMove({x: value * 20, y: 0}).mouseUp().perform();
|
||||
await browser.actions().mouseDown().mouseMove({x: value * 7, y: 0}).mouseUp().perform();
|
||||
}
|
||||
|
||||
async checkSliderIsDisplayed(): Promise<void> {
|
||||
|
||||
+3
-3
@@ -22,12 +22,12 @@ import { DropdownPage } from '../../../core/pages/material/dropdown.page';
|
||||
|
||||
export class SearchSortingPickerPage {
|
||||
|
||||
sortingDropdown = new DropdownPage($('.adf-sorting-picker .mat-select-arrow'));
|
||||
sortingDropdown = new DropdownPage($('.adf-sorting-picker .mat-mdc-select-arrow'));
|
||||
orderArrow = $('adf-sorting-picker button mat-icon');
|
||||
|
||||
async sortBy(sortOrder: string, sortType: string | RegExp): Promise<void> {
|
||||
await this.sortingDropdown.clickDropdown();
|
||||
const selectedSortingOption = element(by.cssContainingText('.mat-option-text', sortType));
|
||||
const selectedSortingOption = element(by.cssContainingText('.mdc-list-item__primary-text', sortType));
|
||||
await BrowserActions.click(selectedSortingOption);
|
||||
await this.sortByOrder(sortOrder);
|
||||
}
|
||||
@@ -53,7 +53,7 @@ export class SearchSortingPickerPage {
|
||||
}
|
||||
|
||||
async clickSortingOption(option: string): Promise<void> {
|
||||
const selectedSortingOption = element(by.cssContainingText('.mat-option-text', option));
|
||||
const selectedSortingOption = element(by.cssContainingText('.mdc-list-item__primary-text', option));
|
||||
await BrowserActions.click(selectedSortingOption);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,6 @@ import { materialLocators } from './public-api';
|
||||
const MAX_LOADING_TIME = 120000;
|
||||
|
||||
export class DataTableComponentPage {
|
||||
|
||||
rootElement: ElementFinder;
|
||||
list: ElementArrayFinder;
|
||||
contents: ElementArrayFinder;
|
||||
@@ -33,6 +32,7 @@ export class DataTableComponentPage {
|
||||
selectedRowNumber: ElementFinder;
|
||||
allSelectedRows: ElementArrayFinder;
|
||||
selectAll: ElementFinder;
|
||||
selectAllChecked: ElementFinder;
|
||||
emptyList: ElementFinder;
|
||||
emptyListTitle: ElementFinder;
|
||||
emptyListSubtitle: ElementFinder;
|
||||
@@ -50,6 +50,7 @@ export class DataTableComponentPage {
|
||||
this.mainMenuButton = this.rootElement.$('[data-automation-id="adf-datatable-main-menu-button"]');
|
||||
this.selectedRowNumber = this.rootElement.$(`adf-datatable-row[class*='is-selected'] div[data-automation-id*='text_']`);
|
||||
this.allSelectedRows = this.rootElement.$$(`adf-datatable-row[class*='is-selected']`);
|
||||
this.selectAllChecked = this.rootElement.$(`div[class*='adf-datatable-header'] ${materialLocators.Checkbox.root}.mat-mdc-checkbox-checked`);
|
||||
this.selectAll = this.rootElement.$(`div[class*='adf-datatable-header'] ${materialLocators.Checkbox.root}`);
|
||||
this.emptyList = this.rootElement.$(`adf-empty-content`);
|
||||
this.emptyListTitle = this.rootElement.$(`.adf-empty-content__title`);
|
||||
@@ -67,12 +68,12 @@ export class DataTableComponentPage {
|
||||
|
||||
async checkAllRows(): Promise<void> {
|
||||
await BrowserActions.click(this.selectAll);
|
||||
await BrowserVisibility.waitUntilElementIsVisible(this.selectAll.$('input[aria-checked="true"]'));
|
||||
await BrowserVisibility.waitUntilElementIsVisible(this.selectAllChecked);
|
||||
}
|
||||
|
||||
async uncheckAllRows(): Promise<void> {
|
||||
await BrowserActions.click(this.selectAll);
|
||||
await BrowserVisibility.waitUntilElementIsNotVisible(this.selectAll.$('input[aria-checked="true"]'));
|
||||
await BrowserVisibility.waitUntilElementIsNotVisible(this.selectAllChecked);
|
||||
}
|
||||
|
||||
async clickCheckbox(columnName: string, columnValue: string): Promise<void> {
|
||||
@@ -81,18 +82,23 @@ export class DataTableComponentPage {
|
||||
}
|
||||
|
||||
async checkRowIsNotChecked(columnName: string, columnValue: string): Promise<void> {
|
||||
await BrowserVisibility.waitUntilElementIsNotVisible(this.getRowCheckbox(columnName, columnValue).$('input[aria-checked="true"]'));
|
||||
const rowSelector = this.getRowCheckboxChecked(columnName, columnValue);
|
||||
await BrowserVisibility.waitUntilElementIsNotVisible(rowSelector);
|
||||
}
|
||||
|
||||
async checkRowIsChecked(columnName: string, columnValue: string): Promise<void> {
|
||||
const rowCheckbox = this.getRowCheckbox(columnName, columnValue);
|
||||
await BrowserVisibility.waitUntilElementIsVisible(rowCheckbox.$('input[aria-checked="true"]'));
|
||||
const rowCheckbox = this.getRowCheckboxChecked(columnName, columnValue);
|
||||
await BrowserVisibility.waitUntilElementIsVisible(rowCheckbox);
|
||||
}
|
||||
|
||||
getRowCheckbox(columnName: string, columnValue: string): ElementFinder {
|
||||
return this.getRow(columnName, columnValue).$(materialLocators.Checkbox.root);
|
||||
}
|
||||
|
||||
getRowCheckboxChecked(columnName: string, columnValue: string): ElementFinder {
|
||||
return this.getRow(columnName, columnValue).$('mat-checkbox.mat-mdc-checkbox-checked');
|
||||
}
|
||||
|
||||
async checkNoRowIsSelected(): Promise<void> {
|
||||
await BrowserVisibility.waitUntilElementIsNotVisible(this.selectedRowNumber);
|
||||
}
|
||||
@@ -114,12 +120,16 @@ export class DataTableComponentPage {
|
||||
}
|
||||
|
||||
async checkRowIsSelected(columnName: string, columnValue: string): Promise<void> {
|
||||
const selectedRow = this.getCellElementByValue(columnName, columnValue).element(by.xpath(`ancestor::adf-datatable-row[contains(@class, 'is-selected')]`));
|
||||
const selectedRow = this.getCellElementByValue(columnName, columnValue).element(
|
||||
by.xpath(`ancestor::adf-datatable-row[contains(@class, 'is-selected')]`)
|
||||
);
|
||||
await BrowserVisibility.waitUntilElementIsVisible(selectedRow);
|
||||
}
|
||||
|
||||
async checkRowIsNotSelected(columnName: string, columnValue: string): Promise<void> {
|
||||
const selectedRow = this.getCellElementByValue(columnName, columnValue).element(by.xpath(`ancestor::adf-datatable-row[contains(@class, 'is-selected')]`));
|
||||
const selectedRow = this.getCellElementByValue(columnName, columnValue).element(
|
||||
by.xpath(`ancestor::adf-datatable-row[contains(@class, 'is-selected')]`)
|
||||
);
|
||||
await BrowserVisibility.waitUntilElementIsNotVisible(selectedRow);
|
||||
}
|
||||
|
||||
@@ -229,14 +239,14 @@ export class DataTableComponentPage {
|
||||
|
||||
async getAllRowsColumnValues(column: string): Promise<string[]> {
|
||||
let columnValues: string[] = [];
|
||||
const columnLocator = $$(`adf-datatable div[class*='adf-datatable-body'] adf-datatable-row[class*='adf-datatable-row'] div[title="${column}"] span`);
|
||||
const columnLocator = $$(
|
||||
`adf-datatable div[class*='adf-datatable-body'] adf-datatable-row[class*='adf-datatable-row'] div[title="${column}"] span`
|
||||
);
|
||||
|
||||
await BrowserVisibility.waitUntilElementIsPresent(columnLocator.first(), 1000);
|
||||
try {
|
||||
await BrowserVisibility.waitUntilElementIsPresent(columnLocator.first(), 1000);
|
||||
columnValues = await columnLocator
|
||||
.filter(async (el) => el.isPresent())
|
||||
.map(async (el) => el.getText());
|
||||
columnValues = await columnLocator.filter(async (el) => el.isPresent()).map(async (el) => el.getText());
|
||||
} catch (error) {
|
||||
Logger.log(error);
|
||||
}
|
||||
@@ -326,12 +336,20 @@ export class DataTableComponentPage {
|
||||
}
|
||||
|
||||
getRow(columnName: string, columnValue: string): ElementFinder {
|
||||
return this.rootElement.all(by.xpath(`//div[starts-with(@title, '${columnName}')]//div[contains(@data-automation-id, '${columnValue}')]//ancestor::adf-datatable-row[contains(@class, 'adf-datatable-row')]`)).first();
|
||||
return this.rootElement
|
||||
.all(
|
||||
by.xpath(
|
||||
`//div[starts-with(@title, '${columnName}')]//div[contains(@data-automation-id, '${columnValue}')]//ancestor::adf-datatable-row[contains(@class, 'adf-datatable-row')]`
|
||||
)
|
||||
)
|
||||
.first();
|
||||
}
|
||||
|
||||
// @deprecated use Playwright instead
|
||||
getRowByIndex(index: number): ElementFinder {
|
||||
return this.rootElement.element(by.xpath(`//div[contains(@class,'adf-datatable-body')]//adf-datatable-row[contains(@class,'adf-datatable-row')][${index}]`));
|
||||
return this.rootElement.element(
|
||||
by.xpath(`//div[contains(@class,'adf-datatable-body')]//adf-datatable-row[contains(@class,'adf-datatable-row')][${index}]`)
|
||||
);
|
||||
}
|
||||
|
||||
async contentInPosition(position: number): Promise<string> {
|
||||
@@ -350,23 +368,27 @@ export class DataTableComponentPage {
|
||||
async waitTillContentLoaded(): Promise<void> {
|
||||
if (await this.isSpinnerPresent()) {
|
||||
Logger.log('wait datatable loading spinner disappear');
|
||||
await BrowserVisibility.waitUntilElementIsNotVisible(this.rootElement.element(by.tagName(materialLocators.Progress.spinner.root)), MAX_LOADING_TIME);
|
||||
await BrowserVisibility.waitUntilElementIsNotVisible(
|
||||
this.rootElement.element(by.tagName(materialLocators.Progress.spinner.root)),
|
||||
MAX_LOADING_TIME
|
||||
);
|
||||
|
||||
if (await this.isEmpty()) {
|
||||
Logger.log('empty page');
|
||||
} else {
|
||||
await this.waitFirstElementPresent();
|
||||
}
|
||||
|
||||
} else if (await this.isEmpty()) {
|
||||
Logger.log('empty page');
|
||||
} else {
|
||||
try {
|
||||
Logger.log('wait datatable loading spinner is present');
|
||||
await BrowserVisibility.waitUntilElementIsVisible(this.rootElement.element(by.tagName(materialLocators.Progress.spinner.root)), 2000);
|
||||
await BrowserVisibility.waitUntilElementIsNotVisible(this.rootElement.element(by.tagName(materialLocators.Progress.spinner.root)), MAX_LOADING_TIME);
|
||||
} catch (error) {
|
||||
}
|
||||
await BrowserVisibility.waitUntilElementIsNotVisible(
|
||||
this.rootElement.element(by.tagName(materialLocators.Progress.spinner.root)),
|
||||
MAX_LOADING_TIME
|
||||
);
|
||||
} catch (error) {}
|
||||
|
||||
if (await this.isEmpty()) {
|
||||
Logger.log('empty page');
|
||||
@@ -392,8 +414,7 @@ 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) {}
|
||||
if (await this.isEmpty()) {
|
||||
Logger.log('empty page');
|
||||
} else {
|
||||
@@ -404,12 +425,10 @@ export class DataTableComponentPage {
|
||||
|
||||
// @deprecated use Playwright instead
|
||||
async isColumnDisplayed(columnTitle: string): Promise<boolean> {
|
||||
const isColumnDisplayed = (await this.allColumns).some(
|
||||
async column => {
|
||||
const columnText = await column.getText();
|
||||
return columnText === columnTitle;
|
||||
}
|
||||
);
|
||||
const isColumnDisplayed = (await this.allColumns).some(async (column) => {
|
||||
const columnText = await column.getText();
|
||||
return columnText === columnTitle;
|
||||
});
|
||||
|
||||
return isColumnDisplayed;
|
||||
}
|
||||
@@ -447,11 +466,18 @@ export class DataTableComponentPage {
|
||||
}
|
||||
|
||||
getCellByContent(content: string): ElementFinder {
|
||||
return this.rootElement.all(by.cssContainingText(`adf-datatable-row[class*='adf-datatable-row'] div[class*='adf-datatable-cell']`, content)).first();
|
||||
return this.rootElement
|
||||
.all(by.cssContainingText(`adf-datatable-row[class*='adf-datatable-row'] div[class*='adf-datatable-cell']`, content))
|
||||
.first();
|
||||
}
|
||||
|
||||
async checkCellByHighlightContent(content: string): Promise<void> {
|
||||
const cell = this.rootElement.element(by.cssContainingText(`adf-datatable-row[class*='adf-datatable-row'] div[class*='adf-name-location-cell-name'] span.adf-highlight`, content));
|
||||
const cell = this.rootElement.element(
|
||||
by.cssContainingText(
|
||||
`adf-datatable-row[class*='adf-datatable-row'] div[class*='adf-name-location-cell-name'] span.adf-highlight`,
|
||||
content
|
||||
)
|
||||
);
|
||||
await BrowserVisibility.waitUntilElementIsVisible(cell);
|
||||
}
|
||||
|
||||
@@ -461,7 +487,10 @@ export class DataTableComponentPage {
|
||||
}
|
||||
|
||||
async clickRowByContentCheckbox(name: string): Promise<void> {
|
||||
const resultElement = this.rootElement.$$(`div[data-automation-id='${name}']`).first().element(by.xpath(`ancestor::adf-datatable-row/label/${materialLocators.Checkbox.root}`));
|
||||
const resultElement = this.rootElement
|
||||
.$$(`div[data-automation-id='${name}']`)
|
||||
.first()
|
||||
.element(by.xpath(`ancestor::adf-datatable-row/label/${materialLocators.Checkbox.root}`));
|
||||
browser.actions().mouseMove(resultElement);
|
||||
await BrowserActions.click(resultElement);
|
||||
}
|
||||
|
||||
@@ -97,7 +97,7 @@ export class FormFields {
|
||||
async getFieldPlaceHolder(fieldId: string, locator = 'input'): Promise<string> {
|
||||
const placeHolderLocator = $(`${locator}#${fieldId}`);
|
||||
await BrowserVisibility.waitUntilElementIsVisible(placeHolderLocator);
|
||||
return BrowserActions.getAttribute(placeHolderLocator, 'data-placeholder');
|
||||
return BrowserActions.getAttribute(placeHolderLocator, 'placeholder');
|
||||
}
|
||||
|
||||
async refreshForm(): Promise<void> {
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
|
||||
import { FormFields } from '../form-fields';
|
||||
import { BrowserActions } from '../../../utils/public-api';
|
||||
import { $$, $ } from 'protractor';
|
||||
import { $ } from 'protractor';
|
||||
import { materialLocators } from '../../public-api';
|
||||
|
||||
export class CheckboxWidgetPage {
|
||||
|
||||
formFields = new FormFields();
|
||||
checkboxLabel = $(`span[class*="${materialLocators.Checkbox.label.root}"]`);
|
||||
checkboxLabel = $(`${materialLocators.Checkbox.root} label`);
|
||||
checkboxLocator = materialLocators.Checkbox.root;
|
||||
|
||||
getCheckboxLabel(): Promise<string> {
|
||||
@@ -31,7 +31,7 @@ export class CheckboxWidgetPage {
|
||||
}
|
||||
|
||||
async clickCheckboxInput(fieldId: string): Promise<void> {
|
||||
const checkboxInput = $$(`${this.checkboxLocator}[id="${fieldId}"] span`).first();
|
||||
const checkboxInput = $(`${this.checkboxLocator}[id="${fieldId}"] input`);
|
||||
await BrowserActions.click(checkboxInput);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ export class DropdownWidgetPage {
|
||||
readonly searchElementLocator = TestElement.byCss('[aria-label="Search options"]');
|
||||
|
||||
async getSelectedOptionText(fieldId: string = 'dropdown'): Promise<string> {
|
||||
return this.formFields.getFieldText(fieldId, by.css(`${materialLocators.Select.root}[id="${fieldId}"] span span`));
|
||||
return this.formFields.getFieldText(fieldId, by.css(`${materialLocators.Select.root}[id="${fieldId}"] ${materialLocators.Select.value.text} span`));
|
||||
}
|
||||
|
||||
async selectOption(option: string, locator: string = '#dropdown'): Promise<void> {
|
||||
|
||||
@@ -26,7 +26,7 @@ export class DynamicTableWidgetPage {
|
||||
labelLocator: Locator = by.css('dynamic-table-widget div div');
|
||||
columnNameLocator: Locator = by.css('table[id*="dynamic-table"] th');
|
||||
cancelButton = element(by.cssContainingText('button span', 'Cancel'));
|
||||
editButton = element(by.cssContainingText('button span', 'edit'));
|
||||
editButton = element(by.css('[data-automation-id="dynamic-table-button-edit"]'));
|
||||
columnDateTime = $('#columnDateTime');
|
||||
columnDate = $('#columnDate');
|
||||
calendarHeader = $(materialLocators.DatetimePicker.calendar.header.date.time);
|
||||
|
||||
@@ -26,10 +26,10 @@ export class DatePickerCalendarPage {
|
||||
datePicker = $(`${materialLocators.Calendar.root}[id*="${materialLocators.Datepicker.root}"]`);
|
||||
nextMonthButton = $(`button[class*="${materialLocators.Calendar.button('next')}"]`);
|
||||
previousMonthButton = $(`button[class*="${materialLocators.Calendar.button('previous')}"]`);
|
||||
todayDate = TestElement.byCss(`div${materialLocators.Calendar.body.today.class}`);
|
||||
todayDate = TestElement.byCss(`${materialLocators.Calendar.body.today.class}`);
|
||||
periodButton = $(`button[class*=${materialLocators.Calendar.button('period')}]`);
|
||||
|
||||
focusedElement = `div${materialLocators.Calendar.body.cell.content.class}${materialLocators.Focus.indicator}`;
|
||||
focusedElement = `span${materialLocators.Calendar.body.cell.content.class}${materialLocators.Calendar.focus}`;
|
||||
|
||||
async getSelectedDate(): Promise<string> {
|
||||
return BrowserActions.getAttribute($(`button[class*="${materialLocators.Calendar.body.active.root}"]`), 'aria-label');
|
||||
|
||||
@@ -16,416 +16,437 @@
|
||||
*/
|
||||
|
||||
export const materialLocators = {
|
||||
Accent: {
|
||||
class: '.mat-accent'
|
||||
},
|
||||
Accordion: {
|
||||
root: 'mat-accordion'
|
||||
},
|
||||
Autocomplete: {
|
||||
panel: {
|
||||
class: '.mat-autocomplete-panel',
|
||||
root: 'mat-autocomplete-panel'
|
||||
}
|
||||
},
|
||||
Button: {
|
||||
class: '.mat-button',
|
||||
disabled: 'mat-button-disabled',
|
||||
wrapper: '.mat-button-wrapper'
|
||||
},
|
||||
Calendar: {
|
||||
root: 'mat-calendar',
|
||||
body: {
|
||||
cell: {
|
||||
root: 'mat-calendar-body-cell',
|
||||
content: {
|
||||
class: '.mat-calendar-body-cell-content'
|
||||
Accent: {
|
||||
class: '.mat-mdc-accent'
|
||||
},
|
||||
Accordion: {
|
||||
root: 'mat-accordion'
|
||||
},
|
||||
Autocomplete: {
|
||||
panel: {
|
||||
class: '.mat-mdc-autocomplete-panel',
|
||||
root: 'mat-autocomplete-panel'
|
||||
}
|
||||
},
|
||||
today: {
|
||||
class: '.mat-calendar-body-today'
|
||||
},
|
||||
active: {
|
||||
root: 'mat-calendar-body-active'
|
||||
}
|
||||
},
|
||||
button: (navigation: 'next' | 'previous' | 'period') => `mat-calendar-${navigation}-button`
|
||||
},
|
||||
Card: {
|
||||
root: 'mat-card',
|
||||
class: '.mat-card',
|
||||
content: {
|
||||
class: '.mat-card-content',
|
||||
root: 'mat-card-content'
|
||||
Button: {
|
||||
class: '.mat-mdc-button',
|
||||
disabled: 'mat-button-disabled',
|
||||
label: '.mdc-button__label'
|
||||
},
|
||||
title: {
|
||||
class: '.mat-card-title',
|
||||
root: 'mat-card-title'
|
||||
},
|
||||
actions: 'mat-card-actions',
|
||||
subtitle: {
|
||||
root: 'mat-card-subtitle'
|
||||
}
|
||||
},
|
||||
Checkbox: {
|
||||
root: 'mat-checkbox',
|
||||
class: '.mat-checkbox',
|
||||
layout: '.mat-checkbox-layout',
|
||||
label: {
|
||||
class: '.mat-checkbox-label',
|
||||
root: 'mat-checkbox-label'
|
||||
},
|
||||
checked: {
|
||||
class: '.mat-checkbox-checked',
|
||||
root: 'mat-checkbox-checked'
|
||||
},
|
||||
disabled: {
|
||||
root: 'mat-checkbox-disabled'
|
||||
},
|
||||
inner: {
|
||||
container: {
|
||||
class: '.mat-checkbox-inner-container'
|
||||
}
|
||||
}
|
||||
},
|
||||
Checked: {
|
||||
root: 'mat-checked'
|
||||
},
|
||||
Chip: {
|
||||
root: 'mat-chip',
|
||||
class: '.mat-chip',
|
||||
list: {
|
||||
root: 'mat-chip-list',
|
||||
class: '.mat-chip-list'
|
||||
}
|
||||
},
|
||||
Datepicker: {
|
||||
root: 'mat-datepicker',
|
||||
calendar: {
|
||||
body: {
|
||||
cell: {
|
||||
content: {
|
||||
class: '.mat-datepicker-calendar-body-cell-content'
|
||||
}
|
||||
Calendar: {
|
||||
root: 'mat-calendar',
|
||||
focus: '.mat-focus-indicator',
|
||||
body: {
|
||||
cell: {
|
||||
root: 'mat-calendar-body-cell',
|
||||
content: {
|
||||
class: '.mat-calendar-body-cell-content'
|
||||
}
|
||||
},
|
||||
today: {
|
||||
class: '.mat-calendar-body-today'
|
||||
},
|
||||
active: {
|
||||
root: 'mat-calendar-body-active'
|
||||
}
|
||||
},
|
||||
button: (navigation: 'next' | 'previous' | 'period') => `mat-calendar-${navigation}-button`
|
||||
},
|
||||
Card: {
|
||||
root: 'mat-card',
|
||||
class: '.mat-mdc-card',
|
||||
content: {
|
||||
class: '.mat-mdc-card-content',
|
||||
root: 'mat-card-content'
|
||||
},
|
||||
title: {
|
||||
class: '.mat-mdc-card-title',
|
||||
root: 'mat-card-title'
|
||||
},
|
||||
actions: 'mat-card-actions',
|
||||
subtitle: {
|
||||
root: 'mat-card-subtitle'
|
||||
}
|
||||
},
|
||||
Checkbox: {
|
||||
root: 'mat-checkbox',
|
||||
class: '.mat-mdc-checkbox',
|
||||
layout: '.mat-mdc-checkbox-layout',
|
||||
label: {
|
||||
class: '.mat-mdc-checkbox-label',
|
||||
root: 'mat-checkbox-label'
|
||||
},
|
||||
checked: {
|
||||
class: '.mat-mdc-checkbox-checked',
|
||||
root: 'mat-checkbox-checked'
|
||||
},
|
||||
disabled: {
|
||||
root: 'mat-checkbox-disabled'
|
||||
},
|
||||
inner: {
|
||||
container: {
|
||||
class: '.mat-mdc-checkbox-inner-container'
|
||||
}
|
||||
}
|
||||
},
|
||||
Checked: {
|
||||
root: 'mdc-switch--checked'
|
||||
},
|
||||
Chip: {
|
||||
root: 'mat-chip',
|
||||
class: '.mat-mdc-chip',
|
||||
list: {
|
||||
root: 'mat-chip-listbox',
|
||||
class: '.mat-mdc-chip-list',
|
||||
option: {
|
||||
class: 'mat-chip-option',
|
||||
value: '.mat-mdc-chip-action-label'
|
||||
}
|
||||
},
|
||||
grid: {
|
||||
root: 'mat-chip-grid',
|
||||
class: '.mat-mdc-chip-grid',
|
||||
row: {
|
||||
root: 'mat-chip-row',
|
||||
class: '.mat-mdc-chip-row'
|
||||
}
|
||||
}
|
||||
},
|
||||
Datepicker: {
|
||||
root: 'mat-datepicker',
|
||||
calendar: {
|
||||
body: {
|
||||
cell: {
|
||||
content: {
|
||||
class: '.mat-mdc-datepicker-calendar-body-cell-content'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
toggle: {
|
||||
root: 'mat-datepicker-toggle',
|
||||
class: '.mat-datepicker-toggle'
|
||||
}
|
||||
},
|
||||
DatetimePicker: {
|
||||
root: 'mat-datetimepicker-content',
|
||||
popup: '.mat-datetimepicker-popup',
|
||||
calendar: {
|
||||
header: {
|
||||
date: {
|
||||
class: '.mat-datetimepicker-calendar-header-date',
|
||||
time: '.mat-datetimepicker-calendar-header-date-time'
|
||||
},
|
||||
year: '.mat-datetimepicker-calendar-header-year'
|
||||
},
|
||||
body: {
|
||||
active: '.mat-datetimepicker-calendar-body-active',
|
||||
cell: {
|
||||
class: '.mat-datetimepicker-calendar-body-cell-content',
|
||||
root: 'mat-datetimepicker-calendar-body-cell-content'
|
||||
}
|
||||
},
|
||||
content: '.mat-datetimepicker-calendar-content',
|
||||
nextButton: '.mat-datetimepicker-calendar-next-button'
|
||||
},
|
||||
clock: {
|
||||
class: '.mat-datetimepicker-clock',
|
||||
hours: {
|
||||
class: '.mat-datetimepicker-clock-hours'
|
||||
},
|
||||
minutes: {
|
||||
class: '.mat-datetimepicker-clock-minutes'
|
||||
},
|
||||
cell: (attribute?: 'selected' | 'disabled') =>
|
||||
attribute ? `mat-datetimepicker-clock-cell-${attribute}` : 'mat-datetimepicker-clock-cell'
|
||||
},
|
||||
month: {
|
||||
view: 'mat-datetimepicker-month-view'
|
||||
},
|
||||
toggle: {
|
||||
root: 'mat-datetimepicker-toggle',
|
||||
class: '.mat-datetimepicker-toggle'
|
||||
}
|
||||
},
|
||||
Dialog: {
|
||||
container: {
|
||||
root: 'mat-dialog-container',
|
||||
class: '.mat-mdc-dialog-container'
|
||||
},
|
||||
content: {
|
||||
root: 'mat-dialog-content',
|
||||
class: '.mat-mdc-dialog-content'
|
||||
},
|
||||
actions: {
|
||||
class: `.mat-mdc-dialog-actions`,
|
||||
root: `mat-dialog-actions`
|
||||
},
|
||||
title: '.mat-mdc-dialog-title'
|
||||
},
|
||||
Disabled: {
|
||||
root: 'mat-disabled'
|
||||
},
|
||||
Drawer: {
|
||||
class: '.mat-mdc-drawer',
|
||||
end: '.mat-mdc-drawer-end'
|
||||
},
|
||||
Error: {
|
||||
class: '.mat-mdc-error',
|
||||
root: 'mat-error'
|
||||
},
|
||||
Expanded: {
|
||||
class: '.mat-expanded',
|
||||
root: 'mat-expanded'
|
||||
},
|
||||
Expansion: {
|
||||
panel: {
|
||||
root: 'mat-expansion-panel',
|
||||
class: '.mat-expansion-panel',
|
||||
body: {
|
||||
class: '.mat-mdc-expansion-panel-body'
|
||||
},
|
||||
content: {
|
||||
class: '.mat-expansion-panel-content'
|
||||
},
|
||||
header: {
|
||||
class: '.mat-expansion-panel-header',
|
||||
root: 'mat-expansion-panel-header'
|
||||
},
|
||||
title: '.mat-expansion-panel-header-title'
|
||||
},
|
||||
indicator: '.mat-expansion-indicator'
|
||||
},
|
||||
Focus: {
|
||||
indicator: '.mat-mdc-focus-indicator'
|
||||
},
|
||||
Focused: {
|
||||
root: 'mat-focused'
|
||||
},
|
||||
Form: {
|
||||
field: {
|
||||
class: '.mat-mdc-form-field',
|
||||
root: 'mat-form-field',
|
||||
label: {
|
||||
wrapper: '.mat-mdc-form-field-label-wrapper'
|
||||
}
|
||||
},
|
||||
fieldInfix: '.mat-mdc-form-field-infix'
|
||||
},
|
||||
Header: {
|
||||
cell: '.mat-mdc-header-cell'
|
||||
},
|
||||
Hint: {
|
||||
class: 'mat-hint'
|
||||
},
|
||||
Icon: {
|
||||
root: 'mat-icon',
|
||||
class: '.mat-mdc-icon',
|
||||
button: {
|
||||
class: '.mat-mdc-icon-button',
|
||||
root: 'mat-icon-button'
|
||||
}
|
||||
},
|
||||
Input: {
|
||||
class: '.mat-mdc-input-element'
|
||||
},
|
||||
Label: {
|
||||
root: 'mat-label'
|
||||
},
|
||||
List: {
|
||||
class: '.mat-mdc-list',
|
||||
root: 'mat-list',
|
||||
item: {
|
||||
root: 'mat-list-item',
|
||||
class: '.mat-mdc-list-item'
|
||||
},
|
||||
option: 'mat-list-option',
|
||||
text: {
|
||||
class: '.mat-mdc-list-text'
|
||||
},
|
||||
content: {
|
||||
class: '.mdc-list-item__content'
|
||||
},
|
||||
selectionList: 'mat-selection-list'
|
||||
},
|
||||
Menu: {
|
||||
content: {
|
||||
class: '.mat-mdc-menu-content',
|
||||
root: 'mat-mdc-menu-content'
|
||||
},
|
||||
panel: '.mat-mdc-menu-panel',
|
||||
item: {
|
||||
class: '.mat-mdc-menu-item',
|
||||
submenu: {
|
||||
trigger: {
|
||||
root: `mat-menu-item-submenu-trigger`
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
Month: {
|
||||
content: '.mat-mdc-month-content'
|
||||
},
|
||||
Option: {
|
||||
root: 'mat-option',
|
||||
class: '.mat-mdc-option',
|
||||
group: 'mat-optgroup',
|
||||
text: {
|
||||
class: '.mdc-list-item__primary-text',
|
||||
root: 'span'
|
||||
}
|
||||
},
|
||||
Paginator: {
|
||||
class: '.mat-mdc-paginator',
|
||||
range: {
|
||||
label: '.mat-mdc-paginator-range-label'
|
||||
},
|
||||
navigation: (rangeAction: string) => `.mat-mdc-paginator-navigation-${rangeAction}`
|
||||
},
|
||||
Panel: {
|
||||
title: 'mat-panel-title'
|
||||
},
|
||||
Primary: {
|
||||
class: '.mat-mdc-primary'
|
||||
},
|
||||
Progress: {
|
||||
bar: {
|
||||
root: 'mat-progress-bar',
|
||||
class: '.mat-mdc-progress-bar'
|
||||
},
|
||||
spinner: {
|
||||
root: 'mat-progress-spinner',
|
||||
class: '.mat-mdc-progress-spinner'
|
||||
}
|
||||
},
|
||||
Radio: {
|
||||
root: 'mat-radio',
|
||||
button: {
|
||||
class: '.mat-mdc-radio-button',
|
||||
root: 'mat-radio-button'
|
||||
},
|
||||
group: 'mat-radio-group',
|
||||
checked: 'mat-radio-checked',
|
||||
label: '.mat-mdc-radio-label'
|
||||
},
|
||||
Ripple: {
|
||||
class: '.mat-mdc-ripple',
|
||||
element: {
|
||||
class: '.mat-mdc-ripple-element',
|
||||
root: 'mat-ripple-element'
|
||||
}
|
||||
}
|
||||
},
|
||||
toggle: {
|
||||
root: 'mat-datepicker-toggle',
|
||||
class: '.mat-datepicker-toggle'
|
||||
}
|
||||
},
|
||||
DatetimePicker: {
|
||||
root: 'mat-datetimepicker-content',
|
||||
popup: '.mat-datetimepicker-popup',
|
||||
calendar: {
|
||||
header: {
|
||||
date: {
|
||||
class: '.mat-datetimepicker-calendar-header-date',
|
||||
time: '.mat-datetimepicker-calendar-header-date-time'
|
||||
},
|
||||
Select: {
|
||||
root: 'mat-select',
|
||||
class: '.mat-mdc-select',
|
||||
arrow: {
|
||||
class: '.mat-mdc-select-arrow',
|
||||
wrapper: {
|
||||
root: '.mat-mdc-select-arrow-wrapper'
|
||||
}
|
||||
},
|
||||
placeholder: {
|
||||
class: '.mat-mdc-select-placeholder'
|
||||
},
|
||||
panel: {
|
||||
class: '.mat-mdc-select-panel',
|
||||
wrap: '.mat-mdc-select-panel-wrap'
|
||||
},
|
||||
value: {
|
||||
class: '.mat-mdc-select-value',
|
||||
text: '.mat-mdc-select-value-text'
|
||||
},
|
||||
minLine: '.mat-mdc-select-min-line',
|
||||
trigger: '.mat-mdc-select-trigger'
|
||||
},
|
||||
Slide: {
|
||||
toggle: {
|
||||
class: '.mat-mdc-slide-toggle',
|
||||
root: 'mat-slide-toggle',
|
||||
input: '.mat-mdc-slide-toggle-input',
|
||||
checked: 'mat-mdc-slide-toggle-checked'
|
||||
}
|
||||
},
|
||||
Selection: {
|
||||
list: {
|
||||
root: 'mat-selection-list'
|
||||
}
|
||||
},
|
||||
Sidenav: {
|
||||
root: 'mat-sidenav'
|
||||
},
|
||||
Snackbar: {
|
||||
container: {
|
||||
class: '.mat-mdc-snack-bar-container'
|
||||
}
|
||||
},
|
||||
Sort: {
|
||||
header: {
|
||||
container: '.mat-mdc-sort-header-container'
|
||||
}
|
||||
},
|
||||
Spinner: {
|
||||
root: 'mat-spinner'
|
||||
},
|
||||
Tab: {
|
||||
disabled: '.mat-mdc-tab-disabled',
|
||||
header: {
|
||||
class: '.mat-mdc-tab-header',
|
||||
pagination: {
|
||||
after: '.mat-mdc-tab-header-pagination-after',
|
||||
before: '.mat-mdc-tab-header-pagination-before',
|
||||
chevron: '.mat-mdc-tab-header-pagination-chevron'
|
||||
}
|
||||
},
|
||||
body: {
|
||||
active: '.mat-mdc-tab-body-active',
|
||||
content: '.mat-mdc-tab-body-content'
|
||||
},
|
||||
label: {
|
||||
class: '.mdc-tab',
|
||||
root: 'mat-tab-label',
|
||||
active: {
|
||||
class: '.mdc-tab--active',
|
||||
root: 'mat-tab-label-active'
|
||||
},
|
||||
content: {
|
||||
class: '.mdc-tab__content',
|
||||
root: 'mat-tab-label-content'
|
||||
}
|
||||
},
|
||||
labels: {
|
||||
class: '.mdc-tab__text-label',
|
||||
container: {
|
||||
class: '.mat-mdc-tab-labels'
|
||||
}
|
||||
},
|
||||
list: '.mat-mdc-tab-list'
|
||||
},
|
||||
Table: {
|
||||
class: '.mat-mdc-table',
|
||||
root: 'mat-table',
|
||||
row: {
|
||||
root: 'mat-row',
|
||||
class: '.mat-mdc-row'
|
||||
},
|
||||
year: '.mat-datetimepicker-calendar-header-year'
|
||||
},
|
||||
body: {
|
||||
active: '.mat-datetimepicker-calendar-body-active',
|
||||
cell: {
|
||||
class: '.mat-datetimepicker-calendar-body-cell-content',
|
||||
root: 'mat-datetimepicker-calendar-body-cell-content'
|
||||
class: '.mat-mdc-cell',
|
||||
root: 'mat-cell'
|
||||
},
|
||||
column: (matColumn: string) => `.mat-mdc-column-${matColumn}`
|
||||
},
|
||||
Toolbar: {
|
||||
root: 'mat-toolbar',
|
||||
class: '.mat-mdc-toolbar'
|
||||
},
|
||||
Tooltip: {
|
||||
root: 'mat-tooltip-component',
|
||||
class: '.mat-mdc-tooltip',
|
||||
trigger: '.mat-mdc-tooltip-trigger'
|
||||
},
|
||||
Tree: {
|
||||
root: 'mat-tree',
|
||||
node: {
|
||||
root: 'mat-tree-node'
|
||||
}
|
||||
},
|
||||
content: '.mat-datetimepicker-calendar-content',
|
||||
nextButton: '.mat-datetimepicker-calendar-next-button'
|
||||
},
|
||||
clock: {
|
||||
class: '.mat-datetimepicker-clock',
|
||||
hours: {
|
||||
class: '.mat-datetimepicker-clock-hours'
|
||||
},
|
||||
minutes: {
|
||||
class: '.mat-datetimepicker-clock-minutes'
|
||||
},
|
||||
cell: (attribute?: 'selected' | 'disabled') => attribute ? `mat-datetimepicker-clock-cell-${attribute}` : 'mat-datetimepicker-clock-cell'
|
||||
},
|
||||
month: {
|
||||
view: 'mat-datetimepicker-month-view'
|
||||
},
|
||||
toggle: {
|
||||
root: 'mat-datetimepicker-toggle',
|
||||
class: '.mat-datetimepicker-toggle'
|
||||
}
|
||||
},
|
||||
Dialog: {
|
||||
container: {
|
||||
root: 'mat-dialog-container',
|
||||
class: '.mat-dialog-container'
|
||||
},
|
||||
content: {
|
||||
root: 'mat-dialog-content',
|
||||
class: '.mat-dialog-content'
|
||||
},
|
||||
actions: {
|
||||
class: `.mat-dialog-actions`,
|
||||
root: `mat-dialog-actions`
|
||||
},
|
||||
title: '.mat-dialog-title'
|
||||
},
|
||||
Disabled: {
|
||||
root: 'mat-disabled'
|
||||
},
|
||||
Drawer: {
|
||||
class: '.mat-drawer',
|
||||
end: '.mat-drawer-end'
|
||||
},
|
||||
Error: {
|
||||
class: '.mat-error',
|
||||
root: 'mat-error'
|
||||
},
|
||||
Expanded: {
|
||||
class: '.mat-expanded',
|
||||
root: 'mat-expanded'
|
||||
},
|
||||
Expansion: {
|
||||
panel: {
|
||||
root: 'mat-expansion-panel',
|
||||
class: '.mat-expansion-panel',
|
||||
body: {
|
||||
class: '.mat-expansion-panel-body'
|
||||
},
|
||||
content: {
|
||||
class: '.mat-expansion-panel-content'
|
||||
},
|
||||
header: {
|
||||
class: '.mat-expansion-panel-header',
|
||||
root: 'mat-expansion-panel-header'
|
||||
},
|
||||
title: '.mat-expansion-panel-header-title'
|
||||
},
|
||||
indicator: '.mat-expansion-indicator'
|
||||
},
|
||||
Focus: {
|
||||
indicator: '.mat-focus-indicator'
|
||||
},
|
||||
Focused: {
|
||||
root: 'mat-focused'
|
||||
},
|
||||
Form: {
|
||||
field: {
|
||||
class: '.mat-form-field',
|
||||
root: 'mat-form-field',
|
||||
label: {
|
||||
wrapper: '.mat-form-field-label-wrapper'
|
||||
}
|
||||
},
|
||||
fieldInfix: '.mat-form-field-infix'
|
||||
},
|
||||
Header: {
|
||||
cell: '.mat-header-cell'
|
||||
},
|
||||
Hint: {
|
||||
class: 'mat-hint'
|
||||
},
|
||||
Icon: {
|
||||
root: 'mat-icon',
|
||||
class: '.mat-icon',
|
||||
button: {
|
||||
class: '.mat-icon-button',
|
||||
root: 'mat-icon-button'
|
||||
}
|
||||
},
|
||||
Input: {
|
||||
class: '.mat-input-element'
|
||||
},
|
||||
Label: {
|
||||
root: 'mat-label'
|
||||
},
|
||||
List: {
|
||||
class: '.mat-list',
|
||||
root: 'mat-list',
|
||||
item: {
|
||||
root: 'mat-list-item',
|
||||
class: '.mat-list-item'
|
||||
},
|
||||
option: 'mat-list-option',
|
||||
text: {
|
||||
class: '.mat-list-text'
|
||||
},
|
||||
selectionList: 'mat-selection-list'
|
||||
},
|
||||
Menu: {
|
||||
content: {
|
||||
class: '.mat-menu-content',
|
||||
root: 'mat-menu-content'
|
||||
},
|
||||
panel: '.mat-menu-panel',
|
||||
item: {
|
||||
class: '.mat-menu-item',
|
||||
submenu: {
|
||||
trigger: {
|
||||
root: `mat-menu-item-submenu-trigger`
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
Month: {
|
||||
content: '.mat-month-content'
|
||||
},
|
||||
Option: {
|
||||
root: 'mat-option',
|
||||
class: '.mat-option',
|
||||
group: 'mat-optgroup',
|
||||
text: {
|
||||
class: '.mat-option-text',
|
||||
root: 'mat-option-text'
|
||||
}
|
||||
},
|
||||
Paginator: {
|
||||
class: '.mat-paginator',
|
||||
range: {
|
||||
label: '.mat-paginator-range-label'
|
||||
},
|
||||
navigation: (rangeAction: string) => `.mat-paginator-navigation-${rangeAction}`
|
||||
},
|
||||
Panel: {
|
||||
title: 'mat-panel-title'
|
||||
},
|
||||
Primary: {
|
||||
class: '.mat-primary'
|
||||
},
|
||||
Progress: {
|
||||
bar: {
|
||||
root: 'mat-progress-bar',
|
||||
class: '.mat-progress-bar'
|
||||
},
|
||||
spinner: {
|
||||
root: 'mat-progress-spinner',
|
||||
class: '.mat-progress-spinner'
|
||||
}
|
||||
},
|
||||
Radio: {
|
||||
root: 'mat-radio',
|
||||
button: {
|
||||
class: '.mat-radio-button',
|
||||
root: 'mat-radio-button'
|
||||
},
|
||||
group: 'mat-radio-group',
|
||||
checked: 'mat-radio-checked',
|
||||
label: '.mat-radio-label'
|
||||
},
|
||||
Ripple: {
|
||||
class: '.mat-ripple',
|
||||
element: {
|
||||
class: '.mat-ripple-element',
|
||||
root: 'mat-ripple-element'
|
||||
}
|
||||
},
|
||||
Select: {
|
||||
root: 'mat-select',
|
||||
class: '.mat-select',
|
||||
arrow: {
|
||||
class: '.mat-select-arrow',
|
||||
wrapper: {
|
||||
root: '.mat-select-arrow-wrapper'
|
||||
}
|
||||
},
|
||||
placeholder: {
|
||||
class: '.mat-select-placeholder'
|
||||
},
|
||||
panel: {
|
||||
class: '.mat-select-panel',
|
||||
wrap: '.mat-select-panel-wrap'
|
||||
},
|
||||
value: {
|
||||
class: '.mat-select-value',
|
||||
text: '.mat-select-value-text'
|
||||
},
|
||||
minLine: '.mat-select-min-line',
|
||||
trigger: '.mat-select-trigger'
|
||||
},
|
||||
Slide: {
|
||||
toggle: {
|
||||
class: '.mat-slide-toggle',
|
||||
root: 'mat-slide-toggle',
|
||||
input: '.mat-slide-toggle-input'
|
||||
}
|
||||
},
|
||||
Selection: {
|
||||
list: {
|
||||
root: 'mat-selection-list'
|
||||
}
|
||||
},
|
||||
Sidenav: {
|
||||
root: 'mat-sidenav'
|
||||
},
|
||||
Snackbar: {
|
||||
container: {
|
||||
class: '.mat-snack-bar-container'
|
||||
}
|
||||
},
|
||||
Sort: {
|
||||
header: {
|
||||
container: '.mat-sort-header-container'
|
||||
}
|
||||
},
|
||||
Spinner: {
|
||||
root: 'mat-spinner'
|
||||
},
|
||||
Tab: {
|
||||
disabled: '.mat-tab-disabled',
|
||||
header: {
|
||||
class: '.mat-tab-header',
|
||||
pagination: {
|
||||
after: '.mat-tab-header-pagination-after',
|
||||
before: '.mat-tab-header-pagination-before',
|
||||
chevron: '.mat-tab-header-pagination-chevron'
|
||||
}
|
||||
},
|
||||
body: {
|
||||
active: '.mat-tab-body-active',
|
||||
content: '.mat-tab-body-content'
|
||||
},
|
||||
label: {
|
||||
class: '.mat-tab-label',
|
||||
root: 'mat-tab-label',
|
||||
active: {
|
||||
class: '.mat-tab-label-active',
|
||||
root: 'mat-tab-label-active'
|
||||
},
|
||||
content: {
|
||||
class: '.mat-tab-label-content',
|
||||
root: 'mat-tab-label-content'
|
||||
}
|
||||
},
|
||||
labels: {
|
||||
class: '.mat-tab-labels'
|
||||
},
|
||||
list: '.mat-tab-list'
|
||||
},
|
||||
Table: {
|
||||
class: '.mat-table',
|
||||
root: 'mat-table',
|
||||
row: {
|
||||
root: 'mat-row',
|
||||
class: '.mat-row'
|
||||
},
|
||||
cell: {
|
||||
class: '.mat-cell',
|
||||
root: 'mat-cell'
|
||||
},
|
||||
column: (matColumn: string) => `.mat-column-${matColumn}`
|
||||
},
|
||||
Toolbar: {
|
||||
root: 'mat-toolbar',
|
||||
class: '.mat-toolbar'
|
||||
},
|
||||
Tooltip: {
|
||||
root: 'mat-tooltip-component',
|
||||
class: '.mat-tooltip',
|
||||
trigger: '.mat-tooltip-trigger'
|
||||
},
|
||||
Tree: {
|
||||
root: 'mat-tree',
|
||||
node: {
|
||||
root: 'mat-tree-node'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -22,17 +22,17 @@ import { materialLocators } from './material-locators';
|
||||
export class TogglePage {
|
||||
|
||||
async enableToggle(toggle: ElementFinder): Promise<void> {
|
||||
const check = await BrowserActions.getAttribute(toggle, 'class');
|
||||
if (check.indexOf(materialLocators.Checked.root) < 0) {
|
||||
const elem = toggle.$$('input').first();
|
||||
const slideToggle = await BrowserActions.getAttribute(toggle, 'class');
|
||||
if (slideToggle.indexOf(materialLocators.Slide.toggle.checked) < 0) {
|
||||
const elem = toggle.$$('button').first();
|
||||
await BrowserActions.clickScript(elem);
|
||||
}
|
||||
}
|
||||
|
||||
async disableToggle(toggle: ElementFinder): Promise<void> {
|
||||
const check = await BrowserActions.getAttribute(toggle, 'class');
|
||||
if (check.indexOf(materialLocators.Checked.root) >= 0) {
|
||||
const elem = toggle.$$('input').first();
|
||||
const slideToggle = await BrowserActions.getAttribute(toggle, 'class');
|
||||
if (slideToggle.indexOf(materialLocators.Slide.toggle.checked) >= 0) {
|
||||
const elem = toggle.$$('button').first();
|
||||
await BrowserActions.clickScript(elem);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,7 +66,8 @@ export class SettingsPage {
|
||||
silentLogin = true,
|
||||
implicitFlow = true,
|
||||
clientId?: string,
|
||||
logoutUrl: string = '/logout'
|
||||
logoutUrl: string = '/logout',
|
||||
codeFlow = true
|
||||
) {
|
||||
await this.goToSettingsPage();
|
||||
await this.setProvider('ECM');
|
||||
@@ -76,6 +77,7 @@ export class SettingsPage {
|
||||
await this.setIdentityHost(identityHost);
|
||||
await this.setSilentLogin(silentLogin);
|
||||
await this.setImplicitFlow(implicitFlow);
|
||||
await this.setCodeFlow(codeFlow);
|
||||
await this.setClientId(clientId);
|
||||
await this.setLogoutUrl(logoutUrl);
|
||||
await this.clickApply();
|
||||
@@ -134,7 +136,7 @@ export class SettingsPage {
|
||||
async setSilentLogin(enableToggle) {
|
||||
await BrowserVisibility.waitUntilElementIsVisible(this.silentLoginToggleElement);
|
||||
|
||||
const isChecked = (await BrowserActions.getAttribute(this.silentLoginToggleElement, 'class')).includes(materialLocators.Checked.root);
|
||||
const isChecked = (await BrowserActions.getAttribute(this.silentLoginToggleElement, 'class')).includes(materialLocators.Slide.toggle.checked);
|
||||
|
||||
if ((isChecked && !enableToggle) || (!isChecked && enableToggle)) {
|
||||
await BrowserActions.click(this.silentLoginToggleLabel);
|
||||
@@ -144,7 +146,7 @@ export class SettingsPage {
|
||||
async setImplicitFlow(enableToggle) {
|
||||
await BrowserVisibility.waitUntilElementIsVisible(this.implicitFlowElement);
|
||||
|
||||
const isChecked = (await BrowserActions.getAttribute(this.implicitFlowElement, 'class')).includes(materialLocators.Checked.root);
|
||||
const isChecked = (await BrowserActions.getAttribute(this.implicitFlowElement, 'class')).includes(materialLocators.Slide.toggle.checked);
|
||||
|
||||
if ((isChecked && !enableToggle) || (!isChecked && enableToggle)) {
|
||||
await BrowserActions.click(this.implicitFlowLabel);
|
||||
|
||||
@@ -49,7 +49,7 @@ export class ViewerPage {
|
||||
infoSideBar = $('#adf-right-sidebar');
|
||||
viewer = $('adf-viewer');
|
||||
imgViewer = $('adf-img-viewer');
|
||||
activeTab = $(`div[class*="${materialLocators.Tab.label.active.root}"]`);
|
||||
activeTab = $(`div${materialLocators.Tab.label.active.class}`);
|
||||
toolbar = $('#adf-viewer-toolbar');
|
||||
canvasLayer = $$('.canvasWrapper > canvas').first();
|
||||
|
||||
@@ -253,7 +253,7 @@ export class ViewerPage {
|
||||
}
|
||||
|
||||
async checkTabIsActive(tabName: string): Promise<void> {
|
||||
const materialLocatorPart = `div${materialLocators.Tab.labels.class} div${materialLocators.Tab.label.active.class} ${materialLocators.Tab.label.content.class}`;
|
||||
const materialLocatorPart = `div${materialLocators.Tab.label.active.class} ${materialLocators.Tab.label.content.class}`;
|
||||
const tab = element(by.cssContainingText(`.adf-info-drawer-layout-content ${materialLocatorPart}`, tabName));
|
||||
await BrowserVisibility.waitUntilElementIsVisible(tab);
|
||||
}
|
||||
|
||||
+2
-2
@@ -37,8 +37,8 @@ export class EditTaskFilterCloudComponentPage {
|
||||
id = $('input[data-automation-id="adf-cloud-edit-task-property-taskId"]');
|
||||
processDefinitionId = $('input[data-automation-id="adf-cloud-edit-task-property-processDefinitionId"]');
|
||||
processInstanceId = $('input[data-automation-id="adf-cloud-edit-task-property-processInstanceId"]');
|
||||
lastModifiedFrom = $('input[data-placeholder="LastModifiedFrom"]');
|
||||
lastModifiedTo = $('input[data-placeholder="LastModifiedTo"]');
|
||||
lastModifiedFrom = $('input[placeholder="LastModifiedFrom"]');
|
||||
lastModifiedTo = $('input[placeholder="LastModifiedTo"]');
|
||||
parentTaskId = $('input[data-automation-id="adf-cloud-edit-task-property-parentTaskId"]');
|
||||
owner = $('input[data-automation-id="adf-cloud-edit-task-property-owner"]');
|
||||
saveButton = $('[data-automation-id="adf-filter-action-save"]');
|
||||
|
||||
+3
-1
@@ -34,7 +34,9 @@ export class AttachFileWidgetCloudPage {
|
||||
await BrowserVisibility.waitUntilElementIsVisible(this.widget.$(this.filesListLocator));
|
||||
}
|
||||
|
||||
getFileAttachedLocatorByContainingText = async (text: string): Promise<ElementFinder> => this.widget.$(this.filesListLocator).element(by.cssContainingText('table tbody tr td span ', text));
|
||||
async getFileAttachedLocatorByContainingText(text: string): Promise<ElementFinder> {
|
||||
return this.widget.$(this.filesListLocator).element(by.cssContainingText('span', text));
|
||||
}
|
||||
|
||||
assignWidget(fieldId: string): void {
|
||||
this.widget = $(`adf-form-field div[id='field-${fieldId}-container']`);
|
||||
|
||||
+3
-3
@@ -60,7 +60,7 @@ export class GroupCloudComponentPage {
|
||||
|
||||
async checkSelectedGroup(group: string): Promise<boolean> {
|
||||
try {
|
||||
await TestElement.byText(`${materialLocators.Chip.root}[data-automation-id*="adf-cloud-group-chip-"]`, group).waitVisible();
|
||||
await TestElement.byText(`${materialLocators.Chip.grid.row.root}[data-automation-id*="adf-cloud-group-chip-"]`, group).waitVisible();
|
||||
return true;
|
||||
} catch (e) {
|
||||
return false;
|
||||
@@ -68,11 +68,11 @@ export class GroupCloudComponentPage {
|
||||
}
|
||||
|
||||
async checkGroupNotSelected(group: string): Promise<void> {
|
||||
await BrowserVisibility.waitUntilElementIsNotVisible(element(by.cssContainingText(`${materialLocators.Chip.root}[data-automation-id*="adf-cloud-group-chip-"]`, group)));
|
||||
await BrowserVisibility.waitUntilElementIsNotVisible(element(by.cssContainingText(`${materialLocators.Chip.grid.row.root}[data-automation-id*="adf-cloud-group-chip-"]`, group)));
|
||||
}
|
||||
|
||||
async removeSelectedGroup(group: string): Promise<void> {
|
||||
const locator = $(`${materialLocators.Chip.root}[data-automation-id*="adf-cloud-group-chip-${group}"] ${materialLocators.Icon.root}`);
|
||||
const locator = $(`${materialLocators.Chip.grid.row.root}[data-automation-id*="adf-cloud-group-chip-${group}"] ${materialLocators.Icon.root}`);
|
||||
await BrowserActions.click(locator);
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -29,8 +29,8 @@ export class PeopleCloudComponentPage {
|
||||
formFields = new FormFields();
|
||||
labelLocator: Locator = by.css(`label[class*='adf-label']`);
|
||||
inputLocator: Locator = by.css('input');
|
||||
assigneeChipList = $(`${materialLocators.Chip.list.root}[data-automation-id="adf-cloud-people-chip-list"]`);
|
||||
noOfUsersDisplayed = $$(`${materialLocators.Chip.list.root} span.adf-people-label-name`);
|
||||
assigneeChipList = $(`${materialLocators.Chip.grid.root}[data-automation-id="adf-cloud-people-chip-list"]`);
|
||||
noOfUsersDisplayed = $$(`${materialLocators.Chip.grid.root} span.adf-people-label-name`);
|
||||
|
||||
getAssigneeRowLocatorByContainingName = async (name: string): Promise<ElementFinder> => element.all(by.cssContainingText(`${materialLocators.Option.root} span.adf-people-label-name`, name)).first();
|
||||
|
||||
@@ -65,12 +65,12 @@ export class PeopleCloudComponentPage {
|
||||
|
||||
async getChipAssignee(): Promise<string> {
|
||||
await BrowserVisibility.waitUntilElementIsVisible(this.assigneeChipList);
|
||||
return this.assigneeChipList.all(by.css(materialLocators.Chip.root)).first().getText();
|
||||
return this.assigneeChipList.all(by.css(materialLocators.Chip.grid.row.root)).first().getText();
|
||||
}
|
||||
|
||||
async getChipAssigneeCount(): Promise<number> {
|
||||
await BrowserVisibility.waitUntilElementIsVisible(this.assigneeChipList);
|
||||
return this.assigneeChipList.all(by.css(materialLocators.Chip.root)).count();
|
||||
return this.assigneeChipList.all(by.css(materialLocators.Chip.grid.row.root)).count();
|
||||
}
|
||||
|
||||
async checkUserIsDisplayed(name: string): Promise<boolean> {
|
||||
|
||||
+1
-1
@@ -64,7 +64,7 @@ export class StartProcessCloudPage {
|
||||
|
||||
async selectFirstOptionFromProcessDropdown(): Promise<void> {
|
||||
await this.clickProcessDropdownArrow();
|
||||
const selectFirstProcessDropdown = $$('.mat-option-text').first();
|
||||
const selectFirstProcessDropdown = $$('mat-option').first();
|
||||
await BrowserActions.click(selectFirstProcessDropdown);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user