mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +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:
17
lib/testing/.browserslistrc
Normal file
17
lib/testing/.browserslistrc
Normal file
@@ -0,0 +1,17 @@
|
||||
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
|
||||
# For additional information regarding the format and rule options, please see:
|
||||
# https://github.com/browserslist/browserslist#queries
|
||||
|
||||
# For the full list of supported browsers by the Angular framework, please see:
|
||||
# https://angular.io/guide/browser-support
|
||||
|
||||
# You can see what browsers were selected by your queries by running:
|
||||
# npx browserslist
|
||||
|
||||
last 1 Chrome version
|
||||
last 1 Firefox version
|
||||
last 2 Edge major versions
|
||||
last 2 Safari major version
|
||||
last 2 iOS major versions
|
||||
Firefox ESR
|
||||
not IE 9-11 # For IE 9-11 support, remove 'not'.
|
536
lib/testing/package-lock.json
generated
536
lib/testing/package-lock.json
generated
@@ -1,536 +0,0 @@
|
||||
{
|
||||
"name": "@alfresco/adf-testing",
|
||||
"version": "6.9.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@alfresco/adf-testing",
|
||||
"version": "6.9.0",
|
||||
"license": "Apache-2.0",
|
||||
"peerDependencies": {
|
||||
"@alfresco/js-api": ">=7.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@alfresco/js-api": {
|
||||
"version": "7.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-7.5.0.tgz",
|
||||
"integrity": "sha512-zDjqeEF5zX8DfnSAjM/e+uOf0PdVb67vDWF0Zv/lWjxtezerRdLW/P6BHjxqTscE1VAeGUdALzX5R7e+RZcHDw==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"event-emitter": "^0.3.5",
|
||||
"superagent": "^8.0.9",
|
||||
"tslib": "^2.6.1"
|
||||
}
|
||||
},
|
||||
"node_modules/asap": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
|
||||
"integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/asynckit": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/call-bind": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
|
||||
"integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"function-bind": "^1.1.2",
|
||||
"get-intrinsic": "^1.2.1",
|
||||
"set-function-length": "^1.1.1"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/combined-stream": {
|
||||
"version": "1.0.8",
|
||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
||||
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"delayed-stream": "~1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/component-emitter": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
|
||||
"integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/cookiejar": {
|
||||
"version": "2.1.4",
|
||||
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz",
|
||||
"integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/d": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
|
||||
"integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"es5-ext": "^0.10.50",
|
||||
"type": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/debug": {
|
||||
"version": "4.3.4",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
|
||||
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"ms": "2.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"supports-color": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/define-data-property": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
|
||||
"integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"get-intrinsic": "^1.2.1",
|
||||
"gopd": "^1.0.1",
|
||||
"has-property-descriptors": "^1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/delayed-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/dezalgo": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
|
||||
"integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"asap": "^2.0.0",
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"node_modules/es5-ext": {
|
||||
"version": "0.10.63",
|
||||
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.63.tgz",
|
||||
"integrity": "sha512-hUCZd2Byj/mNKjfP9jXrdVZ62B8KuA/VoK7X8nUh5qT+AxDmcbvZz041oDVZdbIN1qW6XY9VDNwzkvKnZvK2TQ==",
|
||||
"hasInstallScript": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"es6-iterator": "^2.0.3",
|
||||
"es6-symbol": "^3.1.3",
|
||||
"esniff": "^2.0.1",
|
||||
"next-tick": "^1.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10"
|
||||
}
|
||||
},
|
||||
"node_modules/es6-iterator": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
|
||||
"integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"d": "1",
|
||||
"es5-ext": "^0.10.35",
|
||||
"es6-symbol": "^3.1.1"
|
||||
}
|
||||
},
|
||||
"node_modules/es6-symbol": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
|
||||
"integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"d": "^1.0.1",
|
||||
"ext": "^1.1.2"
|
||||
}
|
||||
},
|
||||
"node_modules/esniff": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
|
||||
"integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"d": "^1.0.1",
|
||||
"es5-ext": "^0.10.62",
|
||||
"event-emitter": "^0.3.5",
|
||||
"type": "^2.7.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10"
|
||||
}
|
||||
},
|
||||
"node_modules/esniff/node_modules/type": {
|
||||
"version": "2.7.2",
|
||||
"resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
|
||||
"integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/event-emitter": {
|
||||
"version": "0.3.5",
|
||||
"resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
|
||||
"integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"d": "1",
|
||||
"es5-ext": "~0.10.14"
|
||||
}
|
||||
},
|
||||
"node_modules/ext": {
|
||||
"version": "1.7.0",
|
||||
"resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
|
||||
"integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"type": "^2.7.2"
|
||||
}
|
||||
},
|
||||
"node_modules/ext/node_modules/type": {
|
||||
"version": "2.7.2",
|
||||
"resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
|
||||
"integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/fast-safe-stringify": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
|
||||
"integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/form-data": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
|
||||
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"asynckit": "^0.4.0",
|
||||
"combined-stream": "^1.0.8",
|
||||
"mime-types": "^2.1.12"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/formidable": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz",
|
||||
"integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"dezalgo": "^1.0.4",
|
||||
"hexoid": "^1.0.0",
|
||||
"once": "^1.4.0",
|
||||
"qs": "^6.11.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://ko-fi.com/tunnckoCore/commissions"
|
||||
}
|
||||
},
|
||||
"node_modules/function-bind": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
|
||||
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
|
||||
"peer": true,
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/get-intrinsic": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
|
||||
"integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"function-bind": "^1.1.2",
|
||||
"has-proto": "^1.0.1",
|
||||
"has-symbols": "^1.0.3",
|
||||
"hasown": "^2.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/gopd": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
|
||||
"integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"get-intrinsic": "^1.1.3"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/has-property-descriptors": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
|
||||
"integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"get-intrinsic": "^1.2.2"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/has-proto": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
|
||||
"integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/has-symbols": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
|
||||
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/hasown": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
|
||||
"integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"function-bind": "^1.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/hexoid": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
|
||||
"integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/lru-cache": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
||||
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"yallist": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/methods": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
|
||||
"integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/mime": {
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
|
||||
"integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"mime": "cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/mime-db": {
|
||||
"version": "1.52.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
||||
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/mime-types": {
|
||||
"version": "2.1.35",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
|
||||
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"mime-db": "1.52.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/next-tick": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
|
||||
"integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/object-inspect": {
|
||||
"version": "1.13.1",
|
||||
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
|
||||
"integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
|
||||
"peer": true,
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"node_modules/qs": {
|
||||
"version": "6.11.2",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
|
||||
"integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"side-channel": "^1.0.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/semver": {
|
||||
"version": "7.5.4",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
|
||||
"integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"lru-cache": "^6.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"semver": "bin/semver.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/set-function-length": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
|
||||
"integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"define-data-property": "^1.1.1",
|
||||
"get-intrinsic": "^1.2.1",
|
||||
"gopd": "^1.0.1",
|
||||
"has-property-descriptors": "^1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/side-channel": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
|
||||
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"call-bind": "^1.0.0",
|
||||
"get-intrinsic": "^1.0.2",
|
||||
"object-inspect": "^1.9.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/superagent": {
|
||||
"version": "8.1.2",
|
||||
"resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz",
|
||||
"integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"component-emitter": "^1.3.0",
|
||||
"cookiejar": "^2.1.4",
|
||||
"debug": "^4.3.4",
|
||||
"fast-safe-stringify": "^2.1.1",
|
||||
"form-data": "^4.0.0",
|
||||
"formidable": "^2.1.2",
|
||||
"methods": "^1.1.2",
|
||||
"mime": "2.6.0",
|
||||
"qs": "^6.11.0",
|
||||
"semver": "^7.3.8"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.4.0 <13 || >=14"
|
||||
}
|
||||
},
|
||||
"node_modules/tslib": {
|
||||
"version": "2.6.2",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
|
||||
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/type": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
|
||||
"integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/yallist": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
|
||||
"peer": true
|
||||
}
|
||||
}
|
||||
}
|
80
lib/testing/project.json
Normal file
80
lib/testing/project.json
Normal file
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"name": "testing",
|
||||
"$schema": "../../node_modules/nx/schemas/project-schema.json",
|
||||
"sourceRoot": "lib/testing/src",
|
||||
"projectType": "library",
|
||||
"prefix": "adf",
|
||||
"targets": {
|
||||
"build": {
|
||||
"executor": "@nrwl/webpack:webpack",
|
||||
"options": {
|
||||
"projectRoot": "lib/testing",
|
||||
"outputPath": "dist/libs/testing",
|
||||
"main": "lib/testing/index.ts",
|
||||
"generatePackageJson": true,
|
||||
"tsConfig": "lib/testing/tsconfig.lib.prod.json",
|
||||
"stylePreprocessorOptions": {
|
||||
"includePaths": ["lib", "lib/core/src/lib"]
|
||||
},
|
||||
"target": "node",
|
||||
"compiler": "tsc"
|
||||
},
|
||||
"configurations": {
|
||||
"production": {
|
||||
"projectRoot": "lib/testing",
|
||||
"outputPath": "dist/libs/testing",
|
||||
"main": "lib/testing/index.ts",
|
||||
"generatePackageJson": true,
|
||||
"tsConfig": "lib/testing/tsconfig.lib.prod.json"
|
||||
}
|
||||
},
|
||||
"defaultConfiguration": "production"
|
||||
},
|
||||
"lint": {
|
||||
"executor": "@nrwl/linter:eslint",
|
||||
"options": {
|
||||
"lintFilePatterns": ["lib/testing/**/*.ts", "lib/testing/**/*.html"]
|
||||
}
|
||||
},
|
||||
"bundle": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
"commands": [
|
||||
{
|
||||
"command": "echo testing bundle created"
|
||||
}
|
||||
]
|
||||
},
|
||||
"dependsOn": ["copyToNodeModules"]
|
||||
},
|
||||
"copyToNodeModules": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
"commands": [
|
||||
{
|
||||
"command": "rm -rf ./node_modules/@alfresco/adf-testing/ && mkdir -p ./node_modules/@alfresco/adf-testing/ && cp -R ./dist/libs/testing/* ./node_modules/@alfresco/adf-testing/"
|
||||
}
|
||||
]
|
||||
},
|
||||
"dependsOn": [
|
||||
{
|
||||
"projects": "self",
|
||||
"target": "build"
|
||||
}
|
||||
]
|
||||
},
|
||||
"npm-publish": {
|
||||
"executor": "nx:run-commands",
|
||||
"dependsOn": ["build"],
|
||||
"options": {
|
||||
"cwd": "dist/libs/testing",
|
||||
"commands": [
|
||||
{
|
||||
"command": "npm publish --tag {args.tag}",
|
||||
"forwardAllArgs": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -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> {
|
||||
|
@@ -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'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
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'
|
||||
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'
|
||||
}
|
||||
},
|
||||
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);
|
||||
}
|
||||
|
@@ -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"]');
|
||||
|
@@ -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']`);
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -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> {
|
||||
|
@@ -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